\": [],\n    \"providers\": [\n      {\n        \"provider\": \"anyrouter\",\n        \"effective\": {\n          \"kind\": \"models.json\",\n          \"detail\": \"sk-free\"\n        },\n        \"profiles\": {\n          \"count\": 0,\n          \"oauth\": 0,\n          \"token\": 0,\n          \"apiKey\": 0,\n          \"labels\": []\n        },\n        \"modelsJson\": {\n          \"value\": \"sk-free\",\n          \"source\": \"models.json: ~/.openclaw/agents/main/agent/models.json\"\n        }\n      },\n      {\n        \"provider\": \"glm\",\n        \"effective\": {\n          \"kind\": \"models.json\",\n          \"detail\": \"4ec1b2c2...siOpzRD9\"\n        },\n        \"profiles\": {\n          \"count\": 0,\n          \"oauth\": 0,\n          \"token\": 0,\n          \"apiKey\": 0,\n          \"labels\": []\n        },\n        \"modelsJson\": {\n          \"value\": \"4ec1b2c2...siOpzRD9\",\n          \"source\": \"models.json: ~/.openclaw/agents/main/agent/models.json\"\n        }\n      },\n      {\n        \"provider\": \"kimi-coding\",\n        \"effective\": {\n          \"kind\": \"profiles\",\n          \"detail\": \"~/.openclaw/agents/main/agent/auth-profiles.json\"\n        },\n        \"profiles\": {\n          \"count\": 1,\n          \"oauth\": 0,\n          \"token\": 0,\n          \"apiKey\": 1,\n          \"labels\": [\n            \"kimi-coding:default=sk-kimi-...BRBOVt7d\"\n          ]\n        }\n      },\n      {\n        \"provider\": \"openai_proxy\",\n        \"effective\": {\n          \"kind\": \"models.json\",\n          \"detail\": \"sk-21db7...be3f39df\"\n        },\n        \"profiles\": {\n          \"count\": 0,\n          \"oauth\": 0,\n          \"token\": 0,\n          \"apiKey\": 0,\n          \"labels\": []\n        },\n        \"modelsJson\": {\n          \"value\": \"sk-21db7...be3f39df\",\n          \"source\": \"models.json: ~/.openclaw/agents/main/agent/models.json\"\n        }\n      },\n      {\n        \"provider\": \"openrouter\",\n        \"effective\": {\n          \"kind\": \"profiles\",\n          \"detail\": \"~/.openclaw/agents/main/agent/auth-profiles.json\"\n        },\n        \"profiles\": {\n          \"count\": 1,\n          \"oauth\": 0,\n          \"token\": 0,\n          \"apiKey\": 1,\n          \"labels\": [\n            \"openrouter:default=sk-or-v1...bc50300e\"\n          ]\n        },\n        \"env\": {\n          \"value\": \"sk-or-v1...bc50300e\",\n          \"source\": \"env: OPENROUTER_API_KEY\"\n        }\n      },\n      {\n        \"provider\": \"volcengine\",\n        \"effective\": {\n          \"kind\": \"models.json\",\n          \"detail\": \"4868982f...fc2139d5\"\n        },\n        \"profiles\": {\n          \"count\": 0,\n          \"oauth\": 0,\n          \"token\": 0,\n          \"apiKey\": 0,\n          \"labels\": []\n        },\n        \"modelsJson\": {\n          \"value\": \"4868982f...fc2139d5\",\n          \"source\": \"models.json: ~/.openclaw/agents/main/agent/models.json\"\n        }\n      }\n    ],\n    \"unusableProfiles\": [],\n    \"oauth\": {\n      \"warnAfterMs\": 86400000,\n      \"profiles\": [\n        {\n          \"profileId\": \"kimi-coding:default\",\n          \"provider\": \"kimi-coding\",\n          \"type\": \"api_key\",\n          \"status\": \"static\",\n          \"source\": \"store\",\n          \"label\": \"kimi-coding:default\"\n        },\n        {\n          \"profileId\": \"openrouter:default\",\n          \"provider\": \"openrouter\",\n          \"type\": \"api_key\",\n          \"status\": \"static\",\n          \"source\": \"store\",\n          \"label\": \"openrouter:default\"\n        }\n      ],\n      \"providers\": [\n        {\n          \"provider\": \"anyrouter\",\n          \"status\": \"missing\",\n          \"profiles\": []\n        },\n        {\n          \"provider\": \"glm\",\n          \"status\": \"missing\",\n          \"profiles\": []\n        },\n        {\n          \"provider\": \"kimi-coding\",\n          \"status\": \"static\",\n          \"profiles\": [\n            {\n              \"profileId\": \"kimi-coding:default\",\n              \"provider\": \"kimi-coding\",\n              \"type\": \"api_key\",\n              \"status\": \"static\",\n              \"source\": \"store\",\n              \"label\": \"kimi-coding:default\"\n            }\n          ]\n        },\n        {\n          \"provider\": \"openai_proxy\",\n          \"status\": \"missing\",\n          \"profiles\": []\n        },\n        {\n          \"provider\": \"openrouter\",\n          \"status\": \"static\",\n          \"profiles\": [\n            {\n              \"profileId\": \"openrouter:default\",\n              \"provider\": \"openrouter\",\n              \"type\": \"api_key\",\n              \"status\": \"static\",\n              \"source\": \"store\",\n              \"label\": \"openrouter:default\"\n            }\n          ]\n        },\n        {\n          \"provider\": \"volcengine\",\n          \"status\": \"missing\",\n          \"profiles\": []\n        }\n      ]\n    }\n  }\n}","cwd":"/root/.openclaw/workspace"},"isError":false,"timestamp":1774096728163}}
/root/.openclaw/agents/main/sessions/6e6a3dda-b9b6-4cfe-a770-1bfe95f0153a.jsonl.reset.2026-03-22T11-36-25.732Z:71:{"type":"message","id":"76fa2d38","parentId":"1cb8cf04","timestamp":"2026-03-21T12:47:10.472Z","message":{"role":"toolResult","toolCallId":"call_InrwKUU0vIUASDWJacHcgIMR|fc_0b724ab3e024bd7e0169be934d7fac81919d259f897a736319","toolName":"read","content":[{"type":"text","text":"---\nsummary: \"Slash commands: text vs native, config, and supported commands\"\nread_when:\n  - Using or configuring chat commands\n  - Debugging command routing or permissions\ntitle: \"Slash Commands\"\n---\n\n# Slash commands\n\nCommands are handled by the Gateway. Most commands must be sent as a **standalone** message that starts with `/`.\nThe host-only bash chat command uses `! <cmd>` (with `/bash <cmd>` as an alias).\n\nThere are two related systems:\n\n- **Commands**: standalone `/...` messages.\n- **Directives**: `/think`, `/verbose`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.\n  - Directives are stripped from the message before the model sees it.\n  - In normal chat messages (not directive-only), they are treated as “inline hints” and do **not** persist session settings.\n  - In directive-only messages (the message contains only directives), they persist to the session and reply with an acknowledgement.\n  - Directives are only applied for **authorized senders**. If `commands.allowFrom` is set, it is the only\n    allowlist used; otherwise authorization comes from channel allowlists/pairing plus `commands.useAccessGroups`.\n    Unauthorized senders see directives treated as plain text.\n\nThere are also a few **inline shortcuts** (allowlisted/authorized senders only): `/help`, `/commands`, `/status`, `/whoami` (`/id`).\nThey run immediately, are stripped before the model sees the message, and the remaining text continues through the normal flow.\n\n## Config\n\n```json5\n{\n  commands: {\n    native: \"auto\",\n    nativeSkills: \"auto\",\n    text: true,\n    bash: false,\n    bashForegroundMs: 2000,\n    config: false,\n    debug: false,\n    restart: false,\n    allowFrom: {\n      \"*\": [\"user1\"],\n      discord: [\"user:123\"],\n    },\n    useAccessGroups: true,\n  },\n}\n```\n\n- `commands.text` (default `true`) enables parsing `/...` in chat messages.\n  - On surfaces without native commands (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), text commands still work even if you set this to `false`.\n- `commands.native` (default `\"auto\"`) registers native commands.\n  - Auto: on for Discord/Telegram; off for Slack (until you add slash commands); ignored for providers without native support.\n  - Set `channels.discord.commands.native`, `channels.telegram.commands.native`, or `channels.slack.commands.native` to override per provider (bool or `\"auto\"`).\n  - `false` clears previously registered commands on Discord/Telegram at startup. Slack commands are managed in the Slack app and are not removed automatically.\n- `commands.nativeSkills` (default `\"auto\"`) registers **skill** commands natively when supported.\n  - Auto: on for Discord/Telegram; off for Slack (Slack requires creating a slash command per skill).\n  - Set `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills`, or `channels.slack.commands.nativeSkills` to override per provider (bool or `\"auto\"`).\n- `commands.bash` (default `false`) enables `! <cmd>` to run host shell commands (`/bash <cmd>` is an alias; requires `tools.elevated` allowlists).\n- `commands.bashForegroundMs` (default `2000`) controls how long bash waits before switching to background mode (`0` backgrounds immediately).\n- `commands.config` (default `false`) enables `/config` (reads/writes `openclaw.json`).\n- `commands.debug` (default `false`) enables `/debug` (runtime-only overrides).\n- `commands.allowFrom` (optional) sets a per-provider allowlist for command authorization. When configured, it is the\n  only authorization source for commands and directives (channel allowlists/pairing and `commands.useAccessGroups`\n  are ignored). Use `\"*\"` for a global default; provider-specific keys override it.\n- `commands.useAccessGroups` (default `true`) enforces allowlists/policies for commands when `commands.allowFrom` is not set.\n\n## Command list\n\nText + native (when enabled):\n\n- `/help`\n- `/commands`\n- `/skill <name> [input]` (run a skill by name)\n- `/status` (show current status; includes provider usage/quota for the current model provider when available)\n- `/allowlist` (list/add/remove allowlist entries)\n- `/approve <id> allow-once|allow-always|deny` (resolve exec approval prompts)\n- `/context [list|detail|json]` (explain “context”; `detail` shows per-file + per-tool + per-skill + system prompt size)\n- `/export-session [path]` (alias: `/export`) (export current session to HTML with full system prompt)\n- `/whoami` (show your sender id; alias: `/id`)\n- `/session ttl <duration|off>` (manage session-level settings, such as TTL)\n- `/subagents list|kill|log|info|send|steer|spawn` (inspect, control, or spawn sub-agent runs for the current session)\n- `/agents` (list thread-bound agents for this session)\n- `/focus <target>` (Discord: bind this thread, or a new thread, to a session/subagent target)\n- `/unfocus` (Discord: remove the current thread binding)\n- `/kill <id|#|all>` (immediately abort one or all running sub-agents for this session; no confirmation message)\n- `/steer <id|#> <message>` (steer a running sub-agent immediately: in-run when possible, otherwise abort current work and restart on the steer message)\n- `/tell <id|#> <message>` (alias for `/steer`)\n- `/config show|get|set|unset` (persist config to disk, owner-only; requires `commands.config: true`)\n- `/debug show|set|unset|reset` (runtime overrides, owner-only; requires `commands.debug: true`)\n- `/usage off|tokens|full|cost` (per-response usage footer or local cost summary)\n- `/tts off|always|inbound|tagged|status|provider|limit|summary|audio` (control TTS; see [/tts](/tts))\n  - Discord: native command is `/voice` (Discord reserves `/tts`); text `/tts` still works.\n- `/stop`\n- `/restart`\n- `/dock-telegram` (alias: `/dock_telegram`) (switch replies to Telegram)\n- `/dock-discord` (alias: `/dock_discord`) (switch replies to Discord)\n- `/dock-slack` (alias: `/dock_slack`) (switch replies to Slack)\n- `/activation mention|always` (groups only)\n- `/send on|off|inherit` (owner-only)\n- `/reset` or `/new [model]` (optional model hint; remainder is passed through)\n- `/think <off|minimal|low|medium|high|xhigh>` (dynamic choices by model/provider; aliases: `/thinking`, `/t`)\n- `/verbose on|full|off` (alias: `/v`)\n- `/reasoning on|off|stream` (alias: `/reason`; when on, sends a separate message prefixed `Reasoning:`; `stream` = Telegram draft only)\n- `/elevated on|off|ask|full` (alias: `/elev`; `full` skips exec approvals)\n- `/exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` (send `/exec` to show current)\n- `/model <name>` (alias: `/models`; or `/<alias>` from `agents.defaults.models.*.alias`)\n- `/queue <mode>` (plus options like `debounce:2s cap:25 drop:summarize`; send `/queue` to see current settings)\n- `/bash <command>` (host-only; alias for `! <command>`; requires `commands.bash: true` + `tools.elevated` allowlists)\n\nText-only:\n\n- `/compact [instructions]` (see [/concepts/compaction](/concepts/compaction))\n- `! <command>` (host-only; one at a time; use `!poll` + `!stop` for long-running jobs)\n- `!poll` (check output / status; accepts optional `sessionId`; `/bash poll` also works)\n- `!stop` (stop the running bash job; accepts optional `sessionId`; `/bash stop` also works)\n\nNotes:\n\n- Commands accept an optional `:` between the command and args (e.g. `/think: high`, `/send: on`, `/help:`).\n- `/new <model>` accepts a model alias, `provider/model`, or a provider name (fuzzy match); if no match, the text is treated as the message body.\n- For full provider usage breakdown, use `openclaw status --usage`.\n- `/allowlist add|remove` requires `commands.config=true` and honors channel `configWrites`.\n- `/usage` controls the per-response usage footer; `/usage cost` prints a local cost summary from OpenClaw session logs.\n- `/restart` is enabled by default; set `commands.restart: false` to disable it.\n- Discord-only native command: `/vc join|leave|status` controls voice channels (requires `channels.discord.voice` and native commands; not available as text).\n- Discord thread-binding commands (`/focus`, `/unfocus`, `/agents`, `/session ttl`) require effective thread bindings to be enabled (`session.threadBindings.enabled` and/or `channels.discord.threadBindings.enabled`).\n- `/verbose` is meant for debugging and extra visibility; keep it **off** in normal use.\n- Tool failure summaries are still shown when relevant, but detailed failure text is only included when `/verbose` is `on` or `full`.\n- `/reasoning` (and `/verbose`) are risky in group settings: they may reveal internal reasoning or tool output you did not intend to expose. Prefer leaving them off, especially in group chats.\n- **Fast path:** command-only messages from allowlisted senders are handled immediately (bypass queue + model).\n- **Group mention gating:** command-only messages from allowlisted senders bypass mention requirements.\n- **Inline shortcuts (allowlisted senders only):** certain commands also work when embedded in a normal message and are stripped before the model sees the remaining text.\n  - Example: `hey /status` triggers a status reply, and the remaining text continues through the normal flow.\n- Currently: `/help`, `/commands`, `/status`, `/whoami` (`/id`).\n- Unauthorized command-only messages are silently ignored, and inline `/...` tokens are treated as plain text.\n- **Skill commands:** `user-invocable` skills are exposed as slash commands. Names are sanitized to `a-z0-9_` (max 32 chars); collisions get numeric suffixes (e.g. `_2`).\n  - `/skill <name> [input]` runs a skill by name (useful when native command limits prevent per-skill commands).\n  - By default, skill commands are forwarded to the model as a normal request.\n  - Skills may optionally declare `command-dispatch: tool` to route the command directly to a tool (deterministic, no model).\n  - Example: `/prose` (OpenProse plugin) — see [OpenProse](/prose).\n- **Native command arguments:** Discord uses autocomplete for dynamic options (and button menus when you omit required args). Telegram and Slack show a button menu when a command supports choices and you omit the arg.\n\n## Usage surfaces (what shows where)\n\n- **Provider usage/quota** (example: “Claude 80% left”) shows up in `/status` for the current model provider when usage tracking is enabled.\n- **Per-response tokens/cost** is controlled by `/usage off|tokens|full` (appended to normal replies).\n- `/model status` is about **models/auth/endpoints**, not usage.\n\n## Model selection (`/model`)\n\n`/model` is implemented as a directive.\n\nExamples:\n\n```\n/model\n/model list\n/model 3\n/model openai/gpt-5.2\n/model opus@anthropic:default\n/model status\n```\n\nNotes:\n\n- `/model` and `/model list` show a compact, numbered picker (model family + available providers).\n- On Discord, `/model` and `/models` open an interactive picker with provider and model dropdowns plus a Submit step.\n- `/model <#>` selects from that picker (and prefers the current provider when possible).\n- `/model status` shows the detailed view, including configured provider endpoint (`baseUrl`) and API mode (`api`) when available.\n\n## Debug overrides\n\n`/debug` lets you set **runtime-only** config overrides (memory, not disk). Owner-only. Disabled by default; enable with `commands.debug: true`.\n\nExamples:\n\n```\n/debug show\n/debug set messages.responsePrefix=\"[openclaw]\"\n/debug set channels.whatsapp.allowFrom=[\"+1555\",\"+4477\"]\n/debug unset messages.responsePrefix\n/debug reset\n```\n\nNotes:\n\n- Overrides apply immediately to new config reads, but do **not** write to `openclaw.json`.\n- Use `/debug reset` to clear all overrides and return to the on-disk config.\n\n## Config updates\n\n`/config` writes to your on-disk config (`openclaw.json`). Owner-only. Disabled by default; enable with `commands.config: true`.\n\nExamples:\n\n```\n/config show\n/config show messages.responsePrefix\n/config get messages.responsePrefix\n/config set messages.responsePrefix=\"[openclaw]\"\n/config unset messages.responsePrefix\n```\n\nNotes:\n\n- Config is validated before write; invalid changes are rejected.\n- `/config` updates persist across restarts.\n\n## Surface notes\n\n- **Text commands** run in the normal chat session (DMs share `main`, groups have their own session).\n- **Native commands** use isolated sessions:\n  - Discord: `agent:<agentId>:discord:slash:<userId>`\n  - Slack: `agent:<agentId>:slack:slash:<userId>` (prefix configurable via `channels.slack.slashCommand.sessionPrefix`)\n  - Telegram: `telegram:slash:<userId>` (targets the chat session via `CommandTargetSessionKey`)\n- **`/stop`** targets the active chat session so it can abort the current run.\n- **Slack:** `channels.slack.slashCommand` is still supported for a single `/openclaw`-style command. If you enable `commands.native`, you must create one Slack slash command per built-in command (same names as `/help`). Command argument menus for Slack are delivered as ephemeral Block Kit buttons.\n"}],"isError":false,"timestamp":1774097230466}}
/root/.openclaw/agents/main/sessions/6e6a3dda-b9b6-4cfe-a770-1bfe95f0153a.jsonl.reset.2026-03-22T11-36-25.732Z:73:{"type":"message","id":"08f4be3c","parentId":"9348a834","timestamp":"2026-03-21T12:47:24.648Z","message":{"role":"toolResult","toolCallId":"call_gNZOtVRGINaD2hg14tx4dhxq|fc_0b724ab3e024bd7e0169be93563c488191bcf76dc77213b752","toolName":"exec","content":[{"type":"text","text":"[plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes\n[plugins] feishu_wiki: Registered feishu_wiki tool\n[plugins] feishu_drive: Registered feishu_drive tool\n[plugins] feishu_bitable: Registered bitable tools\n\n🦞 OpenClaw 2026.2.23 (b817600) — I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.\n\nUsage: openclaw [options] [command]\n\nOptions:\n  --dev                Dev profile: isolate state under ~/.openclaw-dev, default\n                       gateway port 19001, and shift derived ports\n                       (browser/canvas)\n  -h, --help           Display help for command\n  --log-level <level>  Global log level override for file + console\n                       (silent|fatal|error|warn|info|debug|trace)\n  --no-color           Disable ANSI colors\n  --profile <name>     Use a named profile (isolates\n                       OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under\n                       ~/.openclaw-<name>)\n  -V, --version        output the version number\n\nCommands:\n  Hint: commands suffixed with * have subcommands. Run <command> --help for details.\n  acp *                Agent Control Protocol tools\n  agent                Run one agent turn via the Gateway\n  agents *             Manage isolated agents (workspaces, auth, routing)\n  approvals *          Manage exec approvals (gateway or node host)\n  browser *            Manage OpenClaw's dedicated browser (Chrome/Chromium)\n  channels *           Manage connected chat channels (Telegram, Discord, etc.)\n  clawbot *            Legacy clawbot command aliases\n  completion           Generate shell completion script\n  config *             Non-interactive config helpers (get/set/unset). Default:\n                       starts setup wizard.\n  configure            Interactive setup wizard for credentials, channels,\n                       gateway, and agent defaults\n  cron *               Manage cron jobs via the Gateway scheduler\n  daemon *             Gateway service (legacy alias)\n  dashboard            Open the Control UI with your current token\n  devices *            Device pairing + token management\n  directory *          Lookup contact and group IDs (self, peers, groups) for\n                       supported chat channels\n  dns *                DNS helpers for wide-area discovery (Tailscale + CoreDNS)\n  docs                 Search the live OpenClaw docs\n  doctor               Health checks + quick fixes for the gateway and channels\n  gateway *            Run, inspect, and query the WebSocket Gateway\n  health               Fetch health from the running gateway\n  help                 Display help for command\n  hooks *              Manage internal agent hooks\n  logs                 Tail gateway file logs via RPC\n  memory *             Search and reindex memory files\n  message *            Send, read, and manage messages\n  models *             Discover, scan, and configure models\n  node *               Run and manage the headless node host service\n  nodes *              Manage gateway-owned node pairing and node commands\n  onboard              Interactive onboarding wizard for gateway, workspace, and\n                       skills\n  pairing *            Secure DM pairing (approve inbound requests)\n  plugins *            Manage OpenClaw plugins and extensions\n  qr                   Generate iOS pairing QR/setup code\n  reset                Reset local config/state (keeps the CLI installed)\n  sandbox *            Manage sandbox containers for agent isolation\n  security *           Security tools and local config audits\n  sessions *           List stored conversation sessions\n  setup                Initialize local config and agent workspace\n  skills *             List and inspect available skills\n  status               Show channel health and recent session recipients\n  system *             System events, heartbeat, and presence\n  tui                  Open a terminal UI connected to the Gateway\n  uninstall            Uninstall the gateway service + local data (CLI remains)\n  update *             Update OpenClaw and inspect update channel status\n  webhooks *           Webhook helpers and integrations\n\nExamples:\n  openclaw models --help\n    Show detailed help for the models command.\n  openclaw channels login --verbose\n    Link personal WhatsApp Web and show QR + connection logs.\n  openclaw message send --target +15555550123 --message \"Hi\" --json\n    Send via your web session and print JSON result.\n  openclaw gateway --port 18789\n    Run the WebSocket Gateway locally.\n  openclaw --dev gateway\n    Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n  openclaw gateway --force\n    Kill anything bound to the default gateway port, then start it.\n  openclaw gateway ...\n    Gateway control via WebSocket.\n  openclaw agent --to +15555550123 --message \"Run summary\" --deliver\n    Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n  openclaw message send --channel telegram --target @mychat --message \"Hi\"\n    Send via your Telegram bot.\n\nDocs: https://docs.openclaw.ai/cli"}],"details":{"status":"completed","exitCode":0,"durationMs":5801,"aggregated":"[plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes\n[plugins] feishu_wiki: Registered feishu_wiki tool\n[plugins] feishu_drive: Registered feishu_drive tool\n[plugins] feishu_bitable: Registered bitable tools\n\n🦞 OpenClaw 2026.2.23 (b817600) — I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.\n\nUsage: openclaw [options] [command]\n\nOptions:\n  --dev                Dev profile: isolate state under ~/.openclaw-dev, default\n                       gateway port 19001, and shift derived ports\n                       (browser/canvas)\n  -h, --help           Display help for command\n  --log-level <level>  Global log level override for file + console\n                       (silent|fatal|error|warn|info|debug|trace)\n  --no-color           Disable ANSI colors\n  --profile <name>     Use a named profile (isolates\n                       OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under\n                       ~/.openclaw-<name>)\n  -V, --version        output the version number\n\nCommands:\n  Hint: commands suffixed with * have subcommands. Run <command> --help for details.\n  acp *                Agent Control Protocol tools\n  agent                Run one agent turn via the Gateway\n  agents *             Manage isolated agents (workspaces, auth, routing)\n  approvals *          Manage exec approvals (gateway or node host)\n  browser *            Manage OpenClaw's dedicated browser (Chrome/Chromium)\n  channels *           Manage connected chat channels (Telegram, Discord, etc.)\n  clawbot *            Legacy clawbot command aliases\n  completion           Generate shell completion script\n  config *             Non-interactive config helpers (get/set/unset). Default:\n                       starts setup wizard.\n  configure            Interactive setup wizard for credentials, channels,\n                       gateway, and agent defaults\n  cron *               Manage cron jobs via the Gateway scheduler\n  daemon *             Gateway service (legacy alias)\n  dashboard            Open the Control UI with your current token\n  devices *            Device pairing + token management\n  directory *          Lookup contact and group IDs (self, peers, groups) for\n                       supported chat channels\n  dns *                DNS helpers for wide-area discovery (Tailscale + CoreDNS)\n  docs                 Search the live OpenClaw docs\n  doctor               Health checks + quick fixes for the gateway and channels\n  gateway *            Run, inspect, and query the WebSocket Gateway\n  health               Fetch health from the running gateway\n  help                 Display help for command\n  hooks *              Manage internal agent hooks\n  logs                 Tail gateway file logs via RPC\n  memory *             Search and reindex memory files\n  message *            Send, read, and manage messages\n  models *             Discover, scan, and configure models\n  node *               Run and manage the headless node host service\n  nodes *              Manage gateway-owned node pairing and node commands\n  onboard              Interactive onboarding wizard for gateway, workspace, and\n                       skills\n  pairing *            Secure DM pairing (approve inbound requests)\n  plugins *            Manage OpenClaw plugins and extensions\n  qr                   Generate iOS pairing QR/setup code\n  reset                Reset local config/state (keeps the CLI installed)\n  sandbox *            Manage sandbox containers for agent isolation\n  security *           Security tools and local config audits\n  sessions *           List stored conversation sessions\n  setup                Initialize local config and agent workspace\n  skills *             List and inspect available skills\n  status               Show channel health and recent session recipients\n  system *             System events, heartbeat, and presence\n  tui                  Open a terminal UI connected to the Gateway\n  uninstall            Uninstall the gateway service + local data (CLI remains)\n  update *             Update OpenClaw and inspect update channel status\n  webhooks *           Webhook helpers and integrations\n\nExamples:\n  openclaw models --help\n    Show detailed help for the models command.\n  openclaw channels login --verbose\n    Link personal WhatsApp Web and show QR + connection logs.\n  openclaw message send --target +15555550123 --message \"Hi\" --json\n    Send via your web session and print JSON result.\n  openclaw gateway --port 18789\n    Run the WebSocket Gateway locally.\n  openclaw --dev gateway\n    Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n  openclaw gateway --force\n    Kill anything bound to the default gateway port, then start it.\n  openclaw gateway ...\n    Gateway control via WebSocket.\n  openclaw agent --to +15555550123 --message \"Run summary\" --deliver\n    Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n  openclaw message send --channel telegram --target @mychat --message \"Hi\"\n    Send via your Telegram bot.\n\nDocs: https://docs.openclaw.ai/cli","cwd":"/root/.openclaw/workspace"},"isError":false,"timestamp":1774097244645}}
/root/.openclaw/agents/main/sessions/6e6a3dda-b9b6-4cfe-a770-1bfe95f0153a.jsonl.reset.2026-03-22T11-36-25.732Z:78:{"type":"message","id":"e7277d1f","parentId":"ffa20746","timestamp":"2026-03-21T12:47:37.830Z","message":{"role":"toolResult","toolCallId":"call_3995YqVB7AONOp1J54cY9SAo|fc_0b724ab3e024bd7e0169be93695cfc81919be6bb3efcf81cda","toolName":"read","content":[{"type":"text","text":"---\nsummary: \"OpenClaw plugins/extensions: discovery, config, and safety\"\nread_when:\n  - Adding or modifying plugins/extensions\n  - Documenting plugin install or load rules\ntitle: \"Plugins\"\n---\n\n# Plugins (Extensions)\n\n## Quick start (new to plugins?)\n\nA plugin is just a **small code module** that extends OpenClaw with extra\nfeatures (commands, tools, and Gateway RPC).\n\nMost of the time, you’ll use plugins when you want a feature that’s not built\ninto core OpenClaw yet (or you want to keep optional features out of your main\ninstall).\n\nFast path:\n\n1. See what’s already loaded:\n\n```bash\nopenclaw plugins list\n```\n\n2. Install an official plugin (example: Voice Call):\n\n```bash\nopenclaw plugins install @openclaw/voice-call\n```\n\nNpm specs are **registry-only** (package name + optional version/tag). Git/URL/file\nspecs are rejected.\n\n3. Restart the Gateway, then configure under `plugins.entries.<id>.config`.\n\nSee [Voice Call](/plugins/voice-call) for a concrete example plugin.\nLooking for third-party listings? See [Community plugins](/plugins/community).\n\n## Available plugins (official)\n\n- Microsoft Teams is plugin-only as of 2026.1.15; install `@openclaw/msteams` if you use Teams.\n- Memory (Core) — bundled memory search plugin (enabled by default via `plugins.slots.memory`)\n- Memory (LanceDB) — bundled long-term memory plugin (auto-recall/capture; set `plugins.slots.memory = \"memory-lancedb\"`)\n- [Voice Call](/plugins/voice-call) — `@openclaw/voice-call`\n- [Zalo Personal](/plugins/zalouser) — `@openclaw/zalouser`\n- [Matrix](/channels/matrix) — `@openclaw/matrix`\n- [Nostr](/channels/nostr) — `@openclaw/nostr`\n- [Zalo](/channels/zalo) — `@openclaw/zalo`\n- [Microsoft Teams](/channels/msteams) — `@openclaw/msteams`\n- Google Antigravity OAuth (provider auth) — bundled as `google-antigravity-auth` (disabled by default)\n- Gemini CLI OAuth (provider auth) — bundled as `google-gemini-cli-auth` (disabled by default)\n- Qwen OAuth (provider auth) — bundled as `qwen-portal-auth` (disabled by default)\n- Copilot Proxy (provider auth) — local VS Code Copilot Proxy bridge; distinct from built-in `github-copilot` device login (bundled, disabled by default)\n\nOpenClaw plugins are **TypeScript modules** loaded at runtime via jiti. **Config\nvalidation does not execute plugin code**; it uses the plugin manifest and JSON\nSchema instead. See [Plugin manifest](/plugins/manifest).\n\nPlugins can register:\n\n- Gateway RPC methods\n- Gateway HTTP handlers\n- Agent tools\n- CLI commands\n- Background services\n- Optional config validation\n- **Skills** (by listing `skills` directories in the plugin manifest)\n- **Auto-reply commands** (execute without invoking the AI agent)\n\nPlugins run **in‑process** with the Gateway, so treat them as trusted code.\nTool authoring guide: [Plugin agent tools](/plugins/agent-tools).\n\n## Runtime helpers\n\nPlugins can access selected core helpers via `api.runtime`. For telephony TTS:\n\n```ts\nconst result = await api.runtime.tts.textToSpeechTelephony({\n  text: \"Hello from OpenClaw\",\n  cfg: api.config,\n});\n```\n\nNotes:\n\n- Uses core `messages.tts` configuration (OpenAI or ElevenLabs).\n- Returns PCM audio buffer + sample rate. Plugins must resample/encode for providers.\n- Edge TTS is not supported for telephony.\n\n## Discovery & precedence\n\nOpenClaw scans, in order:\n\n1. Config paths\n\n- `plugins.load.paths` (file or directory)\n\n2. Workspace extensions\n\n- `<workspace>/.openclaw/extensions/*.ts`\n- `<workspace>/.openclaw/extensions/*/index.ts`\n\n3. Global extensions\n\n- `~/.openclaw/extensions/*.ts`\n- `~/.openclaw/extensions/*/index.ts`\n\n4. Bundled extensions (shipped with OpenClaw, **disabled by default**)\n\n- `<openclaw>/extensions/*`\n\nBundled plugins must be enabled explicitly via `plugins.entries.<id>.enabled`\nor `openclaw plugins enable <id>`. Installed plugins are enabled by default,\nbut can be disabled the same way.\n\nHardening notes:\n\n- If `plugins.allow` is empty and non-bundled plugins are discoverable, OpenClaw logs a startup warning with plugin ids and sources.\n- Candidate paths are safety-checked before discovery admission. OpenClaw blocks candidates when:\n  - extension entry resolves outside plugin root (including symlink/path traversal escapes),\n  - plugin root/source path is world-writable,\n  - path ownership is suspicious for non-bundled plugins (POSIX owner is neither current uid nor root).\n- Loaded non-bundled plugins without install/load-path provenance emit a warning so you can pin trust (`plugins.allow`) or install tracking (`plugins.installs`).\n\nEach plugin must include a `openclaw.plugin.json` file in its root. If a path\npoints at a file, the plugin root is the file's directory and must contain the\nmanifest.\n\nIf multiple plugins resolve to the same id, the first match in the order above\nwins and lower-precedence copies are ignored.\n\n### Package packs\n\nA plugin directory may include a `package.json` with `openclaw.extensions`:\n\n```json\n{\n  \"name\": \"my-pack\",\n  \"openclaw\": {\n    \"extensions\": [\"./src/safety.ts\", \"./src/tools.ts\"]\n  }\n}\n```\n\nEach entry becomes a plugin. If the pack lists multiple extensions, the plugin id\nbecomes `name/<fileBase>`.\n\nIf your plugin imports npm deps, install them in that directory so\n`node_modules` is available (`npm install` / `pnpm install`).\n\nSecurity guardrail: every `openclaw.extensions` entry must stay inside the plugin\ndirectory after symlink resolution. Entries that escape the package directory are\nrejected.\n\nSecurity note: `openclaw plugins install` installs plugin dependencies with\n`npm install --ignore-scripts` (no lifecycle scripts). Keep plugin dependency\ntrees \"pure JS/TS\" and avoid packages that require `postinstall` builds.\n\n### Channel catalog metadata\n\nChannel plugins can advertise onboarding metadata via `openclaw.channel` and\ninstall hints via `openclaw.install`. This keeps the core catalog data-free.\n\nExample:\n\n```json\n{\n  \"name\": \"@openclaw/nextcloud-talk\",\n  \"openclaw\": {\n    \"extensions\": [\"./index.ts\"],\n    \"channel\": {\n      \"id\": \"nextcloud-talk\",\n      \"label\": \"Nextcloud Talk\",\n      \"selectionLabel\": \"Nextcloud Talk (self-hosted)\",\n      \"docsPath\": \"/channels/nextcloud-talk\",\n      \"docsLabel\": \"nextcloud-talk\",\n      \"blurb\": \"Self-hosted chat via Nextcloud Talk webhook bots.\",\n      \"order\": 65,\n      \"aliases\": [\"nc-talk\", \"nc\"]\n    },\n    \"install\": {\n      \"npmSpec\": \"@openclaw/nextcloud-talk\",\n      \"localPath\": \"extensions/nextcloud-talk\",\n      \"defaultChoice\": \"npm\"\n    }\n  }\n}\n```\n\nOpenClaw can also merge **external channel catalogs** (for example, an MPM\nregistry export). Drop a JSON file at one of:\n\n- `~/.openclaw/mpm/plugins.json`\n- `~/.openclaw/mpm/catalog.json`\n- `~/.openclaw/plugins/catalog.json`\n\nOr point `OPENCLAW_PLUGIN_CATALOG_PATHS` (or `OPENCLAW_MPM_CATALOG_PATHS`) at\none or more JSON files (comma/semicolon/`PATH`-delimited). Each file should\ncontain `{ \"entries\": [ { \"name\": \"@scope/pkg\", \"openclaw\": { \"channel\": {...}, \"install\": {...} } } ] }`.\n\n## Plugin IDs\n\nDefault plugin ids:\n\n- Package packs: `package.json` `name`\n- Standalone file: file base name (`~/.../voice-call.ts` → `voice-call`)\n\nIf a plugin exports `id`, OpenClaw uses it but warns when it doesn’t match the\nconfigured id.\n\n## Config\n\n```json5\n{\n  plugins: {\n    enabled: true,\n    allow: [\"voice-call\"],\n\n[475 more lines in file. Use offset=221 to continue.]"}],"isError":false,"timestamp":1774097257827}}
/root/.openclaw/agents/main/sessions/4cdfbade-e5ed-4f5a-b22b-d43f1670bc00.jsonl.reset.2026-03-22T11-52-37.616Z:70:{"type":"message","id":"32ee625f","parentId":"b2e9fa9e","timestamp":"2026-03-22T11:46:02.389Z","message":{"role":"toolResult","toolCallId":"call_D1ViygOwZ4Pggm8VTU6rOBpl|fc_053e63093e354c4a0169bfd66f881c819180b049b8b807ad01","toolName":"exec","content":[{"type":"text","text":"/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/acp.md:17:runtime. It focuses on session routing, prompt delivery, and basic streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/acp.md:30:| Tool streaming                                                        | Partial     | `tool_call` / `tool_call_update` events include raw I/O, text content, and best-effort file locations when Gateway tool args/results expose them. Embedded terminals and richer diff-native output are still not exposed.                        |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/acp.md:34:| Session plans / thought streaming                                     | Unsupported | The bridge currently emits output text and tool status, not ACP plan or thought updates.                                                                                |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/backup.md:53:If you still want a partial backup in that situation, rerun:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/index.md:829:- `config.patch` (merge a partial update + restart + wake)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/secrets.md:55:- If resolution fails, gateway keeps last-known-good snapshot and returns an error (no partial activation).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/control-ui.md:113:- Abort partial retention:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/control-ui.md:114:  - When a run is aborted, partial assistant text can still be shown in the UI\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/control-ui.md:115:  - Gateway persists aborted partial assistant text into transcript history when buffered output exists\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/control-ui.md:116:  - Persisted entries include abort metadata so transcript consumers can tell abort partials from normal completion output\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/tui.md:39:- Status line: connection/run state (connecting, running, streaming, idle, error).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/tui.md:123:- While tools run, partial updates stream into the same card.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/tui.md:131:## History + streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/webchat.md:29:- Aborted runs can keep partial assistant output visible in the UI.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/webchat.md:30:- Gateway persists aborted partial assistant text into transcript history when buffered output exists, and marks those entries with abort metadata.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/debugging.md:12:This page covers debugging helpers for streaming output, especially when a\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/faq.md:1699:`config.apply` replaces the **entire config**. If you send a partial object, everything\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/faq.md:2122:Avoid `config.apply` with a partial object unless you intend to replace the whole config.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/faq.md:2399:an aborted/partial stream). Google Antigravity requires signatures for thinking blocks.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/testing.md:267:  - CLI: OpenClaw shells out to a local `gemini` binary; it has its own auth and can behave differently (streaming/tool support/version skew).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/glossary.zh-CN.json:107:    \"source\": \"block streaming\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/glossary.zh-CN.json:111:    \"source\": \"Block streaming\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:47:{\"cache_key\":\"0bbc0779389fa7b103e39fff721c2df8f37e36a72350175e61b8334f79dd6555\",\"segment_id\":\"index.md:0b7e778664921066\",\"source_path\":\"index.md\",\"text_hash\":\"0b7e77866492106632e98e7718a8e1e89e8cb0ee3f44c1572dfd9e54845023de\",\"text\":\"/concepts/streaming\",\"translated\":\"/concepts/streaming\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T13:30:06Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:131:{\"cache_key\":\"1e290e5653bf89ffd9643bbb215d3b2ce8f30b26d3468a5b584482ea567fb499\",\"segment_id\":\"index.md:075a4a45c3999f34\",\"source_path\":\"index.md\",\"text_hash\":\"075a4a45c3999f340be8487cd7c0dd2ed77ced931054d75e95e5e24d5539b45b\",\"text\":\" — Pi (RPC mode) with tool streaming\",\"translated\":\" — Pi（RPC 模式），支持工具流式传输\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T13:29:59Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:672:{\"cache_key\":\"843740adfdf616f31568963f47687512da2b547b5149b531b829112c01b57f5c\",\"segment_id\":\"index.md:0b7e778664921066\",\"source_path\":\"index.md\",\"text_hash\":\"0b7e77866492106632e98e7718a8e1e89e8cb0ee3f44c1572dfd9e54845023de\",\"text\":\"/concepts/streaming\",\"translated\":\"/concepts/streaming\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T12:50:13Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:885:{\"cache_key\":\"adfb3af54146b47b4e744815d9ccc0855ba7030eb0580a74b0bc2fc25be8825f\",\"segment_id\":\"index.md:0b7e778664921066\",\"source_path\":\"index.md\",\"text_hash\":\"0b7e77866492106632e98e7718a8e1e89e8cb0ee3f44c1572dfd9e54845023de\",\"text\":\"/concepts/streaming\",\"translated\":\"/concepts/streaming\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T13:01:38Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:895:{\"cache_key\":\"af2c767d10d616dd189bb9ed963e45f036beb388e91afbaa60bf62be6ef35d1e\",\"segment_id\":\"index.md:075a4a45c3999f34\",\"source_path\":\"index.md\",\"text_hash\":\"075a4a45c3999f340be8487cd7c0dd2ed77ced931054d75e95e5e24d5539b45b\",\"text\":\" — Pi (RPC mode) with tool streaming\",\"translated\":\" —— Pi（RPC 模式），支持 工具 流式传输\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T12:50:02Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:1326:{\"cache_key\":\"ff9cd1150279b1783fc13d1d8deb389b0589027719aa184d39812dab44ad30c3\",\"segment_id\":\"index.md:075a4a45c3999f34\",\"source_path\":\"index.md\",\"text_hash\":\"075a4a45c3999f340be8487cd7c0dd2ed77ced931054d75e95e5e24d5539b45b\",\"text\":\" — Pi (RPC mode) with tool streaming\",\"translated\":\" — Pi（RPC 模式）配合 工具 流式传输\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T13:01:29Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/tools/index.md:459:- `config.patch` (merge partial update + restart + wake)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/tools/plugin.md:748:- `gateway` (start/stop/login), `mentions`, `threading`, `streaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/tools/thinking.md:52:- When verbose is on, agents that emit structured tool results (Pi, other JSON agents) send each tool call back as its own metadata-only message, prefixed with `<emoji> <tool-name>: <arg>` when available (path/command). These tool summaries are sent as soon as each tool starts (separate bubbles), not as streaming deltas.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/tools/plugin.md:430:- `gateway`（启动/停止/登录）、`mentions`、`threading`、`streaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/start/hubs.md:52:- [流式传输 + 分块](/concepts/streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/plugins/voice-call.md:99:          streaming: {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration-examples.md:109:    ackReaction: \"👀\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration-examples.md:110:    ackReactionScope: \"group-mentions\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:413:- `messages.ackReaction` 来自**活跃智能体**的 `identity.emoji`（回退到 👀）\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1069:      streamMode: \"partial\", // off | partial | block（草稿流式传输；与分块流式传输分开）\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1501:    ackReaction: \"👀\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1502:    ackReactionScope: \"group-mentions\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1540:`ackReaction` 在支持反应的渠道（Slack/Discord/Telegram/Google Chat）上发送尽力而为的表情反应来确认入站消息。设置时默认为活跃智能体的 `identity.emoji`，否则为 `\"👀\"`。设为 `\"\"` 禁用。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1542:`ackReactionScope` 控制反应触发时机：\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1952:  参见 [/concepts/streaming](/concepts/streaming) 了解行为 + 分块细节。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1956:- `agents.defaults.typingMode`：`\"never\" | \"instant\" | \"thinking\" | \"message\"`。私聊/提及默认为\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1957:  `instant`，未被提及的群聊默认为 `message`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1958:- `session.typingMode`：每会话的模式覆盖。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/doctor.md:99:如果配置包含遗留值形式（例如没有渠道特定覆盖的 `messages.ackReaction`），doctor 会将它们规范化为当前 schema。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/troubleshooting.md:572:- `channels.telegram.streamMode` 是 `partial` 或 `block` **且草稿流式传输处于活动状态**\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/troubleshooting.md:583:参见 [流式传输](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/agent-loop.md:101:- 参见[流式传输](/concepts/streaming)了解分块和块回复行为。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/agent.md:96:更多详情：[流式传输 + 分块](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/architecture.md:71:  |<------ event:agent ------|   (streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/markdown-formatting.md:92:如需了解更多跨渠道的分块行为，请参见[流式传输 + 分块](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/messages.md:122:详情：[流式传输 + 分块](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/streaming.md:13:  source_path: concepts/streaming.md\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/streaming.md:111:- `channels.telegram.streamMode: \"partial\" | \"block\" | \"off\"`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/streaming.md:112:  - `partial`：用最新的流式文本更新草稿。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/streaming.md:125:       ├─ streamMode=partial → 更新最新文本\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:18:`agents.defaults.typingMode` 控制输入指示器**何时**开始显示，使用 `typingIntervalSeconds`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:23:当 `agents.defaults.typingMode` **未设置**时，OpenClaw 保持旧版行为：\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:32:将 `agents.defaults.typingMode` 设置为以下值之一：\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:35:- `instant` — **模型循环开始后立即**显示输入指示器，即使运行最终只返回静默回复令牌。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:42:`never` → `message` → `thinking` → `instant`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:49:    typingMode: \"thinking\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:60:    typingMode: \"message\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/discord.md:319:确认表情反应通过 `messages.ackReaction` + `messages.ackReactionScope` 全局控制。使用 `messages.removeAckAfterReply` 在机器人回复后清除确认表情反应。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/feishu.md:528:      streaming: true, // 启用流式卡片输出（默认 true）\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/feishu.md:535:如需禁用流式输出（等待完整回复后一次性发送），可设置 `streaming: false`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/feishu.md:568:> 注意：消息引用功能与流式卡片输出（`streaming: true`）不能同时使用。当启用流式输出时，回复会��卡片形式呈现，不会显示引用。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/feishu.md:662:| `channels.feishu.streaming`                       | 启用流式卡片输出                  | `true`           |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/group-messages.md:91:- 群组中的输入指示器遵循 `agents.defaults.typingMode`（默认：未被提及时为 `message`）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/slack.md:361:确认表情回应通过 `messages.ackReaction` + `messages.ackReactionScope` 全局控制。使用 `messages.removeAckAfterReply` 在机器人回复后清除确认表情回应。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:126:- `channels.telegram.streamMode` 未设置为 `\"off\"`（默认：`\"partial\"`，`\"block\"` 启用分块草稿更新）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:586:- `channels.telegram.streamMode: \"off\" | \"partial\" | \"block\"`（默认：`partial`）\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:587:  - `partial`：用最新的流式文本更新草稿气泡。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:601:  更多上下文：[流式传输 + 分块](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:731:- `channels.telegram.streamMode`：`off | partial | block`（草稿流式传输）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:751:- `messages.responsePrefix`、`messages.ackReaction`、`messages.ackReactionScope`、`messages.removeAckAfterReply`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:258:    \"ackReaction\": {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:283:        \"ackReaction\": {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:300:- WhatsApp 忽略 `messages.ackReaction`；请改用 `channels.whatsapp.ackReaction`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:364:- `channels.whatsapp.ackReaction`（消息收到时的自动回应：`{emoji, direct, group}`）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:367:- `channels.whatsapp.accounts.<accountId>.ackReaction`（按账户确认回应覆盖）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/platforms/mac/menu-bar.md:29:  - `job`：高层命令执行（`state: started|streaming|done|error`）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/platforms/mac/voice-overlay.md:48:   - 关键事件：`session_started`、`adopted_by_push_to_talk`、`partial`、`finalized`、`send`、`dismiss`、`cancel`、`cooldown`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/nodes/talk.md:16:4. Speak it via ElevenLabs (streaming playback)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/nodes/talk.md:72:- `outputFormat`: defaults to `pcm_44100` on macOS/iOS and `pcm_24000` on Android (set `mp3_*` to force MP3 streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/nodes/talk.md:89:- TTS uses ElevenLabs streaming API with `ELEVENLABS_API_KEY` and incremental playback on macOS/iOS/Android for lower latency.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/nodes/talk.md:92:- Android supports `pcm_16000`, `pcm_22050`, `pcm_24000`, and `pcm_44100` output formats for low-latency AudioTrack streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/start/hubs.md:49:- [Streaming + chunking](/concepts/streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/start/showcase.md:119:Hotkey a screen region → Gemini vision → instant Markdown in your clipboard.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:107:          streaming: {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:133:  - `streaming.preStartTimeoutMs` closes sockets that never send a valid `start` frame.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:134:  - `streaming.maxPendingConnections` caps total unauthenticated pre-start sockets.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:135:  - `streaming.maxPendingConnectionsPerIp` caps unauthenticated pre-start sockets per source IP.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:136:  - `streaming.maxConnections` caps total open media stream sockets (pending + active).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:208:streaming speech on calls. You can override it under the plugin config with the\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:226:- Core TTS is used when Twilio media streaming is enabled; otherwise calls fall back to provider native voices.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/install/exe-dev.md:30:Shelley, [exe.dev](https://exe.dev)'s agent, can install OpenClaw instantly with our\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/install/migrating.md:18:But there are common footguns around **profiles**, **permissions**, and **partial copies**.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/cli-backends.md:213:- **No streaming** (CLI output is collected then returned).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-examples.md:106:    ackReaction: \"👀\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-examples.md:107:    ackReactionScope: \"group-mentions\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:183:      streaming: \"partial\", // off | partial | block | progress (default: off)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:267:      streaming: \"off\", // off | partial | block | progress (progress maps to partial on Discord)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:324:- `channels.discord.streaming` is the canonical stream mode key. Legacy `streamMode` and boolean `streaming` values are auto-migrated.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:413:      streaming: \"partial\", // off | partial | block | progress (preview mode)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:414:      nativeStreaming: true, // use Slack native streaming API when streaming=partial\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:425:- `channels.slack.streaming` is the canonical stream mode key. Legacy `streamMode` and boolean `streaming` values are auto-migrated.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:928:Z.AI models enable `tool_stream` by default for tool call streaming. Set `agents.defaults.models[\"zai/<model>\"].params.tool_stream` to `false` to disable it.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1074:### Block streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1094:See [Streaming](/concepts/streaming) for behavior + chunking details.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1102:      typingMode: \"instant\", // never | instant | thinking | message\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1109:- Defaults: `instant` for direct chats/mentions, `message` for unmentioned group chats.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1110:- Per-session overrides: `session.typingMode`, `session.typingIntervalSeconds`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1316:- `identity` derives defaults: `ackReaction` from `emoji`, `mentionPatterns` from `name`/`emoji`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1547:    ackReaction: \"👀\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1548:    ackReactionScope: \"group-mentions\", // group-mentions | group-all | direct | all\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1592:- Per-channel overrides: `channels.<channel>.ackReaction`, `channels.<channel>.accounts.<id>.ackReaction`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1593:- Resolution order: account → channel → `messages.ackReaction` → identity fallback.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:2872:- `messages.ackReaction` from `identity.emoji` (falls back to 👀)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration.md:357:| **`hybrid`** (default) | Hot-applies safe changes instantly. Automatically restarts for critical ones.           |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration.md:400:    `config.apply` replaces the **entire config**. Use `config.patch` for partial updates, or `openclaw config set` for single keys.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration.md:424:  <Accordion title=\"config.patch (partial update)\">\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration.md:425:    Merges a partial update into the existing config (JSON merge patch semantics):\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/doctor.md:95:If the config contains legacy value shapes (for example `messages.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/openai-http-api.md:107:Non-streaming:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/openresponses-http-api.md:108:- `stream`: enables SSE streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/openresponses-http-api.md:329:Non-streaming:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:11:tool execution → streaming replies → persistence. It’s the authoritative path that turns a message\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:57:- A session write lock is acquired; `SessionManager` is opened and prepared before streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:97:## Streaming + partial replies\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:100:- Block streaming can emit partial replies either on `text_end` or `message_end`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:101:- Reasoning streaming can be emitted as a separate stream or as block replies.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:102:- See [Streaming](/concepts/streaming) for chunking and block reply behavior.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent.md:82:## Steering while streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent.md:94:Block streaming sends completed assistant blocks as soon as they finish; it is\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent.md:104:More details: [Streaming + chunking](/concepts/streaming).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/architecture.md:76:    Gateway-->>Client: event:agent<br>(streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/features.md:38:- Agent bridge for Pi in RPC mode with tool streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/markdown-formatting.md:97:[Streaming + chunking](/concepts/streaming).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:5:  - Clarifying sessions, queueing modes, or streaming behavior\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:13:streaming, and reasoning visibility.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:21:  -> agent run (streaming + tools)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:28:- `agents.defaults.*` for block streaming and chunking defaults.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:29:- Channel overrides (`channels.whatsapp.*`, `channels.telegram.*`, etc.) for caps and streaming toggles.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:123:Block streaming sends partial replies as the model produces text blocks.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:135:Details: [Streaming + chunking](/concepts/streaming).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/queue.md:29:- `steer`: inject immediately into the current run (cancels pending tool calls after the next tool boundary). If not streaming, falls back to followup.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/queue.md:37:streaming surfaces can look like duplicates. Prefer `collect`/`steer` if you want\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:2:summary: \"Streaming + chunking behavior (block replies, channel preview streaming, mode mapping)\"\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:4:  - Explaining how streaming or chunking works on channels\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:5:  - Changing block streaming or channel chunking behavior\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:6:  - Debugging duplicate/early block replies or channel preview streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:12:OpenClaw has two separate streaming layers:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:14:- **Block streaming (channels):** emit completed **blocks** as the assistant writes. These are normal channel messages (not token deltas).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:15:- **Preview streaming (Telegram/Discord/Slack):** update a temporary **preview message** while generating.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:17:There is **no true token-delta streaming** to channel messages today. Preview streaming is message-based (send + edits/appends).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:19:## Block streaming (channel messages)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:21:Block streaming sends assistant output in coarse chunks as it becomes available.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:35:- `text_delta/events`: model stream events (may be sparse for non-streaming models).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:70:When block streaming is enabled, OpenClaw can **merge consecutive block chunks**\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:85:When block streaming is enabled, you can add a **randomized pause** between\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:99:- **No block streaming:** `blockStreamingDefault: \"off\"` (only final reply).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:101:**Channel note:** Block streaming is **off unless**\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:103:(`channels.<channel>.streaming`) without block replies.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:108:## Preview streaming modes\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:110:Canonical key: `channels.<channel>.streaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:114:- `off`: disable preview streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:115:- `partial`: single preview that is replaced with latest text.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:121:| Channel  | `off` | `partial` | `block` | `progress`        |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:123:| Telegram | ✅    | ✅        | ✅      | maps to `partial` |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:124:| Discord  | ✅    | ✅        | ✅      | maps to `partial` |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:129:- `channels.slack.nativeStreaming` toggles Slack native streaming API calls when `streaming=partial` (default: `true`).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:133:- Telegram: `streamMode` + boolean `streaming` auto-migrate to `streaming` enum.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:134:- Discord: `streamMode` + boolean `streaming` auto-migrate to `streaming` enum.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:135:- Slack: `streamMode` auto-migrates to `streaming` enum; boolean `streaming` auto-migrates to `nativeStreaming`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:142:- Preview streaming is skipped when Telegram block streaming is explicitly enabled (to avoid double-streaming).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:149:- Preview streaming is skipped when Discord block streaming is explicitly enabled.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:153:- `partial` can use Slack native streaming (`chat.startStream`/`append`/`stop`) when available.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:11:`agents.defaults.typingMode` to control **when** typing starts and `typingIntervalSeconds`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:16:When `agents.defaults.typingMode` is **unset**, OpenClaw keeps the legacy behavior:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:20:- **Group chats without a mention**: typing starts only when message text begins streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:25:Set `agents.defaults.typingMode` to one of:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:28:- `instant` — start typing **as soon as the model loop begins**, even if the run\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:36:`never` → `message` → `thinking` → `instant`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:43:    typingMode: \"thinking\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:54:    typingMode: \"message\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/bluebubbles.md:269:## Block streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/bluebubbles.md:277:      blockStreaming: true, // enable block streaming (off by default)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/bluebubbles.md:305:- `channels.bluebubbles.blockStreaming`: Enable block streaming (default: `false`; required for streaming replies).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:578:    - `channels.discord.streaming` controls preview streaming (`off` | `partial` | `block` | `progress`, default: `off`).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:579:    - `progress` is accepted for cross-channel consistency and maps to `partial` on Discord.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:581:    - `partial` edits a single preview message as tokens arrive.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:590:      streaming: \"partial\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:602:      streaming: \"block\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:613:    Preview streaming is text-only; media replies fall back to normal delivery.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:615:    Note: preview streaming is separate from block streaming. When block streaming is explicitly\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:616:    enabled for Discord, OpenClaw skips the preview stream to avoid double streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:767:    `ackReaction` sends an acknowledgement emoji while OpenClaw is processing an inbound message.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:771:    - `channels.discord.accounts.<accountId>.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:772:    - `channels.discord.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:773:    - `messages.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:1203:- streaming: `streaming` (legacy alias: `streamMode`), `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:518:Feishu supports streaming replies via interactive cards. When enabled, the bot updates a card as it generates text.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:524:      streaming: true, // enable streaming card output (default true)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:525:      blockStreaming: true, // enable block-level streaming (default true)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:531:Set `streaming: false` to wait for the full reply before sending.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:617:| `channels.feishu.streaming`                       | Enable streaming card output            | `true`           |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:618:| `channels.feishu.blockStreaming`                  | Enable block streaming                  | `true`           |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:651:- ⚠ Rich text (partial support)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/group-messages.md:84:- Typing indicators in groups follow `agents.defaults.typingMode` (default: `message` when unmentioned).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/mattermost.md:223:  are removed on click — partial removal is not possible.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/nextcloud-talk.md:136:- `channels.nextcloud-talk.blockStreaming`: disable block streaming for this channel.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/nextcloud-talk.md:137:- `channels.nextcloud-talk.blockStreamingCoalesce`: block streaming coalesce tuning.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:312:`ackReaction` sends an acknowledgement emoji while OpenClaw is processing an inbound message.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:316:- `channels.slack.accounts.<accountId>.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:317:- `channels.slack.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:318:- `messages.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:492:## Text streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:494:OpenClaw supports Slack native text streaming via the Agents and AI Apps API.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:496:`channels.slack.streaming` controls live preview behavior:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:498:- `off`: disable live preview streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:499:- `partial` (default): replace preview text with the latest partial output.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:503:`channels.slack.nativeStreaming` controls Slack's native streaming API (`chat.startStream` / `chat.appendStream` / `chat.stopStream`) when `streaming` is `partial` (default: `true`).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:505:Disable native Slack streaming (keep draft preview behavior):\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:510:    streaming: partial\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:511:    nativeStreaming: false\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:516:- `channels.slack.streamMode` (`replace | status_final | append`) is auto-migrated to `channels.slack.streaming`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:517:- boolean `channels.slack.streaming` is auto-migrated to `channels.slack.nativeStreaming`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:531:- If streaming fails mid-reply, OpenClaw falls back to normal delivery for remaining payloads.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:545:  - delivery: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `nativeStreaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:262:    OpenClaw can stream partial replies in real time:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:269:    - `channels.telegram.streaming` is `off | partial | block | progress` (default: `partial`)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:270:    - `progress` maps to `partial` on Telegram (compat with cross-channel naming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:271:    - legacy `channels.telegram.streamMode` and boolean `streaming` values are auto-mapped\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:280:    Preview streaming is separate from block streaming. When block streaming is explicitly enabled for Telegram, OpenClaw skips the preview stream to avoid double-streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:693:    `ackReaction` sends an acknowledgement emoji while OpenClaw is processing an inbound message.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:697:    - `channels.telegram.accounts.<accountId>.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:698:    - `channels.telegram.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:699:    - `messages.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:842:  <Accordion title=\"Commands work partially or not at all\">\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:934:- `channels.telegram.streaming`: `off | partial | block | progress` (live stream preview; default: `partial`; `progress` maps to `partial`; `block` is legacy preview mode compatibility). Telegram preview streaming uses a single preview message that is edited in place.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:961:- streaming: `streaming` (preview), `blockStreaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/whatsapp.md:320:WhatsApp supports immediate ack reactions on inbound receipt via `channels.whatsapp.ackReaction`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/whatsapp.md:326:      ackReaction: {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/whatsapp.md:341:- WhatsApp uses `channels.whatsapp.ackReaction` (legacy `messages.ackReaction` is not used here)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/whatsapp.md:435:- delivery: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `sendReadReceipts`, `ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/zalo.md:97:- Streaming is blocked by default due to the 2000 char limit making streaming less useful.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/refactor/clawnet.md:363:2. Separate streaming endpoint (still TLS + auth).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/refactor/exec-host.md:24:- No PTY/streaming for node exec (aggregated output only).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/reference/AGENTS.default.md:47:- Don’t send partial/streaming replies to external messaging surfaces (only final replies).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/reference/session-management-compaction.md:279: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.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/reference/session-management-compaction.md:324:- Silent turns leaking? Confirm the reply starts with `NO_REPLY` (exact token) and you’re on a build that includes the streaming suppression fix.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/reference/transcript-hygiene.md:70:before model context is built. This prevents provider rejections from partially\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/health.md:24:- Uses a cached snapshot so the UI loads instantly and falls back gracefully when offline.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/menu-bar.md:22:  - `job`: high‑level command execution (`state: started|streaming|done|error`).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/menu-bar.md:79:- Start main while other active: icon flips to main instantly.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/voice-overlay.md:21:- Chime/overlay logging is emitted at `info` in categories `voicewake.overlay`, `voicewake.ptt`, and `voicewake.chime` (session start, partial, final, send, dismiss, chime reason).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/voice-overlay.md:41:   - Key events: `session_started`, `adopted_by_push_to_talk`, `partial`, `finalized`, `send`, `dismiss`, `cancel`, `cooldown`."}],"details":{"status":"completed","exitCode":0,"durationMs":222,"aggregated":"/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/acp.md:17:runtime. It focuses on session routing, prompt delivery, and basic streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/acp.md:30:| Tool streaming                                                        | Partial     | `tool_call` / `tool_call_update` events include raw I/O, text content, and best-effort file locations when Gateway tool args/results expose them. Embedded terminals and richer diff-native output are still not exposed.                        |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/acp.md:34:| Session plans / thought streaming                                     | Unsupported | The bridge currently emits output text and tool status, not ACP plan or thought updates.                                                                                |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/backup.md:53:If you still want a partial backup in that situation, rerun:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/index.md:829:- `config.patch` (merge a partial update + restart + wake)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/cli/secrets.md:55:- If resolution fails, gateway keeps last-known-good snapshot and returns an error (no partial activation).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/control-ui.md:113:- Abort partial retention:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/control-ui.md:114:  - When a run is aborted, partial assistant text can still be shown in the UI\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/control-ui.md:115:  - Gateway persists aborted partial assistant text into transcript history when buffered output exists\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/control-ui.md:116:  - Persisted entries include abort metadata so transcript consumers can tell abort partials from normal completion output\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/tui.md:39:- Status line: connection/run state (connecting, running, streaming, idle, error).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/tui.md:123:- While tools run, partial updates stream into the same card.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/tui.md:131:## History + streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/webchat.md:29:- Aborted runs can keep partial assistant output visible in the UI.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/web/webchat.md:30:- Gateway persists aborted partial assistant text into transcript history when buffered output exists, and marks those entries with abort metadata.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/debugging.md:12:This page covers debugging helpers for streaming output, especially when a\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/faq.md:1699:`config.apply` replaces the **entire config**. If you send a partial object, everything\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/faq.md:2122:Avoid `config.apply` with a partial object unless you intend to replace the whole config.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/faq.md:2399:an aborted/partial stream). Google Antigravity requires signatures for thinking blocks.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/help/testing.md:267:  - CLI: OpenClaw shells out to a local `gemini` binary; it has its own auth and can behave differently (streaming/tool support/version skew).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/glossary.zh-CN.json:107:    \"source\": \"block streaming\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/glossary.zh-CN.json:111:    \"source\": \"Block streaming\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:47:{\"cache_key\":\"0bbc0779389fa7b103e39fff721c2df8f37e36a72350175e61b8334f79dd6555\",\"segment_id\":\"index.md:0b7e778664921066\",\"source_path\":\"index.md\",\"text_hash\":\"0b7e77866492106632e98e7718a8e1e89e8cb0ee3f44c1572dfd9e54845023de\",\"text\":\"/concepts/streaming\",\"translated\":\"/concepts/streaming\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T13:30:06Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:131:{\"cache_key\":\"1e290e5653bf89ffd9643bbb215d3b2ce8f30b26d3468a5b584482ea567fb499\",\"segment_id\":\"index.md:075a4a45c3999f34\",\"source_path\":\"index.md\",\"text_hash\":\"075a4a45c3999f340be8487cd7c0dd2ed77ced931054d75e95e5e24d5539b45b\",\"text\":\" — Pi (RPC mode) with tool streaming\",\"translated\":\" — Pi（RPC 模式），支持工具流式传输\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T13:29:59Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:672:{\"cache_key\":\"843740adfdf616f31568963f47687512da2b547b5149b531b829112c01b57f5c\",\"segment_id\":\"index.md:0b7e778664921066\",\"source_path\":\"index.md\",\"text_hash\":\"0b7e77866492106632e98e7718a8e1e89e8cb0ee3f44c1572dfd9e54845023de\",\"text\":\"/concepts/streaming\",\"translated\":\"/concepts/streaming\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T12:50:13Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:885:{\"cache_key\":\"adfb3af54146b47b4e744815d9ccc0855ba7030eb0580a74b0bc2fc25be8825f\",\"segment_id\":\"index.md:0b7e778664921066\",\"source_path\":\"index.md\",\"text_hash\":\"0b7e77866492106632e98e7718a8e1e89e8cb0ee3f44c1572dfd9e54845023de\",\"text\":\"/concepts/streaming\",\"translated\":\"/concepts/streaming\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T13:01:38Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:895:{\"cache_key\":\"af2c767d10d616dd189bb9ed963e45f036beb388e91afbaa60bf62be6ef35d1e\",\"segment_id\":\"index.md:075a4a45c3999f34\",\"source_path\":\"index.md\",\"text_hash\":\"075a4a45c3999f340be8487cd7c0dd2ed77ced931054d75e95e5e24d5539b45b\",\"text\":\" — Pi (RPC mode) with tool streaming\",\"translated\":\" —— Pi（RPC 模式），支持 工具 流式传输\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T12:50:02Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/.i18n/zh-CN.tm.jsonl:1326:{\"cache_key\":\"ff9cd1150279b1783fc13d1d8deb389b0589027719aa184d39812dab44ad30c3\",\"segment_id\":\"index.md:075a4a45c3999f34\",\"source_path\":\"index.md\",\"text_hash\":\"075a4a45c3999f340be8487cd7c0dd2ed77ced931054d75e95e5e24d5539b45b\",\"text\":\" — Pi (RPC mode) with tool streaming\",\"translated\":\" — Pi（RPC 模式）配合 工具 流式传输\",\"provider\":\"pi\",\"model\":\"claude-opus-4-5\",\"src_lang\":\"en\",\"tgt_lang\":\"zh-CN\",\"updated_at\":\"2026-02-01T13:01:29Z\"}\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/tools/index.md:459:- `config.patch` (merge partial update + restart + wake)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/tools/plugin.md:748:- `gateway` (start/stop/login), `mentions`, `threading`, `streaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/tools/thinking.md:52:- When verbose is on, agents that emit structured tool results (Pi, other JSON agents) send each tool call back as its own metadata-only message, prefixed with `<emoji> <tool-name>: <arg>` when available (path/command). These tool summaries are sent as soon as each tool starts (separate bubbles), not as streaming deltas.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/tools/plugin.md:430:- `gateway`（启动/停止/登录）、`mentions`、`threading`、`streaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/start/hubs.md:52:- [流式传输 + 分块](/concepts/streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/plugins/voice-call.md:99:          streaming: {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration-examples.md:109:    ackReaction: \"👀\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration-examples.md:110:    ackReactionScope: \"group-mentions\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:413:- `messages.ackReaction` 来自**活跃智能体**的 `identity.emoji`（回退到 👀）\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1069:      streamMode: \"partial\", // off | partial | block（草稿流式传输；与分块流式传输分开）\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1501:    ackReaction: \"👀\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1502:    ackReactionScope: \"group-mentions\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1540:`ackReaction` 在支持反应的渠道（Slack/Discord/Telegram/Google Chat）上发送尽力而为的表情反应来确认入站消息。设置时默认为活跃智能体的 `identity.emoji`，否则为 `\"👀\"`。设为 `\"\"` 禁用。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1542:`ackReactionScope` 控制反应触发时机：\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1952:  参见 [/concepts/streaming](/concepts/streaming) 了解行为 + 分块细节。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1956:- `agents.defaults.typingMode`：`\"never\" | \"instant\" | \"thinking\" | \"message\"`。私聊/提及默认为\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1957:  `instant`，未被提及的群聊默认为 `message`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/configuration.md:1958:- `session.typingMode`：每会话的模式覆盖。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/doctor.md:99:如果配置包含遗留值形式（例如没有渠道特定覆盖的 `messages.ackReaction`），doctor 会将它们规范化为当前 schema。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/troubleshooting.md:572:- `channels.telegram.streamMode` 是 `partial` 或 `block` **且草稿流式传输处于活动状态**\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/gateway/troubleshooting.md:583:参见 [流式传输](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/agent-loop.md:101:- 参见[流式传输](/concepts/streaming)了解分块和块回复行为。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/agent.md:96:更多详情：[流式传输 + 分块](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/architecture.md:71:  |<------ event:agent ------|   (streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/markdown-formatting.md:92:如需了解更多跨渠道的分块行为，请参见[流式传输 + 分块](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/messages.md:122:详情：[流式传输 + 分块](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/streaming.md:13:  source_path: concepts/streaming.md\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/streaming.md:111:- `channels.telegram.streamMode: \"partial\" | \"block\" | \"off\"`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/streaming.md:112:  - `partial`：用最新的流式文本更新草稿。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/streaming.md:125:       ├─ streamMode=partial → 更新最新文本\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:18:`agents.defaults.typingMode` 控制输入指示器**何时**开始显示，使用 `typingIntervalSeconds`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:23:当 `agents.defaults.typingMode` **未设置**时，OpenClaw 保持旧版行为：\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:32:将 `agents.defaults.typingMode` 设置为以下值之一：\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:35:- `instant` — **模型循环开始后立即**显示输入指示器，即使运行最终只返回静默回复令牌。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:42:`never` → `message` → `thinking` → `instant`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:49:    typingMode: \"thinking\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/concepts/typing-indicators.md:60:    typingMode: \"message\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/discord.md:319:确认表情反应通过 `messages.ackReaction` + `messages.ackReactionScope` 全局控制。使用 `messages.removeAckAfterReply` 在机器人回复后清除确认表情反应。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/feishu.md:528:      streaming: true, // 启用流式卡片输出（默认 true）\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/feishu.md:535:如需禁用流式输出（等待完整回复后一次性发送），可设置 `streaming: false`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/feishu.md:568:> 注意：消息引用功能与流式卡片输出（`streaming: true`）不能同时使用。当启用流式输出时，回复会��卡片形式呈现，不会显示引用。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/feishu.md:662:| `channels.feishu.streaming`                       | 启用流式卡片输出                  | `true`           |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/group-messages.md:91:- 群组中的输入指示器遵循 `agents.defaults.typingMode`（默认：未被提及时为 `message`）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/slack.md:361:确认表情回应通过 `messages.ackReaction` + `messages.ackReactionScope` 全局控制。使用 `messages.removeAckAfterReply` 在机器人回复后清除确认表情回应。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:126:- `channels.telegram.streamMode` 未设置为 `\"off\"`（默认：`\"partial\"`，`\"block\"` 启用分块草稿更新）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:586:- `channels.telegram.streamMode: \"off\" | \"partial\" | \"block\"`（默认：`partial`）\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:587:  - `partial`：用最新的流式文本更新草稿气泡。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:601:  更多上下文：[流式传输 + 分块](/concepts/streaming)。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:731:- `channels.telegram.streamMode`：`off | partial | block`（草稿流式传输）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/telegram.md:751:- `messages.responsePrefix`、`messages.ackReaction`、`messages.ackReactionScope`、`messages.removeAckAfterReply`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:258:    \"ackReaction\": {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:283:        \"ackReaction\": {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:300:- WhatsApp 忽略 `messages.ackReaction`；请改用 `channels.whatsapp.ackReaction`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:364:- `channels.whatsapp.ackReaction`（消息收到时的自动回应：`{emoji, direct, group}`）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/channels/whatsapp.md:367:- `channels.whatsapp.accounts.<accountId>.ackReaction`（按账户确认回应覆盖）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/platforms/mac/menu-bar.md:29:  - `job`：高层命令执行（`state: started|streaming|done|error`）。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/zh-CN/platforms/mac/voice-overlay.md:48:   - 关键事件：`session_started`、`adopted_by_push_to_talk`、`partial`、`finalized`、`send`、`dismiss`、`cancel`、`cooldown`。\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/nodes/talk.md:16:4. Speak it via ElevenLabs (streaming playback)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/nodes/talk.md:72:- `outputFormat`: defaults to `pcm_44100` on macOS/iOS and `pcm_24000` on Android (set `mp3_*` to force MP3 streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/nodes/talk.md:89:- TTS uses ElevenLabs streaming API with `ELEVENLABS_API_KEY` and incremental playback on macOS/iOS/Android for lower latency.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/nodes/talk.md:92:- Android supports `pcm_16000`, `pcm_22050`, `pcm_24000`, and `pcm_44100` output formats for low-latency AudioTrack streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/start/hubs.md:49:- [Streaming + chunking](/concepts/streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/start/showcase.md:119:Hotkey a screen region → Gemini vision → instant Markdown in your clipboard.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:107:          streaming: {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:133:  - `streaming.preStartTimeoutMs` closes sockets that never send a valid `start` frame.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:134:  - `streaming.maxPendingConnections` caps total unauthenticated pre-start sockets.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:135:  - `streaming.maxPendingConnectionsPerIp` caps unauthenticated pre-start sockets per source IP.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:136:  - `streaming.maxConnections` caps total open media stream sockets (pending + active).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:208:streaming speech on calls. You can override it under the plugin config with the\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/plugins/voice-call.md:226:- Core TTS is used when Twilio media streaming is enabled; otherwise calls fall back to provider native voices.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/install/exe-dev.md:30:Shelley, [exe.dev](https://exe.dev)'s agent, can install OpenClaw instantly with our\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/install/migrating.md:18:But there are common footguns around **profiles**, **permissions**, and **partial copies**.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/cli-backends.md:213:- **No streaming** (CLI output is collected then returned).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-examples.md:106:    ackReaction: \"👀\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-examples.md:107:    ackReactionScope: \"group-mentions\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:183:      streaming: \"partial\", // off | partial | block | progress (default: off)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:267:      streaming: \"off\", // off | partial | block | progress (progress maps to partial on Discord)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:324:- `channels.discord.streaming` is the canonical stream mode key. Legacy `streamMode` and boolean `streaming` values are auto-migrated.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:413:      streaming: \"partial\", // off | partial | block | progress (preview mode)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:414:      nativeStreaming: true, // use Slack native streaming API when streaming=partial\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:425:- `channels.slack.streaming` is the canonical stream mode key. Legacy `streamMode` and boolean `streaming` values are auto-migrated.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:928:Z.AI models enable `tool_stream` by default for tool call streaming. Set `agents.defaults.models[\"zai/<model>\"].params.tool_stream` to `false` to disable it.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1074:### Block streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1094:See [Streaming](/concepts/streaming) for behavior + chunking details.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1102:      typingMode: \"instant\", // never | instant | thinking | message\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1109:- Defaults: `instant` for direct chats/mentions, `message` for unmentioned group chats.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1110:- Per-session overrides: `session.typingMode`, `session.typingIntervalSeconds`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1316:- `identity` derives defaults: `ackReaction` from `emoji`, `mentionPatterns` from `name`/`emoji`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1547:    ackReaction: \"👀\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1548:    ackReactionScope: \"group-mentions\", // group-mentions | group-all | direct | all\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1592:- Per-channel overrides: `channels.<channel>.ackReaction`, `channels.<channel>.accounts.<id>.ackReaction`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:1593:- Resolution order: account → channel → `messages.ackReaction` → identity fallback.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration-reference.md:2872:- `messages.ackReaction` from `identity.emoji` (falls back to 👀)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration.md:357:| **`hybrid`** (default) | Hot-applies safe changes instantly. Automatically restarts for critical ones.           |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration.md:400:    `config.apply` replaces the **entire config**. Use `config.patch` for partial updates, or `openclaw config set` for single keys.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration.md:424:  <Accordion title=\"config.patch (partial update)\">\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/configuration.md:425:    Merges a partial update into the existing config (JSON merge patch semantics):\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/doctor.md:95:If the config contains legacy value shapes (for example `messages.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/openai-http-api.md:107:Non-streaming:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/openresponses-http-api.md:108:- `stream`: enables SSE streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/gateway/openresponses-http-api.md:329:Non-streaming:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:11:tool execution → streaming replies → persistence. It’s the authoritative path that turns a message\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:57:- A session write lock is acquired; `SessionManager` is opened and prepared before streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:97:## Streaming + partial replies\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:100:- Block streaming can emit partial replies either on `text_end` or `message_end`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:101:- Reasoning streaming can be emitted as a separate stream or as block replies.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent-loop.md:102:- See [Streaming](/concepts/streaming) for chunking and block reply behavior.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent.md:82:## Steering while streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent.md:94:Block streaming sends completed assistant blocks as soon as they finish; it is\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/agent.md:104:More details: [Streaming + chunking](/concepts/streaming).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/architecture.md:76:    Gateway-->>Client: event:agent<br>(streaming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/features.md:38:- Agent bridge for Pi in RPC mode with tool streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/markdown-formatting.md:97:[Streaming + chunking](/concepts/streaming).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:5:  - Clarifying sessions, queueing modes, or streaming behavior\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:13:streaming, and reasoning visibility.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:21:  -> agent run (streaming + tools)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:28:- `agents.defaults.*` for block streaming and chunking defaults.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:29:- Channel overrides (`channels.whatsapp.*`, `channels.telegram.*`, etc.) for caps and streaming toggles.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:123:Block streaming sends partial replies as the model produces text blocks.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/messages.md:135:Details: [Streaming + chunking](/concepts/streaming).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/queue.md:29:- `steer`: inject immediately into the current run (cancels pending tool calls after the next tool boundary). If not streaming, falls back to followup.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/queue.md:37:streaming surfaces can look like duplicates. Prefer `collect`/`steer` if you want\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:2:summary: \"Streaming + chunking behavior (block replies, channel preview streaming, mode mapping)\"\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:4:  - Explaining how streaming or chunking works on channels\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:5:  - Changing block streaming or channel chunking behavior\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:6:  - Debugging duplicate/early block replies or channel preview streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:12:OpenClaw has two separate streaming layers:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:14:- **Block streaming (channels):** emit completed **blocks** as the assistant writes. These are normal channel messages (not token deltas).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:15:- **Preview streaming (Telegram/Discord/Slack):** update a temporary **preview message** while generating.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:17:There is **no true token-delta streaming** to channel messages today. Preview streaming is message-based (send + edits/appends).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:19:## Block streaming (channel messages)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:21:Block streaming sends assistant output in coarse chunks as it becomes available.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:35:- `text_delta/events`: model stream events (may be sparse for non-streaming models).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:70:When block streaming is enabled, OpenClaw can **merge consecutive block chunks**\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:85:When block streaming is enabled, you can add a **randomized pause** between\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:99:- **No block streaming:** `blockStreamingDefault: \"off\"` (only final reply).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:101:**Channel note:** Block streaming is **off unless**\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:103:(`channels.<channel>.streaming`) without block replies.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:108:## Preview streaming modes\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:110:Canonical key: `channels.<channel>.streaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:114:- `off`: disable preview streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:115:- `partial`: single preview that is replaced with latest text.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:121:| Channel  | `off` | `partial` | `block` | `progress`        |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:123:| Telegram | ✅    | ✅        | ✅      | maps to `partial` |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:124:| Discord  | ✅    | ✅        | ✅      | maps to `partial` |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:129:- `channels.slack.nativeStreaming` toggles Slack native streaming API calls when `streaming=partial` (default: `true`).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:133:- Telegram: `streamMode` + boolean `streaming` auto-migrate to `streaming` enum.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:134:- Discord: `streamMode` + boolean `streaming` auto-migrate to `streaming` enum.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:135:- Slack: `streamMode` auto-migrates to `streaming` enum; boolean `streaming` auto-migrates to `nativeStreaming`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:142:- Preview streaming is skipped when Telegram block streaming is explicitly enabled (to avoid double-streaming).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:149:- Preview streaming is skipped when Discord block streaming is explicitly enabled.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/streaming.md:153:- `partial` can use Slack native streaming (`chat.startStream`/`append`/`stop`) when available.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:11:`agents.defaults.typingMode` to control **when** typing starts and `typingIntervalSeconds`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:16:When `agents.defaults.typingMode` is **unset**, OpenClaw keeps the legacy behavior:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:20:- **Group chats without a mention**: typing starts only when message text begins streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:25:Set `agents.defaults.typingMode` to one of:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:28:- `instant` — start typing **as soon as the model loop begins**, even if the run\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:36:`never` → `message` → `thinking` → `instant`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:43:    typingMode: \"thinking\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/concepts/typing-indicators.md:54:    typingMode: \"message\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/bluebubbles.md:269:## Block streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/bluebubbles.md:277:      blockStreaming: true, // enable block streaming (off by default)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/bluebubbles.md:305:- `channels.bluebubbles.blockStreaming`: Enable block streaming (default: `false`; required for streaming replies).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:578:    - `channels.discord.streaming` controls preview streaming (`off` | `partial` | `block` | `progress`, default: `off`).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:579:    - `progress` is accepted for cross-channel consistency and maps to `partial` on Discord.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:581:    - `partial` edits a single preview message as tokens arrive.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:590:      streaming: \"partial\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:602:      streaming: \"block\",\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:613:    Preview streaming is text-only; media replies fall back to normal delivery.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:615:    Note: preview streaming is separate from block streaming. When block streaming is explicitly\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:616:    enabled for Discord, OpenClaw skips the preview stream to avoid double streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:767:    `ackReaction` sends an acknowledgement emoji while OpenClaw is processing an inbound message.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:771:    - `channels.discord.accounts.<accountId>.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:772:    - `channels.discord.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:773:    - `messages.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/discord.md:1203:- streaming: `streaming` (legacy alias: `streamMode`), `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:518:Feishu supports streaming replies via interactive cards. When enabled, the bot updates a card as it generates text.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:524:      streaming: true, // enable streaming card output (default true)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:525:      blockStreaming: true, // enable block-level streaming (default true)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:531:Set `streaming: false` to wait for the full reply before sending.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:617:| `channels.feishu.streaming`                       | Enable streaming card output            | `true`           |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:618:| `channels.feishu.blockStreaming`                  | Enable block streaming                  | `true`           |\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/feishu.md:651:- ⚠ Rich text (partial support)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/group-messages.md:84:- Typing indicators in groups follow `agents.defaults.typingMode` (default: `message` when unmentioned).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/mattermost.md:223:  are removed on click — partial removal is not possible.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/nextcloud-talk.md:136:- `channels.nextcloud-talk.blockStreaming`: disable block streaming for this channel.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/nextcloud-talk.md:137:- `channels.nextcloud-talk.blockStreamingCoalesce`: block streaming coalesce tuning.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:312:`ackReaction` sends an acknowledgement emoji while OpenClaw is processing an inbound message.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:316:- `channels.slack.accounts.<accountId>.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:317:- `channels.slack.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:318:- `messages.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:492:## Text streaming\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:494:OpenClaw supports Slack native text streaming via the Agents and AI Apps API.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:496:`channels.slack.streaming` controls live preview behavior:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:498:- `off`: disable live preview streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:499:- `partial` (default): replace preview text with the latest partial output.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:503:`channels.slack.nativeStreaming` controls Slack's native streaming API (`chat.startStream` / `chat.appendStream` / `chat.stopStream`) when `streaming` is `partial` (default: `true`).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:505:Disable native Slack streaming (keep draft preview behavior):\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:510:    streaming: partial\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:511:    nativeStreaming: false\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:516:- `channels.slack.streamMode` (`replace | status_final | append`) is auto-migrated to `channels.slack.streaming`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:517:- boolean `channels.slack.streaming` is auto-migrated to `channels.slack.nativeStreaming`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:531:- If streaming fails mid-reply, OpenClaw falls back to normal delivery for remaining payloads.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/slack.md:545:  - delivery: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `nativeStreaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:262:    OpenClaw can stream partial replies in real time:\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:269:    - `channels.telegram.streaming` is `off | partial | block | progress` (default: `partial`)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:270:    - `progress` maps to `partial` on Telegram (compat with cross-channel naming)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:271:    - legacy `channels.telegram.streamMode` and boolean `streaming` values are auto-mapped\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:280:    Preview streaming is separate from block streaming. When block streaming is explicitly enabled for Telegram, OpenClaw skips the preview stream to avoid double-streaming.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:693:    `ackReaction` sends an acknowledgement emoji while OpenClaw is processing an inbound message.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:697:    - `channels.telegram.accounts.<accountId>.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:698:    - `channels.telegram.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:699:    - `messages.ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:842:  <Accordion title=\"Commands work partially or not at all\">\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:934:- `channels.telegram.streaming`: `off | partial | block | progress` (live stream preview; default: `partial`; `progress` maps to `partial`; `block` is legacy preview mode compatibility). Telegram preview streaming uses a single preview message that is edited in place.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/telegram.md:961:- streaming: `streaming` (preview), `blockStreaming`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/whatsapp.md:320:WhatsApp supports immediate ack reactions on inbound receipt via `channels.whatsapp.ackReaction`.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/whatsapp.md:326:      ackReaction: {\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/whatsapp.md:341:- WhatsApp uses `channels.whatsapp.ackReaction` (legacy `messages.ackReaction` is not used here)\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/whatsapp.md:435:- delivery: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `sendReadReceipts`, `ackReaction`\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/channels/zalo.md:97:- Streaming is blocked by default due to the 2000 char limit making streaming less useful.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/refactor/clawnet.md:363:2. Separate streaming endpoint (still TLS + auth).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/refactor/exec-host.md:24:- No PTY/streaming for node exec (aggregated output only).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/reference/AGENTS.default.md:47:- Don’t send partial/streaming replies to external messaging surfaces (only final replies).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/reference/session-management-compaction.md:279: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.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/reference/session-management-compaction.md:324:- Silent turns leaking? Confirm the reply starts with `NO_REPLY` (exact token) and you’re on a build that includes the streaming suppression fix.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/reference/transcript-hygiene.md:70:before model context is built. This prevents provider rejections from partially\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/health.md:24:- Uses a cached snapshot so the UI loads instantly and falls back gracefully when offline.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/menu-bar.md:22:  - `job`: high‑level command execution (`state: started|streaming|done|error`).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/menu-bar.md:79:- Start main while other active: icon flips to main instantly.\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/voice-overlay.md:21:- Chime/overlay logging is emitted at `info` in categories `voicewake.overlay`, `voicewake.ptt`, and `voicewake.chime` (session start, partial, final, send, dismiss, chime reason).\n/root/.local/share/pnpm/global/5/.pnpm/openclaw@2026.3.11_@napi-rs+canvas@0.1.97_@types+express@5.0.6_node-llama-cpp@3.16.2/node_modules/openclaw/docs/platforms/mac/voice-overlay.md:41:   - Key events: `session_started`, `adopted_by_push_to_talk`, `partial`, `finalized`, `send`, `dismiss`, `cancel`, `cooldown`.","cwd":"/root/.openclaw/workspace"},"isError":false,"timestamp":1774179962381}}
/root/.openclaw/agents/main/sessions/fe78d303-3119-48a5-bc2a-d3742f2f7204.jsonl.deleted.2026-03-22T14-31-39.697Z:8:{"type":"message","id":"5e3fabf7","parentId":"b164b6b3","timestamp":"2026-03-22T13:31:48.804Z","message":{"role":"toolResult","toolCallId":"call_TfzHzqYQzGHakzjoUf9jVofS|fc_0314bf10c78864840169bfef391f848191971d332298e1629a","toolName":"exec","content":[{"type":"text","text":"[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: adp-openclaw (/root/.openclaw/extensions/adp-openclaw/index.ts), check-models (/root/.openclaw/extensions/check-models/index.ts), ddingtalk (/root/.openclaw/extensions/ddingtalk/index.ts), openclaw-plugin-yuanbao (/root/.openclaw/extensions/openclaw-plugin-yuanbao/dist/index.js), openclaw-qqbot (/root/.openclaw/extensions/openclaw-qqbot/index.ts), openclaw-weixin (/root/.openclaw/extensions/openclaw-weixin/index.ts) (+1 more). Set plugins.allow to explicit trusted ids.\n[plugins] check-models: loaded without install/load-path provenance; treat as untracked local code and pin trust via plugins.allow or install records (/root/.openclaw/extensions/check-models/index.ts)\n[plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes\n[plugins] feishu_chat: Registered feishu_chat tool\n[plugins] feishu_wiki: Registered feishu_wiki tool\n[plugins] feishu_drive: Registered feishu_drive tool\n[plugins] feishu_bitable: Registered bitable tools\n[adp-openclaw] register() called - starting plugin registration\n[plugins] [adp-openclaw] Plugin register() called\n[adp-openclaw] Registering tool factory: adp_upload_file\n[plugins] [adp-openclaw] Registering tool factory: adp_upload_file\n[adp-openclaw] Tool adp_upload_file registered successfully\n[plugins] [adp-openclaw] Tool adp_upload_file registered successfully\n[adp-openclaw] Plugin registration complete\n[plugins] [adp-openclaw] Plugin registration complete\n\n🦞 OpenClaw 2026.3.11 (29dc654) — I can run local, remote, or purely on vibes—results may vary with DNS.\n\nUsage: openclaw [options] [command]\n\nOptions:\n  --dev                Dev profile: isolate state under ~/.openclaw-dev, default\n                       gateway port 19001, and shift derived ports\n                       (browser/canvas)\n  -h, --help           Display help for command\n  --log-level <level>  Global log level override for file + console\n                       (silent|fatal|error|warn|info|debug|trace)\n  --no-color           Disable ANSI colors\n  --profile <name>     Use a named profile (isolates\n                       OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under\n                       ~/.openclaw-<name>)\n  -V, --version        output the version number\n\nCommands:\n  Hint: commands suffixed with * have subcommands. Run <command> --help for details.\n  acp *                Agent Control Protocol tools\n  agent                Run one agent turn via the Gateway\n  agents *             Manage isolated agents (workspaces, auth, routing)\n  approvals *          Manage exec approvals (gateway or node host)\n  backup *             Create and verify local backup archives for OpenClaw\n                       state\n  browser *            Manage OpenClaw's dedicated browser (Chrome/Chromium)\n  channels *           Manage connected chat channels (Telegram, Discord, etc.)\n  clawbot *            Legacy clawbot command aliases\n  completion           Generate shell completion script\n  config *             Non-interactive config helpers\n                       (get/set/unset/file/validate). Default: starts setup\n                       wizard.\n  configure            Interactive setup wizard for credentials, channels,\n                       gateway, and agent defaults\n  cron *               Manage cron jobs via the Gateway scheduler\n  daemon *             Gateway service (legacy alias)\n  dashboard            Open the Control UI with your current token\n  devices *            Device pairing + token management\n  directory *          Lookup contact and group IDs (self, peers, groups) for\n                       supported chat channels\n  dns *                DNS helpers for wide-area discovery (Tailscale + CoreDNS)\n  docs                 Search the live OpenClaw docs\n  doctor               Health checks + quick fixes for the gateway and channels\n  gateway *            Run, inspect, and query the WebSocket Gateway\n  health               Fetch health from the running gateway\n  help                 Display help for command\n  hooks *              Manage internal agent hooks\n  logs                 Tail gateway file logs via RPC\n  memory *             Search and reindex memory files\n  message *            Send, read, and manage messages\n  models *             Discover, scan, and configure models\n  node *               Run and manage the headless node host service\n  nodes *              Manage gateway-owned node pairing and node commands\n  onboard              Interactive onboarding wizard for gateway, workspace, and\n                       skills\n  openclaw-weixin      Weixin channel utilities\n  pairing *            Secure DM pairing (approve inbound requests)\n  plugins *            Manage OpenClaw plugins and extensions\n  qr                   Generate iOS pairing QR/setup code\n  reset                Reset local config/state (keeps the CLI installed)\n  sandbox *            Manage sandbox containers for agent isolation\n  secrets *            Secrets runtime reload controls\n  security *           Security tools and local config audits\n  sessions *           List stored conversation sessions\n  setup                Initialize local config and agent workspace\n  skills *             List and inspect available skills\n  status               Show channel health and recent session recipients\n  system *             System events, heartbeat, and presence\n  tui                  Open a terminal UI connected to the Gateway\n  uninstall            Uninstall the gateway service + local data (CLI remains)\n  update *             Update OpenClaw and inspect update channel status\n  webhooks *           Webhook helpers and integrations\n\nExamples:\n  openclaw models --help\n    Show detailed help for the models command.\n  openclaw channels login --verbose\n    Link personal WhatsApp Web and show QR + connection logs.\n  openclaw message send --target +15555550123 --message \"Hi\" --json\n    Send via your web session and print JSON result.\n  openclaw gateway --port 18789\n    Run the WebSocket Gateway locally.\n  openclaw --dev gateway\n    Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n  openclaw gateway --force\n    Kill anything bound to the default gateway port, then start it.\n  openclaw gateway ...\n    Gateway control via WebSocket.\n  openclaw agent --to +15555550123 --message \"Run summary\" --deliver\n    Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n  openclaw message send --channel telegram --target @mychat --message \"Hi\"\n    Send via your Telegram bot.\n\nDocs: https://docs.openclaw.ai/cli"}],"details":{"status":"completed","exitCode":0,"durationMs":8305,"aggregated":"[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: adp-openclaw (/root/.openclaw/extensions/adp-openclaw/index.ts), check-models (/root/.openclaw/extensions/check-models/index.ts), ddingtalk (/root/.openclaw/extensions/ddingtalk/index.ts), openclaw-plugin-yuanbao (/root/.openclaw/extensions/openclaw-plugin-yuanbao/dist/index.js), openclaw-qqbot (/root/.openclaw/extensions/openclaw-qqbot/index.ts), openclaw-weixin (/root/.openclaw/extensions/openclaw-weixin/index.ts) (+1 more). Set plugins.allow to explicit trusted ids.\n[plugins] check-models: loaded without install/load-path provenance; treat as untracked local code and pin trust via plugins.allow or install records (/root/.openclaw/extensions/check-models/index.ts)\n[plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes\n[plugins] feishu_chat: Registered feishu_chat tool\n[plugins] feishu_wiki: Registered feishu_wiki tool\n[plugins] feishu_drive: Registered feishu_drive tool\n[plugins] feishu_bitable: Registered bitable tools\n[adp-openclaw] register() called - starting plugin registration\n[plugins] [adp-openclaw] Plugin register() called\n[adp-openclaw] Registering tool factory: adp_upload_file\n[plugins] [adp-openclaw] Registering tool factory: adp_upload_file\n[adp-openclaw] Tool adp_upload_file registered successfully\n[plugins] [adp-openclaw] Tool adp_upload_file registered successfully\n[adp-openclaw] Plugin registration complete\n[plugins] [adp-openclaw] Plugin registration complete\n\n🦞 OpenClaw 2026.3.11 (29dc654) — I can run local, remote, or purely on vibes—results may vary with DNS.\n\nUsage: openclaw [options] [command]\n\nOptions:\n  --dev                Dev profile: isolate state under ~/.openclaw-dev, default\n                       gateway port 19001, and shift derived ports\n                       (browser/canvas)\n  -h, --help           Display help for command\n  --log-level <level>  Global log level override for file + console\n                       (silent|fatal|error|warn|info|debug|trace)\n  --no-color           Disable ANSI colors\n  --profile <name>     Use a named profile (isolates\n                       OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under\n                       ~/.openclaw-<name>)\n  -V, --version        output the version number\n\nCommands:\n  Hint: commands suffixed with * have subcommands. Run <command> --help for details.\n  acp *                Agent Control Protocol tools\n  agent                Run one agent turn via the Gateway\n  agents *             Manage isolated agents (workspaces, auth, routing)\n  approvals *          Manage exec approvals (gateway or node host)\n  backup *             Create and verify local backup archives for OpenClaw\n                       state\n  browser *            Manage OpenClaw's dedicated browser (Chrome/Chromium)\n  channels *           Manage connected chat channels (Telegram, Discord, etc.)\n  clawbot *            Legacy clawbot command aliases\n  completion           Generate shell completion script\n  config *             Non-interactive config helpers\n                       (get/set/unset/file/validate). Default: starts setup\n                       wizard.\n  configure            Interactive setup wizard for credentials, channels,\n                       gateway, and agent defaults\n  cron *               Manage cron jobs via the Gateway scheduler\n  daemon *             Gateway service (legacy alias)\n  dashboard            Open the Control UI with your current token\n  devices *            Device pairing + token management\n  directory *          Lookup contact and group IDs (self, peers, groups) for\n                       supported chat channels\n  dns *                DNS helpers for wide-area discovery (Tailscale + CoreDNS)\n  docs                 Search the live OpenClaw docs\n  doctor               Health checks + quick fixes for the gateway and channels\n  gateway *            Run, inspect, and query the WebSocket Gateway\n  health               Fetch health from the running gateway\n  help                 Display help for command\n  hooks *              Manage internal agent hooks\n  logs                 Tail gateway file logs via RPC\n  memory *             Search and reindex memory files\n  message *            Send, read, and manage messages\n  models *             Discover, scan, and configure models\n  node *               Run and manage the headless node host service\n  nodes *              Manage gateway-owned node pairing and node commands\n  onboard              Interactive onboarding wizard for gateway, workspace, and\n                       skills\n  openclaw-weixin      Weixin channel utilities\n  pairing *            Secure DM pairing (approve inbound requests)\n  plugins *            Manage OpenClaw plugins and extensions\n  qr                   Generate iOS pairing QR/setup code\n  reset                Reset local config/state (keeps the CLI installed)\n  sandbox *            Manage sandbox containers for agent isolation\n  secrets *            Secrets runtime reload controls\n  security *           Security tools and local config audits\n  sessions *           List stored conversation sessions\n  setup                Initialize local config and agent workspace\n  skills *             List and inspect available skills\n  status               Show channel health and recent session recipients\n  system *             System events, heartbeat, and presence\n  tui                  Open a terminal UI connected to the Gateway\n  uninstall            Uninstall the gateway service + local data (CLI remains)\n  update *             Update OpenClaw and inspect update channel status\n  webhooks *           Webhook helpers and integrations\n\nExamples:\n  openclaw models --help\n    Show detailed help for the models command.\n  openclaw channels login --verbose\n    Link personal WhatsApp Web and show QR + connection logs.\n  openclaw message send --target +15555550123 --message \"Hi\" --json\n    Send via your web session and print JSON result.\n  openclaw gateway --port 18789\n    Run the WebSocket Gateway locally.\n  openclaw --dev gateway\n    Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n  openclaw gateway --force\n    Kill anything bound to the default gateway port, then start it.\n  openclaw gateway ...\n    Gateway control via WebSocket.\n  openclaw agent --to +15555550123 --message \"Run summary\" --deliver\n    Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n  openclaw message send --channel telegram --target @mychat --message \"Hi\"\n    Send via your Telegram bot.\n\nDocs: https://docs.openclaw.ai/cli","cwd":"/root/.openclaw/workspace"},"isError":false,"timestamp":1774186308800}}
/root/.openclaw/workspace/TOOLS.md:25:- SSH hosts and aliases
/root/.openclaw/workspace/skills/summarize/SKILL.md:26:- Google: `GEMINI_API_KEY` (aliases: `GOOGLE_GENERATIVE_AI_API_KEY`, `GOOGLE_API_KEY`)
/root/.openclaw/workspace/projects/model-health/README.md:6:- 维护 provider 注册表（URL / key-env / models / aliases / tags）
/root/.openclaw/workspace/projects/model-health/README.md:36:    aliases:
/root/.openclaw/workspace/projects/model-health/config/providers.example.yaml:9:    aliases:
/root/.openclaw/workspace/projects/model-health/config/providers.example.yaml:21:    aliases:
/root/.openclaw/workspace/projects/model-health/config/providers.yaml:10:    aliases:
/root/.openclaw/workspace/projects/model-health/config/providers.yaml:25:    aliases:
/root/.openclaw/workspace/projects/model-health/config/providers.yaml:38:    aliases:
/root/.openclaw/workspace/projects/model-health/config/providers.yaml:51:    aliases:
/root/.openclaw/workspace/projects/model-health/config/providers.yaml:65:    aliases:
/root/.openclaw/workspace/projects/model-health/src/loaders.js:17:      current = { aliases: {}, tags: [], models: [] };
/root/.openclaw/workspace/projects/model-health/src/loaders.js:24:    if (trimmed === 'aliases:') { inAliases = true; inTags = inModels = false; continue; }
/root/.openclaw/workspace/projects/model-health/src/loaders.js:29:      current.aliases[k.trim()] = rest.join(':').trim();
/root/.openclaw/workspace/projects/model-health/src/sync.js:3:  const aliases = {};
/root/.openclaw/workspace/projects/model-health/src/sync.js:6:    Object.assign(aliases, p.aliases || {});
/root/.openclaw/workspace/projects/model-health/src/sync.js:8:  return { models: [...models], aliases };
/root/.openclaw/workspace/projects/model-health/src/sync.js:12:  const aliases = {};
/root/.openclaw/workspace/projects/model-health/src/sync.js:17:    if (meta && meta.alias) aliases[meta.alias] = model;
/root/.openclaw/workspace/projects/model-health/src/sync.js:23:  return { models: [...models], aliases };
/root/.openclaw/workspace/projects/model-health/src/sync.js:32:  for (const [alias, model] of Object.entries(a.aliases)) {
/root/.openclaw/workspace/projects/model-health/src/sync.js:33:    if (!b.aliases[alias]) aliasMismatches.push({ alias, expected: model, actual: null });
/root/.openclaw/workspace/projects/model-health/src/sync.js:34:    else if (b.aliases[alias] !== model) aliasMismatches.push({ alias, expected: model, actual: b.aliases[alias] });
/root/.openclaw/extensions/ddingtalk/src/channel.ts:90:  aliases: ["dingding", "钉钉"],
/root/.openclaw/extensions/wecom/package.json:30:      "aliases": [
/root/.openclaw/extensions/wecom/package.json:72:      "aliases": [
/root/.openclaw/extensions/wecom/src/channel.ts:31:  aliases: ["wechatwork", "wework", "qywx", "企微", "企业微信"],
/root/.openclaw/extensions/wecom/src/monitor.ts:39:// Stores (convenience aliases)
/root/.openclaw/extensions/openclaw-plugin-yuanbao/dist/src/channel.js:57:    aliases: ['yuanbao', '元宝', '即时通信'],
/root/.openclaw/extensions/openclaw-plugin-yuanbao/package.json:42:      "aliases": [
/root/.openclaw/completions/openclaw.zsh:14:    "1: :_values 'command' 'completion[Generate shell completion script]' 'setup[Initialize ~/.openclaw/openclaw.json and the agent workspace]' 'onboard[Interactive wizard to set up the gateway, workspace, and skills]' 'configure[Interactive setup wizard for credentials, channels, gateway, and agent defaults]' 'config[Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.]' 'doctor[Health checks + quick fixes for the gateway and channels]' 'dashboard[Open the Control UI with your current token]' 'reset[Reset local config/state (keeps the CLI installed)]' 'uninstall[Uninstall the gateway service + local data (CLI remains)]' 'message[Send, read, and manage messages and channel actions]' 'memory[Search, inspect, and reindex memory files]' 'agent[Run an agent turn via the Gateway (use --local for embedded)]' 'agents[Manage isolated agents (workspaces + auth + routing)]' 'status[Show channel health and recent session recipients]' 'health[Fetch health from the running gateway]' 'sessions[List stored conversation sessions]' 'browser[Manage OpenClaw'\''s dedicated browser (Chrome/Chromium)]' 'acp[Run an ACP bridge backed by the Gateway]' 'gateway[Run, inspect, and query the WebSocket Gateway]' 'daemon[Manage the Gateway service (launchd/systemd/schtasks)]' 'logs[Tail gateway file logs via RPC]' 'system[System tools (events, heartbeat, presence)]' 'models[Model discovery, scanning, and configuration]' 'approvals[Manage exec approvals (gateway or node host)]' 'nodes[Manage gateway-owned nodes (pairing, status, invoke, and media)]' 'devices[Device pairing and auth tokens]' 'node[Run and manage the headless node host service]' 'sandbox[Manage sandbox containers (Docker-based agent isolation)]' 'tui[Open a terminal UI connected to the Gateway]' 'cron[Manage cron jobs (via Gateway)]' 'dns[DNS helpers for wide-area discovery (Tailscale + CoreDNS)]' 'docs[Search the live OpenClaw docs]' 'hooks[Manage internal agent hooks]' 'webhooks[Webhook helpers and integrations]' 'qr[Generate an iOS pairing QR code and setup code]' 'clawbot[Legacy clawbot command aliases]' 'pairing[Secure DM pairing (approve inbound requests)]' 'plugins[Manage OpenClaw plugins and extensions]' 'channels[Manage connected chat channels and accounts]' 'directory[Lookup contact and group IDs (self, peers, groups) for supported chat channels]' 'security[Audit local config and state for common security foot-guns]' 'skills[List and inspect available skills]' 'update[Update OpenClaw and inspect update channel status]'" \
/root/.openclaw/completions/openclaw.zsh:1975:_openclaw_models_aliases_list() {
/root/.openclaw/completions/openclaw.zsh:1981:_openclaw_models_aliases_add() {
/root/.openclaw/completions/openclaw.zsh:1986:_openclaw_models_aliases_remove() {
/root/.openclaw/completions/openclaw.zsh:1991:_openclaw_models_aliases() {
/root/.openclaw/completions/openclaw.zsh:1997:    "1: :_values 'command' 'list[List model aliases]' 'add[Add or update a model alias]' 'remove[Remove a model alias]'" \
/root/.openclaw/completions/openclaw.zsh:2003:        (list) _openclaw_models_aliases_list ;;
/root/.openclaw/completions/openclaw.zsh:2004:        (add) _openclaw_models_aliases_add ;;
/root/.openclaw/completions/openclaw.zsh:2005:        (remove) _openclaw_models_aliases_remove ;;
/root/.openclaw/completions/openclaw.zsh:2212:    "1: :_values 'command' 'list[List models (configured by default)]' 'status[Show configured model state]' 'set[Set the default model]' 'set-image[Set the image model]' 'aliases[Manage model aliases]' 'fallbacks[Manage model fallback list]' 'image-fallbacks[Manage image model fallback list]' 'scan[Scan OpenRouter free models for tools + images]' 'auth[Manage model auth profiles]'" \
/root/.openclaw/completions/openclaw.zsh:2222:        (aliases) _openclaw_models_aliases ;;
/root/.openclaw/completions/openclaw.bash:123:        opts="list status set set-image aliases fallbacks image-fallbacks scan auth --status-json --status-plain --agent"
/root/.openclaw/completions/openclaw.ps1:1085:                $completions = @('list','status','set','set-image','aliases','fallbacks','image-fallbacks','scan','auth','--status-json','--status-plain','--agent')
/root/.openclaw/completions/openclaw.ps1:1105:            if ($commandPath -eq 'openclaw models aliases') {
/root/.openclaw/completions/openclaw.ps1:1112:            if ($commandPath -eq 'openclaw models aliases list') {
/root/.openclaw/completions/openclaw.fish:36:complete -c openclaw -n "__fish_use_subcommand" -a "clawbot" -d 'Legacy clawbot command aliases'
/root/.openclaw/completions/openclaw.fish:906:complete -c openclaw -n "__fish_seen_subcommand_from models" -a "aliases" -d 'Manage model aliases'
/root/.openclaw/completions/openclaw.fish:929:complete -c openclaw -n "__fish_seen_subcommand_from aliases" -a "list" -d 'List model aliases'
/root/.openclaw/completions/openclaw.fish:930:complete -c openclaw -n "__fish_seen_subcommand_from aliases" -a "add" -d 'Add or update a model alias'
/root/.openclaw/completions/openclaw.fish:931:complete -c openclaw -n "__fish_seen_subcommand_from aliases" -a "remove" -d 'Remove a model alias'
/etc/aliases:5:#	>>>>>>>>>>	The program "newaliases" must be run after
/etc/aliases:10:# Basic system aliases -- these MUST be present.
/etc/authselect/nsswitch.conf:15:aliases:    files
/etc/bashrc:3:# System wide functions and aliases
/etc/fonts/conf.d/65-fonts-persian.conf:47:<!-- Name changes and spelling variant aliases -->
/etc/fonts/conf.d/README:20: 60 through 69		generic aliases, map generic->family
/etc/lftp.conf:1:## some useful aliases
/etc/nsswitch.conf:15:aliases:    files
/etc/profile:4:# Functions and aliases go in /etc/bashrc
/etc/selinux/targeted/contexts/files/file_contexts:456:/etc/mail/.*\.db	--	system_u:object_r:etc_aliases_t:s0
/etc/selinux/targeted/contexts/files/file_contexts:1754:/etc/mail/aliases.*	--	system_u:object_r:etc_aliases_t:s0
/etc/selinux/targeted/contexts/files/file_contexts:2274:/etc/postfix/aliases.*	system_u:object_r:etc_aliases_t:s0
/etc/selinux/targeted/contexts/files/file_contexts:3513:/etc/aliases	--	system_u:object_r:etc_aliases_t:s0
/etc/selinux/targeted/contexts/files/file_contexts:3893:/etc/aliases\.db	--	system_u:object_r:etc_aliases_t:s0
/etc/selinux/targeted/contexts/files/file_contexts:4226:/etc/aliases\.lmdb	--	system_u:object_r:etc_aliases_t:s0
/etc/services:21:# service-name  port/protocol  [aliases ...]   [# comment]
/etc/services:419:# unregistered names used by zebra are listed as aliases.
/etc/skel/.bash_profile:3:# Get the aliases and functions
/etc/skel/.bashrc:18:# User specific aliases and functions
/etc/skel/.zshrc:2:# It should contain commands to set up aliases, functions, options, key bindings, etc.
/etc/zshrc:2:# It should contain commands to set up aliases, functions, options, key bindings, etc.