From f14f7b9fde09dd8c9dcccba1d36496dfd96113d3 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 4 Apr 2026 21:58:05 +0100 Subject: [PATCH] docs: refresh silent token guidance mirrors --- docs/automation/tasks.md | 2 +- docs/channels/feishu.md | 3 ++- docs/concepts/session-tool.md | 3 ++- docs/concepts/typing-indicators.md | 6 +++--- docs/gateway/configuration-reference.md | 2 +- docs/reference/session-management-compaction.md | 13 +++++++++---- docs/reference/templates/BOOT.md | 3 ++- docs/tools/subagents.md | 2 +- 8 files changed, 21 insertions(+), 13 deletions(-) diff --git a/docs/automation/tasks.md b/docs/automation/tasks.md index 85e09e82be0..d23b8224524 100644 --- a/docs/automation/tasks.md +++ b/docs/automation/tasks.md @@ -28,7 +28,7 @@ Not every agent run creates a task. Heartbeat turns and normal interactive chat - Cron tasks stay live while the cron runtime still owns the job; chat-backed CLI tasks stay live only while their owning run context is still active. - Completion is push-driven: detached work can notify directly or wake the requester session/heartbeat when it finishes, so status polling loops are - usually unnecessary. + usually the wrong shape. - Isolated cron runs and subagent completions best-effort clean up tracked browser tabs/processes for their child session before final cleanup bookkeeping. - Isolated cron delivery suppresses stale interim parent replies while descendant subagent work is still draining, and it prefers final descendant diff --git a/docs/channels/feishu.md b/docs/channels/feishu.md index 9c63a483ec0..e706b59ad0e 100644 --- a/docs/channels/feishu.md +++ b/docs/channels/feishu.md @@ -764,7 +764,8 @@ When the agent handles a Drive comment event, it receives: - the comment thread context for in-thread replies After making document edits, the agent is guided to use `feishu_drive.reply_comment` to notify the -commenter and then output `NO_REPLY` to avoid duplicate sends. +commenter and then output the exact silent token `NO_REPLY` / `no_reply` to +avoid duplicate sends. ## Runtime action surface diff --git a/docs/concepts/session-tool.md b/docs/concepts/session-tool.md index 32f67c9ef93..f30558f4c00 100644 --- a/docs/concepts/session-tool.md +++ b/docs/concepts/session-tool.md @@ -82,7 +82,8 @@ sparse token/cache counters from the latest transcript usage entry, and `sessions_yield` intentionally ends the current turn so the next message can be the follow-up event you are waiting for. Use it after spawning sub-agents when -you want completion results to arrive as the next message instead of polling. +you want completion results to arrive as the next message instead of building +poll loops. `subagents` is the control-plane helper for already spawned OpenClaw sub-agents. It supports: diff --git a/docs/concepts/typing-indicators.md b/docs/concepts/typing-indicators.md index 3155a30626e..13e331c6b61 100644 --- a/docs/concepts/typing-indicators.md +++ b/docs/concepts/typing-indicators.md @@ -59,9 +59,9 @@ You can override mode or cadence per session: ## Notes -- `message` mode won’t show typing for silent-only replies (for example - `NO_REPLY` / `no_reply`, which are treated case-insensitively for exact - silent-token suppression). +- `message` mode won’t show typing for silent-only replies when the whole + payload is the exact silent token (for example `NO_REPLY` / `no_reply`, + matched case-insensitively). - `thinking` only fires if the run streams reasoning (`reasoningLevel: "stream"`). If the model doesn’t emit reasoning deltas, typing won’t start. - Heartbeats never show typing, regardless of mode. diff --git a/docs/gateway/configuration-reference.md b/docs/gateway/configuration-reference.md index 12a93d74d0e..034cd4245ea 100644 --- a/docs/gateway/configuration-reference.md +++ b/docs/gateway/configuration-reference.md @@ -1113,7 +1113,7 @@ Periodic heartbeat runs. enabled: true, softThresholdTokens: 6000, systemPrompt: "Session nearing compaction. Store durable memories now.", - prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store.", + prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with the exact silent token NO_REPLY if nothing to store.", }, }, }, diff --git a/docs/reference/session-management-compaction.md b/docs/reference/session-management-compaction.md index 1cbd70a7bcb..f39c50d7d60 100644 --- a/docs/reference/session-management-compaction.md +++ b/docs/reference/session-management-compaction.md @@ -292,12 +292,15 @@ OpenClaw supports “silent” turns for background tasks where the user should Convention: -- The assistant starts its output with `NO_REPLY` to indicate “do not deliver a reply to the user”. +- The assistant starts its output with the exact silent token `NO_REPLY` / + `no_reply` to indicate “do not deliver a reply to the user”. - OpenClaw strips/suppresses this in the delivery layer. - Exact silent-token suppression is case-insensitive, so `NO_REPLY` and `no_reply` both count when the whole payload is just the silent token. -As of `2026.1.10`, OpenClaw also suppresses **draft/typing streaming** when a partial chunk begins with `NO_REPLY`, so silent operations don’t leak partial output mid-turn. +As of `2026.1.10`, OpenClaw also suppresses **draft/typing streaming** when a +partial chunk begins with `NO_REPLY`, so silent operations don’t leak partial +output mid-turn. --- @@ -312,7 +315,8 @@ OpenClaw uses the **pre-threshold flush** approach: 1. Monitor session context usage. 2. When it crosses a “soft threshold” (below Pi’s compaction threshold), run a silent “write memory now” directive to the agent. -3. Use `NO_REPLY` so the user sees nothing. +3. Use the exact silent token `NO_REPLY` / `no_reply` so the user sees + nothing. Config (`agents.defaults.compaction.memoryFlush`): @@ -323,7 +327,8 @@ Config (`agents.defaults.compaction.memoryFlush`): Notes: -- The default prompt/system prompt include a `NO_REPLY` hint to suppress delivery. +- The default prompt/system prompt include a `NO_REPLY` hint to suppress + delivery. - The flush runs once per compaction cycle (tracked in `sessions.json`). - The flush runs only for embedded Pi sessions (CLI backends skip it). - The flush is skipped when the session workspace is read-only (`workspaceAccess: "ro"` or `"none"`). diff --git a/docs/reference/templates/BOOT.md b/docs/reference/templates/BOOT.md index a5edf43ef49..2ba83c38ff8 100644 --- a/docs/reference/templates/BOOT.md +++ b/docs/reference/templates/BOOT.md @@ -8,4 +8,5 @@ read_when: # BOOT.md Add short, explicit instructions for what OpenClaw should do on startup (enable `hooks.internal.enabled`). -If the task sends a message, use the message tool and then reply with NO_REPLY. +If the task sends a message, use the message tool and then reply with the exact +silent token `NO_REPLY` / `no_reply`. diff --git a/docs/tools/subagents.md b/docs/tools/subagents.md index 9c8525a1bbd..6811c6d3bea 100644 --- a/docs/tools/subagents.md +++ b/docs/tools/subagents.md @@ -198,7 +198,7 @@ Operational guidance: loops around `sessions_list`, `sessions_history`, `/subagents list`, or `exec` sleep commands. - If a child completion event arrives after you already sent the final answer, - the correct follow-up is `NO_REPLY`. + the correct follow-up is the exact silent token `NO_REPLY` / `no_reply`. ### Tool policy by depth