* docs(tools): fix concrete ux defects in docs/tools Works the objectively-checkable subset of the open `ux` audit findings for `docs/tools/`. Every change below is a thing a reader would otherwise get wrong, not a restructuring preference. - goal.md: drop the body `# Goal` that duplicated the frontmatter title and rendered a second H1; keep the `#goal` anchor as an `<a id>` stub. - steer.md: state in the intro that `/tell` is an alias of `/steer`. The alias appeared in a code sample before the page ever named it (`src/auto-reply/commands-registry.shared.ts:412`). - kimi-search.md: add the missing `openclaw plugins install @openclaw/moonshot-provider` step. `moonshot` is an external package (plugin-inventory "Official external packages"), so the documented setup could not work as written. - grok-search.md: say that the `xai` plugin ships with OpenClaw and needs no install, since every sibling provider page opens with an install step. - searxng-search.md, diffs.md: add `openclaw gateway restart` to the install fence, matching duckduckgo, exa, firecrawl, lobster, parallel and perplexity. - ollama-search.md: the hosted setup told readers to point `models.providers.ollama.baseUrl` at ollama.com without saying that this also moves their Ollama *model* traffic. Name the side effect and point at the page's own scoped `webSearch.baseUrl` alternative. - reactions.md: define `clearAll` and `emoji-list`, both used in the channel sections but never introduced. - browser-linux-troubleshooting.md: the verify step jumps from CDP port 18800 to 18791 with no explanation; say it is the browser control service port derived from `gateway.port`, and that `jq` is optional. Promote the second `Problem:` heading from H3 to H2 so it stops reading as a sub-part of the first (anchor id unchanged). - apply-patch.md: `*** Move to:` and `*** End of File` were named in Notes but never shown. Extend the format block with both; the block now applies cleanly against the real `apply_patch` implementation. - exec.md: fill the one empty Notes cell in the config table (`tools.exec.node`). - permission-modes.md: say what `openclaw approvals get` prints and why it is in the recommended-default sequence. - code-mode/internals.md: give the Runtime status table real header labels instead of an empty header row. - screen.md: say how a client advertises the `ui-commands` capability. - elevated.md: tag two directive fences as `text` (5 of 478 docs/tools fences were untagged; MD040 is disabled so the linter does not catch it). No anchor ids were dropped: ids enumerated with `parseDocsDocument` before and after across all 15 files; the only delta is one new Steps id in kimi-search.md. * docs(tools): address ClawSweeper review Both findings were correct. - screen.md: the connect handshake field is `caps`, not `capabilities` (`packages/gateway-protocol/src/schema/frames.ts:46`; `ui/src/api/gateway.ts:476`). A client following the old wording would not advertise the capability. - reactions.md: the `emoji-list` gate and result are channel-specific, not shared. Telegram gates `react` and `emoji-list` together under `actions.reactions` and returns the current chat's allowed reactions (`extensions/telegram/src/channel-actions.ts:160-162`), while Slack gates `emoji-list` separately under `actions.emojiList` (`extensions/slack/src/message-actions.ts:64`). The How it works bullet now only defines what the action is and says both vary by channel; the Telegram specifics moved into the Telegram accordion.
2.9 KiB
| summary | read_when | title | sidebarTitle | |||
|---|---|---|---|---|---|---|
| Steer an active run without changing queue mode |
|
Steer | Steer |
/steer first tries to send guidance to an already-active run. It is for
"adjust this run while it is still working" moments. If the current runtime
cannot accept steering, OpenClaw sends the message as a normal prompt instead
of dropping it.
/tell is an alias of /steer. The two names are interchangeable everywhere
on this page.
Current session
Use top-level /steer to target the active run for the current session:
/steer prefer the smaller patch and keep the tests focused
/tell summarize before making the next tool call
Behavior:
- Targets only the current session's active run.
- Works independently of the session's
/queuemode. - Starts a normal turn with the same message when the session is idle or the active run cannot accept steering.
- Uses the active runtime's steering path, so the model sees the guidance at the next supported runtime boundary.
Steer vs queue
/queue steer makes normal inbound messages try to steer the active run when
they arrive while a run is active. /steer <message> is an explicit command
that tries to inject that command's message into the active run at the next
supported runtime boundary, regardless of the stored /queue setting. When
that injection is not available, the command prefix is stripped and <message>
continues as a normal prompt.
The explicit /steer (and /tell) command is Gateway-backed. In
openclaw chat or openclaw tui --local, select /queue steer and send the
guidance as a normal message; the embedded runtime applies the same steering
policy without forwarding a Gateway command.
Use:
/steer <message>when you want to guide the active run right now./queue steerwhen you want future normal messages to steer active runs by default./queue collector/queue followupwhen future normal messages should wait for a later turn instead of steering the active run./queue interruptwhen the newest message should replace the active run instead of steering it.
For queue modes and steering boundaries, see Command queue and Steering queue.
Sub-agents
Top-level /steer targets the current session's active run. Sub-agents report
back to their parent/requester session; /subagents is for visibility only.
ACP sessions
Use /acp steer when the target is an ACP harness session:
/acp steer --session agent:main:acp:codex tighten the repro
See ACP agents for ACP session selection and runtime behavior.