Gateway 导读
设置说明书uration — 机器人朋友s:总控室这一层在盯什么
设置说明书uration — 机器人朋友s 属于网关总控室里的一角。先看它卡在哪个位置、会拨动哪些客户端和工具、旋钮一拧会影响哪片区域,然后再看命令细节。原文最响的一记鼓点,其实是:机器人朋友-scoped 设置说明书uration keys under 机器人朋友s.*, multi机器人朋友.*, session.*, 小纸条消息s.*, and t…。
先听这页的人话版
Configuration — agents
这一页不是在堆术语,它像把“设置说明书uration — 机器人朋友s”这台小机器搬到桌上,当着你的面拆开给你看。你先不用全记住,先抓住它到底在忙什么:机器人朋友-scoped 设置说明书uration keys under 机器人朋友s.*, multi机器人朋友.*, session.*, 小纸条消息s.*, and talk.*. F…。
如果把这页当成“给普通人看的版本”,你最应该带走的是:它到底在教你一件什么事、什么时候要这样做、以及哪里最容易踩坑。
第 1 站
Start Here
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:机器人朋友-scoped 设置说明书uration keys under 机器人朋友s.*, multi机器人朋友.*, session.*, 小纸条消息s.*, and talk.*. For 消息通道s, 工具小帮手s, 门口的小门卫…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:机器人朋友-scoped 设置说明书uration keys under 机器人朋友s.*, multi机器人朋友.*, session.*, 小纸条消息s.*, and talk.*. For 消息通道s, 工具小帮手s, 门口的小门卫…。
Agent-scoped configuration keys under agents.*, multiAgent.*, session.*, messages.*, and talk.*. For channels, tools, gateway runtime, and other top-level keys, see Configuration reference.
第 2 站
`机器人朋友s.defaults.workspace`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Default: OPENCLAW_WORKSPACE_DIR when set, otherwise ~/.openclaw/workspace. An explicit 机器人朋友s.defaults.workspace value…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Default: OPENCLAW_WORKSPACE_DIR when set, otherwise ~/.openclaw/workspace.
Default: OPENCLAW_WORKSPACE_DIR when set, otherwise ~/.openclaw/workspace.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { workspace: ~/.openclaw/workspace } }”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { workspace: "~/.openclaw/workspace" } },
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:An explicit 机器人朋友s.defaults.workspace value takes precedence over OPENCLAW_WORKSPACE_DIR. Use the environment variable…。
An explicit agents.defaults.workspace value takes precedence over OPENCLAW_WORKSPACE_DIR. Use the environment variable to point default agents at a mounted workspace when you do not want to write that path into config.
第 3 站
`机器人朋友s.defaults.repoRoot`
这一节主要在解释“`机器人朋友s.defaults.repoRoot`”到底是干什么的,以及你什么时候会遇到它。
这一节主要在解释“`机器人朋友s.defaults.repoRoot`”到底是干什么的,以及你什么时候会遇到它。
如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。
真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional repository root shown in the system prompt's Runtime line. If unset, OpenClaw auto-detects by walking upward f…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional repository root shown in the system prompt's Runtime line. If unset, OpenClaw auto-detects by walking upward f…。
Optional repository root shown in the system prompt's Runtime line. If unset, OpenClaw auto-detects by walking upward from the workspace.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { repoRoot: ~/Projects/openclaw } }”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { repoRoot: "~/Projects/openclaw" } },
}
第 4 站
`机器人朋友s.defaults.skills`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional default skill allowlist for 机器人朋友s that do not set 机器人朋友s.list[].skills. does not merge with defaults.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional default skill allowlist for 机器人朋友s that do not set 机器人朋友s.list[].skills.
Optional default skill allowlist for agents that do not set agents.list[].skills.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{ skills: [github weather] }”。
{
agents: {
defaults: { skills: ["github", "weather"] },
list: [
{ id: "writer" }, // inherits github, weather
{ id: "docs", skills: ["docs-search"] }, // replaces defaults
{ id: "locked-down", skills: [] }, // no skills
],
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:does not merge with defaults.
does not merge with defaults.
这一串条目别硬背,把它当成“`agents.defaults.skills`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:Omit 机器人朋友s.defaults.skills for unrestric…、Omit 机器人朋友s.list[].skills to inherit the…、Set 机器人朋友s.list[].skills: [] for no skill…、A non-empty 机器人朋友s.list[].skills list is…。
- Omit
agents.defaults.skillsfor unrestricted skills by default. - Omit
agents.list[].skillsto inherit the defaults. - Set
agents.list[].skills: []for no skills. - A non-empty
agents.list[].skillslist is the final set for that agent; it
第 5 站
`机器人朋友s.defaults.skipBootstrap`
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Disables automatic creation of workspace bootstrap files (机器人朋友S.md, SOUL.md, 工具小帮手S.md, IDENTITY.md, USER.md, HEARTBEA…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Disables automatic creation of workspace bootstrap files (机器人朋友S.md, SOUL.md, 工具小帮手S.md, IDENTITY.md, USER.md, HEARTBEA…。
Disables automatic creation of workspace bootstrap files (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { skipBootstrap: true } }”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { skipBootstrap: true } },
}
第 6 站
`机器人朋友s.defaults.skipOptionalBootstrapFiles`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Skips creation of selected optional workspace files while still writing required bootstrap files. Valid values: SOUL.md…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Skips creation of selected optional workspace files while still writing required bootstrap files. Valid values: SOUL.md…。
Skips creation of selected optional workspace files while still writing required bootstrap files. Valid values: SOUL.md, USER.md, HEARTBEAT.md, and IDENTITY.md.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
skipOptionalBootstrapFiles: ["SOUL.md", "USER.md"],
},
},
}
第 7 站
`机器人朋友s.defaults.contextInjection`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Controls when workspace bootstrap files are injected into the system prompt. Default: "always". Per-机器人朋友 override: 机器人…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Controls when workspace bootstrap files are injected into the system prompt. Default: "always".
Controls when workspace bootstrap files are injected into the system prompt. Default: "always".
这一串条目别硬背,把它当成“`agents.defaults.contextInjection`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:"continuation-skip": safe continuation tu…、"never": disable workspace bootstrap and…。
"continuation-skip": safe continuation turns (after a completed assistant response) skip workspace bootstrap re-injection, reducing prompt size. Heartbeat runs and post-compaction retries still rebuild context."never": disable workspace bootstrap and context-file injection on every turn. Use this only for agents that fully own their prompt lifecycle (custom context engines, native runtimes that build their own context, or specialized bootstrap-free workflows). Heartbeat and compaction-recovery turns also skip injection.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { contextInjection: continuation-skip } }”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { contextInjection: "continuation-skip" } },
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Per-机器人朋友 override: 机器人朋友s.list[].contextInjection. Omitted values inherit 机器人朋友s.defaults.contextInjection.
Per-agent override: agents.list[].contextInjection. Omitted values inherit agents.defaults.contextInjection.
第 8 站
`机器人朋友s.defaults.bootstrapMaxChars`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Max characters per workspace bootstrap file before truncation. Default: 12000. Per-机器人朋友 override: 机器人朋友s.list[].bootst…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Max characters per workspace bootstrap file before truncation. Default: 12000.
Max characters per workspace bootstrap file before truncation. Default: 12000.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { bootstrapMaxChars: 12000 } }”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { bootstrapMaxChars: 12000 } },
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Per-机器人朋友 override: 机器人朋友s.list[].bootstrapMaxChars. Omitted values inherit 机器人朋友s.defaults.bootstrapMaxChars.
Per-agent override: agents.list[].bootstrapMaxChars. Omitted values inherit agents.defaults.bootstrapMaxChars.
第 9 站
`机器人朋友s.defaults.bootstrapTotalMaxChars`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Max total characters injected across all workspace bootstrap files. Default: 60000. Per-机器人朋友 override: 机器人朋友s.list[].b…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Max total characters injected across all workspace bootstrap files. Default: 60000.
Max total characters injected across all workspace bootstrap files. Default: 60000.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { bootstrapTotalMaxChars: 60000 } }”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { bootstrapTotalMaxChars: 60000 } },
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Per-机器人朋友 override: 机器人朋友s.list[].bootstrapTotalMaxChars. Omitted values inherit 机器人朋友s.defaults.bootstrapTotalMaxChars.
Per-agent override: agents.list[].bootstrapTotalMaxChars. Omitted values inherit agents.defaults.bootstrapTotalMaxChars.
第 10 站
Per-机器人朋友 bootstrap profile overrides
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Use per-机器人朋友 bootstrap profile overrides when one 机器人朋友 needs different prompt injection behavior from the shared defa…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Use per-机器人朋友 bootstrap profile overrides when one 机器人朋友 needs different prompt injection behavior from the shared defa…。
Use per-agent bootstrap profile overrides when one agent needs different prompt injection behavior from the shared defaults. Omitted fields inherit from agents.defaults.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
contextInjection: "continuation-skip",
bootstrapMaxChars: 12000,
bootstrapTotalMaxChars: 60000,
},
list: [
{
id: "strict-worker",
contextInjection: "always",
bootstrapMaxChars: 50000,
bootstrapTotalMaxChars: 300000,
},
],
},
}
第 11 站
`机器人朋友s.defaults.bootstrapPromptTruncationWarning`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Controls the 机器人朋友-visible system-prompt notice when bootstrap context is truncated. Default: "always". Detailed raw/in…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Controls the 机器人朋友-visible system-prompt notice when bootstrap context is truncated. Default: "always".
Controls the agent-visible system-prompt notice when bootstrap context is truncated. Default: "always".
这一串条目别硬背,把它当成“`agents.defaults.bootstrapPromptTruncationWarning`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:"off": never inject truncation notice tex…、"once": inject a concise notice once per…、"always": inject a concise notice on ever…。
"off": never inject truncation notice text into the system prompt."once": inject a concise notice once per unique truncation signature."always": inject a concise notice on every run when truncation exists (recommended).
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Detailed raw/injected counts and 设置说明书 tuning fields stay in diagnostics such as context/status reports and logs; routi…。
Detailed raw/injected counts and config tuning fields stay in diagnostics such as context/status reports and logs; routine WebChat user/runtime context only gets the concise recovery notice.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { bootstrapPromptTruncationWarning: always } } // off | once | always”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { bootstrapPromptTruncationWarning: "always" } }, // off | once | always
}
第 12 站
Context budget ownership map
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:OpenClaw has multiple high-volume prompt/context budgets, and they are intentionally split by subsystem instead of all…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:OpenClaw has multiple high-volume prompt/context budgets, and they are intentionally split by subsystem instead of all…。
OpenClaw has multiple high-volume prompt/context budgets, and they are intentionally split by subsystem instead of all flowing through one generic knob.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:机器人朋友s.defaults.bootstrapTotalMaxChars: normal workspace bootstrap injection.
agents.defaults.bootstrapTotalMaxChars: normal workspace bootstrap injection.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:one-shot reset/startup 聪明脑袋模型-run prelude, including recent daily memory/*.md files. Bare chat /new and /reset 魔法口令s ar…。
one-shot reset/startup model-run prelude, including recent daily memory/*.md files. Bare chat /new and /reset commands are acknowledged without invoking the model.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:the compact skills list injected into the system prompt.
the compact skills list injected into the system prompt.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:bounded runtime excerpts and injected runtime-owned blocks.
bounded runtime excerpts and injected runtime-owned blocks.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:indexed memory-search snippet and injection sizing.
indexed memory-search snippet and injection sizing.
这一串条目别硬背,把它当成“Context budget ownership map”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:机器人朋友s.defaults.bootstrapMaxChars /、机器人朋友s.defaults.startupContext.*:、skills.limits.*:、机器人朋友s.defaults.contextLimits.*:。
agents.defaults.bootstrapMaxChars/agents.defaults.startupContext.*:skills.limits.*:agents.defaults.contextLimits.*:memory.qmd.limits.*:
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Use the matching per-机器人朋友 override only when one 机器人朋友 needs a different budget:。
Use the matching per-agent override only when one agent needs a different budget:
这一串条目别硬背,把它当成“Context budget ownership map”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:机器人朋友s.list[].skillsLimits.maxSkillsPromp…、机器人朋友s.list[].contextInjection、机器人朋友s.list[].bootstrapMaxChars、机器人朋友s.list[].bootstrapTotalMaxChars。
agents.list[].skillsLimits.maxSkillsPromptCharsagents.list[].contextInjectionagents.list[].bootstrapMaxCharsagents.list[].bootstrapTotalMaxCharsagents.list[].contextLimits.*
第 13 站
`机器人朋友s.defaults.startupContext`
这一节主要在解释“`机器人朋友s.defaults.startupContext`”到底是干什么的,以及你什么时候会遇到它。
这一节主要在解释“`机器人朋友s.defaults.startupContext`”到底是干什么的,以及你什么时候会遇到它。
如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。
真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Controls the first-turn startup prelude injected on reset/startup 聪明脑袋模型 runs. Bare chat /new and /reset 魔法口令s acknowle…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Controls the first-turn startup prelude injected on reset/startup 聪明脑袋模型 runs. Bare chat /new and /reset 魔法口令s acknowle…。
Controls the first-turn startup prelude injected on reset/startup model runs. Bare chat /new and /reset commands acknowledge the reset without invoking the model, so they do not load this prelude.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
startupContext: {
enabled: true,
applyOn: ["new", "reset"],
dailyMemoryDays: 2,
maxFileBytes: 16384,
maxFileChars: 1200,
maxTotalChars: 2800,
},
},
},
}
第 14 站
`机器人朋友s.defaults.contextLimits`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Shared defaults for bounded runtime context surfaces. metadata and continuation notice are added. omitted. overflow rec…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Shared defaults for bounded runtime context surfaces.
Shared defaults for bounded runtime context surfaces.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
contextLimits: {
memoryGetMaxChars: 12000,
memoryGetDefaultLines: 120,
toolResultMaxChars: 16000,
postCompactionMaxChars: 1800,
},
},
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:metadata and continuation notice are added.
metadata and continuation notice are added.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:omitted.
omitted.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:overflow recovery.
overflow recovery.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:refresh injection.
refresh injection.
这一串条目别硬背,把它当成“`agents.defaults.contextLimits`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:memoryGetMaxChars: default memory_get exc…、memoryGetDefaultLines: default memory_get…、工具小帮手ResultMaxChars: live 工具小帮手-result ca…、postCompactionMaxChars: 机器人朋友S.md excerpt…。
memoryGetMaxChars: defaultmemory_getexcerpt cap before truncationmemoryGetDefaultLines: defaultmemory_getline window whenlinesistoolResultMaxChars: live tool-result cap used for persisted results andpostCompactionMaxChars: AGENTS.md excerpt cap used during post-compaction
第 15 站
`机器人朋友s.list[].contextLimits`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Per-机器人朋友 override for the shared contextLimits knobs. Omitted fields inherit from 机器人朋友s.defaults.contextLimits.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Per-机器人朋友 override for the shared contextLimits knobs. Omitted fields inherit from 机器人朋友s.defaults.contextLimits.
Per-agent override for the shared contextLimits knobs. Omitted fields inherit from agents.defaults.contextLimits.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
contextLimits: {
memoryGetMaxChars: 12000,
toolResultMaxChars: 16000,
},
},
list: [
{
id: "tiny-local",
contextLimits: {
memoryGetMaxChars: 6000,
toolResultMaxChars: 8000,
},
},
],
},
}
第 16 站
`skills.limits.maxSkillsPromptChars`
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Global cap for the compact skills list injected into the system prompt. This does not affect reading SKILL.md files on…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Global cap for the compact skills list injected into the system prompt. This does not affect reading SKILL.md files on…。
Global cap for the compact skills list injected into the system prompt. This does not affect reading SKILL.md files on demand.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“skills”挂牌子,告诉系统它该指向“{”。
- 这里在给“limits”挂牌子,告诉系统它该指向“{”。
{
skills: {
limits: {
maxSkillsPromptChars: 18000,
},
},
}
第 17 站
`机器人朋友s.list[].skillsLimits.maxSkillsPromptChars`
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Per-机器人朋友 override for the skills prompt budget.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Per-机器人朋友 override for the skills prompt budget.
Per-agent override for the skills prompt budget.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“list”挂牌子,告诉系统它该指向“[”。
{
agents: {
list: [
{
id: "tiny-local",
skillsLimits: {
maxSkillsPromptChars: 6000,
},
},
],
},
}
第 18 站
`机器人朋友s.defaults.imageMaxDimensionPx`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Max pixel size for the longest image side in transcript/工具小帮手 image blocks before provider calls. Default: 1200. Lower…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Max pixel size for the longest image side in transcript/工具小帮手 image blocks before provider calls. Default: 1200.
Max pixel size for the longest image side in transcript/tool image blocks before provider calls. Default: 1200.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Lower values usually reduce vision-token usage and request payload size for screenshot-heavy runs. Higher values preser…。
Lower values usually reduce vision-token usage and request payload size for screenshot-heavy runs. Higher values preserve more visual detail.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { imageMaxDimensionPx: 1200 } }”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { imageMaxDimensionPx: 1200 } },
}
第 19 站
`机器人朋友s.defaults.imageQuality`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Image-工具小帮手 compression/detail preference for images loaded from file paths, URLs, and media references. Default: auto.…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Image-工具小帮手 compression/detail preference for images loaded from file paths, URLs, and media references. Default: auto.
Image-tool compression/detail preference for images loaded from file paths, URLs, and media references. Default: auto.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:OpenClaw adapts the resize ladder to the selected image 聪明脑袋模型. For example, Claude Opus 4.7, OpenAI GPT-5.5, Qwen VL,…。
OpenClaw adapts the resize ladder to the selected image model. For example, Claude Opus 4.7, OpenAI GPT-5.5, Qwen VL, and hosted Llama 4 vision models can use larger images than older/default high-detail vision paths, while multi-image turns are compressed more aggressively in auto mode to control token and latency cost.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Values:。
Values:
这一串条目别硬背,把它当成“`agents.defaults.imageQuality`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:auto: adapt to 聪明脑袋模型 limits and image co…、efficient: prefer smaller images for lowe…、balanced: use the standard middle-ground…、high: preserve more detail for screenshot…。
auto: adapt to model limits and image count.efficient: prefer smaller images for lower token and byte usage.balanced: use the standard middle-ground ladder.high: preserve more detail for screenshots, diagrams, and document images.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { imageQuality: auto } }”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { imageQuality: "auto" } },
}
第 20 站
`机器人朋友s.defaults.userTimezone`
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Timezone for system prompt context (not 小纸条消息 timestamps). Falls back to host timezone.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Timezone for system prompt context (not 小纸条消息 timestamps). Falls back to host timezone.
Timezone for system prompt context (not message timestamps). Falls back to host timezone.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { userTimezone: America/Chicago } }”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { userTimezone: "America/Chicago" } },
}
第 21 站
`机器人朋友s.defaults.timeFormat`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Time format in system prompt. Default: auto (OS preference).
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Time format in system prompt. Default: auto (OS preference).
Time format in system prompt. Default: auto (OS preference).
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{ defaults: { timeFormat: auto } } // auto | 12 | 24”。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
{
agents: { defaults: { timeFormat: "auto" } }, // auto | 12 | 24
}
第 22 站
`机器人朋友s.defaults.聪明脑袋模型`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
这一小段像旁白,在提醒我们镜头已经切到下一站。
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
models: {
"anthropic/claude-opus-4-6": { alias: "opus" },
"minimax/MiniMax-M2.7": { alias: "minimax" },
},
model: {
primary: "anthropic/claude-opus-4-6",
fallbacks: ["minimax/MiniMax-M2.7"],
},
imageModel: {
primary: "openrouter/qwen/qwen-2.5-vl-72b-instruct:free",
fallbacks: ["openrouter/google/gemini-2.0-flash-vision:free"],
},
imageGenerationModel: {
primary: "openai/gpt-image-2",
fallbacks: ["google/gemini-3.1-flash-image-preview"],
},
videoGenerationModel: {
primary: "qwen/wan2.6-t2v",
fallbacks: ["qwen/wan2.6-i2v"],
},
pdfModel: {
primary: "anthropic/claude-opus-4-6",
fallbacks: ["openai/gpt-5.4-mini"],
},
params: { cacheRetention: "long" }, // global default provider params
pdfMaxBytesMb: 10,
pdfMaxPages: 20,
thinkingDefault: "low",
verboseDefault: "off",
toolProgressDetail: "explain",
reasoningDefault: "off",
elevatedDefault: "on",
timeoutSeconds: 600,
mediaMaxMb: 5,
contextTokens: 200000,
maxConcurrent: 3,
},
},
}
这一串条目别硬背,把它当成“`agents.defaults.model`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:聪明脑袋模型: accepts either a string ("provide…、String form sets only the primary 聪明脑袋模型.、Object form sets primary plus ordered fai…、image聪明脑袋模型: accepts either a string ("pr…。
model: accepts either a string ("provider/model") or an object ({ primary, fallbacks }).- String form sets only the primary model.
- Object form sets primary plus ordered failover models.
imageModel: accepts either a string ("provider/model") or an object ({ primary, fallbacks }).- Used by the
imagetool path as its vision-model config. - Also used as fallback routing when the selected/default model cannot accept image input.
- Prefer explicit
provider/modelrefs. Bare IDs are accepted for compatibility; if a bare ID uniquely matches a configured image-capable entry inmodels.providers.*.models, OpenClaw qualifies it to that provider. Ambiguous configured matches require an explicit provider prefix. imageGenerationModel: accepts either a string ("provider/model") or an object ({ primary, fallbacks }).- Used by the shared image-generation capability and any future tool/plugin surface that generates images.
- Typical values:
google/gemini-3.1-flash-image-previewfor native Gemini image generation,fal/fal-ai/flux/devfor fal,openai/gpt-image-2for OpenAI Images, oropenai/gpt-image-1.5for transparent-background OpenAI PNG/WebP output. - If you select a provider/model directly, configure matching provider auth too (for example
GEMINI_API_KEYorGOOGLE_API_KEYforgoogle/*,OPENAI_API_KEYor OpenAI Codex OAuth foropenai/gpt-image-2/openai/gpt-image-1.5,FAL_KEYforfal/*). - If omitted,
image_generatecan still infer an auth-backed provider default. It tries the current default provider first, then the remaining registered image-generation providers in provider-id order. musicGenerationModel: accepts either a string ("provider/model") or an object ({ primary, fallbacks }).- Used by the shared music-generation capability and the built-in
music_generatetool. - Typical values:
google/lyria-3-clip-preview,google/lyria-3-pro-preview, orminimax/music-2.6. - If omitted,
music_generatecan still infer an auth-backed provider default. It tries the current default provider first, then the remaining registered music-generation providers in provider-id order. - If you select a provider/model directly, configure the matching provider auth/API key too.
videoGenerationModel: accepts either a string ("provider/model") or an object ({ primary, fallbacks }).- Used by the shared video-generation capability and the built-in
video_generatetool. - Typical values:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flash, orqwen/wan2.7-r2v. - If omitted,
video_generatecan still infer an auth-backed provider default. It tries the current default provider first, then the remaining registered video-generation providers in provider-id order. - If you select a provider/model directly, configure the matching provider auth/API key too.
- The bundled Qwen video-generation provider supports up to 1 output video, 1 input image, 4 input videos, 10 seconds duration, and provider-level
size,aspectRatio,resolution,audio, andwatermarkoptions. pdfModel: accepts either a string ("provider/model") or an object ({ primary, fallbacks }).- Used by the
pdftool for model routing. - If omitted, the PDF tool falls back to
imageModel, then to the resolved session/default model. pdfMaxBytesMb: default PDF size limit for thepdftool whenmaxBytesMbis not passed at call time.pdfMaxPages: default maximum pages considered by extraction fallback mode in thepdftool.verboseDefault: default verbose level for agents. Values:"off","on","full". Default:"off".toolProgressDetail: detail mode for/verbosetool summaries and progress-draft tool lines. Values:"explain"(default, compact human labels) or"raw"(append raw command/detail when available). Per-agentagents.list[].toolProgressDetailoverrides this default.reasoningDefault: default reasoning visibility for agents. Values:"off","on","stream". Per-agentagents.list[].reasoningDefaultoverrides this default. Configured reasoning defaults are only applied for owners, authorized senders, or operator-admin gateway contexts when no per-message or session reasoning override is set.elevatedDefault: default elevated-output level for agents. Values:"off","on","ask","full". Default:"on".model.primary: formatprovider/model(e.g.openai/gpt-5.5for OpenAI API-key or Codex OAuth access). If you omit the provider, OpenClaw tries an alias first, then a unique configured-provider match for that exact model id, and only then falls back to the configured default provider (deprecated compatibility behavior, so prefer explicitprovider/model). If that provider no longer exposes the configured default model, OpenClaw falls back to the first configured provider/model instead of surfacing a stale removed-provider default.models: the configured model catalog and allowlist for/model. Each entry can includealias(shortcut) andparams(provider-specific, for exampletemperature,maxTokens,cacheRetention,context1m,responsesServerCompaction,responsesCompactThreshold, OpenRouterproviderrouting,chat_template_kwargs,extra_body/extraBody).- Use
provider/*entries such as"openai-codex/*": {}or"vllm/*": {}to show all discovered models for selected providers without manually listing every model id. - Add
agentRuntimeto aprovider/*entry when every dynamically discovered model for that provider should use the same runtime. Exactprovider/modelruntime policy still wins over the wildcard. - Safe edits: use
openclaw config set agents.defaults.models '<json>' --strict-json --mergeto add entries.config setrefuses replacements that would remove existing allowlist entries unless you pass--replace. - Provider-scoped configure/onboarding flows merge selected provider models into this map and preserve unrelated providers already configured.
- For direct OpenAI Responses models, server-side compaction is enabled automatically. Use
params.responsesServerCompaction: falseto stop injectingcontext_management, orparams.responsesCompactThresholdto override the threshold. See OpenAI server-side compaction. params: global default provider parameters applied to all models. Set atagents.defaults.params(e.g.{ cacheRetention: "long" }).paramsmerge precedence (config):agents.defaults.params(global base) is overridden byagents.defaults.models["provider/model"].params(per-model), thenagents.list[].params(matching agent id) overrides by key. See Prompt Caching for details.models.providers.openrouter.params.provider: OpenRouter-wide default provider-routing policy. OpenClaw forwards this to OpenRouter's requestproviderobject; per-modelagents.defaults.models["openrouter/<model>"].params.providerand agent params override by key. See OpenRouter provider routing.params.extra_body/params.extraBody: advanced pass-through JSON merged intoapi: "openai-completions"request bodies for OpenAI-compatible proxies. If it collides with generated request keys, the extra body wins; non-native completions routes still strip OpenAI-onlystoreafterward.params.chat_template_kwargs: vLLM/OpenAI-compatible chat-template arguments merged into top-levelapi: "openai-completions"request bodies. Forvllm/nemotron-3-*with thinking off, the bundled vLLM plugin automatically sendsenable_thinking: falseandforce_nonempty_content: true; explicitchat_template_kwargsoverride generated defaults, andextra_body.chat_template_kwargsstill has final precedence. For vLLM Qwen thinking controls, setparams.qwenThinkingFormatto"chat-template"or"top-level"on that model entry.compat.thinkingFormat: OpenAI-compatible thinking payload style. Use"together"for Together-stylereasoning.enabled,"qwen"for Qwen-style top-levelenable_thinking, or"qwen-chat-template"forchat_template_kwargs.enable_thinkingon Qwen-family backends that support request-level chat-template kwargs, such as vLLM. OpenClaw maps disabled thinking tofalseand enabled thinking totrue.compat.supportedReasoningEfforts: per-model OpenAI-compatible reasoning effort list. Include"xhigh"for custom endpoints that truly accept it; OpenClaw then exposes/think xhighin command menus, Gateway session rows, session patch validation, agent CLI validation, andllm-taskvalidation for that configured provider/model. Usecompat.reasoningEffortMapwhen the backend wants a provider-specific value for a canonical level.params.preserveThinking: Z.AI-only opt-in for preserved thinking. When enabled and thinking is on, OpenClaw sendsthinking.clear_thinking: falseand replays priorreasoning_content; see Z.AI thinking and preserved thinking.localService: optional provider-level process manager for local/self-hosted model servers. When the selected model belongs to that provider, OpenClaw probeshealthUrl(orbaseUrl + "/models"), startscommandwithargsif the endpoint is down, waits up toreadyTimeoutMs, then sends the model request.commandmust be an absolute path.idleStopMs: 0keeps the process alive until OpenClaw exits; a positive value stops the OpenClaw-spawned process after that many idle milliseconds. See Local model services.- Runtime policy belongs on providers or models, not on
agents.defaults. Usemodels.providers.<provider>.agentRuntimefor provider-wide rules oragents.defaults.models["provider/model"].agentRuntime/agents.list[].models["provider/model"].agentRuntimefor model-specific rules. OpenAI agent models on the official OpenAI provider select Codex by default. - Config writers that mutate these fields (for example
/models set,/models set-image, and fallback add/remove commands) save canonical object form and preserve existing fallback lists when possible. maxConcurrent: max parallel agent runs across sessions (each session still serialized). Default: 4.
第 23 站
Runtime policy
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Built-in alias shorthands** (only apply when the 聪明脑袋模型 is in 机器人朋友s.defaults.聪明脑袋模型s): Your 设置说明书ured aliases always…。
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“models”挂牌子,告诉系统它该指向“{”。
- 这里在给“providers”挂牌子,告诉系统它该指向“{”。
{
models: {
providers: {
openai: {
agentRuntime: { id: "codex" },
},
},
},
agents: {
defaults: {
model: "openai/gpt-5.5",
models: {
"anthropic/claude-opus-4-7": {
agentRuntime: { id: "claude-cli" },
},
"vllm/*": {
agentRuntime: { id: "pi" },
},
},
},
},
}
这一串条目别硬背,把它当成“Runtime policy”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:id: "auto", "pi", a registered 新本领插件 harn…、id: "auto" lets registered 新本领插件 harnesse…、Runtime precedence is exact 聪明脑袋模型 policy…、Whole-机器人朋友 runtime keys are legacy. 机器人朋…。
id:"auto","pi", a registered plugin harness id, or a supported CLI backend alias. The bundled Codex plugin registerscodex; the bundled Anthropic plugin provides theclaude-cliCLI backend.id: "auto"lets registered plugin harnesses claim supported turns and uses PI when no harness matches. An explicit plugin runtime such asid: "codex"requires that harness and fails closed if it is unavailable or fails.- Runtime precedence is exact model policy first (
agents.list[].models["provider/model"],agents.defaults.models["provider/model"], ormodels.providers.<provider>.models[]), thenagents.list[]/agents.defaults.models["provider/*"], then provider-wide policy atmodels.providers.<provider>.agentRuntime. - Whole-agent runtime keys are legacy.
agents.defaults.agentRuntime,agents.list[].agentRuntime, session runtime pins, andOPENCLAW_AGENT_RUNTIMEare ignored by runtime selection. Runopenclaw doctor --fixto remove stale values. - OpenAI agent models use the Codex harness by default; provider/model
agentRuntime.id: "codex"remains valid when you want to make that explicit. - For Claude CLI deployments, prefer
model: "anthropic/claude-opus-4-7"plus model-scopedagentRuntime.id: "claude-cli". Legacyclaude-cli/claude-opus-4-7model refs still work for compatibility, but new config should keep provider/model selection canonical and put the execution backend in provider/model runtime policy. - This only controls text agent-turn execution. Media generation, vision, PDF, music, video, and TTS still use their provider/model settings.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Built-in alias shorthands** (only apply when the 聪明脑袋模型 is in 机器人朋友s.defaults.聪明脑袋模型s):。
**Built-in alias shorthands** (only apply when the model is in agents.defaults.models):
这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。
| Alias | Model |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.5 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Your 设置说明书ured aliases always win over defaults.
Your configured aliases always win over defaults.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Z.AI GLM-4.x 聪明脑袋模型s automatically enable thinking mode unless you set --thinking off or define 机器人朋友s.defaults.聪明脑袋模型s…。
Z.AI GLM-4.x models automatically enable thinking mode unless you set --thinking off or define agents.defaults.models["zai/<model>"].params.thinking yourself. 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. Anthropic Claude 4.6 models default to adaptive thinking when no explicit thinking level is set.
第 24 站
`机器人朋友s.defaults.cliBackends`
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional CLI backends for text-only fallback runs (no 工具小帮手 calls). Useful as a backup when 对话接口 providers fail. invali…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional CLI backends for text-only fallback runs (no 工具小帮手 calls). Useful as a backup when 对话接口 providers fail.
Optional CLI backends for text-only fallback runs (no tool calls). Useful as a backup when API providers fail.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
cliBackends: {
"claude-cli": {
command: "/opt/homebrew/bin/claude",
},
"my-cli": {
command: "my-cli",
args: ["--json"],
output: "json",
modelArg: "--model",
sessionArg: "--session",
sessionMode: "existing",
systemPromptArg: "--system",
// Or use systemPromptFileArg when the CLI accepts a prompt file flag.
systemPromptWhen: "first",
imageArg: "--image",
imageMode: "repeat",
},
},
},
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:invalidated sessions from a bounded raw OpenClaw transcript tail before the first compaction summary exists. Auth profi…。
invalidated sessions from a bounded raw OpenClaw transcript tail before the first compaction summary exists. Auth profile or credential-epoch changes still never raw-reseed.
这一串条目别硬背,把它当成“`agents.defaults.cliBackends`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:CLI backends are text-first; 工具小帮手s are a…、Sessions supported when sessionArg is set.、Image pass-through supported when imageAr…、reseedFromRawTranscriptWhenUncompacted: t…。
- CLI backends are text-first; tools are always disabled.
- Sessions supported when
sessionArgis set. - Image pass-through supported when
imageArgaccepts file paths. reseedFromRawTranscriptWhenUncompacted: truelets a backend recover safe
第 25 站
`机器人朋友s.defaults.systemPromptOverride`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Replace the entire OpenClaw-assembled system prompt with a fixed string. Set at the default level (机器人朋友s.defaults.syst…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Replace the entire OpenClaw-assembled system prompt with a fixed string. Set at the default level (机器人朋友s.defaults.syst…。
Replace the entire OpenClaw-assembled system prompt with a fixed string. Set at the default level (agents.defaults.systemPromptOverride) or per agent (agents.list[].systemPromptOverride). Per-agent values take precedence; an empty or whitespace-only value is ignored. Useful for controlled prompt experiments.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
systemPromptOverride: "You are a helpful assistant.",
},
},
}
第 26 站
`机器人朋友s.defaults.promptOverlays`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Provider-independent prompt overlays applied by 聪明脑袋模型 family on OpenClaw-assembled prompt surfaces. GPT-5-family 聪明脑袋模…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Provider-independent prompt overlays applied by 聪明脑袋模型 family on OpenClaw-assembled prompt surfaces. GPT-5-family 聪明脑袋模…。
Provider-independent prompt overlays applied by model family on OpenClaw-assembled prompt surfaces. GPT-5-family model ids receive the shared behavior contract across PI/provider routes; personality controls only the friendly interaction-style layer. Native Codex app-server routes keep Codex-owned base/model/personality instructions instead of this OpenClaw GPT-5 overlay.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
promptOverlays: {
gpt5: {
personality: "friendly", // friendly | on | off
},
},
},
},
}
这一串条目别硬背,把它当成“`agents.defaults.promptOverlays`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:"friendly" (default) and "on" enable the…、"off" disables only the friendly layer; t…、Legacy 新本领插件s.entries.openai.设置说明书.person…。
"friendly"(default) and"on"enable the friendly interaction-style layer."off"disables only the friendly layer; the tagged GPT-5 behavior contract remains enabled.- Legacy
plugins.entries.openai.config.personalityis still read when this shared setting is unset.
第 27 站
`机器人朋友s.defaults.heartbeat`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Periodic heartbeat runs.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Periodic heartbeat runs.
Periodic heartbeat runs.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
heartbeat: {
every: "30m", // 0m disables
model: "openai/gpt-5.4-mini",
includeReasoning: false,
includeSystemPromptSection: true, // default: true; false omits the Heartbeat section from the system prompt
lightContext: false, // default: false; true keeps only HEARTBEAT.md from workspace bootstrap files
isolatedSession: false, // default: false; true runs each heartbeat in a fresh session (no conversation history)
skipWhenBusy: false, // default: false; true also waits for this agent's subagent/nested lanes
session: "main",
to: "+15555550123",
directPolicy: "allow", // allow (default) | block
target: "none", // default: none | options: last | whatsapp | telegram | discord | ...
prompt: "Read HEARTBEAT.md if it exists...",
ackMaxChars: 300,
suppressToolErrorWarnings: false,
timeoutSeconds: 45,
},
},
},
}
这一串条目别硬背,把它当成“`agents.defaults.heartbeat`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:every: duration string (ms/s/m/h). Defaul…、includeSystemPromptSection: when false, o…、suppress工具小帮手ErrorWarnings: when true, su…、timeoutSeconds: maximum time in seconds a…。
every: duration string (ms/s/m/h). Default:30m(API-key auth) or1h(OAuth auth). Set to0mto disable.includeSystemPromptSection: when false, omits the Heartbeat section from the system prompt and skipsHEARTBEAT.mdinjection into bootstrap context. Default:true.suppressToolErrorWarnings: when true, suppresses tool error warning payloads during heartbeat runs.timeoutSeconds: maximum time in seconds allowed for a heartbeat agent turn before it is aborted. Leave unset to useagents.defaults.timeoutSeconds.directPolicy: direct/DM delivery policy.allow(default) permits direct-target delivery.blocksuppresses direct-target delivery and emitsreason=dm-blocked.lightContext: when true, heartbeat runs use lightweight bootstrap context and keep onlyHEARTBEAT.mdfrom workspace bootstrap files.isolatedSession: when true, each heartbeat runs in a fresh session with no prior conversation history. Same isolation pattern as cronsessionTarget: "isolated". Reduces per-heartbeat token cost from ~100K to ~2-5K tokens.skipWhenBusy: when true, heartbeat runs defer on that agent's extra busy lanes: its own session-keyed subagent or nested command work. Cron lanes always defer heartbeats, even without this flag.- Per-agent: set
agents.list[].heartbeat. When any agent definesheartbeat, **only those agents** run heartbeats. - Heartbeats run full agent turns — shorter intervals burn more tokens.
第 28 站
`机器人朋友s.defaults.compaction`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
这一小段像旁白,在提醒我们镜头已经切到下一站。
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
compaction: {
mode: "safeguard", // default | safeguard
provider: "my-provider", // id of a registered compaction provider plugin (optional)
timeoutSeconds: 900,
reserveTokensFloor: 24000,
keepRecentTokens: 50000,
identifierPolicy: "strict", // strict | off | custom
identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // used when identifierPolicy=custom
qualityGuard: { enabled: true, maxRetries: 1 },
midTurnPrecheck: { enabled: false }, // optional Pi tool-loop pressure check
postCompactionSections: ["Session Startup", "Red Lines"], // opt in to AGENTS.md section reinjection
model: "openrouter/anthropic/claude-sonnet-4-6", // optional compaction-only model override
truncateAfterCompaction: true, // rotate to a smaller successor JSONL after compaction
maxActiveTranscriptBytes: "20mb", // optional preflight local compaction trigger
notifyUser: true, // send brief notices when compaction starts and completes (default: false)
memoryFlush: {
enabled: true,
model: "ollama/qwen3:8b", // optional memory-flush-only model override
softThresholdTokens: 6000,
systemPrompt: "Session nearing compaction. Store durable memories now.",
prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with the exact silent token NO_REPLY if nothing to store.",
},
},
},
},
}
这一串条目别硬背,把它当成“`agents.defaults.compaction`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:mode: default or safeguard (chunked summa…、provider: id of a registered compaction p…、timeoutSeconds: maximum seconds allowed f…、keepRecentTokens: Pi cut-point budget for…。
mode:defaultorsafeguard(chunked summarization for long histories). See Compaction.provider: id of a registered compaction provider plugin. When set, the provider'ssummarize()is called instead of built-in LLM summarization. Falls back to built-in on failure. Setting a provider forcesmode: "safeguard". See Compaction.timeoutSeconds: maximum seconds allowed for a single compaction operation before OpenClaw aborts it. Default:900.keepRecentTokens: Pi cut-point budget for keeping the most recent transcript tail verbatim. Manual/compacthonors this when explicitly set; otherwise manual compaction is a hard checkpoint.identifierPolicy:strict(default),off, orcustom.strictprepends built-in opaque identifier retention guidance during compaction summarization.identifierInstructions: optional custom identifier-preservation text used whenidentifierPolicy=custom.qualityGuard: retry-on-malformed-output checks for safeguard summaries. Enabled by default in safeguard mode; setenabled: falseto skip the audit.midTurnPrecheck: optional Pi tool-loop pressure check. Whenenabled: true, OpenClaw checks context pressure after tool results are appended and before the next model call. If the context no longer fits, it aborts the current attempt before submitting the prompt and reuses the existing precheck recovery path to truncate tool results or compact and retry. Works with bothdefaultandsafeguardcompaction modes. Default: disabled.postCompactionSections: optional AGENTS.md H2/H3 section names to re-inject after compaction. Reinjection is disabled when unset or set to[]. Explicitly setting["Session Startup", "Red Lines"]enables that pair and preserves the legacyEvery Session/Safetyfallback. Enable this only when the extra context is worth the risk of duplicating project guidance already captured in the compaction summary.model: optionalprovider/model-idoverride for compaction summarization only. Use this when the main session should keep one model but compaction summaries should run on another; when unset, compaction uses the session's primary model.maxActiveTranscriptBytes: optional byte threshold (numberor strings like"20mb") that triggers normal local compaction before a run when the active JSONL grows past the threshold. RequirestruncateAfterCompactionso successful compaction can rotate to a smaller successor transcript. Disabled when unset or0.notifyUser: whentrue, sends brief notices to the user when compaction starts and when it completes (for example, "Compacting context..." and "Compaction complete"). Disabled by default to keep compaction silent.memoryFlush: silent agentic turn before auto-compaction to store durable memories. Setmodelto an exact provider/model such asollama/qwen3:8bwhen this housekeeping turn should stay on a local model; the override does not inherit the active session fallback chain. Skipped when workspace is read-only.
第 29 站
`机器人朋友s.defaults.runRetries`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Outer run loop retry iteration boundaries for the embedded Pi runner to prevent infinite execution loops during failure…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Outer run loop retry iteration boundaries for the embedded Pi runner to prevent infinite execution loops during failure…。
Outer run loop retry iteration boundaries for the embedded Pi runner to prevent infinite execution loops during failure recovery. Note that this setting currently only applies to the embedded agent runtime, not ACP or CLI runtimes.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
runRetries: {
base: 24,
perProfile: 8,
min: 32,
max: 160,
},
},
list: [
{
id: "main",
runRetries: { max: 50 }, // optional per-agent overrides
},
],
},
}
这一串条目别硬背,把它当成“`agents.defaults.runRetries`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:base: base number of run retry iterations…、perProfile: additional run retry iteratio…、min: minimum absolute limit for run retry…、max: maximum absolute limit for run retry…。
base: base number of run retry iterations for the outer run loop. Default:24.perProfile: additional run retry iterations granted per fallback profile candidate. Default:8.min: minimum absolute limit for run retry iterations. Default:32.max: maximum absolute limit for run retry iterations to prevent runaway execution. Default:160.
第 30 站
`机器人朋友s.defaults.contextPruning`
这一节更像安装或配置步骤,重点不是概念,而是“按什么顺序做才不会卡住”。
这一节更像安装或配置步骤,重点不是概念,而是“按什么顺序做才不会卡住”。
很多文档看起来长,其实是在防你漏掉前置条件。
真正照做时,先找前置条件,再找必填项,最后看验证方法。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Prunes **old 工具小帮手 results** from in-memory context before sending to the LLM. Does **not** modify session history on d…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Prunes **old 工具小帮手 results** from in-memory context before sending to the LLM. Does **not** modify session history on d…。
Prunes **old tool results** from in-memory context before sending to the LLM. Does **not** modify session history on disk.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
contextPruning: {
mode: "cache-ttl", // off | cache-ttl
ttl: "1h", // duration (ms/s/m/h), default unit: minutes
keepLastAssistants: 3,
softTrimRatio: 0.3,
hardClearRatio: 0.5,
minPrunableToolChars: 50000,
softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 },
hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" },
tools: { deny: ["browser", "canvas"] },
},
},
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:cache-ttl mode behavior。
cache-ttl mode behavior
这一串条目别硬背,把它当成“`agents.defaults.contextPruning`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:mode: "cache-ttl" enables pruning passes.、ttl controls how often pruning can run ag…、Pruning soft-trims oversized 工具小帮手 result…、softTrimRatio and hardClearRatio accept v…。
mode: "cache-ttl"enables pruning passes.ttlcontrols how often pruning can run again (after the last cache touch).- Pruning soft-trims oversized tool results first, then hard-clears older tool results if needed.
softTrimRatioandhardClearRatioaccept values from0.0through1.0; config validation rejects values outside that range.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Soft-trim** keeps beginning + end and inserts ... in the middle.
**Soft-trim** keeps beginning + end and inserts ... in the middle.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Hard-clear** replaces the entire 工具小帮手 result with the placeholder.
**Hard-clear** replaces the entire tool result with the placeholder.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Notes:。
Notes:
这一串条目别硬背,把它当成“`agents.defaults.contextPruning`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:Image blocks are never trimmed/cleared.、Ratios are character-based (approximate),…、If fewer than keepLastAssistants assistan…。
- Image blocks are never trimmed/cleared.
- Ratios are character-based (approximate), not exact token counts.
- If fewer than
keepLastAssistantsassistant messages exist, pruning is skipped.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:See Session Pruning for behavior details.
See Session Pruning for behavior details.
第 31 站
Block 一边说一边送ing
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:See 一边说一边送ing for behavior + chunking details.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
blockStreamingDefault: "off", // on | off
blockStreamingBreak: "text_end", // text_end | message_end
blockStreamingChunk: { minChars: 800, maxChars: 1200 },
blockStreamingCoalesce: { idleMs: 1000 },
humanDelay: { mode: "natural" }, // off | natural | custom (use minMs/maxMs)
},
},
}
这一串条目别硬背,把它当成“Block streaming”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:Non-Telegram 消息通道s require explicit *.blo…、消息通道 overrides: 消息通道s.<消息通道>.block一边说一边送i…、humanDelay: randomized pause between bloc…。
- Non-Telegram channels require explicit
*.blockStreaming: trueto enable block replies. - Channel overrides:
channels.<channel>.blockStreamingCoalesce(and per-account variants). Signal/Slack/Discord/Google Chat defaultminChars: 1500. humanDelay: randomized pause between block replies.natural= 800–2500ms. Per-agent override:agents.list[].humanDelay.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:See 一边说一边送ing for behavior + chunking details.
See Streaming for behavior + chunking details.
第 32 站
Typing indicators
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:See Typing Indicators. <a id="机器人朋友sdefaultssandbox"></a>。
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
typingMode: "instant", // never | instant | thinking | message
typingIntervalSeconds: 6,
},
},
}
这一串条目别硬背,把它当成“Typing indicators”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:Defaults: instant for direct chats/mentio…、Per-session overrides: session.typingMode…。
- Defaults:
instantfor direct chats/mentions,messagefor unmentioned group chats. - Per-session overrides:
session.typingMode,session.typingIntervalSeconds.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:See Typing Indicators.
See Typing Indicators.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:<a id="机器人朋友sdefaultssandbox"></a>。
<a id="agentsdefaultssandbox"></a>
第 33 站
`机器人朋友s.defaults.sandbox`
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional sandboxing for the embedded 机器人朋友. See Sandboxing for the full guide. Sandbox details **Backend:** When backen…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional sandboxing for the embedded 机器人朋友. See Sandboxing for the full guide.
Optional sandboxing for the embedded agent. See Sandboxing for the full guide.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“defaults”挂牌子,告诉系统它该指向“{”。
{
agents: {
defaults: {
sandbox: {
mode: "non-main", // off | non-main | all
backend: "docker", // docker | ssh | openshell
scope: "agent", // session | agent | shared
workspaceAccess: "none", // none | ro | rw
workspaceRoot: "~/.openclaw/sandboxes",
docker: {
image: "openclaw-sandbox:bookworm-slim",
containerPrefix: "openclaw-sbx-",
workdir: "/workspace",
readOnlyRoot: true,
tmpfs: ["/tmp", "/var/tmp", "/run"],
network: "none",
user: "1000:1000",
capDrop: ["ALL"],
env: { LANG: "C.UTF-8" },
setupCommand: "apt-get update && apt-get install -y git curl jq",
pidsLimit: 256,
memory: "1g",
memorySwap: "2g",
cpus: 1,
ulimits: {
nofile: { soft: 1024, hard: 2048 },
nproc: 256,
},
seccompProfile: "/path/to/seccomp.json",
apparmorProfile: "openclaw-sandbox",
dns: ["1.1.1.1", "8.8.8.8"],
extraHosts: ["internal.service:10.0.0.5"],
binds: ["/home/user/source:/source:rw"],
},
ssh: {
target: "user@gateway-host:22",
command: "ssh",
workspaceRoot: "/tmp/openclaw-sandboxes",
strictHostKeyChecking: true,
updateHostKeys: true,
identityFile: "~/.ssh/id_ed25519",
certificateFile: "~/.ssh/id_ed25519-cert.pub",
knownHostsFile: "~/.ssh/known_hosts",
// SecretRefs / inline contents also supported:
// identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" },
// certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" },
// knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" },
},
browser: {
enabled: false,
image: "openclaw-sandbox-browser:bookworm-slim",
network: "openclaw-sandbox-browser",
cdpPort: 9222,
cdpSourceRange: "172.21.0.1/32",
vncPort: 5900,
noVncPort: 6080,
headless: false,
enableNoVnc: true,
allowHostControl: false,
autoStart: true,
autoStartTimeoutMs: 12000,
},
prune: {
idleHours: 24,
maxAgeDays: 7,
},
},
},
},
tools: {
sandbox: {
tools: {
allow: [
"exec",
"process",
"read",
"write",
"edit",
"apply_patch",
"sessions_list",
"sessions_history",
"sessions_send",
"sessions_spawn",
"session_status",
],
deny: ["browser", "canvas", "nodes", "cron", "discord", "gateway"],
},
},
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Sandbox details。
Sandbox details
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Backend:**。
**Backend:**
这一串条目别硬背,把它当成“`agents.defaults.sandbox`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:docker: local Docker runtime (default)、ssh: generic SSH-backed remote runtime、openshell: OpenShell runtime。
docker: local Docker runtime (default)ssh: generic SSH-backed remote runtimeopenshell: OpenShell runtime
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:When backend: "openshell" is selected, runtime-specific settings move to 新本领插件s.entries.openshell.设置说明书.
When backend: "openshell" is selected, runtime-specific settings move to plugins.entries.openshell.config.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**SSH backend 设置说明书:**。
**SSH backend config:**
这一串条目别硬背,把它当成“`agents.defaults.sandbox`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:target: SSH target in user@host[:port] fo…、魔法口令: SSH 来帮忙的小伙伴 魔法口令 (default: ssh)、workspaceRoot: absolute remote root used…、identityFile / certificateFile / knownHos…。
target: SSH target inuser@host[:port]formcommand: SSH client command (default:ssh)workspaceRoot: absolute remote root used for per-scope workspacesidentityFile/certificateFile/knownHostsFile: existing local files passed to OpenSSHidentityData/certificateData/knownHostsData: inline contents or SecretRefs that OpenClaw materializes into temp files at runtimestrictHostKeyChecking/updateHostKeys: OpenSSH host-key policy knobs
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**SSH auth precedence:**。
**SSH auth precedence:**
这一串条目别硬背,把它当成“`agents.defaults.sandbox`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:identityData wins over identityFile、certificateData wins over certificateFile、knownHostsData wins over knownHostsFile、SecretRef-backed *Data values are resolve…。
identityDatawins overidentityFilecertificateDatawins overcertificateFileknownHostsDatawins overknownHostsFile- SecretRef-backed
*Datavalues are resolved from the active secrets runtime snapshot before the sandbox session starts
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**SSH backend behavior:**。
**SSH backend behavior:**
这一串条目别硬背,把它当成“`agents.defaults.sandbox`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:seeds the remote workspace once after cre…、then keeps the remote SSH workspace canon…、routes exec, file 工具小帮手s, and media paths…、does not sync remote changes back to the…。
- seeds the remote workspace once after create or recreate
- then keeps the remote SSH workspace canonical
- routes
exec, file tools, and media paths over SSH - does not sync remote changes back to the host automatically
- does not support sandbox browser containers
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Workspace access:**。
**Workspace access:**
这一串条目别硬背,把它当成“`agents.defaults.sandbox`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:none: per-scope sandbox workspace under ~…、ro: sandbox workspace at /workspace, 机器人朋…、rw: 机器人朋友 workspace mounted read/write at…。
none: per-scope sandbox workspace under~/.openclaw/sandboxesro: sandbox workspace at/workspace, agent workspace mounted read-only at/agentrw: agent workspace mounted read/write at/workspace
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Scope:**。
**Scope:**
这一串条目别硬背,把它当成“`agents.defaults.sandbox`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:session: per-session container + workspace、机器人朋友: one container + workspace per 机器人朋…、shared: shared container and workspace (n…。
session: per-session container + workspaceagent: one container + workspace per agent (default)shared: shared container and workspace (no cross-session isolation)
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**OpenShell 新本领插件 设置说明书:**。
**OpenShell plugin config:**
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“plugins”挂牌子,告诉系统它该指向“{”。
- 这里在给“entries”挂牌子,告诉系统它该指向“{”。
{
plugins: {
entries: {
openshell: {
enabled: true,
config: {
mode: "mirror", // mirror | remote
from: "openclaw",
remoteWorkspaceDir: "/sandbox",
remoteAgentWorkspaceDir: "/agent",
gateway: "lab", // optional
gatewayEndpoint: "https://lab.example", // optional
policy: "strict", // optional OpenShell policy id
providers: ["openai"], // optional
autoProviders: true,
timeoutSeconds: 120,
},
},
},
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**OpenShell mode:**。
**OpenShell mode:**
这一串条目别硬背,把它当成“`agents.defaults.sandbox`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:mirror: seed remote from local before exe…、remote: seed remote once when the sandbox…。
mirror: seed remote from local before exec, sync back after exec; local workspace stays canonicalremote: seed remote once when the sandbox is created, then keep the remote workspace canonical
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:In remote mode, host-local edits made outside OpenClaw are not synced into the sandbox automatically after the seed ste…。
In remote mode, host-local edits made outside OpenClaw are not synced into the sandbox automatically after the seed step. Transport is SSH into the OpenShell sandbox, but the plugin owns sandbox lifecycle and optional mirror sync.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**setup魔法口令** runs once after container creation (via sh -lc). Needs network egress, writable root, root user.
**setupCommand** runs once after container creation (via sh -lc). Needs network egress, writable root, root user.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Containers default to network: "none"** — set to "bridge" (or a custom bridge network) if the 机器人朋友 needs outbound ac…。
**Containers default to network: "none"** — set to "bridge" (or a custom bridge network) if the agent needs outbound access. "host" is blocked. "container:<id>" is blocked by default unless you explicitly set sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (break-glass). Codex app-server turns in an active OpenClaw sandbox use this same egress setting for their native code-mode network access.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Inbound attachments** are staged into media/inbound/* in the active workspace.
**Inbound attachments** are staged into media/inbound/* in the active workspace.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**docker.binds** mounts additional host directories; global and per-机器人朋友 binds are merged.
**docker.binds** mounts additional host directories; global and per-agent binds are merged.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Sandboxed browser** (sandbox.browser.enabled): Chromium + CDP in a container. noVNC URL injected into system prompt.…。
**Sandboxed browser** (sandbox.browser.enabled): Chromium + CDP in a container. noVNC URL injected into system prompt. Does not require browser.enabled in openclaw.json. noVNC observer access uses VNC auth by default and OpenClaw emits a short-lived token URL (instead of exposing the password in the shared URL).
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:enabled by default and can be disabled with OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0 if WebGL/3D usage requires it.
enabled by default and can be disabled with OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0 if WebGL/3D usage requires it.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:depends on them.
depends on them.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT= N ; set 0 to use Chromium's default process limit.
OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT= N ; set 0 to use Chromium's default process limit.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:entrypoint to change container defaults.
entrypoint to change container defaults.
这一串条目别硬背,把它当成“`agents.defaults.sandbox`”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:allowHostControl: false (default) blocks…、network defaults to openclaw-sandbox-brow…、cdpSourceRange optionally restricts CDP i…、sandbox.browser.binds mounts additional h…。
allowHostControl: false(default) blocks sandboxed sessions from targeting the host browser.networkdefaults toopenclaw-sandbox-browser(dedicated bridge network). Set tobridgeonly when you explicitly want global bridge connectivity.cdpSourceRangeoptionally restricts CDP ingress at the container edge to a CIDR range (for example172.21.0.1/32).sandbox.browser.bindsmounts additional host directories into the sandbox browser container only. When set (including[]), it replacesdocker.bindsfor the browser container.- Launch defaults are defined in
scripts/sandbox-browser-entrypoint.shand tuned for container hosts: --remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(default enabled)--disable-3d-apis,--disable-software-rasterizer, and--disable-gpuareOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0re-enables extensions if your workflow--renderer-process-limit=2can be changed with- plus
--no-sandboxwhennoSandboxis enabled. - Defaults are the container image baseline; use a custom browser image with a custom
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Browser sandboxing and sandbox.docker.binds are Docker-only.
Browser sandboxing and sandbox.docker.binds are Docker-only.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Build images (from a source checkout):。
Build images (from a source checkout):
这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。
- 这一行“scripts/sandbox-setup.sh # main sandbox image”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
- 这一行“scripts/sandbox-browser-setup.sh # optional browser image”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
scripts/sandbox-setup.sh # main sandbox image
scripts/sandbox-browser-setup.sh # optional browser image
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For npm installs without a source checkout, see Sandboxing § Images and setup for inline docker build 魔法口令s.
For npm installs without a source checkout, see Sandboxing § Images and setup for inline docker build commands.
第 34 站
`机器人朋友s.list` (per-机器人朋友 overrides)
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Use 机器人朋友s.list[].tts to give an 机器人朋友 its own TTS provider, voice, 聪明脑袋模型, style, or auto-TTS mode. The 机器人朋友 block de…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Use 机器人朋友s.list[].tts to give an 机器人朋友 its own TTS provider, voice, 聪明脑袋模型, style, or auto-TTS mode. The 机器人朋友 block de…。
Use agents.list[].tts to give an agent its own TTS provider, voice, model, style, or auto-TTS mode. The agent block deep-merges over global messages.tts, so shared credentials can stay in one place while individual agents override only the voice or provider fields they need. The active agent's override applies to automatic spoken replies, /tts audio, /tts status, and the tts agent tool. See Text-to-speech for provider examples and precedence.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“list”挂牌子,告诉系统它该指向“[”。
{
agents: {
list: [
{
id: "main",
default: true,
name: "Main Agent",
workspace: "~/.openclaw/workspace",
agentDir: "~/.openclaw/agents/main/agent",
model: "anthropic/claude-opus-4-6", // or { primary, fallbacks }
thinkingDefault: "high", // per-agent thinking level override
reasoningDefault: "on", // per-agent reasoning visibility override
fastModeDefault: false, // per-agent fast mode override
params: { cacheRetention: "none" }, // overrides matching defaults.models params by key
tts: {
providers: {
elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL" },
},
},
skills: ["docs-search"], // replaces agents.defaults.skills when set
identity: {
name: "Samantha",
theme: "helpful sloth",
emoji: "🦥",
avatar: "avatars/samantha.png",
},
groupChat: { mentionPatterns: ["@openclaw"] },
sandbox: { mode: "off" },
runtime: {
type: "acp",
acp: {
agent: "codex",
backend: "acpx",
mode: "persistent",
cwd: "/workspace/openclaw",
},
},
subagents: { allowAgents: ["*"] },
tools: {
profile: "coding",
allow: ["browser"],
deny: ["canvas"],
elevated: { enabled: true },
},
},
],
},
}
这一串条目别硬背,把它当成“`agents.list` (per-agent overrides)”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:id: stable 机器人朋友 id (required).、default: when multiple are set, first win…、聪明脑袋模型: string form sets a strict per-机器人…、params: per-机器人朋友 一边说一边送 params merged ov…。
id: stable agent id (required).default: when multiple are set, first wins (warning logged). If none set, first list entry is default.model: string form sets a strict per-agent primary with no model fallback; object form{ primary }is also strict unless you addfallbacks. Use{ primary, fallbacks: [...] }to opt that agent into fallback, or{ primary, fallbacks: [] }to make strict behavior explicit. Cron jobs that only overrideprimarystill inherit default fallbacks unless you setfallbacks: [].params: per-agent stream params merged over the selected model entry inagents.defaults.models. Use this for agent-specific overrides likecacheRetention,temperature, ormaxTokenswithout duplicating the whole model catalog.tts: optional per-agent text-to-speech overrides. The block deep-merges overmessages.tts, so keep shared provider credentials and fallback policy inmessages.ttsand set only persona-specific values such as provider, voice, model, style, or auto mode here.skills: optional per-agent skill allowlist. If omitted, the agent inheritsagents.defaults.skillswhen set; an explicit list replaces defaults instead of merging, and[]means no skills.thinkingDefault: optional per-agent default thinking level (off | minimal | low | medium | high | xhigh | adaptive | max). Overridesagents.defaults.thinkingDefaultfor this agent when no per-message or session override is set. The selected provider/model profile controls which values are valid; for Google Gemini,adaptivekeeps provider-owned dynamic thinking (thinkingLevelomitted on Gemini 3/3.1,thinkingBudget: -1on Gemini 2.5).reasoningDefault: optional per-agent default reasoning visibility (on | off | stream). Overridesagents.defaults.reasoningDefaultfor this agent when no per-message or session reasoning override is set.fastModeDefault: optional per-agent default for fast mode (true | false). Applies when no per-message or session fast-mode override is set.models: optional per-agent model catalog/runtime overrides keyed by fullprovider/modelids. Usemodels["provider/model"].agentRuntimefor per-agent runtime exceptions.runtime: optional per-agent runtime descriptor. Usetype: "acp"withruntime.acpdefaults (agent,backend,mode,cwd) when the agent should default to ACP harness sessions.identity.avatar: workspace-relative path,http(s)URL, ordata:URI.identityderives defaults:ackReactionfromemoji,mentionPatternsfromname/emoji.subagents.allowAgents: allowlist of configured agent ids for explicitsessions_spawn.agentIdtargets (["*"]= any configured target; default: same agent only). Include the requester id when self-targetedagentIdcalls should be allowed. Stale entries whose agent config was deleted are rejected bysessions_spawnand omitted fromagents_list; runopenclaw doctor --fixto clean them up, or add a minimalagents.list[]entry if that target should remain spawnable while inheriting defaults.- Sandbox inheritance guard: if the requester session is sandboxed,
sessions_spawnrejects targets that would run unsandboxed. subagents.requireAgentId: when true, blocksessions_spawncalls that omitagentId(forces explicit profile selection; default: false).
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
---
第 35 站
Multi-机器人朋友 routing
这一节主要在解释“Multi-机器人朋友 routing”到底是干什么的,以及你什么时候会遇到它。
这一节主要在解释“Multi-机器人朋友 routing”到底是干什么的,以及你什么时候会遇到它。
如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。
真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Run multiple isolated 机器人朋友s inside one 门口的小门卫. See Multi-机器人朋友.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Run multiple isolated 机器人朋友s inside one 门口的小门卫. See Multi-机器人朋友.
Run multiple isolated agents inside one Gateway. See Multi-Agent.
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“list”挂牌子,告诉系统它该指向“[”。
{
agents: {
list: [
{ id: "home", default: true, workspace: "~/.openclaw/workspace-home" },
{ id: "work", workspace: "~/.openclaw/workspace-work" },
],
},
bindings: [
{ agentId: "home", match: { channel: "whatsapp", accountId: "personal" } },
{ agentId: "work", match: { channel: "whatsapp", accountId: "biz" } },
],
}
第 36 站
Binding match fields
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Deterministic match order:** 1. match.peer 2. match.guildId 3. match.teamId 4. match.accountId (exact, no peer/guild/…。
这一串条目别硬背,把它当成“Binding match fields”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:type (optional): route for normal routing…、match.消息通道 (required)、match.accountId (optional; * = any accoun…、match.peer (optional; { kind: direct 大家一起…。
type(optional):routefor normal routing (missing type defaults to route),acpfor persistent ACP conversation bindings.match.channel(required)match.accountId(optional;*= any account; omitted = default account)match.peer(optional;{ kind: direct|group|channel, id })match.guildId/match.teamId(optional; channel-specific)acp(optional; only fortype: "acp"):{ mode, label, cwd, backend }
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Deterministic match order:**。
**Deterministic match order:**
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:1. match.peer 2. match.guildId 3. match.teamId 4. match.accountId (exact, no peer/guild/team) 5. match.accountId: "*" (…。
1. match.peer 2. match.guildId 3. match.teamId 4. match.accountId (exact, no peer/guild/team) 5. match.accountId: "*" (channel-wide) 6. Default agent
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Within each tier, the first matching bindings entry wins.
Within each tier, the first matching bindings entry wins.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For type: "acp" entries, OpenClaw resolves by exact conversation identity (match.消息通道 + account + match.peer.id) and do…。
For type: "acp" entries, OpenClaw resolves by exact conversation identity (match.channel + account + match.peer.id) and does not use the route binding tier order above.
第 37 站
Per-机器人朋友 access profiles
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Full access (no sandbox) Read-only 工具小帮手s + workspace No filesystem access (messaging only) See Multi-机器人朋友 Sandbox & 工…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Full access (no sandbox)。
Full access (no sandbox)
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“list”挂牌子,告诉系统它该指向“[”。
{
agents: {
list: [
{
id: "personal",
workspace: "~/.openclaw/workspace-personal",
sandbox: { mode: "off" },
},
],
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Read-only 工具小帮手s + workspace。
Read-only tools + workspace
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“list”挂牌子,告诉系统它该指向“[”。
{
agents: {
list: [
{
id: "family",
workspace: "~/.openclaw/workspace-family",
sandbox: { mode: "all", scope: "agent", workspaceAccess: "ro" },
tools: {
allow: [
"read",
"sessions_list",
"sessions_history",
"sessions_send",
"sessions_spawn",
"session_status",
],
deny: ["write", "edit", "apply_patch", "exec", "process", "browser"],
},
},
],
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:No filesystem access (messaging only)。
No filesystem access (messaging only)
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“agents”挂牌子,告诉系统它该指向“{”。
- 这里在给“list”挂牌子,告诉系统它该指向“[”。
{
agents: {
list: [
{
id: "public",
workspace: "~/.openclaw/workspace-public",
sandbox: { mode: "all", scope: "agent", workspaceAccess: "none" },
tools: {
allow: [
"sessions_list",
"sessions_history",
"sessions_send",
"sessions_spawn",
"session_status",
"whatsapp",
"telegram",
"slack",
"discord",
"gateway",
],
deny: [
"read",
"write",
"edit",
"apply_patch",
"exec",
"process",
"browser",
"canvas",
"nodes",
"cron",
"gateway",
"image",
],
},
},
],
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:See Multi-机器人朋友 Sandbox & 工具小帮手s for precedence details.
See Multi-Agent Sandbox & Tools for precedence details.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
---
第 38 站
Session
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Session field details ---。
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“session”挂牌子,告诉系统它该指向“{”。
- 这里在给“scope”挂牌子,告诉系统它该指向“per-sender”。
{
session: {
scope: "per-sender",
dmScope: "main", // main | per-peer | per-channel-peer | per-account-channel-peer
identityLinks: {
alice: ["telegram:123456789", "discord:987654321012345678"],
},
reset: {
mode: "daily", // daily | idle
atHour: 4,
idleMinutes: 60,
},
resetByType: {
thread: { mode: "daily", atHour: 4 },
direct: { mode: "idle", idleMinutes: 240 },
group: { mode: "idle", idleMinutes: 120 },
},
resetTriggers: ["/new", "/reset"],
store: "~/.openclaw/agents/{agentId}/sessions/sessions.json",
maintenance: {
mode: "warn", // warn | enforce
pruneAfter: "30d",
maxEntries: 500,
resetArchiveRetention: "30d", // duration or false
maxDiskBytes: "500mb", // optional hard budget
highWaterBytes: "400mb", // optional cleanup target
},
threadBindings: {
enabled: true,
idleHours: 24, // default inactivity auto-unfocus in hours (`0` disables)
maxAgeHours: 0, // default hard max age in hours (`0` disables)
},
mainKey: "main", // legacy (runtime always uses "main")
agentToAgent: { maxPingPongTurns: 5 },
sendPolicy: {
rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }],
default: "allow",
},
},
}
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Session field details。
Session field details
这一串条目别硬背,把它当成“Session”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:**scope**: base session 大家一起的房间ing strate…、per-sender (default): each sender gets an…、global: all participants in a 消息通道 contex…、**dmScope**: how DMs are 大家一起的房间ed.
- **
scope**: base session grouping strategy for group-chat contexts. per-sender(default): each sender gets an isolated session within a channel context.global: all participants in a channel context share a single session (use only when shared context is intended).- **
dmScope**: how DMs are grouped. main: all DMs share the main session.per-peer: isolate by sender id across channels.per-channel-peer: isolate per channel + sender (recommended for multi-user inboxes).per-account-channel-peer: isolate per account + channel + sender (recommended for multi-account).- **
identityLinks**: map canonical ids to provider-prefixed peers for cross-channel session sharing. Dock commands such as/dock_discorduse the same map to switch the active session's reply route to another linked channel peer; see Channel docking. - **
reset**: primary reset policy.dailyresets atatHourlocal time;idleresets afteridleMinutes. When both configured, whichever expires first wins. Daily reset freshness uses the session row'ssessionStartedAt; idle reset freshness useslastInteractionAt. Background/system-event writes such as heartbeat, cron wakeups, exec notifications, and gateway bookkeeping can updateupdatedAt, but they do not keep daily/idle sessions fresh. - **
resetByType**: per-type overrides (direct,group,thread). Legacydmaccepted as alias fordirect. - **
mainKey**: legacy field. Runtime always uses"main"for the main direct-chat bucket. - **
agentToAgent.maxPingPongTurns**: maximum reply-back turns between agents during agent-to-agent exchanges (integer, range:0-20, default:5).0disables ping-pong chaining. - **
sendPolicy**: match bychannel,chatType(direct|group|channel, with legacydmalias),keyPrefix, orrawKeyPrefix. First deny wins. - **
maintenance**: session-store cleanup + retention controls. mode:warnemits warnings only;enforceapplies cleanup.pruneAfter: age cutoff for stale entries (default30d).maxEntries: maximum number of entries insessions.json(default500). Runtime writes batch cleanup with a small high-water buffer for production-sized caps;openclaw sessions cleanup --enforceapplies the cap immediately.rotateBytes: deprecated and ignored;openclaw doctor --fixremoves it from older configs.resetArchiveRetention: retention for*.reset.<timestamp>transcript archives. Defaults topruneAfter; setfalseto disable.maxDiskBytes: optional sessions-directory disk budget. Inwarnmode it logs warnings; inenforcemode it removes oldest artifacts/sessions first.highWaterBytes: optional target after budget cleanup. Defaults to80%ofmaxDiskBytes.- **
threadBindings**: global defaults for thread-bound session features. enabled: master default switch (providers can override; Discord useschannels.discord.threadBindings.enabled)idleHours: default inactivity auto-unfocus in hours (0disables; providers can override)maxAgeHours: default hard max age in hours (0disables; providers can override)spawnSessions: default gate for creating thread-bound work sessions fromsessions_spawnand ACP thread spawns. Defaults totruewhen thread bindings are enabled; providers/accounts can override.defaultSpawnContext: default native subagent context for thread-bound spawns ("fork"or"isolated"). Defaults to"fork".
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
---
第 39 站
小纸条消息s
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
这一小段像旁白,在提醒我们镜头已经切到下一站。
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“messages”挂牌子,告诉系统它该指向“{”。
- 这里在给“responsePrefix”挂牌子,告诉系统它该指向“🦞 // or auto”。
{
messages: {
responsePrefix: "🦞", // or "auto"
ackReaction: "👀",
ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all
removeAckAfterReply: false,
queue: {
mode: "followup", // steer | followup | collect | interrupt
debounceMs: 500,
cap: 20,
drop: "summarize", // old | new | summarize
byChannel: {
whatsapp: "followup",
telegram: "followup",
},
},
inbound: {
debounceMs: 2000, // 0 disables
byChannel: {
whatsapp: 5000,
slack: 1500,
},
},
},
}
第 40 站
Response prefix
这一节主要在解释“Response prefix”到底是干什么的,以及你什么时候会遇到它。
这一节主要在解释“Response prefix”到底是干什么的,以及你什么时候会遇到它。
如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。
真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Per-消息通道/account overrides: 消息通道s.<消息通道>.responsePrefix, 消息通道s.<消息通道>.accounts.<id>.responsePrefix. Resolution (most sp…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Per-消息通道/account overrides: 消息通道s.<消息通道>.responsePrefix, 消息通道s.<消息通道>.accounts.<id>.responsePrefix.
Per-channel/account overrides: channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Resolution (most specific wins): account → 消息通道 → global. "" disables and stops cascade. "auto" derives [{identity.name…。
Resolution (most specific wins): account → channel → global. "" disables and stops cascade. "auto" derives [{identity.name}].
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**Template variables:**。
**Template variables:**
这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。
| Variable | Description | Example |
|---|---|---|
{model} | Short model name | claude-opus-4-6 |
{modelFull} | Full model identifier | anthropic/claude-opus-4-6 |
{provider} | Provider name | anthropic |
{thinkingLevel} | Current thinking level | high, low, off |
{identity.name} | Agent identity name | (same as "auto") |
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Variables are case-insensitive. {think} is an alias for {thinkingLevel}.
Variables are case-insensitive. {think} is an alias for {thinkingLevel}.
第 41 站
Ack reaction
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:On Slack and Discord, unset keeps status reactions enabled when ack reactions are active. On Telegram and WhatsApp, set…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:On Slack and Discord, unset keeps status reactions enabled when ack reactions are active. On Telegram and WhatsApp, set…。
On Slack and Discord, unset keeps status reactions enabled when ack reactions are active. On Telegram and WhatsApp, set it explicitly to true to enable lifecycle status reactions.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:queued, thinking, compacting, 工具小帮手, coding, web, deploy, build, concierge, done, error, stallSoft, and stallHard. Tele…。
queued, thinking, compacting, tool, coding, web, deploy, build, concierge, done, error, stallSoft, and stallHard. Telegram only allows a fixed reaction set, so unsupported configured emoji fall back to the nearest supported status variant for that chat.
这一串条目别硬背,把它当成“Ack reaction”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:Defaults to active 机器人朋友's identity.emoji…、Per-消息通道 overrides: 消息通道s.<消息通道>.ackReact…、Resolution order: account → 消息通道 → 小纸条消息s…、Scope: 大家一起的房间-mentions (default), 大家一起的房…。
- Defaults to active agent's
identity.emoji, otherwise"👀". Set""to disable. - Per-channel overrides:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Resolution order: account → channel →
messages.ackReaction→ identity fallback. - Scope:
group-mentions(default),group-all,direct,all. removeAckAfterReply: removes ack after reply on reaction-capable channels such as Slack, Discord, Telegram, WhatsApp, and iMessage.messages.statusReactions.enabled: enables lifecycle status reactions on Slack, Discord, Telegram, and WhatsApp.messages.statusReactions.emojis: overrides lifecycle emoji keys:
第 42 站
Inbound debounce
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Batches r对话接口d text-only 小纸条消息s from the same sender into a single 机器人朋友 turn. Media/attachments flush immediately. Con…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Batches r对话接口d text-only 小纸条消息s from the same sender into a single 机器人朋友 turn. Media/attachments flush immediately. Con…。
Batches rapid text-only messages from the same sender into a single agent turn. Media/attachments flush immediately. Control commands bypass debouncing.
第 43 站
TTS (text-to-speech)
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“messages”挂牌子,告诉系统它该指向“{”。
- 这里在给“tts”挂牌子,告诉系统它该指向“{”。
{
messages: {
tts: {
auto: "always", // off | always | inbound | tagged
mode: "final", // final | all
provider: "elevenlabs",
summaryModel: "openai/gpt-5.4-mini",
modelOverrides: { enabled: true },
maxTextLength: 4000,
timeoutMs: 30000,
prefsPath: "~/.openclaw/settings/tts.json",
providers: {
elevenlabs: {
apiKey: "elevenlabs_api_key",
baseUrl: "https://api.elevenlabs.io",
voiceId: "voice_id",
modelId: "eleven_multilingual_v2",
seed: 42,
applyTextNormalization: "auto",
languageCode: "en",
voiceSettings: {
stability: 0.5,
similarityBoost: 0.75,
style: 0.0,
useSpeakerBoost: true,
speed: 1.0,
},
},
microsoft: {
voice: "en-US-AvaMultilingualNeural",
lang: "en-US",
outputFormat: "audio-24khz-48kbitrate-mono-mp3",
},
openai: {
apiKey: "openai_api_key",
baseUrl: "https://api.openai.com/v1",
model: "gpt-4o-mini-tts",
voice: "alloy",
},
},
},
},
}
这一串条目别硬背,把它当成“TTS (text-to-speech)”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:auto controls the default auto-TTS mode:…、summary聪明脑袋模型 overrides 机器人朋友s.defaults.聪…、聪明脑袋模型Overrides is enabled by default; 聪明…、对话接口 keys fall back to ELEVENLABS_对话接口_KE…。
autocontrols the default auto-TTS mode:off,always,inbound, ortagged./tts on|offcan override local prefs, and/tts statusshows the effective state.summaryModeloverridesagents.defaults.model.primaryfor auto-summary.modelOverridesis enabled by default;modelOverrides.allowProviderdefaults tofalse(opt-in).- API keys fall back to
ELEVENLABS_API_KEY/XI_API_KEYandOPENAI_API_KEY. - Bundled speech providers are plugin-owned. If
plugins.allowis set, include each TTS provider plugin you want to use, for examplemicrosoftfor Edge TTS. The legacyedgeprovider id is accepted as an alias formicrosoft. providers.openai.baseUrloverrides the OpenAI TTS endpoint. Resolution order is config, thenOPENAI_TTS_BASE_URL, thenhttps://api.openai.com/v1.- When
providers.openai.baseUrlpoints to a non-OpenAI endpoint, OpenClaw treats it as an OpenAI-compatible TTS server and relaxes model/voice validation.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
---
第 44 站
Talk
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Defaults for Talk mode (macOS/iOS/Android). ---。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Defaults for Talk mode (macOS/iOS/Android).
Defaults for Talk mode (macOS/iOS/Android).
这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。
- 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
- 这里在给“talk”挂牌子,告诉系统它该指向“{”。
- 这里在给“provider”挂牌子,告诉系统它该指向“elevenlabs”。
{
talk: {
provider: "elevenlabs",
providers: {
elevenlabs: {
voiceId: "elevenlabs_voice_id",
voiceAliases: {
Clawd: "EXAVITQu4vr4xnSDxMaL",
Roger: "CwhRBWXzGAHq8TQ4Fs17",
},
modelId: "eleven_v3",
outputFormat: "mp3_44100_128",
apiKey: "elevenlabs_api_key",
},
mlx: {
modelId: "mlx-community/Soprano-80M-bf16",
},
system: {},
},
consultThinkingLevel: "low",
consultFastMode: true,
speechLocale: "ru-RU",
silenceTimeoutMs: 1500,
interruptOnSpeech: true,
realtime: {
provider: "openai",
providers: {
openai: {
model: "gpt-realtime-2",
voice: "cedar",
},
},
instructions: "Speak warmly and keep answers brief.",
mode: "realtime",
transport: "webrtc",
brain: "agent-consult",
},
},
}
这一串条目别硬背,把它当成“Talk”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:talk.provider must match a key in talk.pr…、Legacy flat Talk keys (talk.voiceId, talk…、Voice IDs fall back to ELEVENLABS_VOICE_I…、providers.*.对话接口Key accepts plaintext str…。
talk.providermust match a key intalk.providerswhen multiple Talk providers are configured.- Legacy flat Talk keys (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) are compatibility-only. Runopenclaw doctor --fixto rewrite persisted config intotalk.providers.<provider>. - Voice IDs fall back to
ELEVENLABS_VOICE_IDorSAG_VOICE_ID. providers.*.apiKeyaccepts plaintext strings or SecretRef objects.ELEVENLABS_API_KEYfallback applies only when no Talk API key is configured.providers.*.voiceAliaseslets Talk directives use friendly names.providers.mlx.modelIdselects the Hugging Face repo used by the macOS local MLX helper. If omitted, macOS usesmlx-community/Soprano-80M-bf16.- macOS MLX playback runs through the bundled
openclaw-mlx-ttshelper when present, or an executable onPATH;OPENCLAW_MLX_TTS_BINoverrides the helper path for development. consultThinkingLevelcontrols the thinking level for the full OpenClaw agent run behind Control UI Talk realtimeopenclaw_agent_consultcalls. Leave unset to preserve normal session/model behavior.consultFastModesets a one-shot fast-mode override for Control UI Talk realtime consults without changing the session's normal fast-mode setting.speechLocalesets the BCP 47 locale id used by iOS/macOS Talk speech recognition. Leave unset to use the device default.silenceTimeoutMscontrols how long Talk mode waits after user silence before it sends the transcript. Unset keeps the platform default pause window (700 ms on macOS and Android, 900 ms on iOS).realtime.instructionsappends provider-facing system instructions to OpenClaw's built-in realtime prompt, so voice style can be configured without losing defaultopenclaw_agent_consultguidance.realtime.consultRoutingcontrols Gateway relay fallback when the realtime provider produces a final user transcript withoutopenclaw_agent_consult:provider-directpreserves direct provider replies, whileforce-agent-consultroutes the finalized request through OpenClaw.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
---
第 45 站
Related
这一节更像安装或配置步骤,重点不是概念,而是“按什么顺序做才不会卡住”。
这一节更像安装或配置步骤,重点不是概念,而是“按什么顺序做才不会卡住”。
很多文档看起来长,其实是在防你漏掉前置条件。
真正照做时,先找前置条件,再找必填项,最后看验证方法。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
这一串条目别硬背,把它当成“Related”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:设置说明书uration reference — all other 设置说明书…、设置说明书uration — common tasks and quick set…、设置说明书uration examples。
- Configuration reference — all other config keys
- Configuration — common tasks and quick setup
- Configuration examples
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
---
AdSense 连接验证已经放在页面头部;广告单元等站点审批通过后再启用。
google-adsense-account: ca-pub-3833673520933536