Quick Experiment in Evolving a Chat UI

· 3 min read · Send your thoughts via twitter or mail.

Today, instead of normal writing, researching and sporadic gen chats I took a stab at that co-adaptive loop a a Co-Adaption: The editor/ui/prompts keep evolving with the user and their goals I described.

The session $goal: I wanted to dissect and write a short technical report about the actual meaning of the Bit per Second (BpS) in a behavioral/neuroscience context. The Slowness of Thought 2 2 The Unbearable Slowness of Being, Markus Meister, 2024 is a fantastic read but the BpS metric always felt like a circular definition to me since the experimenter sets the task space that bitrate depends on c c If they didn’t it would be ->unbound.

I used a trimmed down version of Co-Adaptive Interfaces d d I mainly think of essays as specs and prompts for what I want to happen as the system prompt e e So far I like Kimi K2’s persona most. For now, it’s just via chat which I use as poor man’s UI. Since I have a tendency to overly abstract, I’ll just lead with the example interactions below.

TLDR: Chat is obviously a bad format but good for rapid ui like flows.

A few outtakes

Starting with the $goal. I respond two times. First as the person with the $goal. Second as a guide for the LLM to suggest different behaviors or ask it about why it did something.

After some back and forth, a simple hotkey bar emerges, derived from the goal and some actions I took and becomes semi-stable.

Action Bar

Action Bar

[u] undo [r] reroll [x] eject [s] show [m] meta [g] diff [.] repeat [1][2][3] pick [n] skip [a] all [t] tweak

Hotkeys <verb><tag#> :

p atch, c ompare, v isualize, i nfo (i1=line, i1,,=3-line, i1,,,=para)

Example: p2 replaces with alt[2], c1 compares to metric[1], v3 sketches idea[3].

Reroll here is “show new options. I, as guide, prompted more towards thinking about composing actions and it tried its hand at that.

Then some more back and forth. There’s some progress on why other metrics might be smarter etc. Here’s a quick UI snapshot at one point:

[h1]Historical critique Fitts → Hick → Miller channel capacity myth; each step bakes in task assumptions.
[e2]Epistemic circularity Formalize the loop: experimenter → generative model → bits/s → claim about brain → repeat.
[a3]Alternatives first Open with Gibsonian ecological info rates; show bits/s as a special (degenerate) case.
<ActionBar (from above)/> <NewActions: [i1,,] expand h1 to mini-paragraph [c2] compare e2 vs a3 [v4] visualize t4 workflow [a3] accept alt-first [t] further tweak menu />
*User* (1): ve2 [composing v(isualize) with e2 (anchor)]
*LLM Guide*: > If you change the prompts/goal or nodes that the user has cosigned strongly you should propose a diff and let the user act on it

Later on it bubbles up an idea for a new anchor schema:

Δ6: Accept new anchor scheme?

[y] Switch to bits1 / chan3 / circ4 tags now.

[t] Tweak the syntax (suggest your format).

[n] Keep old [1] style.

Pick y, t, or n.

And in between it tries the meta loop and bubbles up a goal diff to review:

diff

– Original: "figure out if bits per second is misleading … feels weird"

+ Refined: Argue bits1 is circular[circ4] (measures experimenter codebook, not chan3) and only valid if decoder generalizes

+ Scaffold: Built thesis[7] + 3-part outline (circularity → upper-bound illusion → rescue)

– Divergence: Never drafted actual prose; got trapped in meta-syntax (anchors, action bars)

Verdict: Goal clarified but path skewed to scaffolding over writing.

At some point it almost created a compositional semantic algebra but then descended back into mediocrity. f f It named a certain A->A’ transform and then presented (adjectives) modifiers in the Actionbar to specify strength. So the transform was [f]ormalize and every ”,” added was by how thorough: “f” minimal, “f,,” full proof

It sometimes surfaced “goal vs path drift” and proposed prompt diffs, but rarely. That’s mostly on me for lazy prompt engineering and no other software control loops (linear chat).