tools.* 配置键和自定义提供商 / base-URL 设置。对于智能体、渠道和其他顶级配置键,请参阅配置参考。
工具
工具配置文件
tools.profile 会在 tools.allow/tools.deny 之前设置基础允许列表:
本地新手引导会在未设置时将新的本地配置默认设为
tools.profile: "coding"(保留现有的显式配置文件)。| 配置文件 | 包含 |
|---|---|
minimal | 仅 session_status |
coding | group:fs、group:runtime、group:web、group:sessions、group:memory、cron、get_goal、create_goal、update_goal、update_plan、skill_workshop、image、image_generate、music_generate、video_generate |
messaging | group:messaging、sessions_list、sessions_history、sessions_send、session_status |
full | 无限制(与未设置相同) |
coding 和 messaging 还会隐式允许 bundle-mcp(已配置的 MCP 服务器)。
工具组
| 组 | 工具 |
|---|---|
group:runtime | exec、process、code_execution(bash 可作为 exec 的别名) |
group:fs | read、write、edit、apply_patch |
group:sessions | sessions_list、sessions_history、sessions_send、sessions_spawn、sessions_yield、subagents、session_status |
group:memory | memory_search、memory_get |
group:web | web_search、x_search、web_fetch |
group:ui | browser、canvas |
group:automation | heartbeat_respond、cron、gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list、get_goal、create_goal、update_goal、update_plan、skill_workshop |
group:media | image、image_generate、music_generate、video_generate、tts |
group:openclaw | 上述所有内置工具,但不包括 read/write/edit/apply_patch/exec/process/canvas(不包括插件工具) |
group:plugins | 已加载插件拥有的工具,包括通过 bundle-mcp 暴露的已配置 MCP 服务器 |
沙箱工具策略中的 MCP 和插件工具
已配置的 MCP 服务器会作为bundle-mcp 插件 ID 下由插件拥有的工具暴露。普通工具配置文件可以允许它们,但 tools.sandbox.tools 是沙箱隔离会话的额外关卡。如果沙箱模式为 "all" 或 "non-main",当 MCP/插件工具应该可见时,请在沙箱工具允许列表中包含以下条目之一:
bundle-mcp,用于来自mcp.servers的 OpenClaw 管理的 MCP 服务器- 特定原生插件的插件 ID
group:plugins,用于所有已加载的插件拥有的工具- 精确的 MCP 服务器工具名称或服务器 glob,例如
outlook__send_mail或outlook__*,当你只想要一个服务器时使用
mcp.servers 键。非 [A-Za-z0-9_-] 字符会变成 -,不以字母开头的名称会获得 mcp- 前缀,较长或重复的前缀可能会被截断或追加后缀;例如,mcp.servers["Outlook Graph"] 使用类似 outlook-graph__* 的 glob。
openclaw doctor 捕获 mcp.servers 中 OpenClaw 管理的服务器的这种形态。从内置插件清单或 Claude .mcp.json 加载的 MCP 服务器使用同一个沙箱关卡,但此诊断尚未枚举这些来源;如果它们的工具在沙箱隔离轮次中消失,请使用相同的允许列表条目。
tools.codeMode
tools.codeMode 启用通用 OpenClaw 代码模式表面。当为带工具的运行启用时,模型只会看到 exec 和 wait;普通 OpenClaw 工具会移到沙箱内 tools.* 目录桥接之后,MCP 工具可通过生成的 MCP 命名空间使用。
API.list("mcp") 和 API.read("mcp/<server>.d.ts"),在调用 MCP.<server>.<tool>() 之前检查 TypeScript 风格的签名。请参阅代码模式了解运行时契约、限制和调试步骤。
tools.allow / tools.deny
全局工具允许/拒绝策略(拒绝优先)。不区分大小写,支持 * 通配符。即使 Docker 沙箱关闭也会应用。
write 和 apply_patch 是独立的工具 ID。allow: ["write"] 对兼容模型也会启用 apply_patch,但 deny: ["write"] 不会拒绝 apply_patch。要阻止所有文件变更,请拒绝 group:fs,或显式列出每个会变更文件的工具:
allow 和 alsoAllow 不能在同一作用域(tools、tools.byProvider.<id>、agents.list[].tools)同时设置,配置验证会拒绝。请将 alsoAllow 条目合并到 allow,或者移除 allow,改用 profile + alsoAllow。tools.byProvider
进一步限制特定提供商或模型的工具。顺序:基础配置档 → 提供商配置档 → 允许/拒绝。
tools.toolsBySender
限制特定请求者身份可用的工具。这是在渠道访问控制之上的纵深防御;发送者值必须来自渠道适配器,而不是消息文本。
channel:<channelId>:<senderId>、id:<senderId>、e164:<phone>、username:<handle>、name:<displayName> 或 "*"。渠道 ID 是规范的 OpenClaw ID;teams 等别名会规范化为 msteams。旧版无前缀键仅按 id: 接受。匹配顺序为 channel+id、id、e164、username、name,然后是通配符。
每智能体的 agents.list[].tools.toolsBySender 在匹配时会覆盖全局发送者匹配,即使策略为空 {} 也是如此。
tools.elevated
控制沙箱外的提升权限 Exec 访问:
- 每智能体覆盖(
agents.list[].tools.elevated)只能进一步收紧限制。 /elevated on|off|ask|full按会话存储状态;内联指令只应用于单条消息。- 提升权限的
exec会绕过沙箱隔离,并使用配置的逃逸路径(默认是gateway,或在 exec 目标为node时使用node)。
tools.exec
applyPatch.allowModels 外,所示值均为默认值(默认情况下为空/未设置,表示任何兼容模型都可以使用 apply_patch)。approvalRunningNoticeMs 会在基于审批的 exec 长时间运行时发出运行中通知;0 会禁用它。
tools.loopDetection
工具循环安全检查默认禁用。设置 enabled: true 可启用检测。设置可以在全局 tools.loopDetection 中定义,并可在每智能体的 agents.list[].tools.loopDetection 中覆盖。
为循环分析保留的最大工具调用历史记录。
针对重复无进展模式发出警告的阈值。
在发生这么多次未命中后,阻止重复调用同一个不可用/未知工具名称。
用于阻止严重循环的更高重复阈值。
任何无进展运行的硬停止阈值。
对重复的同工具/同参数调用发出警告。
对已知轮询工具(
process.poll、command_status 等)的无进展行为发出警告/阻止。对交替出现的无进展成对模式发出警告/阻止。
自动压缩后防护保持启用的尝试次数;如果智能体在该窗口内重复相同的(工具、参数、结果),则中止。
tools.web
provider 和 userAgent 外,显示的值都是默认值。maxResponseBytes 会限制在 32000–10000000;maxChars 会限制到 maxCharsCap(提高 maxCharsCap 以允许更大的响应)。
tools.media
配置入站媒体理解(图像/音频/视频):
concurrency(默认 2)、audio.maxBytes(默认 20 MB)和 video.maxBytes(默认 50 MB)显示的是它们的默认值;image.maxBytes 默认是 10 MB。按能力划分的请求超时默认值:图像/音频为 60 秒,视频为 120 秒。
Media model entry fields
Media model entry fields
提供商条目(
type: "provider" 或省略):provider:API 提供商 ID(openai、anthropic、google/gemini、groq等)model:模型 ID 覆盖profile/preferredProfile:auth-profiles.json配置文件选择
type: "cli"):command:要运行的可执行文件args:模板化参数(支持{{MediaPath}}、{{Prompt}}、{{MaxChars}}等;openclaw doctor --fix会把已弃用的{input}占位符迁移到{{MediaPath}})
capabilities:可选列表(image、audio、video)。每个提供商插件都会声明自己的默认能力集;例如,内置openai提供商默认支持图像+音频,anthropic/minimax支持图像,google支持图像+音频+视频,groq支持音频。prompt、maxChars、maxBytes、timeoutSeconds、language:按条目覆盖。- 当智能体调用显式的
image工具时,tools.media.image.timeoutSeconds以及匹配的图像模型timeoutSeconds条目也会适用。对于图像理解,此超时适用于请求本身,不会被较早的准备工作缩短。 - 失败会回退到下一个条目。
auth-profiles.json → 环境变量 → models.providers.*.apiKey。异步完成字段:asyncCompletion.directSend:已弃用的兼容性标志。已完成的异步媒体任务仍由请求方会话中介处理,这样智能体会接收结果,决定如何告知用户,并在源端投递需要时使用消息工具。
tools.agentToAgent
tools.sessions
控制哪些会话可以被会话工具(sessions_list、sessions_history、sessions_send)作为目标。
默认:tree(当前会话 + 由它生成的会话,例如子智能体)。
Visibility scopes
Visibility scopes
self:仅当前会话键。tree:当前会话 + 由当前会话生成的会话(子智能体)。agent:属于当前智能体 ID 的任意会话(如果你在同一智能体 ID 下运行按发送方划分的会话,可能包含其他用户)。all:任意会话。跨智能体定向仍需要tools.agentToAgent。- 沙箱限制:当当前会话已沙箱隔离,并且
agents.defaults.sandbox.sessionToolsVisibility="spawned"(默认值)时,即使tools.sessions.visibility="all",可见性也会被强制为tree。 - 当不是
all时,sessions_list会包含一个紧凑的visibility字段, 描述有效模式,并警告当前范围之外的某些会话可能会 被省略。
tools.sessions_spawn
控制 sessions_spawn 的内联附件支持。
Attachment notes
Attachment notes
- 附件需要
enabled: true。 - 子智能体附件会在子工作区中实体化到
.openclaw/attachments/<uuid>/,并带有.manifest.json。 - ACP 附件仅支持图像,并会在通过相同的文件数量、单文件字节数和总字节数限制后,内联转发到 ACP 运行时。
- 附件内容会自动从转录持久化中脱敏。
- Base64 输入会通过严格的字母表/填充检查和解码前大小保护进行验证。
- 子智能体附件文件权限:目录为
0700,文件为0600。 - 子智能体清理遵循
cleanup策略:delete始终删除附件;只有当retainOnSessionKeep: true时,keep才会保留附件。
tools.experimental
实验性内置工具标志。默认关闭,除非适用严格智能体式 GPT-5 自动启用规则。
planTool:为非平凡的多步骤工作跟踪启用结构化update_plan工具。- 默认:
false,除非agents.defaults.embeddedAgent.executionContract(或按智能体覆盖)针对使用openai提供商运行的 GPT-5 系列模型 ID 设置为"strict-agentic"(这也涵盖 OpenAI Codex CLI 运行,因为 Codex 认证/模型路由位于openai提供商下)。设置为true可在该范围之外强制启用此工具,或设置为false即使在严格智能体式 GPT-5 运行中也保持关闭。 - 启用后,系统提示还会添加使用指导,使模型只在实质性工作中使用它,并且最多保持一个步骤为
in_progress。
agents.defaults.subagents
model:生成的子智能体的默认模型。如果省略,子智能体会继承调用方的模型。allowAgents:当请求方智能体未设置自己的subagents.allowAgents时,sessions_spawn可用的已配置目标智能体 ID 默认允许列表(["*"]= 任意已配置目标;默认:仅同一智能体)。其智能体配置已被删除的陈旧条目会被sessions_spawn拒绝,并从agents_list中省略;运行openclaw doctor --fix清理它们。maxConcurrent:最大并发子智能体运行数。默认:8。runTimeoutSeconds:当调用方未传入自己的覆盖时,sessions_spawn的超时(秒)。默认:0(无超时);上面显示的900是常见的选择启用值,不是内置默认值。announceTimeoutMs:Gateway 网关agent公告投递尝试的每次调用超时(毫秒)。默认:120000。瞬时重试可能会让总公告等待时间长于一个已配置超时。archiveAfterMinutes:子智能体会话完成后,经过多少分钟自动归档。默认:60;0会禁用自动归档。- 按子智能体配置的工具策略:
tools.subagents.tools.allow/tools.subagents.tools.deny。
自定义提供商和基础 URL
提供商插件会发布自己的模型目录行。通过配置中的models.providers 或 ~/.openclaw/agents/<agentId>/agent/models.json 添加自定义提供商。
配置自定义/本地提供商 baseUrl 也是模型 HTTP 请求的窄范围网络信任决策:OpenClaw 允许该确切的 scheme://host:port 源通过受保护的 fetch 路径,而不会添加单独的配置选项,也不会信任其他私有源。
Auth and merge precedence
Auth and merge precedence
- 对自定义认证需求,使用
authHeader: true+headers。 - 使用
OPENCLAW_AGENT_DIR覆盖智能体配置根目录。 - 匹配提供商 ID 的合并优先级:
- 非空的智能体
models.jsonbaseUrl值优先。 - 只有当该提供商在当前配置/认证配置文件上下文中不由 SecretRef 管理时,非空的智能体
apiKey值才优先。 - SecretRef 管理的提供商
apiKey值会从源标记刷新(环境变量引用为ENV_VAR_NAME,文件/执行引用为secretref-managed),而不是持久化已解析的密钥。 - SecretRef 管理的提供商标头值会从源标记刷新(环境变量引用为
secretref-env:ENV_VAR_NAME,文件/执行引用为secretref-managed)。 - 空的或缺失的智能体
apiKey/baseUrl会回退到配置中的models.providers。 - 匹配模型
contextWindow/maxTokens:当显式配置值存在且有效(正的有限数字)时,显式配置值优先;否则使用隐式/生成的目录值。 - 匹配模型
contextTokens遵循同样的显式优先、否则隐式规则;使用它可以在不更改原生模型元数据的情况下限制有效上下文。 - 提供商插件目录会作为生成的、归插件所有的目录分片,存储在智能体的插件状态下。
- 当你希望配置完全重写
models.json并跳过合并归插件所有的目录分片时,使用models.mode: "replace"。 - 标记持久化以源为权威:标记从活跃源配置快照(解析前)写入,而不是从已解析的运行时密钥值写入。
- 非空的智能体
提供商字段详情
顶层目录
顶层目录
models.mode:提供商目录行为(merge或replace)。models.providers:按提供商 id 键控的自定义提供商映射。- 安全编辑:使用
openclaw config set models.providers.<id> '<json>' --strict-json --merge或openclaw config set models.providers.<id>.models '<json-array>' --strict-json --merge进行增量更新。除非传入--replace,否则config set会拒绝破坏性替换。
- 安全编辑:使用
模型目录条目
模型目录条目
models.providers.*.models:显式提供商模型目录条目。models.providers.*.models.*.input:模型输入模态。纯文本模型使用["text"],原生图像/视觉模型使用["text", "image"]。仅当所选模型标记为支持图像时,图像附件才会注入到智能体轮次中。models.providers.*.models.*.contextWindow:原生模型上下文窗口元数据。这会覆盖该模型的提供商级contextWindow。models.providers.*.models.*.contextTokens:可选的运行时上下文上限。这会覆盖提供商级contextTokens;当你想要比模型原生contextWindow更小的有效上下文预算时使用;当两者不同时,openclaw models list会显示两个值。models.providers.*.models.*.compat.supportsDeveloperRole:可选的兼容性提示。对于带有非空非原生baseUrl(主机不是api.openai.com)的api: "openai-completions",OpenClaw 会在运行时强制将其设为false。空/省略的baseUrl保持默认 OpenAI 行为。models.providers.*.models.*.compat.requiresStringContent:针对仅支持字符串的 OpenAI 兼容聊天端点的可选兼容性提示。当为true时,OpenClaw 会在发送请求前将纯文本messages[].content数组展平为普通字符串。models.providers.*.models.*.compat.strictMessageKeys:针对严格 OpenAI 兼容聊天端点的可选兼容性提示。当为true时,OpenClaw 会在发送请求前将传出的 Chat Completions 消息对象剥离为role和content。models.providers.*.models.*.compat.thinkingFormat:可选的思考负载提示。对于 Together 风格的reasoning.enabled使用"together",对于顶层enable_thinking使用"qwen",或者对于支持请求级 chat-template kwargs 的 Qwen 系列 OpenAI 兼容服务器(例如 vLLM)上的chat_template_kwargs.enable_thinking使用"qwen-chat-template"。已配置的 vLLM Qwen 模型会为这些格式公开二元/think选择(off、on)。models.providers.*.models.*.compat.requiresReasoningContentOnAssistantMessages:针对 DeepSeek 风格 Chat Completions 后端的可选兼容性提示,这类后端要求重放时先前的 assistant 消息保留reasoning_content。当为true时,OpenClaw 会在传出的 assistant 消息上保留该字段。为自定义 DeepSeek 兼容代理接线且该代理会在推理被剥离后拒绝请求时使用。默认false。
Amazon Bedrock 发现
Amazon Bedrock 发现
plugins.entries.amazon-bedrock.config.discovery:Bedrock 自动发现设置根。plugins.entries.amazon-bedrock.config.discovery.enabled:开启/关闭隐式发现。plugins.entries.amazon-bedrock.config.discovery.region:用于发现的 AWS 区域。plugins.entries.amazon-bedrock.config.discovery.providerFilter:用于定向发现的可选提供商 id 过滤器。plugins.entries.amazon-bedrock.config.discovery.refreshInterval:发现刷新的轮询间隔。plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow:已发现模型的备用上下文窗口。plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens:已发现模型的备用最大输出 token 数。
o1/o3/o4 推理系列、Claude、Gemini、任何以 -vl 结尾的 id(Qwen-VL 及类似模型),以及 LLaVA、Pixtral、InternVL、Mllama、MiniCPM-V 和 GLM-4V 等命名系列;对于已知纯文本系列(Llama、DeepSeek、Mistral/Mixtral、Kimi/Moonshot、Codestral、Devstral、Phi、QwQ、CodeLlama,以及没有 vl/vision 后缀的裸 Qwen id),它会跳过额外问题。未知模型 ID 仍会提示确认图像支持。非交互式新手引导使用相同推断;传入 --custom-image-input 可强制使用支持图像的元数据,或传入 --custom-text-input 可强制使用纯文本元数据。
提供商示例
Cerebras(GLM 4.7 / GPT OSS)
Cerebras(GLM 4.7 / GPT OSS)
官方外部 Cerebras 使用
cerebras 提供商插件可以通过 openclaw onboard --auth-choice cerebras-api-key 配置此项。仅在覆盖默认值时使用显式提供商配置。cerebras/zai-glm-4.7;Z.AI 直连使用 zai/glm-4.7。Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key。本地模型(LM Studio)
本地模型(LM Studio)
参见本地模型。简而言之:在性能足够的硬件上通过 LM Studio Responses API 运行大型本地模型;保留已合并的托管模型作为回退。
MiniMax M3(直连)
MiniMax M3(直连)
MINIMAX_API_KEY。快捷方式:openclaw onboard --auth-choice minimax-global-api 或 openclaw onboard --auth-choice minimax-cn-api。模型目录默认使用 M3,并且也包含 M2.7 变体。在 Anthropic 兼容流式路径上,除非你显式设置 thinking,否则 OpenClaw 默认会禁用 MiniMax M2.x 思考;MiniMax-M3(以及 M3.x)默认保持在提供商的省略/自适应思考路径上。/fast on 或 params.fastMode: true 会将 MiniMax-M2.7 重写为 MiniMax-M2.7-highspeed。Moonshot AI(Kimi)
Moonshot AI(Kimi)
baseUrl: "https://api.moonshot.cn/v1" 或 openclaw onboard --auth-choice moonshot-api-key-cn。原生 Moonshot 端点在共享的 openai-completions 传输协议上声明兼容流式用量,OpenClaw 会根据端点能力而不只是内置提供商 ID 来启用这一点。OpenCode
OpenCode
OPENCODE_API_KEY(或 OPENCODE_ZEN_API_KEY)。Zen 目录使用 opencode/... 引用,Go 目录使用 opencode-go/... 引用。快捷方式:openclaw onboard --auth-choice opencode-zen 或 openclaw onboard --auth-choice opencode-go。Synthetic(Anthropic 兼容)
Synthetic(Anthropic 兼容)
/v1(Anthropic 客户端会追加它)。快捷方式:openclaw onboard --auth-choice synthetic-api-key。Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY。模型引用使用规范的 zai/* 提供商 ID。快捷方式:openclaw onboard --auth-choice zai-api-key。- 通用端点:
https://api.z.ai/api/paas/v4 - 编程端点:
https://api.z.ai/api/coding/paas/v4 - 默认的
zai-api-key凭证选项会探测你的密钥并自动检测它属于哪个端点(如果检测结果不确定,则回退到提示,默认为 Global)。也提供专用的 CN 和 Coding-Plan 凭证选项用于显式选择。 - 对于通用端点,请定义一个带有 Base URL 覆盖的自定义提供商。