docs: refresh subagent completion fallback refs

This commit is contained in:
Peter Steinberger
2026-04-04 19:29:58 +01:00
parent f94645dfe5
commit c329dd8250
4 changed files with 8 additions and 3 deletions

View File

@@ -222,6 +222,7 @@ Completion cleanup is also runtime-aware:
- Isolated cron completion best-effort closes tracked browser tabs/processes for the cron session before the run fully tears down.
- Isolated cron delivery waits out descendant subagent follow-up when needed and
suppresses stale parent acknowledgement text instead of announcing it.
- Subagent completion delivery prefers the latest visible assistant text; if that is empty it falls back to sanitized latest tool/toolResult text, and timeout-only tool-call runs can collapse to a short partial-progress summary.
- Cleanup failures do not mask the real task outcome.
### `tasks flow list|show|cancel`

View File

@@ -38,7 +38,7 @@ wired end-to-end.
- tool events => `stream: "tool"`
- assistant deltas => `stream: "assistant"`
- lifecycle events => `stream: "lifecycle"` (`phase: "start" | "end" | "error"`)
5. `agent.wait` uses `waitForAgentJob`:
5. `agent.wait` uses `waitForAgentRun`:
- waits for **lifecycle end/error** for `runId`
- returns `{ status: ok|error|timeout, startedAt, endedAt, error? }`

View File

@@ -1014,6 +1014,8 @@ for usage/billing and raise limits as needed.
- If the completion origin only carries a channel, OpenClaw falls back to the requester session's stored route (`lastChannel` / `lastTo` / `lastAccountId`) so direct delivery can still succeed.
- If neither a bound route nor a usable stored route exists, direct delivery can fail and the result falls back to queued session delivery instead of posting immediately to chat.
- Invalid or stale targets can still force queue fallback or final delivery failure.
- If the child's last visible assistant reply is a silent token (`NO_REPLY` / `ANNOUNCE_SKIP`), OpenClaw intentionally suppresses the announce instead of posting stale earlier progress.
- If the child timed out after only tool calls, the announce can collapse that into a short partial-progress summary instead of replaying raw tool output.
Debug:

View File

@@ -55,7 +55,7 @@ transcript path on disk when you need the raw full transcript.
- thread-bound or conversation-bound completion routes win when available
- if the completion origin only provides a channel, OpenClaw fills the missing target/account from the requester session's resolved route (`lastChannel` / `lastTo` / `lastAccountId`) so direct delivery still works
- The completion handoff to the requester session is runtime-generated internal context (not user-authored text) and includes:
- `Result` (`assistant` reply text, or latest `toolResult` if the assistant reply is empty)
- `Result` (latest visible `assistant` reply text, otherwise sanitized latest tool/toolResult text)
- `Status` (`completed successfully` / `failed` / `timed out` / `unknown`)
- compact runtime/token stats
- a delivery instruction telling the requester agent to rewrite in normal assistant voice (not forward raw internal metadata)
@@ -235,6 +235,7 @@ Sub-agents report back via an announce step:
- The announce step runs inside the sub-agent session (not the requester session).
- If the sub-agent replies exactly `ANNOUNCE_SKIP`, nothing is posted.
- If the latest assistant text is a silent token such as `NO_REPLY`, announce output is suppressed even if earlier visible progress existed.
- Otherwise delivery depends on requester depth:
- top-level requester sessions use a follow-up `agent` call with external delivery (`deliver=true`)
- nested requester subagent sessions receive an internal follow-up injection (`deliver=false`) so the orchestrator can synthesize child results in-session
@@ -247,9 +248,10 @@ Sub-agents report back via an announce step:
- child session key/id
- announce type + task label
- status line derived from runtime outcome (`success`, `error`, `timeout`, or `unknown`)
- result content from the announce step (or `(no output)` if missing)
- result content selected from the latest visible assistant text, otherwise sanitized latest tool/toolResult text
- a follow-up instruction describing when to reply vs. stay silent
- `Status` is not inferred from model output; it comes from runtime outcome signals.
- On timeout, if the child only got through tool calls, announce can collapse that history into a short partial-progress summary instead of replaying raw tool output.
Announce payloads include a stats line at the end (even when wrapped):