3.8 KiB
| summary | read_when | title | ||
|---|---|---|---|---|
| Ephemeral side questions with /btw |
|
BTW Side Questions |
BTW Side Questions
/btw lets you ask a quick side question about the current session without
turning that question into normal conversation history.
It is modeled after Claude Code's /btw behavior, but adapted to OpenClaw's
Gateway and multi-channel architecture.
What it does
When you send:
/btw what changed?
OpenClaw:
- snapshots the current session context,
- runs a separate tool-less model call,
- answers only the side question,
- leaves the main run alone,
- does not write the BTW question or answer to session history,
- emits the answer as a live side result rather than a normal assistant message.
The important mental model is:
- same session context
- separate one-shot side query
- no tool calls
- no future context pollution
- no transcript persistence
What it does not do
/btw does not:
- create a new durable session,
- continue the unfinished main task,
- run tools or agent tool loops,
- write BTW question/answer data to transcript history,
- appear in
chat.history, - survive a reload.
It is intentionally ephemeral.
How context works
BTW uses the current session as background context only.
If the main run is currently active, OpenClaw snapshots the current message state and includes the in-flight main prompt as background context, while explicitly telling the model:
- answer only the side question,
- do not resume or complete the unfinished main task,
- do not emit tool calls or pseudo-tool calls.
That keeps BTW isolated from the main run while still making it aware of what the session is about.
Delivery model
BTW is not delivered as a normal assistant transcript message.
At the Gateway protocol level:
- normal assistant chat uses the
chatevent - BTW uses the
chat.side_resultevent
This separation is intentional. If BTW reused the normal chat event path,
clients would treat it like regular conversation history.
Because BTW uses a separate live event and is not replayed from
chat.history, it disappears after reload.
Surface behavior
TUI
In TUI, BTW is rendered inline in the current session view, but it remains ephemeral:
- visibly distinct from a normal assistant reply
- dismissible with
EnterorEsc - not replayed on reload
External channels
On channels like Telegram, WhatsApp, and Discord, BTW is delivered as a clearly labeled one-off reply because those surfaces do not have a local ephemeral overlay concept.
The answer is still treated as a side result, not normal session history.
Control UI / web
The Gateway emits BTW correctly as chat.side_result, and BTW is not included
in chat.history, so the persistence contract is already correct for web.
The current Control UI still needs a dedicated chat.side_result consumer to
render BTW live in the browser. Until that client-side support lands, BTW is a
Gateway-level feature with full TUI and external-channel behavior, but not yet
a complete browser UX.
When to use BTW
Use /btw when you want:
- a quick clarification about the current work,
- a factual side answer while a long run is still in progress,
- a temporary answer that should not become part of future session context.
Examples:
/btw what file are we editing?
/btw what does this error mean?
/btw summarize the current task in one sentence
/btw what is 17 * 19?
When not to use BTW
Do not use /btw when you want the answer to become part of the session's
future working context.
In that case, ask normally in the main session instead of using BTW.