docs: canonicalize docs paths and align zh navigation (#11428)

* docs(navigation): canonicalize paths and align zh nav

* chore(docs): remove stray .DS_Store

* docs(scripts): add non-mint docs link audit

* docs(nav): fix zh source paths and preserve legacy redirects (#11428) (thanks @sebslight)

* chore(docs): satisfy lint for docs link audit script (#11428) (thanks @sebslight)
main
Seb Slight 2026-02-07 15:40:35 -05:00 committed by GitHub
parent cde29fef71
commit 929a3725d3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
148 changed files with 607 additions and 687 deletions

View File

@ -17,7 +17,7 @@ Hooks are small scripts that run when something happens. There are two kinds:
- **Hooks** (this page): run inside the Gateway when agent events fire, like `/new`, `/reset`, `/stop`, or lifecycle events. - **Hooks** (this page): run inside the Gateway when agent events fire, like `/new`, `/reset`, `/stop`, or lifecycle events.
- **Webhooks**: external HTTP webhooks that let other systems trigger work in OpenClaw. See [Webhook Hooks](/automation/webhook) or use `openclaw webhooks` for Gmail helper commands. - **Webhooks**: external HTTP webhooks that let other systems trigger work in OpenClaw. See [Webhook Hooks](/automation/webhook) or use `openclaw webhooks` for Gmail helper commands.
Hooks can also be bundled inside plugins; see [Plugins](/plugin#plugin-hooks). Hooks can also be bundled inside plugins; see [Plugins](/tools/plugin#plugin-hooks).
Common uses: Common uses:

View File

@ -18,7 +18,7 @@ Status: bundled plugin that talks to the BlueBubbles macOS server over HTTP. **R
- OpenClaw talks to it through its REST API (`GET /api/v1/ping`, `POST /message/text`, `POST /chat/:id/*`). - OpenClaw talks to it through its REST API (`GET /api/v1/ping`, `POST /message/text`, `POST /chat/:id/*`).
- Incoming messages arrive via webhooks; outgoing replies, typing indicators, read receipts, and tapbacks are REST calls. - Incoming messages arrive via webhooks; outgoing replies, typing indicators, read receipts, and tapbacks are REST calls.
- Attachments and stickers are ingested as inbound media (and surfaced to the agent when possible). - Attachments and stickers are ingested as inbound media (and surfaced to the agent when possible).
- Pairing/allowlist works the same way as other channels (`/start/pairing` etc) with `channels.bluebubbles.allowFrom` + pairing codes. - Pairing/allowlist works the same way as other channels (`/channels/pairing` etc) with `channels.bluebubbles.allowFrom` + pairing codes.
- Reactions are surfaced as system events just like Slack/Telegram so agents can "mention" them before replying. - Reactions are surfaced as system events just like Slack/Telegram so agents can "mention" them before replying.
- Advanced features: edit, unsend, reply threading, message effects, group management. - Advanced features: edit, unsend, reply threading, message effects, group management.
@ -149,7 +149,7 @@ DMs:
- Approve via: - Approve via:
- `openclaw pairing list bluebubbles` - `openclaw pairing list bluebubbles`
- `openclaw pairing approve bluebubbles <CODE>` - `openclaw pairing approve bluebubbles <CODE>`
- Pairing is the default token exchange. Details: [Pairing](/start/pairing) - Pairing is the default token exchange. Details: [Pairing](/channels/pairing)
Groups: Groups:
@ -337,4 +337,4 @@ Prefer `chat_guid` for stable routing:
- OpenClaw auto-hides known-broken actions based on the BlueBubbles server's macOS version. If edit still appears on macOS 26 (Tahoe), disable it manually with `channels.bluebubbles.actions.edit=false`. - OpenClaw auto-hides known-broken actions based on the BlueBubbles server's macOS version. If edit still appears on macOS 26 (Tahoe), disable it manually with `channels.bluebubbles.actions.edit=false`.
- For status/health info: `openclaw status --all` or `openclaw status --deep`. - For status/health info: `openclaw status --all` or `openclaw status --deep`.
For general channel workflow reference, see [Channels](/channels) and the [Plugins](/plugin) guide. For general channel workflow reference, see [Channels](/channels) and the [Plugins](/tools/plugin) guide.

View File

@ -437,6 +437,6 @@ Planned features:
## See Also ## See Also
- [Multi-Agent Configuration](/multi-agent-sandbox-tools) - [Multi-Agent Configuration](/tools/multi-agent-sandbox-tools)
- [Routing Configuration](/concepts/channel-routing) - [Routing Configuration](/channels/channel-routing)
- [Session Management](/concepts/sessions) - [Session Management](/concepts/sessions)

View File

@ -68,7 +68,7 @@ Config:
} }
``` ```
See: [Broadcast Groups](/broadcast-groups). See: [Broadcast Groups](/channels/broadcast-groups).
## Config overview ## Config overview

View File

@ -371,4 +371,4 @@ The agent system prompt includes a group intro on the first turn of a new group
## WhatsApp specifics ## WhatsApp specifics
See [Group messages](/concepts/group-messages) for WhatsApp-only behavior (history injection, mention handling details). See [Group messages](/channels/group-messages) for WhatsApp-only behavior (history injection, mention handling details).

View File

@ -224,7 +224,7 @@ DMs:
- Approve via: - Approve via:
- `openclaw pairing list imessage` - `openclaw pairing list imessage`
- `openclaw pairing approve imessage <CODE>` - `openclaw pairing approve imessage <CODE>`
- Pairing is the default token exchange for iMessage DMs. Details: [Pairing](/start/pairing) - Pairing is the default token exchange for iMessage DMs. Details: [Pairing](/channels/pairing)
Groups: Groups:

View File

@ -39,7 +39,7 @@ Text is supported everywhere; media and reactions vary by channel.
- Channels can run simultaneously; configure multiple and OpenClaw will route per chat. - Channels can run simultaneously; configure multiple and OpenClaw will route per chat.
- Fastest setup is usually **Telegram** (simple bot token). WhatsApp requires QR pairing and - Fastest setup is usually **Telegram** (simple bot token). WhatsApp requires QR pairing and
stores more state on disk. stores more state on disk.
- Group behavior varies by channel; see [Groups](/concepts/groups). - Group behavior varies by channel; see [Groups](/channels/groups).
- DM pairing and allowlists are enforced for safety; see [Security](/gateway/security). - DM pairing and allowlists are enforced for safety; see [Security](/gateway/security).
- Telegram internals: [grammY notes](/channels/grammy). - Telegram internals: [grammY notes](/channels/grammy).
- Troubleshooting: [Channel troubleshooting](/channels/troubleshooting). - Troubleshooting: [Channel troubleshooting](/channels/troubleshooting).

View File

@ -34,7 +34,7 @@ openclaw plugins install ./extensions/matrix
If you choose Matrix during configure/onboarding and a git checkout is detected, If you choose Matrix during configure/onboarding and a git checkout is detected,
OpenClaw will offer the local install path automatically. OpenClaw will offer the local install path automatically.
Details: [Plugins](/plugin) Details: [Plugins](/tools/plugin)
## Setup ## Setup

View File

@ -31,7 +31,7 @@ openclaw plugins install ./extensions/mattermost
If you choose Mattermost during configure/onboarding and a git checkout is detected, If you choose Mattermost during configure/onboarding and a git checkout is detected,
OpenClaw will offer the local install path automatically. OpenClaw will offer the local install path automatically.
Details: [Plugins](/plugin) Details: [Plugins](/tools/plugin)
## Quick setup ## Quick setup

View File

@ -36,7 +36,7 @@ openclaw plugins install ./extensions/msteams
If you choose Teams during configure/onboarding and a git checkout is detected, If you choose Teams during configure/onboarding and a git checkout is detected,
OpenClaw will offer the local install path automatically. OpenClaw will offer the local install path automatically.
Details: [Plugins](/plugin) Details: [Plugins](/tools/plugin)
## Quick setup (beginner) ## Quick setup (beginner)

View File

@ -28,7 +28,7 @@ openclaw plugins install ./extensions/nextcloud-talk
If you choose Nextcloud Talk during configure/onboarding and a git checkout is detected, If you choose Nextcloud Talk during configure/onboarding and a git checkout is detected,
OpenClaw will offer the local install path automatically. OpenClaw will offer the local install path automatically.
Details: [Plugins](/plugin) Details: [Plugins](/tools/plugin)
## Quick setup (beginner) ## Quick setup (beginner)

View File

@ -109,7 +109,7 @@ DMs:
- Approve via: - Approve via:
- `openclaw pairing list signal` - `openclaw pairing list signal`
- `openclaw pairing approve signal <CODE>` - `openclaw pairing approve signal <CODE>`
- Pairing is the default token exchange for Signal DMs. Details: [Pairing](/start/pairing) - Pairing is the default token exchange for Signal DMs. Details: [Pairing](/channels/pairing)
- UUID-only senders (from `sourceUuid`) are stored as `uuid:<id>` in `channels.signal.allowFrom`. - UUID-only senders (from `sourceUuid`) are stored as `uuid:<id>` in `channels.signal.allowFrom`.
Groups: Groups:

View File

@ -351,7 +351,7 @@ Use the global setting when all Telegram bots/accounts should behave the same. U
- Approve via: - Approve via:
- `openclaw pairing list telegram` - `openclaw pairing list telegram`
- `openclaw pairing approve telegram <CODE>` - `openclaw pairing approve telegram <CODE>`
- Pairing is the default token exchange used for Telegram DMs. Details: [Pairing](/start/pairing) - Pairing is the default token exchange used for Telegram DMs. Details: [Pairing](/channels/pairing)
- `channels.telegram.allowFrom` accepts numeric user IDs (recommended) or `@username` entries. It is **not** the bot username; use the human senders ID. The wizard accepts `@username` and resolves it to the numeric ID when possible. - `channels.telegram.allowFrom` accepts numeric user IDs (recommended) or `@username` entries. It is **not** the bot username; use the human senders ID. The wizard accepts `@username` and resolves it to the numeric ID when possible.
#### Finding your Telegram user ID #### Finding your Telegram user ID

View File

@ -30,7 +30,7 @@ Local checkout (when running from a git repo):
openclaw plugins install ./extensions/tlon openclaw plugins install ./extensions/tlon
``` ```
Details: [Plugins](/plugin) Details: [Plugins](/tools/plugin)
## Setup ## Setup

View File

@ -25,7 +25,7 @@ Local checkout (when running from a git repo):
openclaw plugins install ./extensions/twitch openclaw plugins install ./extensions/twitch
``` ```
Details: [Plugins](/plugin) Details: [Plugins](/tools/plugin)
## Quick setup (beginner) ## Quick setup (beginner)

View File

@ -15,7 +15,7 @@ Zalo ships as a plugin and is not bundled with the core install.
- Install via CLI: `openclaw plugins install @openclaw/zalo` - Install via CLI: `openclaw plugins install @openclaw/zalo`
- Or select **Zalo** during onboarding and confirm the install prompt - Or select **Zalo** during onboarding and confirm the install prompt
- Details: [Plugins](/plugin) - Details: [Plugins](/tools/plugin)
## Quick setup (beginner) ## Quick setup (beginner)
@ -104,7 +104,7 @@ Multi-account support: use `channels.zalo.accounts` with per-account tokens and
- Approve via: - Approve via:
- `openclaw pairing list zalo` - `openclaw pairing list zalo`
- `openclaw pairing approve zalo <CODE>` - `openclaw pairing approve zalo <CODE>`
- Pairing is the default token exchange. Details: [Pairing](/start/pairing) - Pairing is the default token exchange. Details: [Pairing](/channels/pairing)
- `channels.zalo.allowFrom` accepts numeric user IDs (no username lookup available). - `channels.zalo.allowFrom` accepts numeric user IDs (no username lookup available).
## Long-polling vs webhook ## Long-polling vs webhook

View File

@ -18,7 +18,7 @@ Zalo Personal ships as a plugin and is not bundled with the core install.
- Install via CLI: `openclaw plugins install @openclaw/zalouser` - Install via CLI: `openclaw plugins install @openclaw/zalouser`
- Or from a source checkout: `openclaw plugins install ./extensions/zalouser` - Or from a source checkout: `openclaw plugins install ./extensions/zalouser`
- Details: [Plugins](/plugin) - Details: [Plugins](/tools/plugin)
## Prerequisite: zca-cli ## Prerequisite: zca-cli

View File

@ -12,8 +12,8 @@ Manage agent hooks (event-driven automations for commands like `/new`, `/reset`,
Related: Related:
- Hooks: [Hooks](/hooks) - Hooks: [Hooks](/automation/hooks)
- Plugin hooks: [Plugins](/plugin#plugin-hooks) - Plugin hooks: [Plugins](/tools/plugin#plugin-hooks)
## List All Hooks ## List All Hooks
@ -248,7 +248,7 @@ openclaw hooks enable session-memory
**Output:** `~/.openclaw/workspace/memory/YYYY-MM-DD-slug.md` **Output:** `~/.openclaw/workspace/memory/YYYY-MM-DD-slug.md`
**See:** [session-memory documentation](/hooks#session-memory) **See:** [session-memory documentation](/automation/hooks#session-memory)
### command-logger ### command-logger
@ -275,7 +275,7 @@ cat ~/.openclaw/logs/commands.log | jq .
grep '"action":"new"' ~/.openclaw/logs/commands.log | jq . grep '"action":"new"' ~/.openclaw/logs/commands.log | jq .
``` ```
**See:** [command-logger documentation](/hooks#command-logger) **See:** [command-logger documentation](/automation/hooks#command-logger)
### soul-evil ### soul-evil
@ -301,4 +301,4 @@ Runs `BOOT.md` when the gateway starts (after channels start).
openclaw hooks enable boot-md openclaw hooks enable boot-md
``` ```
**See:** [boot-md documentation](/hooks#boot-md) **See:** [boot-md documentation](/automation/hooks#boot-md)

View File

@ -255,7 +255,7 @@ Manage extensions and their config:
- `openclaw plugins enable <id>` / `disable <id>` — toggle `plugins.entries.<id>.enabled`. - `openclaw plugins enable <id>` / `disable <id>` — toggle `plugins.entries.<id>.enabled`.
- `openclaw plugins doctor` — report plugin load errors. - `openclaw plugins doctor` — report plugin load errors.
Most plugin changes require a gateway restart. See [/plugin](/plugin). Most plugin changes require a gateway restart. See [/plugin](/tools/plugin).
## Memory ## Memory

View File

@ -14,7 +14,7 @@ Provided by the active memory plugin (default: `memory-core`; set `plugins.slots
Related: Related:
- Memory concept: [Memory](/concepts/memory) - Memory concept: [Memory](/concepts/memory)
- Plugins: [Plugins](/plugin) - Plugins: [Plugins](/tools/plugin)
## Examples ## Examples

View File

@ -11,7 +11,7 @@ Approve or inspect DM pairing requests (for channels that support pairing).
Related: Related:
- Pairing flow: [Pairing](/start/pairing) - Pairing flow: [Pairing](/channels/pairing)
## Commands ## Commands

View File

@ -12,7 +12,7 @@ Manage Gateway plugins/extensions (loaded in-process).
Related: Related:
- Plugin system: [Plugins](/plugin) - Plugin system: [Plugins](/tools/plugin)
- Plugin manifest + schema: [Plugin manifest](/plugins/manifest) - Plugin manifest + schema: [Plugin manifest](/plugins/manifest)
- Security hardening: [Security](/gateway/security) - Security hardening: [Security](/gateway/security)

View File

@ -12,7 +12,7 @@ Open the terminal UI connected to the Gateway.
Related: Related:
- TUI guide: [TUI](/tui) - TUI guide: [TUI](/web/tui)
## Examples ## Examples

View File

@ -75,7 +75,7 @@ OpenClaw has two hook systems:
Use this to add/remove bootstrap context files. Use this to add/remove bootstrap context files.
- **Command hooks**: `/new`, `/reset`, `/stop`, and other command events (see Hooks doc). - **Command hooks**: `/new`, `/reset`, `/stop`, and other command events (see Hooks doc).
See [Hooks](/hooks) for setup and examples. See [Hooks](/automation/hooks) for setup and examples.
### Plugin hooks (agent + gateway lifecycle) ### Plugin hooks (agent + gateway lifecycle)
@ -90,7 +90,7 @@ These run inside the agent loop or gateway pipeline:
- **`session_start` / `session_end`**: session lifecycle boundaries. - **`session_start` / `session_end`**: session lifecycle boundaries.
- **`gateway_start` / `gateway_stop`**: gateway lifecycle events. - **`gateway_start` / `gateway_stop`**: gateway lifecycle events.
See [Plugins](/plugin#plugin-hooks) for the hook API and registration details. See [Plugins](/tools/plugin#plugin-hooks) for the hook API and registration details.
## Streaming + partial replies ## Streaming + partial replies

View File

@ -228,6 +228,6 @@ Suggested `.gitignore` starter:
## Advanced notes ## Advanced notes
- Multi-agent routing can use different workspaces per agent. See - Multi-agent routing can use different workspaces per agent. See
[Channel routing](/concepts/channel-routing) for routing configuration. [Channel routing](/channels/channel-routing) for routing configuration.
- If `agents.defaults.sandbox` is enabled, non-main sessions can use per-session sandbox - If `agents.defaults.sandbox` is enabled, non-main sessions can use per-session sandbox
workspaces under `agents.defaults.sandbox.workspaceRoot`. workspaces under `agents.defaults.sandbox.workspaceRoot`.

View File

@ -120,4 +120,4 @@ At minimum, set:
--- ---
_Next: [Group Chats](/concepts/group-messages)_ 🦞 _Next: [Group Chats](/channels/group-messages)_ 🦞

View File

@ -97,7 +97,7 @@ Client Gateway
- Gateway auth (`gateway.auth.*`) still applies to **all** connections, local or - Gateway auth (`gateway.auth.*`) still applies to **all** connections, local or
remote. remote.
Details: [Gateway protocol](/gateway/protocol), [Pairing](/start/pairing), Details: [Gateway protocol](/gateway/protocol), [Pairing](/channels/pairing),
[Security](/gateway/security). [Security](/gateway/security).
## Protocol typing and codegen ## Protocol typing and codegen

View File

@ -27,7 +27,7 @@ Context is _not the same thing_ as “memory”: memory can be stored on disk an
- `/usage tokens` → append per-reply usage footer to normal replies. - `/usage tokens` → append per-reply usage footer to normal replies.
- `/compact` → summarize older history into a compact entry to free window space. - `/compact` → summarize older history into a compact entry to free window space.
See also: [Slash commands](/tools/slash-commands), [Token use & costs](/token-use), [Compaction](/concepts/compaction). See also: [Slash commands](/tools/slash-commands), [Token use & costs](/reference/token-use), [Compaction](/concepts/compaction).
## Example output ## Example output

View File

@ -142,7 +142,7 @@ OpenClaw can expose or hide model reasoning:
- Reasoning content still counts toward token usage when produced by the model. - Reasoning content still counts toward token usage when produced by the model.
- Telegram supports reasoning stream into the draft bubble. - Telegram supports reasoning stream into the draft bubble.
Details: [Thinking + reasoning directives](/tools/thinking) and [Token use](/token-use). Details: [Thinking + reasoning directives](/tools/thinking) and [Token use](/reference/token-use).
## Prefixes, threading, and replies ## Prefixes, threading, and replies

View File

@ -194,7 +194,7 @@ Scan results are ranked by:
Input Input
- OpenRouter `/models` list (filter `:free`) - OpenRouter `/models` list (filter `:free`)
- Requires OpenRouter API key from auth profiles or `OPENROUTER_API_KEY` (see [/environment](/environment)) - Requires OpenRouter API key from auth profiles or `OPENROUTER_API_KEY` (see [/environment](/help/environment))
- Optional filters: `--max-age-days`, `--min-params`, `--provider`, `--max-candidates` - Optional filters: `--max-age-days`, `--min-params`, `--provider`, `--max-candidates`
- Probe controls: `--timeout`, `--concurrency` - Probe controls: `--timeout`, `--concurrency`

View File

@ -112,7 +112,7 @@ Example:
Notes: Notes:
- DM access control is **global per WhatsApp account** (pairing/allowlist), not per agent. - DM access control is **global per WhatsApp account** (pairing/allowlist), not per agent.
- For shared groups, bind the group to one agent or use [Broadcast groups](/broadcast-groups). - For shared groups, bind the group to one agent or use [Broadcast groups](/channels/broadcast-groups).
## Routing rules (how messages pick an agent) ## Routing rules (how messages pick an agent)
@ -373,4 +373,4 @@ Note: `tools.elevated` is **global** and sender-based; it is not configurable pe
If you need per-agent boundaries, use `agents.list[].tools` to deny `exec`. If you need per-agent boundaries, use `agents.list[].tools` to deny `exec`.
For group targeting, use `agents.list[].groupChat.mentionPatterns` so @mentions map cleanly to the intended agent. For group targeting, use `agents.list[].groupChat.mentionPatterns` so @mentions map cleanly to the intended agent.
See [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) for detailed examples. See [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) for detailed examples.

View File

@ -38,18 +38,6 @@
] ]
}, },
"redirects": [ "redirects": [
{
"source": "/cron",
"destination": "/cron-jobs"
},
{
"source": "/model",
"destination": "/models"
},
{
"source": "/model/",
"destination": "/models"
},
{ {
"source": "/messages", "source": "/messages",
"destination": "/concepts/messages" "destination": "/concepts/messages"
@ -62,6 +50,10 @@
"source": "/compaction", "source": "/compaction",
"destination": "/concepts/compaction" "destination": "/concepts/compaction"
}, },
{
"source": "/cron",
"destination": "/cron-jobs"
},
{ {
"source": "/minimax", "source": "/minimax",
"destination": "/providers/minimax" "destination": "/providers/minimax"
@ -356,11 +348,11 @@
}, },
{ {
"source": "/group-messages", "source": "/group-messages",
"destination": "/concepts/group-messages" "destination": "/channels/group-messages"
}, },
{ {
"source": "/groups", "source": "/groups",
"destination": "/concepts/groups" "destination": "/channels/groups"
}, },
{ {
"source": "/health", "source": "/health",
@ -486,6 +478,14 @@
"source": "/model-failover", "source": "/model-failover",
"destination": "/concepts/model-failover" "destination": "/concepts/model-failover"
}, },
{
"source": "/model",
"destination": "/models"
},
{
"source": "/model/",
"destination": "/models"
},
{ {
"source": "/models", "source": "/models",
"destination": "/concepts/models" "destination": "/concepts/models"
@ -508,7 +508,7 @@
}, },
{ {
"source": "/pairing", "source": "/pairing",
"destination": "/start/pairing" "destination": "/channels/pairing"
}, },
{ {
"source": "/plans/cron-add-hardening", "source": "/plans/cron-add-hardening",
@ -532,11 +532,11 @@
}, },
{ {
"source": "/provider-routing", "source": "/provider-routing",
"destination": "/concepts/channel-routing" "destination": "/channels/channel-routing"
}, },
{ {
"source": "/concepts/provider-routing", "source": "/concepts/provider-routing",
"destination": "/concepts/channel-routing" "destination": "/channels/channel-routing"
}, },
{ {
"source": "/queue", "source": "/queue",
@ -667,8 +667,8 @@
"destination": "/help/troubleshooting" "destination": "/help/troubleshooting"
}, },
{ {
"source": "/web/tui", "source": "/tui",
"destination": "/tui" "destination": "/web/tui"
}, },
{ {
"source": "/typebox", "source": "/typebox",
@ -722,9 +722,13 @@
"source": "/oauth", "source": "/oauth",
"destination": "/concepts/oauth" "destination": "/concepts/oauth"
}, },
{
"source": "/plugin",
"destination": "/tools/plugin"
},
{ {
"source": "/plugins", "source": "/plugins",
"destination": "/plugin" "destination": "/tools/plugin"
}, },
{ {
"source": "/railway", "source": "/railway",
@ -783,9 +787,17 @@
{ {
"tab": "Get started", "tab": "Get started",
"groups": [ "groups": [
{
"group": "Home",
"pages": ["index"]
},
{ {
"group": "Overview", "group": "Overview",
"pages": ["index", "concepts/features", "start/showcase"] "pages": ["start/showcase"]
},
{
"group": "Core concepts",
"pages": ["concepts/features"]
}, },
{ {
"group": "First steps", "group": "First steps",
@ -861,11 +873,11 @@
{ {
"group": "Configuration", "group": "Configuration",
"pages": [ "pages": [
"start/pairing", "channels/pairing",
"concepts/group-messages", "channels/group-messages",
"concepts/groups", "channels/groups",
"broadcast-groups", "channels/broadcast-groups",
"concepts/channel-routing", "channels/channel-routing",
"channels/location", "channels/location",
"channels/troubleshooting" "channels/troubleshooting"
] ]
@ -884,10 +896,13 @@
"concepts/system-prompt", "concepts/system-prompt",
"concepts/context", "concepts/context",
"concepts/agent-workspace", "concepts/agent-workspace",
"start/bootstrapping",
"concepts/oauth" "concepts/oauth"
] ]
}, },
{
"group": "Bootstrapping",
"pages": ["start/bootstrapping"]
},
{ {
"group": "Sessions and memory", "group": "Sessions and memory",
"pages": [ "pages": [
@ -945,25 +960,26 @@
}, },
{ {
"group": "Agent coordination", "group": "Agent coordination",
"pages": ["tools/agent-send", "tools/subagents", "multi-agent-sandbox-tools"] "pages": ["tools/agent-send", "tools/subagents", "tools/multi-agent-sandbox-tools"]
}, },
{ {
"group": "Skills and extensions", "group": "Skills",
"pages": [ "pages": [
"tools/slash-commands", "tools/slash-commands",
"tools/skills", "tools/skills",
"tools/skills-config", "tools/skills-config",
"tools/clawhub", "tools/clawhub",
"plugin", "tools/plugin"
"plugins/voice-call",
"plugins/zalouser"
] ]
}, },
{
"group": "Extensions",
"pages": ["plugins/voice-call", "plugins/zalouser"]
},
{ {
"group": "Automation", "group": "Automation",
"pages": [ "pages": [
"hooks", "automation/hooks",
"hooks/soul-evil",
"automation/cron-jobs", "automation/cron-jobs",
"automation/cron-vs-heartbeat", "automation/cron-vs-heartbeat",
"automation/troubleshooting", "automation/troubleshooting",
@ -973,6 +989,10 @@
"automation/auth-monitoring" "automation/auth-monitoring"
] ]
}, },
{
"group": "Hooks",
"pages": ["hooks/soul-evil"]
},
{ {
"group": "Media and devices", "group": "Media and devices",
"pages": [ "pages": [
@ -993,7 +1013,11 @@
"groups": [ "groups": [
{ {
"group": "Overview", "group": "Overview",
"pages": ["providers/index", "providers/models", "concepts/models"] "pages": ["providers/index", "providers/models"]
},
{
"group": "Model concepts",
"pages": ["concepts/models"]
}, },
{ {
"group": "Configuration", "group": "Configuration",
@ -1005,7 +1029,7 @@
"providers/anthropic", "providers/anthropic",
"providers/openai", "providers/openai",
"providers/openrouter", "providers/openrouter",
"bedrock", "providers/bedrock",
"providers/vercel-ai-gateway", "providers/vercel-ai-gateway",
"providers/moonshot", "providers/moonshot",
"providers/minimax", "providers/minimax",
@ -1120,7 +1144,7 @@
}, },
{ {
"group": "Web interfaces", "group": "Web interfaces",
"pages": ["web/index", "web/control-ui", "web/dashboard", "web/webchat", "tui"] "pages": ["web/index", "web/control-ui", "web/dashboard", "web/webchat", "web/tui"]
} }
] ]
}, },
@ -1188,14 +1212,16 @@
}, },
{ {
"group": "Technical reference", "group": "Technical reference",
"pages": ["reference/wizard", "reference/token-use"]
},
{
"group": "Concept internals",
"pages": [ "pages": [
"reference/wizard",
"concepts/typebox", "concepts/typebox",
"concepts/markdown-formatting", "concepts/markdown-formatting",
"concepts/typing-indicators", "concepts/typing-indicators",
"concepts/usage-tracking", "concepts/usage-tracking",
"concepts/timezone", "concepts/timezone"
"token-use"
] ]
}, },
{ {
@ -1221,18 +1247,23 @@
}, },
{ {
"group": "Environment and debugging", "group": "Environment and debugging",
"pages": [ "pages": ["help/environment", "help/debugging", "help/testing", "help/scripts"]
"install/node",
"environment",
"debugging",
"testing",
"scripts",
"reference/session-management-compaction"
]
}, },
{ {
"group": "Developer workflows", "group": "Node runtime",
"pages": ["start/setup", "help/submitting-a-pr", "help/submitting-an-issue"] "pages": ["install/node"]
},
{
"group": "Compaction internals",
"pages": ["reference/session-management-compaction"]
},
{
"group": "Developer setup",
"pages": ["start/setup"]
},
{
"group": "Contributing",
"pages": ["help/submitting-a-pr", "help/submitting-an-issue"]
}, },
{ {
"group": "Docs meta", "group": "Docs meta",
@ -1248,9 +1279,17 @@
{ {
"tab": "快速开始", "tab": "快速开始",
"groups": [ "groups": [
{
"group": "首页",
"pages": ["zh-CN/index"]
},
{ {
"group": "概览", "group": "概览",
"pages": ["zh-CN/index", "zh-CN/concepts/features", "zh-CN/start/showcase"] "pages": ["zh-CN/start/showcase"]
},
{
"group": "核心概念",
"pages": ["zh-CN/concepts/features"]
}, },
{ {
"group": "第一步", "group": "第一步",
@ -1276,7 +1315,6 @@
{ {
"group": "安装方式", "group": "安装方式",
"pages": [ "pages": [
"zh-CN/install/node",
"zh-CN/install/docker", "zh-CN/install/docker",
"zh-CN/install/nix", "zh-CN/install/nix",
"zh-CN/install/ansible", "zh-CN/install/ansible",
@ -1340,11 +1378,11 @@
{ {
"group": "配置", "group": "配置",
"pages": [ "pages": [
"zh-CN/start/pairing", "zh-CN/channels/pairing",
"zh-CN/concepts/group-messages", "zh-CN/channels/group-messages",
"zh-CN/concepts/groups", "zh-CN/channels/groups",
"zh-CN/broadcast-groups", "zh-CN/channels/broadcast-groups",
"zh-CN/concepts/channel-routing", "zh-CN/channels/channel-routing",
"zh-CN/channels/location", "zh-CN/channels/location",
"zh-CN/channels/troubleshooting" "zh-CN/channels/troubleshooting"
] ]
@ -1366,6 +1404,10 @@
"zh-CN/concepts/oauth" "zh-CN/concepts/oauth"
] ]
}, },
{
"group": "引导",
"pages": ["zh-CN/start/bootstrapping"]
},
{ {
"group": "会话与记忆", "group": "会话与记忆",
"pages": [ "pages": [
@ -1426,38 +1468,45 @@
"pages": [ "pages": [
"zh-CN/tools/agent-send", "zh-CN/tools/agent-send",
"zh-CN/tools/subagents", "zh-CN/tools/subagents",
"zh-CN/multi-agent-sandbox-tools" "zh-CN/tools/multi-agent-sandbox-tools"
] ]
}, },
{ {
"group": "技能与扩展", "group": "技能",
"pages": [ "pages": [
"zh-CN/tools/slash-commands", "zh-CN/tools/slash-commands",
"zh-CN/tools/skills", "zh-CN/tools/skills",
"zh-CN/tools/skills-config", "zh-CN/tools/skills-config",
"zh-CN/tools/clawhub", "zh-CN/tools/clawhub",
"zh-CN/plugin", "zh-CN/tools/plugin"
"zh-CN/plugins/voice-call",
"zh-CN/plugins/zalouser"
] ]
}, },
{
"group": "扩展",
"pages": ["zh-CN/plugins/voice-call", "zh-CN/plugins/zalouser"]
},
{ {
"group": "自动化", "group": "自动化",
"pages": [ "pages": [
"zh-CN/hooks", "zh-CN/automation/hooks",
"zh-CN/hooks/soul-evil",
"zh-CN/automation/cron-jobs", "zh-CN/automation/cron-jobs",
"zh-CN/automation/cron-vs-heartbeat", "zh-CN/automation/cron-vs-heartbeat",
"zh-CN/automation/troubleshooting",
"zh-CN/automation/webhook", "zh-CN/automation/webhook",
"zh-CN/automation/gmail-pubsub", "zh-CN/automation/gmail-pubsub",
"zh-CN/automation/poll", "zh-CN/automation/poll",
"zh-CN/automation/auth-monitoring" "zh-CN/automation/auth-monitoring"
] ]
}, },
{
"group": "Hooks",
"pages": ["zh-CN/hooks/soul-evil"]
},
{ {
"group": "媒体与设备", "group": "媒体与设备",
"pages": [ "pages": [
"zh-CN/nodes/index", "zh-CN/nodes/index",
"zh-CN/nodes/troubleshooting",
"zh-CN/nodes/images", "zh-CN/nodes/images",
"zh-CN/nodes/audio", "zh-CN/nodes/audio",
"zh-CN/nodes/camera", "zh-CN/nodes/camera",
@ -1473,11 +1522,11 @@
"groups": [ "groups": [
{ {
"group": "概览", "group": "概览",
"pages": [ "pages": ["zh-CN/providers/index", "zh-CN/providers/models"]
"zh-CN/providers/index", },
"zh-CN/providers/models", {
"zh-CN/concepts/models" "group": "模型概念",
] "pages": ["zh-CN/concepts/models"]
}, },
{ {
"group": "配置", "group": "配置",
@ -1489,14 +1538,15 @@
"zh-CN/providers/anthropic", "zh-CN/providers/anthropic",
"zh-CN/providers/openai", "zh-CN/providers/openai",
"zh-CN/providers/openrouter", "zh-CN/providers/openrouter",
"zh-CN/bedrock", "zh-CN/providers/bedrock",
"zh-CN/providers/vercel-ai-gateway", "zh-CN/providers/vercel-ai-gateway",
"zh-CN/providers/moonshot", "zh-CN/providers/moonshot",
"zh-CN/providers/minimax", "zh-CN/providers/minimax",
"zh-CN/providers/opencode", "zh-CN/providers/opencode",
"zh-CN/providers/glm", "zh-CN/providers/glm",
"zh-CN/providers/zai", "zh-CN/providers/zai",
"zh-CN/providers/synthetic" "zh-CN/providers/synthetic",
"zh-CN/providers/qianfan"
] ]
} }
] ]
@ -1612,7 +1662,7 @@
"zh-CN/web/control-ui", "zh-CN/web/control-ui",
"zh-CN/web/dashboard", "zh-CN/web/dashboard",
"zh-CN/web/webchat", "zh-CN/web/webchat",
"zh-CN/tui" "zh-CN/web/tui"
] ]
} }
] ]
@ -1681,13 +1731,16 @@
}, },
{ {
"group": "技术参考", "group": "技术参考",
"pages": ["zh-CN/reference/wizard", "zh-CN/reference/token-use"]
},
{
"group": "概念内部机制",
"pages": [ "pages": [
"zh-CN/concepts/typebox", "zh-CN/concepts/typebox",
"zh-CN/concepts/markdown-formatting", "zh-CN/concepts/markdown-formatting",
"zh-CN/concepts/typing-indicators", "zh-CN/concepts/typing-indicators",
"zh-CN/concepts/usage-tracking", "zh-CN/concepts/usage-tracking",
"zh-CN/concepts/timezone", "zh-CN/concepts/timezone"
"zh-CN/token-use"
] ]
}, },
{ {
@ -1714,17 +1767,28 @@
{ {
"group": "环境与调试", "group": "环境与调试",
"pages": [ "pages": [
"zh-CN/environment", "zh-CN/help/environment",
"zh-CN/debugging", "zh-CN/help/debugging",
"zh-CN/testing", "zh-CN/help/testing",
"zh-CN/scripts", "zh-CN/help/scripts"
"zh-CN/reference/session-management-compaction"
] ]
}, },
{ {
"group": "开发者工作流", "group": "Node 运行时",
"pages": ["zh-CN/install/node"]
},
{
"group": "压缩机制内部参考",
"pages": ["zh-CN/reference/session-management-compaction"]
},
{
"group": "开发者设置",
"pages": ["zh-CN/start/setup"] "pages": ["zh-CN/start/setup"]
}, },
{
"group": "贡献",
"pages": ["zh-CN/help/submitting-a-pr", "zh-CN/help/submitting-an-issue"]
},
{ {
"group": "文档元信息", "group": "文档元信息",
"pages": ["zh-CN/start/hubs", "zh-CN/start/docs-directory"] "pages": ["zh-CN/start/hubs", "zh-CN/start/docs-directory"]

View File

@ -36,5 +36,5 @@ false negatives when deciding whether to respond in DMs or groups.
## Related docs ## Related docs
- [Group Chats](/concepts/groups) - [Group Chats](/channels/groups)
- [Telegram Provider](/channels/telegram) - [Telegram Provider](/channels/telegram)

View File

@ -289,7 +289,7 @@ process env is missing the key (same non-overriding rule):
} }
``` ```
See [/environment](/environment) for full precedence and sources. See [/environment](/help/environment) for full precedence and sources.
### `env.shellEnv` (optional) ### `env.shellEnv` (optional)
@ -788,7 +788,7 @@ levels in one gateway:
- **Read-only** tools + workspace - **Read-only** tools + workspace
- **No filesystem access** (messaging/session tools only) - **No filesystem access** (messaging/session tools only)
See [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) for precedence and See [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) for precedence and
additional examples. additional examples.
Full access (no sandbox): Full access (no sandbox):
@ -2857,7 +2857,7 @@ Example:
Controls plugin discovery, allow/deny, and per-plugin config. Plugins are loaded Controls plugin discovery, allow/deny, and per-plugin config. Plugins are loaded
from `~/.openclaw/extensions`, `<workspace>/.openclaw/extensions`, plus any from `~/.openclaw/extensions`, `<workspace>/.openclaw/extensions`, plus any
`plugins.load.paths` entries. **Config changes require a gateway restart.** `plugins.load.paths` entries. **Config changes require a gateway restart.**
See [/plugin](/plugin) for full usage. See [/plugin](/tools/plugin) for full usage.
Fields: Fields:

View File

@ -200,7 +200,7 @@ Use `accountId` to target a specific account on multi-account channels like Tele
- `session`: optional session key for heartbeat runs. - `session`: optional session key for heartbeat runs.
- `main` (default): agent main session. - `main` (default): agent main session.
- Explicit session key (copy from `openclaw sessions --json` or the [sessions CLI](/cli/sessions)). - Explicit session key (copy from `openclaw sessions --json` or the [sessions CLI](/cli/sessions)).
- Session key formats: see [Sessions](/concepts/session) and [Groups](/concepts/groups). - Session key formats: see [Sessions](/concepts/session) and [Groups](/channels/groups).
- `target`: - `target`:
- `last` (default): deliver to the last used external channel. - `last` (default): deliver to the last used external channel.
- explicit channel: `whatsapp` / `telegram` / `discord` / `googlechat` / `slack` / `msteams` / `signal` / `imessage`. - explicit channel: `whatsapp` / `telegram` / `discord` / `googlechat` / `slack` / `msteams` / `signal` / `imessage`.

View File

@ -168,7 +168,7 @@ Debugging:
Each agent can override sandbox + tools: Each agent can override sandbox + tools:
`agents.list[].sandbox` and `agents.list[].tools` (plus `agents.list[].tools.sandbox.tools` for sandbox tool policy). `agents.list[].sandbox` and `agents.list[].tools` (plus `agents.list[].tools.sandbox.tools` for sandbox tool policy).
See [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) for precedence. See [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) for precedence.
## Minimal enable example ## Minimal enable example
@ -189,5 +189,5 @@ See [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) for precedence.
## Related docs ## Related docs
- [Sandbox Configuration](/gateway/configuration#agentsdefaults-sandbox) - [Sandbox Configuration](/gateway/configuration#agentsdefaults-sandbox)
- [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) - [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools)
- [Security](/gateway/security) - [Security](/gateway/security)

View File

@ -1,164 +0,0 @@
---
title: Formal Verification (Security Models)
summary: Machine-checked security models for OpenClaws highest-risk paths.
permalink: /security/formal-verification/
---
# Formal Verification (Security Models)
This page tracks OpenClaws **formal security models** (TLA+/TLC today; more as needed).
> Note: some older links may refer to the previous project name.
**Goal (north star):** provide a machine-checked argument that OpenClaw enforces its
intended security policy (authorization, session isolation, tool gating, and
misconfiguration safety), under explicit assumptions.
**What this is (today):** an executable, attacker-driven **security regression suite**:
- Each claim has a runnable model-check over a finite state space.
- Many claims have a paired **negative model** that produces a counterexample trace for a realistic bug class.
**What this is not (yet):** a proof that “OpenClaw is secure in all respects” or that the full TypeScript implementation is correct.
## Where the models live
Models are maintained in a separate repo: [vignesh07/clawdbot-formal-models](https://github.com/vignesh07/clawdbot-formal-models).
## Important caveats
- These are **models**, not the full TypeScript implementation. Drift between model and code is possible.
- Results are bounded by the state space explored by TLC; “green” does not imply security beyond the modeled assumptions and bounds.
- Some claims rely on explicit environmental assumptions (e.g., correct deployment, correct configuration inputs).
## Reproducing results
Today, results are reproduced by cloning the models repo locally and running TLC (see below). A future iteration could offer:
- CI-run models with public artifacts (counterexample traces, run logs)
- a hosted “run this model” workflow for small, bounded checks
Getting started:
```bash
git clone https://github.com/vignesh07/clawdbot-formal-models
cd clawdbot-formal-models
# Java 11+ required (TLC runs on the JVM).
# The repo vendors a pinned `tla2tools.jar` (TLA+ tools) and provides `bin/tlc` + Make targets.
make <target>
```
### Gateway exposure and open gateway misconfiguration
**Claim:** binding beyond loopback without auth can make remote compromise possible / increases exposure; token/password blocks unauth attackers (per the model assumptions).
- Green runs:
- `make gateway-exposure-v2`
- `make gateway-exposure-v2-protected`
- Red (expected):
- `make gateway-exposure-v2-negative`
See also: `docs/gateway-exposure-matrix.md` in the models repo.
### Nodes.run pipeline (highest-risk capability)
**Claim:** `nodes.run` requires (a) node command allowlist plus declared commands and (b) live approval when configured; approvals are tokenized to prevent replay (in the model).
- Green runs:
- `make nodes-pipeline`
- `make approvals-token`
- Red (expected):
- `make nodes-pipeline-negative`
- `make approvals-token-negative`
### Pairing store (DM gating)
**Claim:** pairing requests respect TTL and pending-request caps.
- Green runs:
- `make pairing`
- `make pairing-cap`
- Red (expected):
- `make pairing-negative`
- `make pairing-cap-negative`
### Ingress gating (mentions + control-command bypass)
**Claim:** in group contexts requiring mention, an unauthorized “control command” cannot bypass mention gating.
- Green:
- `make ingress-gating`
- Red (expected):
- `make ingress-gating-negative`
### Routing/session-key isolation
**Claim:** DMs from distinct peers do not collapse into the same session unless explicitly linked/configured.
- Green:
- `make routing-isolation`
- Red (expected):
- `make routing-isolation-negative`
## v1++: additional bounded models (concurrency, retries, trace correctness)
These are follow-on models that tighten fidelity around real-world failure modes (non-atomic updates, retries, and message fan-out).
### Pairing store concurrency / idempotency
**Claim:** a pairing store should enforce `MaxPending` and idempotency even under interleavings (i.e., “check-then-write” must be atomic / locked; refresh shouldnt create duplicates).
What it means:
- Under concurrent requests, you cant exceed `MaxPending` for a channel.
- Repeated requests/refreshes for the same `(channel, sender)` should not create duplicate live pending rows.
- Green runs:
- `make pairing-race` (atomic/locked cap check)
- `make pairing-idempotency`
- `make pairing-refresh`
- `make pairing-refresh-race`
- Red (expected):
- `make pairing-race-negative` (non-atomic begin/commit cap race)
- `make pairing-idempotency-negative`
- `make pairing-refresh-negative`
- `make pairing-refresh-race-negative`
### Ingress trace correlation / idempotency
**Claim:** ingestion should preserve trace correlation across fan-out and be idempotent under provider retries.
What it means:
- When one external event becomes multiple internal messages, every part keeps the same trace/event identity.
- Retries do not result in double-processing.
- If provider event IDs are missing, dedupe falls back to a safe key (e.g., trace ID) to avoid dropping distinct events.
- Green:
- `make ingress-trace`
- `make ingress-trace2`
- `make ingress-idempotency`
- `make ingress-dedupe-fallback`
- Red (expected):
- `make ingress-trace-negative`
- `make ingress-trace2-negative`
- `make ingress-idempotency-negative`
- `make ingress-dedupe-fallback-negative`
### Routing dmScope precedence + identityLinks
**Claim:** routing must keep DM sessions isolated by default, and only collapse sessions when explicitly configured (channel precedence + identity links).
What it means:
- Channel-specific dmScope overrides must win over global defaults.
- identityLinks should collapse only within explicit linked groups, not across unrelated peers.
- Green:
- `make routing-precedence`
- `make routing-identitylinks`
- Red (expected):
- `make routing-precedence-negative`
- `make routing-identitylinks-negative`

View File

@ -175,7 +175,7 @@ Plugins run **in-process** with the Gateway. Treat them as trusted code:
- OpenClaw uses `npm pack` and then runs `npm install --omit=dev` in that directory (npm lifecycle scripts can execute code during install). - OpenClaw uses `npm pack` and then runs `npm install --omit=dev` in that directory (npm lifecycle scripts can execute code during install).
- Prefer pinned, exact versions (`@scope/pkg@1.2.3`), and inspect the unpacked code on disk before enabling. - Prefer pinned, exact versions (`@scope/pkg@1.2.3`), and inspect the unpacked code on disk before enabling.
Details: [Plugins](/plugin) Details: [Plugins](/tools/plugin)
## DM access model (pairing / allowlist / open / disabled) ## DM access model (pairing / allowlist / open / disabled)
@ -193,7 +193,7 @@ openclaw pairing list <channel>
openclaw pairing approve <channel> <code> openclaw pairing approve <channel> <code>
``` ```
Details + files on disk: [Pairing](/start/pairing) Details + files on disk: [Pairing](/channels/pairing)
## DM session isolation (multi-user mode) ## DM session isolation (multi-user mode)
@ -229,7 +229,7 @@ OpenClaw has two separate “who can trigger me?” layers:
- `channels.discord.guilds` / `channels.slack.channels`: per-surface allowlists + mention defaults. - `channels.discord.guilds` / `channels.slack.channels`: per-surface allowlists + mention defaults.
- **Security note:** treat `dmPolicy="open"` and `groupPolicy="open"` as last-resort settings. They should be barely used; prefer pairing + allowlists unless you fully trust every member of the room. - **Security note:** treat `dmPolicy="open"` and `groupPolicy="open"` as last-resort settings. They should be barely used; prefer pairing + allowlists unless you fully trust every member of the room.
Details: [Configuration](/gateway/configuration) and [Groups](/concepts/groups) Details: [Configuration](/gateway/configuration) and [Groups](/channels/groups)
## Prompt injection (what it is, why it matters) ## Prompt injection (what it is, why it matters)
@ -627,7 +627,7 @@ access those accounts and data. Treat browser profiles as **sensitive state**:
With multi-agent routing, each agent can have its own sandbox + tool policy: With multi-agent routing, each agent can have its own sandbox + tool policy:
use this to give **full access**, **read-only**, or **no access** per agent. use this to give **full access**, **read-only**, or **no access** per agent.
See [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) for full details See [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) for full details
and precedence rules. and precedence rules.
Common use cases: Common use cases:

View File

@ -56,8 +56,8 @@ Common signatures:
Related: Related:
- [/channels/troubleshooting](/channels/troubleshooting) - [/channels/troubleshooting](/channels/troubleshooting)
- [/start/pairing](/start/pairing) - [/channels/pairing](/channels/pairing)
- [/concepts/groups](/concepts/groups) - [/channels/groups](/channels/groups)
## Dashboard control ui connectivity ## Dashboard control ui connectivity

View File

@ -707,7 +707,7 @@ See [Models](/cli/models) and [OAuth](/concepts/oauth).
### Is AWS Bedrock supported ### Is AWS Bedrock supported
Yes - via pi-ai's **Amazon Bedrock (Converse)** provider with **manual config**. You must supply AWS credentials/region on the gateway host and add a Bedrock provider entry in your models config. See [Amazon Bedrock](/bedrock) and [Model providers](/providers/models). If you prefer a managed key flow, an OpenAI-compatible proxy in front of Bedrock is still a valid option. Yes - via pi-ai's **Amazon Bedrock (Converse)** provider with **manual config**. You must supply AWS credentials/region on the gateway host and add a Bedrock provider entry in your models config. See [Amazon Bedrock](/providers/bedrock) and [Model providers](/providers/models). If you prefer a managed key flow, an OpenAI-compatible proxy in front of Bedrock is still a valid option.
### How does Codex auth work ### How does Codex auth work
@ -1177,7 +1177,7 @@ Yes - if your private traffic is **DMs** and your public traffic is **groups**.
Use `agents.defaults.sandbox.mode: "non-main"` so group/channel sessions (non-main keys) run in Docker, while the main DM session stays on-host. Then restrict what tools are available in sandboxed sessions via `tools.sandbox.tools`. Use `agents.defaults.sandbox.mode: "non-main"` so group/channel sessions (non-main keys) run in Docker, while the main DM session stays on-host. Then restrict what tools are available in sandboxed sessions via `tools.sandbox.tools`.
Setup walkthrough + example config: [Groups: personal DMs + public groups](/concepts/groups#pattern-personal-dms-public-groups-single-agent) Setup walkthrough + example config: [Groups: personal DMs + public groups](/channels/groups#pattern-personal-dms-public-groups-single-agent)
Key config reference: [Gateway configuration](/gateway/configuration#agentsdefaultssandbox) Key config reference: [Gateway configuration](/gateway/configuration#agentsdefaultssandbox)
@ -1427,7 +1427,7 @@ The common pattern is **one Gateway** (e.g. Raspberry Pi) plus **nodes** and **a
- **Sub-agents:** spawn background work from a main agent when you want parallelism. - **Sub-agents:** spawn background work from a main agent when you want parallelism.
- **TUI:** connect to the Gateway and switch agents/sessions. - **TUI:** connect to the Gateway and switch agents/sessions.
Docs: [Nodes](/nodes), [Remote access](/gateway/remote), [Multi-Agent Routing](/concepts/multi-agent), [Sub-agents](/tools/subagents), [TUI](/tui). Docs: [Nodes](/nodes), [Remote access](/gateway/remote), [Multi-Agent Routing](/concepts/multi-agent), [Sub-agents](/tools/subagents), [TUI](/web/tui).
### Can the OpenClaw browser run headless ### Can the OpenClaw browser run headless
@ -1681,7 +1681,7 @@ You can also define inline env vars in config (applied only if missing from the
} }
``` ```
See [/environment](/environment) for full precedence and sources. See [/environment](/help/environment) for full precedence and sources.
### I started the Gateway via the service and my env vars disappeared What now ### I started the Gateway via the service and my env vars disappeared What now
@ -1729,7 +1729,7 @@ openclaw models status
``` ```
Copilot tokens are read from `COPILOT_GITHUB_TOKEN` (also `GH_TOKEN` / `GITHUB_TOKEN`). Copilot tokens are read from `COPILOT_GITHUB_TOKEN` (also `GH_TOKEN` / `GITHUB_TOKEN`).
See [/concepts/model-providers](/concepts/model-providers) and [/environment](/environment). See [/concepts/model-providers](/concepts/model-providers) and [/environment](/help/environment).
## Sessions and multiple chats ## Sessions and multiple chats
@ -1902,11 +1902,11 @@ Two common causes:
- Mention gating is on (default). You must @mention the bot (or match `mentionPatterns`). - Mention gating is on (default). You must @mention the bot (or match `mentionPatterns`).
- You configured `channels.whatsapp.groups` without `"*"` and the group isn't allowlisted. - You configured `channels.whatsapp.groups` without `"*"` and the group isn't allowlisted.
See [Groups](/concepts/groups) and [Group messages](/concepts/group-messages). See [Groups](/channels/groups) and [Group messages](/channels/group-messages).
### Do groupsthreads share context with DMs ### Do groupsthreads share context with DMs
Direct chats collapse to the main session by default. Groups/channels have their own session keys, and Telegram topics / Discord threads are separate sessions. See [Groups](/concepts/groups) and [Group messages](/concepts/group-messages). Direct chats collapse to the main session by default. Groups/channels have their own session keys, and Telegram topics / Discord threads are separate sessions. See [Groups](/channels/groups) and [Group messages](/channels/group-messages).
### How many workspaces and agents can I create ### How many workspaces and agents can I create
@ -2609,7 +2609,7 @@ openclaw logs --follow
In the TUI, use `/status` to see the current state. If you expect replies in a chat In the TUI, use `/status` to see the current state. If you expect replies in a chat
channel, make sure delivery is enabled (`/deliver on`). channel, make sure delivery is enabled (`/deliver on`).
Docs: [TUI](/tui), [Slash commands](/tools/slash-commands). Docs: [TUI](/web/tui), [Slash commands](/tools/slash-commands).
### How do I completely stop then start the Gateway ### How do I completely stop then start the Gateway
@ -2701,7 +2701,7 @@ credentials or revoke access without impacting your personal accounts.
Start small. Give access only to the tools and accounts you actually need, and expand Start small. Give access only to the tools and accounts you actually need, and expand
later if required. later if required.
Docs: [Security](/gateway/security), [Pairing](/start/pairing). Docs: [Security](/gateway/security), [Pairing](/channels/pairing).
### Can I give it autonomy over my text messages and is that safe ### Can I give it autonomy over my text messages and is that safe

View File

@ -83,7 +83,7 @@ flowchart TD
- [/gateway/troubleshooting#no-replies](/gateway/troubleshooting#no-replies) - [/gateway/troubleshooting#no-replies](/gateway/troubleshooting#no-replies)
- [/channels/troubleshooting](/channels/troubleshooting) - [/channels/troubleshooting](/channels/troubleshooting)
- [/start/pairing](/start/pairing) - [/channels/pairing](/channels/pairing)
</Accordion> </Accordion>

View File

@ -66,4 +66,4 @@ Create `SOUL_EVIL.md` in the agent workspace root (next to `SOUL.md`).
## See Also ## See Also
- [Hooks](/hooks) - [Hooks](/automation/hooks)

View File

@ -107,7 +107,7 @@ Should show **only port 22** (SSH) open. All other services (gateway, Docker) ar
Docker is installed for **agent sandboxes** (isolated tool execution), not for running the gateway itself. The gateway binds to localhost only and is accessible via Tailscale VPN. Docker is installed for **agent sandboxes** (isolated tool execution), not for running the gateway itself. The gateway binds to localhost only and is accessible via Tailscale VPN.
See [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) for sandbox configuration. See [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) for sandbox configuration.
## Manual Installation ## Manual Installation
@ -205,4 +205,4 @@ For detailed security architecture and troubleshooting:
- [openclaw-ansible](https://github.com/openclaw/openclaw-ansible) — full deployment guide - [openclaw-ansible](https://github.com/openclaw/openclaw-ansible) — full deployment guide
- [Docker](/install/docker) — containerized gateway setup - [Docker](/install/docker) — containerized gateway setup
- [Sandboxing](/gateway/sandboxing) — agent sandbox configuration - [Sandboxing](/gateway/sandboxing) — agent sandbox configuration
- [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) — per-agent isolation - [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) — per-agent isolation

View File

@ -336,7 +336,7 @@ mixed access levels in one gateway:
- Read-only tools + read-only workspace (family/work agent) - Read-only tools + read-only workspace (family/work agent)
- No filesystem/shell tools (public agent) - No filesystem/shell tools (public agent)
See [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) for examples, See [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) for examples,
precedence, and troubleshooting. precedence, and troubleshooting.
### Default behavior ### Default behavior

View File

@ -21,7 +21,7 @@ devices across localhost, LAN, and tailnet.
## Pairing + identity ## Pairing + identity
- [Pairing overview (DM + nodes)](/start/pairing) - [Pairing overview (DM + nodes)](/channels/pairing)
- [Gateway-owned node pairing](/gateway/pairing) - [Gateway-owned node pairing](/gateway/pairing)
- [Devices CLI (pairing + token rotation)](/cli/devices) - [Devices CLI (pairing + token rotation)](/cli/devices)
- [Pairing CLI (DM approvals)](/cli/pairing) - [Pairing CLI (DM approvals)](/cli/pairing)

View File

@ -13,7 +13,7 @@ OpenClaw uses this manifest to validate configuration **without executing plugin
code**. Missing or invalid manifests are treated as plugin errors and block code**. Missing or invalid manifests are treated as plugin errors and block
config validation. config validation.
See the full plugin system guide: [Plugins](/plugin). See the full plugin system guide: [Plugins](/tools/plugin).
## Required fields ## Required fields

View File

@ -31,7 +31,7 @@ Restart the Gateway after enabling the plugin.
Dev/local checkout: `openclaw plugins install ./extensions/open-prose` Dev/local checkout: `openclaw plugins install ./extensions/open-prose`
Related docs: [Plugins](/plugin), [Plugin manifest](/plugins/manifest), [Skills](/tools/skills). Related docs: [Plugins](/tools/plugin), [Plugin manifest](/plugins/manifest), [Skills](/tools/skills).
## Slash command ## Slash command

View File

@ -43,7 +43,7 @@ See [Venice AI](/providers/venice).
- [Cloudflare AI Gateway](/providers/cloudflare-ai-gateway) - [Cloudflare AI Gateway](/providers/cloudflare-ai-gateway)
- [Moonshot AI (Kimi + Kimi Coding)](/providers/moonshot) - [Moonshot AI (Kimi + Kimi Coding)](/providers/moonshot)
- [OpenCode Zen](/providers/opencode) - [OpenCode Zen](/providers/opencode)
- [Amazon Bedrock](/bedrock) - [Amazon Bedrock](/providers/bedrock)
- [Z.AI](/providers/zai) - [Z.AI](/providers/zai)
- [Xiaomi](/providers/xiaomi) - [Xiaomi](/providers/xiaomi)
- [GLM models](/providers/glm) - [GLM models](/providers/glm)

View File

@ -45,7 +45,7 @@ See [Venice AI](/providers/venice).
- [GLM models](/providers/glm) - [GLM models](/providers/glm)
- [MiniMax](/providers/minimax) - [MiniMax](/providers/minimax)
- [Venice (Venice AI)](/providers/venice) - [Venice (Venice AI)](/providers/venice)
- [Amazon Bedrock](/bedrock) - [Amazon Bedrock](/providers/bedrock)
- [Qianfan](/providers/qianfan) - [Qianfan](/providers/qianfan)
For the full provider catalog (xAI, Groq, Mistral, etc.) and advanced configuration, For the full provider catalog (xAI, Groq, Mistral, etc.) and advanced configuration,

View File

@ -32,7 +32,7 @@ openclaw onboard --auth-choice qianfan-api-key
## Related Documentation ## Related Documentation
- [OpenClaw Configuration](/configuration) - [OpenClaw Configuration](/gateway/configuration)
- [Model Providers](/concepts/model-providers) - [Model Providers](/concepts/model-providers)
- [Agent Setup](/agents) - [Agent Setup](/concepts/agent)
- [Qianfan API Documentation](https://cloud.baidu.com/doc/qianfan-api/s/3m7of64lb) - [Qianfan API Documentation](https://cloud.baidu.com/doc/qianfan-api/s/3m7of64lb)

View File

@ -211,4 +211,4 @@ Notes:
- New connector templates depend only on SDK + runtime. - New connector templates depend only on SDK + runtime.
- External plugins can be developed and updated without core source access. - External plugins can be developed and updated without core source access.
Related docs: [Plugins](/plugin), [Channels](/channels/index), [Configuration](/gateway/configuration). Related docs: [Plugins](/tools/plugin), [Channels](/channels/index), [Configuration](/gateway/configuration).

View File

@ -29,7 +29,7 @@ OpenClaw features that can generate provider usage or paid API calls.
- `openclaw status --usage` and `openclaw channels list` show provider **usage windows** - `openclaw status --usage` and `openclaw channels list` show provider **usage windows**
(quota snapshots, not per-message costs). (quota snapshots, not per-message costs).
See [Token use & costs](/token-use) for details and examples. See [Token use & costs](/reference/token-use) for details and examples.
## How keys are discovered ## How keys are discovered
@ -48,7 +48,7 @@ OpenClaw can pick up credentials from:
Every reply or tool call uses the **current model provider** (OpenAI, Anthropic, etc). This is the Every reply or tool call uses the **current model provider** (OpenAI, Anthropic, etc). This is the
primary source of usage and cost. primary source of usage and cost.
See [Models](/providers/models) for pricing config and [Token use & costs](/token-use) for display. See [Models](/providers/models) for pricing config and [Token use & costs](/reference/token-use) for display.
### 2) Media understanding (audio/image/video) ### 2) Media understanding (audio/image/video)

View File

@ -154,7 +154,7 @@ If youre tuning limits:
- The context window comes from the model catalog (and can be overridden via config). - The context window comes from the model catalog (and can be overridden via config).
- `contextTokens` in the store is a runtime estimate/reporting value; dont treat it as a strict guarantee. - `contextTokens` in the store is a runtime estimate/reporting value; dont treat it as a strict guarantee.
For more, see [/token-use](/token-use). For more, see [/token-use](/reference/token-use).
--- ---

View File

@ -7,7 +7,7 @@ title: "Tests"
# Tests # Tests
- Full testing kit (suites, live, Docker): [Testing](/testing) - Full testing kit (suites, live, Docker): [Testing](/help/testing)
- `pnpm test:force`: Kills any lingering gateway process holding the default control port, then runs the full Vitest suite with an isolated gateway port so server tests dont collide with a running instance. Use this when a prior gateway run left port 18789 occupied. - `pnpm test:force`: Kills any lingering gateway process holding the default control port, then runs the full Vitest suite with an isolated gateway port so server tests dont collide with a running instance. Use this when a prior gateway run left port 18789 occupied.
- `pnpm test:coverage`: Runs Vitest with V8 coverage. Global thresholds are 70% lines/branches/functions/statements. Coverage excludes integration-heavy entrypoints (CLI wiring, gateway/telegram bridges, webchat static server) to keep the target focused on unit-testable logic. - `pnpm test:coverage`: Runs Vitest with V8 coverage. Global thresholds are 70% lines/branches/functions/statements. Coverage excludes integration-heavy entrypoints (CLI wiring, gateway/telegram bridges, webchat static server) to keep the target focused on unit-testable logic.

View File

@ -19,7 +19,7 @@ For a complete map of the docs, see [Docs hubs](/start/hubs).
- [Slash commands](/tools/slash-commands) - [Slash commands](/tools/slash-commands)
- [Multi-agent routing](/concepts/multi-agent) - [Multi-agent routing](/concepts/multi-agent)
- [Updating and rollback](/install/updating) - [Updating and rollback](/install/updating)
- [Pairing (DM and nodes)](/start/pairing) - [Pairing (DM and nodes)](/channels/pairing)
- [Nix mode](/install/nix) - [Nix mode](/install/nix)
- [OpenClaw assistant setup](/start/openclaw) - [OpenClaw assistant setup](/start/openclaw)
- [Skills](/tools/skills) - [Skills](/tools/skills)
@ -41,8 +41,8 @@ For a complete map of the docs, see [Docs hubs](/start/hubs).
- [Mattermost (plugin)](/channels/mattermost) - [Mattermost (plugin)](/channels/mattermost)
- [BlueBubbles (iMessage)](/channels/bluebubbles) - [BlueBubbles (iMessage)](/channels/bluebubbles)
- [iMessage (legacy)](/channels/imessage) - [iMessage (legacy)](/channels/imessage)
- [Groups](/concepts/groups) - [Groups](/channels/groups)
- [WhatsApp group messages](/concepts/group-messages) - [WhatsApp group messages](/channels/group-messages)
- [Media images](/nodes/images) - [Media images](/nodes/images)
- [Media audio](/nodes/audio) - [Media audio](/nodes/audio)

View File

@ -115,6 +115,6 @@ If the Control UI loads, your Gateway is ready for use.
## Next steps ## Next steps
- DM safety and approvals: [Pairing](/start/pairing) - DM safety and approvals: [Pairing](/channels/pairing)
- Connect more channels: [Channels](/channels) - Connect more channels: [Channels](/channels)
- Advanced workflows and from source: [Setup](/start/setup) - Advanced workflows and from source: [Setup](/start/setup)

View File

@ -61,9 +61,9 @@ Use these hubs to discover every page, including deep dives and reference docs t
- [Presence](/concepts/presence) - [Presence](/concepts/presence)
- [Discovery + transports](/gateway/discovery) - [Discovery + transports](/gateway/discovery)
- [Bonjour](/gateway/bonjour) - [Bonjour](/gateway/bonjour)
- [Channel routing](/concepts/channel-routing) - [Channel routing](/channels/channel-routing)
- [Groups](/concepts/groups) - [Groups](/channels/groups)
- [Group messages](/concepts/group-messages) - [Group messages](/channels/group-messages)
- [Model failover](/concepts/model-failover) - [Model failover](/concepts/model-failover)
- [OAuth](/concepts/oauth) - [OAuth](/concepts/oauth)
@ -118,7 +118,7 @@ Use these hubs to discover every page, including deep dives and reference docs t
- [Models](/concepts/models) - [Models](/concepts/models)
- [Sub-agents](/tools/subagents) - [Sub-agents](/tools/subagents)
- [Agent send CLI](/tools/agent-send) - [Agent send CLI](/tools/agent-send)
- [Terminal UI](/tui) - [Terminal UI](/web/tui)
- [Browser control](/tools/browser) - [Browser control](/tools/browser)
- [Browser (Linux troubleshooting)](/tools/browser-linux-troubleshooting) - [Browser (Linux troubleshooting)](/tools/browser-linux-troubleshooting)
- [Polls](/automation/poll) - [Polls](/automation/poll)

View File

@ -166,7 +166,7 @@ Example (allow only file tools + browser):
## Plugins + tools ## Plugins + tools
Plugins can register **additional tools** (and CLI commands) beyond the core set. Plugins can register **additional tools** (and CLI commands) beyond the core set.
See [Plugins](/plugin) for install + config, and [Skills](/tools/skills) for how See [Plugins](/tools/plugin) for install + config, and [Skills](/tools/skills) for how
tool usage guidance is injected into prompts. Some plugins ship their own skills tool usage guidance is injected into prompts. Some plugins ship their own skills
alongside tools (for example, the voice-call plugin). alongside tools (for example, the voice-call plugin).

View File

@ -331,7 +331,7 @@ OpenProse pairs well with Lobster: use `/prose` to orchestrate multi-agent prep,
## Learn more ## Learn more
- [Plugins](/plugin) - [Plugins](/tools/plugin)
- [Plugin tool authoring](/plugins/agent-tools) - [Plugin tool authoring](/plugins/agent-tools)
## Case study: community workflows ## Case study: community workflows

View File

@ -44,7 +44,7 @@ Plugins can ship their own skills by listing `skills` directories in
`openclaw.plugin.json` (paths relative to the plugin root). Plugin skills load `openclaw.plugin.json` (paths relative to the plugin root). Plugin skills load
when the plugin is enabled and participate in the normal skill precedence rules. when the plugin is enabled and participate in the normal skill precedence rules.
You can gate them via `metadata.openclaw.requires.config` on the plugins config You can gate them via `metadata.openclaw.requires.config` on the plugins config
entry. See [Plugins](/plugin) for discovery/config and [Tools](/tools) for the entry. See [Plugins](/tools/plugin) for discovery/config and [Tools](/tools) for the
tool surface those skills teach. tool surface those skills teach.
## ClawHub (install + sync) ## ClawHub (install + sync)

View File

@ -9,7 +9,7 @@ x-i18n:
model: claude-opus-4-5 model: claude-opus-4-5
provider: pi provider: pi
source_hash: 853227a0f1abd20790b425fa64dda60efc6b5f93c1b13ecd2dcb788268f71d79 source_hash: 853227a0f1abd20790b425fa64dda60efc6b5f93c1b13ecd2dcb788268f71d79
source_path: hooks.md source_path: automation/hooks.md
workflow: 15 workflow: 15
--- ---
@ -24,7 +24,7 @@ Hooks 是在事件发生时运行的小脚本。有两种类型:
- **Hooks**(本页):当智能体事件触发时在 Gateway 网关内运行,如 `/new`、`/reset`、`/stop` 或生命周期事件。 - **Hooks**(本页):当智能体事件触发时在 Gateway 网关内运行,如 `/new`、`/reset`、`/stop` 或生命周期事件。
- **Webhooks**:外部 HTTP webhooks让其他系统触发 OpenClaw 中的工作。参见 [Webhook Hooks](/automation/webhook) 或使用 `openclaw webhooks` 获取 Gmail 助手命令。 - **Webhooks**:外部 HTTP webhooks让其他系统触发 OpenClaw 中的工作。参见 [Webhook Hooks](/automation/webhook) 或使用 `openclaw webhooks` 获取 Gmail 助手命令。
Hooks 也可以捆绑在插件中;参见 [插件](/plugin#plugin-hooks)。 Hooks 也可以捆绑在插件中;参见 [插件](/tools/plugin#plugin-hooks)。
常见用途: 常见用途:

View File

@ -0,0 +1,8 @@
---
summary: 自动化故障排查:排查 cron 和 heartbeat 调度与投递问题
title: 自动化故障排查
---
# 自动化故障排查
该页面是英文文档的中文占位版本,完整内容请先参考英文版:[Automation Troubleshooting](/automation/troubleshooting)。

View File

@ -25,7 +25,7 @@ x-i18n:
- OpenClaw 通过其 REST API 与之通信(`GET /api/v1/ping`、`POST /message/text`、`POST /chat/:id/*`)。 - OpenClaw 通过其 REST API 与之通信(`GET /api/v1/ping`、`POST /message/text`、`POST /chat/:id/*`)。
- 传入消息通过 webhook 到达;发出的回复、输入指示器、已读回执和 tapback 均为 REST 调用。 - 传入消息通过 webhook 到达;发出的回复、输入指示器、已读回执和 tapback 均为 REST 调用。
- 附件和贴纸作为入站媒体被接收(并在可能时呈现给智能体)。 - 附件和贴纸作为入站媒体被接收(并在可能时呈现给智能体)。
- 配对/白名单的工作方式与其他渠道相同(`/start/pairing` 等),使用 `channels.bluebubbles.allowFrom` + 配对码。 - 配对/白名单的工作方式与其他渠道相同(`/channels/pairing` 等),使用 `channels.bluebubbles.allowFrom` + 配对码。
- 回应作为系统事件呈现,与 Slack/Telegram 类似,智能体可以在回复前"提及"它们。 - 回应作为系统事件呈现,与 Slack/Telegram 类似,智能体可以在回复前"提及"它们。
- 高级功能:编辑、撤回、回复线程、消息效果、群组管理。 - 高级功能:编辑、撤回、回复线程、消息效果、群组管理。
@ -80,7 +80,7 @@ openclaw channels add bluebubbles --http-url http://192.168.1.100:1234 --passwor
- 批准方式: - 批准方式:
- `openclaw pairing list bluebubbles` - `openclaw pairing list bluebubbles`
- `openclaw pairing approve bluebubbles <CODE>` - `openclaw pairing approve bluebubbles <CODE>`
- 配对是默认的令牌交换方式。详情:[配对](/start/pairing) - 配对是默认的令牌交换方式。详情:[配对](/channels/pairing)
群组: 群组:
@ -268,4 +268,4 @@ OpenClaw 可能会显示*短*消息 ID例如 `1`、`2`)以节省 token。
- OpenClaw 会根据 BlueBubbles 服务器的 macOS 版本自动隐藏已知不可用的操作。如果在 macOS 26Tahoe上编辑仍然显示请使用 `channels.bluebubbles.actions.edit=false` 手动禁用。 - OpenClaw 会根据 BlueBubbles 服务器的 macOS 版本自动隐藏已知不可用的操作。如果在 macOS 26Tahoe上编辑仍然显示请使用 `channels.bluebubbles.actions.edit=false` 手动禁用。
- 查看状态/健康信息:`openclaw status --all` 或 `openclaw status --deep` - 查看状态/健康信息:`openclaw status --all` 或 `openclaw status --deep`
有关通用渠道工作流参考,请参阅[渠道](/channels)和[插件](/plugins)指南。 有关通用渠道工作流参考,请参阅[渠道](/channels)和[插件](/tools/plugin)指南。

View File

@ -10,7 +10,7 @@ x-i18n:
model: claude-opus-4-5 model: claude-opus-4-5
provider: pi provider: pi
source_hash: eaeb4035912c49413e012177cf0bd28b348130d30d3317674418dca728229b70 source_hash: eaeb4035912c49413e012177cf0bd28b348130d30d3317674418dca728229b70
source_path: broadcast-groups.md source_path: channels/broadcast-groups.md
workflow: 15 workflow: 15
--- ---
@ -444,6 +444,6 @@ interface OpenClawConfig {
## 另请参阅 ## 另请参阅
- [多智能体配置](/multi-agent-sandbox-tools) - [多智能体配置](/tools/multi-agent-sandbox-tools)
- [路由配置](/concepts/channel-routing) - [路由配置](/channels/channel-routing)
- [会话管理](/concepts/sessions) - [会话管理](/concepts/sessions)

View File

@ -8,7 +8,7 @@ x-i18n:
model: claude-opus-4-5 model: claude-opus-4-5
provider: pi provider: pi
source_hash: 1a322b5187e32c82fc1e8aac02437e2eeb7ba84e7b3a1db89feeab1dcf7dbbab source_hash: 1a322b5187e32c82fc1e8aac02437e2eeb7ba84e7b3a1db89feeab1dcf7dbbab
source_path: concepts/channel-routing.md source_path: channels/channel-routing.md
workflow: 14 workflow: 14
--- ---
@ -73,7 +73,7 @@ OpenClaw 将回复**路由回消息来源的渠道**。模型不会选择渠道
} }
``` ```
参见:[广播组](/broadcast-groups)。 参见:[广播组](/channels/broadcast-groups)。
## 配置概览 ## 配置概览

View File

@ -8,7 +8,7 @@ x-i18n:
model: claude-opus-4-5 model: claude-opus-4-5
provider: pi provider: pi
source_hash: 181a72f12f5021af77c2e4c913120f711e0c0bc271d218d75cb6fe80dab675bb source_hash: 181a72f12f5021af77c2e4c913120f711e0c0bc271d218d75cb6fe80dab675bb
source_path: concepts/group-messages.md source_path: channels/group-messages.md
workflow: 15 workflow: 15
--- ---

View File

@ -8,7 +8,7 @@ x-i18n:
model: claude-opus-4-5 model: claude-opus-4-5
provider: pi provider: pi
source_hash: b727a053edf51f6e7b5c0c324c2fc9c9789a9796c37f622418bd555e8b5a0ec4 source_hash: b727a053edf51f6e7b5c0c324c2fc9c9789a9796c37f622418bd555e8b5a0ec4
source_path: concepts/groups.md source_path: channels/groups.md
workflow: 15 workflow: 15
--- ---
@ -376,4 +376,4 @@ requireMention? 是 -> 被提及? 否 -> 仅存储为上下文
## WhatsApp 特定内容 ## WhatsApp 特定内容
参见[群消息](/concepts/group-messages)了解 WhatsApp 专有行为(历史注入、提及处理详情)。 参见[群消息](/channels/group-messages)了解 WhatsApp 专有行为(历史注入、提及处理详情)。

View File

@ -205,7 +205,7 @@ exec ssh -T bot@mac-mini.tailnet-1234.ts.net imsg "$@"
- 批准方式: - 批准方式:
- `openclaw pairing list imessage` - `openclaw pairing list imessage`
- `openclaw pairing approve imessage <CODE>` - `openclaw pairing approve imessage <CODE>`
- 配对是 iMessage 私信的默认令牌交换方式。详情:[配对](/start/pairing) - 配对是 iMessage 私信的默认令牌交换方式。详情:[配对](/channels/pairing)
群组: 群组:

View File

@ -46,7 +46,7 @@ OpenClaw 可以在你已经使用的任何聊天应用上与你交流。每个
- 渠道可以同时运行配置多个渠道后OpenClaw 会按聊天进行路由。 - 渠道可以同时运行配置多个渠道后OpenClaw 会按聊天进行路由。
- 最快的设置方式通常是 **Telegram**简单的机器人令牌。WhatsApp 需要二维码配对, - 最快的设置方式通常是 **Telegram**简单的机器人令牌。WhatsApp 需要二维码配对,
并在磁盘上存储更多状态。 并在磁盘上存储更多状态。
- 群组行为因渠道而异;参见[群组](/concepts/groups)。 - 群组行为因渠道而异;参见[群组](/channels/groups)。
- 为安全起见,私信配对和允许列表会被强制执行;参见[安全](/gateway/security)。 - 为安全起见,私信配对和允许列表会被强制执行;参见[安全](/gateway/security)。
- Telegram 内部机制:[grammY 说明](/channels/grammy)。 - Telegram 内部机制:[grammY 说明](/channels/grammy)。
- 故障排除:[渠道故障排除](/channels/troubleshooting)。 - 故障排除:[渠道故障排除](/channels/troubleshooting)。

View File

@ -36,7 +36,7 @@ openclaw plugins install ./extensions/matrix
如果你在配置/新手引导期间选择 Matrix 并检测到 git 检出OpenClaw 将自动提供本地安装路径。 如果你在配置/新手引导期间选择 Matrix 并检测到 git 检出OpenClaw 将自动提供本地安装路径。
详情:[插件](/plugin) 详情:[插件](/tools/plugin)
## 设置 ## 设置

View File

@ -37,7 +37,7 @@ openclaw plugins install ./extensions/mattermost
如果你在配置/新手引导期间选择 Mattermost 并检测到 git 检出OpenClaw 会自动提供本地安装路径。 如果你在配置/新手引导期间选择 Mattermost 并检测到 git 检出OpenClaw 会自动提供本地安装路径。
详情:[插件](/plugin) 详情:[插件](/tools/plugin)
## 快速设置 ## 快速设置

View File

@ -43,7 +43,7 @@ openclaw plugins install ./extensions/msteams
如果你在配置/新手引导过程中选择 Teams 并检测到 git 检出, 如果你在配置/新手引导过程中选择 Teams 并检测到 git 检出,
OpenClaw 将自动提供本地安装路径。 OpenClaw 将自动提供本地安装路径。
详情:[插件](/plugin) 详情:[插件](/tools/plugin)
## 快速设置(初学者) ## 快速设置(初学者)

View File

@ -35,7 +35,7 @@ openclaw plugins install ./extensions/nextcloud-talk
如果你在配置/新手引导过程中选择了 Nextcloud Talk并且检测到 git 检出, 如果你在配置/新手引导过程中选择了 Nextcloud Talk并且检测到 git 检出,
OpenClaw 将自动提供本地安装路径。 OpenClaw 将自动提供本地安装路径。
详情:[插件](/plugin) 详情:[插件](/tools/plugin)
## 快速设置(新手) ## 快速设置(新手)

View File

@ -10,7 +10,7 @@ x-i18n:
model: claude-opus-4-5 model: claude-opus-4-5
provider: pi provider: pi
source_hash: c46a5c39f289c8fd0783baacd927f550c3d3ae8889a7bc7de133b795f16fa08a source_hash: c46a5c39f289c8fd0783baacd927f550c3d3ae8889a7bc7de133b795f16fa08a
source_path: start/pairing.md source_path: channels/pairing.md
workflow: 15 workflow: 15
--- ---

View File

@ -116,7 +116,7 @@ x-i18n:
- 通过以下方式批准: - 通过以下方式批准:
- `openclaw pairing list signal` - `openclaw pairing list signal`
- `openclaw pairing approve signal <CODE>` - `openclaw pairing approve signal <CODE>`
- 配对是 Signal 私信的默认令牌交换方式。详情:[配对](/start/pairing) - 配对是 Signal 私信的默认令牌交换方式。详情:[配对](/channels/pairing)
- 仅有 UUID 的发送者(来自 `sourceUuid`)在 `channels.signal.allowFrom` 中存储为 `uuid:<id>` - 仅有 UUID 的发送者(来自 `sourceUuid`)在 `channels.signal.allowFrom` 中存储为 `uuid:<id>`
群组: 群组:

View File

@ -356,7 +356,7 @@ Telegram 功能可以在两个级别配置(上面显示的对象形式;旧
- 批准方式: - 批准方式:
- `openclaw pairing list telegram` - `openclaw pairing list telegram`
- `openclaw pairing approve telegram <CODE>` - `openclaw pairing approve telegram <CODE>`
- 配对是 Telegram 私信使用的默认 token 交换。详情:[配对](/start/pairing) - 配对是 Telegram 私信使用的默认 token 交换。详情:[配对](/channels/pairing)
- `channels.telegram.allowFrom` 接受数字用户 ID推荐`@username` 条目。这**不是**机器人用户名;使用人类发送者的 ID。向导接受 `@username` 并在可能时将其解析为数字 ID。 - `channels.telegram.allowFrom` 接受数字用户 ID推荐`@username` 条目。这**不是**机器人用户名;使用人类发送者的 ID。向导接受 `@username` 并在可能时将其解析为数字 ID。
#### 查找你的 Telegram 用户 ID #### 查找你的 Telegram 用户 ID

View File

@ -34,7 +34,7 @@ openclaw plugins install @openclaw/tlon
openclaw plugins install ./extensions/tlon openclaw plugins install ./extensions/tlon
``` ```
详情:[插件](/plugin) 详情:[插件](/tools/plugin)
## 设置 ## 设置

View File

@ -32,7 +32,7 @@ openclaw plugins install @openclaw/twitch
openclaw plugins install ./extensions/twitch openclaw plugins install ./extensions/twitch
``` ```
详情:[插件](/plugin) 详情:[插件](/tools/plugin)
## 快速设置(新手) ## 快速设置(新手)

View File

@ -22,7 +22,7 @@ Zalo 以插件形式提供,不包含在核心安装中。
- 通过 CLI 安装:`openclaw plugins install @openclaw/zalo` - 通过 CLI 安装:`openclaw plugins install @openclaw/zalo`
- 或在新手引导期间选择 **Zalo** 并确认安装提示 - 或在新手引导期间选择 **Zalo** 并确认安装提示
- 详情:[插件](/plugin) - 详情:[插件](/tools/plugin)
## 快速设置(初学者) ## 快速设置(初学者)
@ -111,7 +111,7 @@ Zalo 是一款专注于越南市场的即时通讯应用;其 Bot API 让 Gatew
- 通过以下方式批准: - 通过以下方式批准:
- `openclaw pairing list zalo` - `openclaw pairing list zalo`
- `openclaw pairing approve zalo <CODE>` - `openclaw pairing approve zalo <CODE>`
- 配对是默认的令牌交换方式。详情:[配对](/start/pairing) - 配对是默认的令牌交换方式。详情:[配对](/channels/pairing)
- `channels.zalo.allowFrom` 接受数字用户 ID无用户名查找功能 - `channels.zalo.allowFrom` 接受数字用户 ID无用户名查找功能
## 长轮询与 webhook ## 长轮询与 webhook

View File

@ -25,7 +25,7 @@ Zalo Personal 作为插件提供,不包含在核心安装中。
- 通过 CLI 安装:`openclaw plugins install @openclaw/zalouser` - 通过 CLI 安装:`openclaw plugins install @openclaw/zalouser`
- 或从源码检出安装:`openclaw plugins install ./extensions/zalouser` - 或从源码检出安装:`openclaw plugins install ./extensions/zalouser`
- 详情:[插件](/plugin) - 详情:[插件](/tools/plugin)
## 前置条件zca-cli ## 前置条件zca-cli

View File

@ -19,8 +19,8 @@ x-i18n:
相关内容: 相关内容:
- 钩子:[钩子](/hooks) - 钩子:[钩子](/automation/hooks)
- 插件钩子:[插件](/plugin#plugin-hooks) - 插件钩子:[插件](/tools/plugin#plugin-hooks)
## 列出所有钩子 ## 列出所有钩子
@ -255,7 +255,7 @@ openclaw hooks enable session-memory
**输出:** `~/.openclaw/workspace/memory/YYYY-MM-DD-slug.md` **输出:** `~/.openclaw/workspace/memory/YYYY-MM-DD-slug.md`
**参见:** [session-memory 文档](/hooks#session-memory) **参见:** [session-memory 文档](/automation/hooks#session-memory)
### command-logger ### command-logger
@ -282,7 +282,7 @@ cat ~/.openclaw/logs/commands.log | jq .
grep '"action":"new"' ~/.openclaw/logs/commands.log | jq . grep '"action":"new"' ~/.openclaw/logs/commands.log | jq .
``` ```
**参见:** [command-logger 文档](/hooks#command-logger) **参见:** [command-logger 文档](/automation/hooks#command-logger)
### soul-evil ### soul-evil
@ -308,4 +308,4 @@ openclaw hooks enable soul-evil
openclaw hooks enable boot-md openclaw hooks enable boot-md
``` ```
**参见:** [boot-md 文档](/hooks#boot-md) **参见:** [boot-md 文档](/automation/hooks#boot-md)

View File

@ -262,7 +262,7 @@ openclaw [--dev] [--profile <name>] <command>
- `openclaw plugins enable <id>` / `disable <id>` — 切换 `plugins.entries.<id>.enabled` - `openclaw plugins enable <id>` / `disable <id>` — 切换 `plugins.entries.<id>.enabled`
- `openclaw plugins doctor` — 报告插件加载错误。 - `openclaw plugins doctor` — 报告插件加载错误。
大多数插件更改需要重启 Gateway 网关。参见 [/plugin](/plugin)。 大多数插件更改需要重启 Gateway 网关。参见 [/plugin](/tools/plugin)。
## 记忆 ## 记忆

View File

@ -21,7 +21,7 @@ x-i18n:
相关内容: 相关内容:
- 记忆概念:[记忆](/concepts/memory) - 记忆概念:[记忆](/concepts/memory)
- 插件:[插件](/plugins) - 插件:[插件](/tools/plugin)
## 示例 ## 示例

View File

@ -18,7 +18,7 @@ x-i18n:
相关内容: 相关内容:
- 配对流程:[配对](/start/pairing) - 配对流程:[配对](/channels/pairing)
## 命令 ## 命令

View File

@ -19,7 +19,7 @@ x-i18n:
相关内容: 相关内容:
- 插件系统:[插件](/plugin) - 插件系统:[插件](/tools/plugin)
- 插件清单 + 模式:[插件清单](/plugins/manifest) - 插件清单 + 模式:[插件清单](/plugins/manifest)
- 安全加固:[安全](/gateway/security) - 安全加固:[安全](/gateway/security)

View File

@ -19,7 +19,7 @@ x-i18n:
相关: 相关:
- TUI 指南:[TUI](/tui) - TUI 指南:[TUI](/web/tui)
## 示例 ## 示例

View File

@ -76,7 +76,7 @@ OpenClaw 有两个钩子系统:
- **`agent:bootstrap`**:在系统提示最终确定之前构建引导文件时运行。用于添加/删除引导上下文文件。 - **`agent:bootstrap`**:在系统提示最终确定之前构建引导文件时运行。用于添加/删除引导上下文文件。
- **命令钩子**`/new`、`/reset`、`/stop` 和其他命令事件(参见钩子文档)。 - **命令钩子**`/new`、`/reset`、`/stop` 和其他命令事件(参见钩子文档)。
参见[钩子](/hooks)了解设置和示例。 参见[钩子](/automation/hooks)了解设置和示例。
### 插件钩子(智能体 + Gateway 网关生命周期) ### 插件钩子(智能体 + Gateway 网关生命周期)
@ -91,7 +91,7 @@ OpenClaw 有两个钩子系统:
- **`session_start` / `session_end`**:会话生命周期边界。 - **`session_start` / `session_end`**:会话生命周期边界。
- **`gateway_start` / `gateway_stop`**Gateway 网关生命周期事件。 - **`gateway_start` / `gateway_stop`**Gateway 网关生命周期事件。
参见[插件](/plugin#plugin-hooks)了解钩子 API 和注册详情。 参见[插件](/tools/plugin#plugin-hooks)了解钩子 API 和注册详情。
## 流式传输 + 部分回复 ## 流式传输 + 部分回复

View File

@ -215,5 +215,5 @@ git push
## 高级注意事项 ## 高级注意事项
- 多智能体路由可以为每个智能体使用不同的工作区。参见 - 多智能体路由可以为每个智能体使用不同的工作区。参见
[渠道路由](/concepts/channel-routing) 了解路由配置。 [渠道路由](/channels/channel-routing) 了解路由配置。
- 如果启用了 `agents.defaults.sandbox`,非主会话可以在 `agents.defaults.sandbox.workspaceRoot` 下使用每会话沙箱工作区。 - 如果启用了 `agents.defaults.sandbox`,非主会话可以在 `agents.defaults.sandbox.workspaceRoot` 下使用每会话沙箱工作区。

View File

@ -112,4 +112,4 @@ OpenClaw 复用 pi-mono 代码库的部分内容(模型/工具),但**会
--- ---
_下一篇[群聊](/concepts/group-messages)_ 🦞 _下一篇[群聊](/channels/group-messages)_ 🦞

Some files were not shown because too many files have changed in this diff Show More