XII · Streaming & UXExperimental·

Bidirectional Impulse Channel

also known as Two-Way Chat, User-and-Agent-Initiated Communication

Let the user inject impulses into the agent and let the agent push messages to the user, both through one channel.

Context

A team is running an agent that does not sit idle between user turns. It might be a personal assistant running a continuous reasoning loop, a monitoring agent watching a system, or any process that has internal activity the user would sometimes want to interrupt or hear about. The user is at a chat or command-line surface, occasionally typing, occasionally absent for hours.

Problem

A pure request-and-response chat interface fits this poorly: the agent has nothing to say when nothing is asked, and the user has no way to inject a correction without phrasing it as a new question for the model to interpret. A pure notification firehose in the other direction is worse, because it trains the user to mute the channel within a day. The team has to choose between an agent that goes silent until prompted and an agent that becomes background noise, with no obvious middle ground.

Forces

  • Push hygiene: too many messages train users to ignore the channel.
  • Inverse: starvation when the agent waits forever.
  • Authority: not every user-typed line should be a command.

Example

A user has asked their personal agent to monitor a slow scientific computation overnight and 'tell me when it's interesting'. Pure request/response would force the user to keep polling; pure push notifications wake them for trivia. They build a bidirectional impulse channel: the agent can send messages at any time, but the user can also reach in mid-run with 'stop watching the temperature, watch the residual'. The agent picks up the impulse on its next tick and changes what it pushes.

Diagram

Solution

Therefore:

A single CLI/chat surface where the user can send sigil-prefixed commands (e.g. `!<verb> ...`) that bypass the model and write directly to memory, while the agent can push messages when salience clears a threshold (insight, stuck focus, contradiction, goal complete). Hygiene rule: at most one unsolicited message per window.

What this pattern forbids. The agent may push at most one unsolicited message per window; user commands beginning with `!` bypass the model entirely.

The smaller patterns that complete this one —

  • usesSalience-Triggered Output·Have the agent emit a message only when an internal salience signal crosses a threshold, not on every cycle.

And the patterns that stand alongside it, or against it —

  • complementsStreaming Typed Events★★Push partial results to the client as typed events as they become available, rather than waiting for the full response.
  • complementsEmbodied-Proxy Handoff·Enable the human to share embodied state (energy, fatigue, environment) so the agent tailors response shape to the actual person rather than to a context-free abstract user.

Neighbourhood

Click any neighbour to follow the language. Scroll to zoom, drag to pan.

Used in recipes

References

Provenance