tools.* 配置键以及自定义提供方 / 基础 URL 设置。有关代理、通道和其他顶层配置键,请参见 配置参考。
工具
工具配置档案
tools.profile 在 tools.allow/tools.deny 之前设置基础允许列表:
本地入门在新建本地配置且未设置时,默认使用
tools.profile: "coding"(已存在的显式配置档案会保留)。coding 和 messaging 还会隐式允许 bundle-mcp(已配置的 MCP 服务器)。
工具组
suggest_task 允许编码代理在不启动任务的情况下提出已确认的后续工作。建议所使用的项目目录必须是 git checkout;无效的建议,包括非 git 目录或空白提示词,会在工具记录时被拒绝。Control UI 会将标题和摘要显示为可操作的提示框;Gateway 支持的 TUI 会显示等效的交互式提示。接受建议后,可以在新的受管理工作树中启动任务(默认行为)、在建议的 checkout 中本地启动新会话、在配置了云端工作器配置文件时将任务发送给该配置文件,或将任务交付给源会话。OpenClaw 会将完整提示词发送到所选目标,同时当前轮次继续进行。dismiss_task 会通过 suggest_task 返回的临时 task_id 撤回仍处于待处理状态的建议。
只有当发起方的操作界面能够接收并处理 Gateway 任务建议事件时,才会提供这些工具。Channel 会话和本地/嵌入式 TUI 会话不会接收它们;channel 传输在安全地公开此流程之前,需要一个可移植的、类型化的任务操作。建议是进程本地的,并会在 Gateway 重启时消失。这两个工具仍然保留在 coding 配置和 group:sessions 中,因此当界面支持它们时,正常的 tools.allow 和 tools.deny 策略会自动对其进行配置。
沙箱工具策略中的 MCP 与插件工具
已配置的 MCP 服务器会作为插件拥有的工具,通过bundle-mcp 插件 id 暴露。普通工具配置档案可以允许它们,但 tools.sandbox.tools 是沙箱会话中的额外门控。如果沙箱模式是 "all" 或 "non-main",并且希望 MCP/插件工具可见,请在沙箱工具允许列表中加入以下条目之一:
bundle-mcp,用于来自mcp.servers的 OpenClaw 托管 MCP 服务器- 某个特定原生插件的插件 id
group:plugins,用于所有已加载的插件拥有工具- 精确的 MCP 服务器工具名或服务器通配符,例如
outlook__send_mail或outlook__*,当你只想要一个服务器时
mcp.servers 键。非 [A-Za-z0-9_-] 字符会变成 -,不以字母开头的名称会加上 mcp- 前缀,较长或重复的前缀可能会被截断或追加后缀;例如,mcp.servers["Outlook Graph"] 使用的通配符类似 outlook-graph__*。
mcp.servers 中由 OpenClaw 托管的服务器,使用 openclaw doctor 可以捕获这种情况。来自捆绑插件清单或 Claude .mcp.json 的 MCP 服务器使用相同的沙箱门控,但此诊断尚不会枚举这些来源;如果它们的工具在沙箱会话中消失,请使用相同的允许列表条目。
tools.codeMode
tools.codeMode 控制通用的 OpenClaw 代码模式界面。对于启用了工具的运行,代码模式启用后,普通的 OpenClaw 工具会转移到沙箱内的 tools.* 目录桥接中,MCP 工具则可通过生成的 MCP 命名空间使用。模型通常会看到 exec 和 wait;而像 computer 这样结构化结果无法通过仅支持 JSON 的桥接传递的工具,则会保持直接可用。
enabled 默认为 "auto",仅对目录条目标记了 compat.codeMode: "preferred" 的模型启用代码模式。请参阅代码模式 - 按模型自动激活。
要在每次运行中退出代码模式:
enabled: true 都会在每次支持工具的运行中强制启用代码模式。
在代码模式下,MCP 声明会通过只读的虚拟 API 文件界面提供。访客代码可以调用 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.entries.*.tools)中同时设置——配置验证会拒绝这种配置。请将 alsoAllow 条目合并到 allow 中,或者移除 allow,改用 profile + alsoAllow。tools.byProvider
进一步限制特定提供方或模型可用的工具。顺序:基础配置档案 → 提供方配置档案 → allow/deny。
tools.toolsBySender
限制当前回合发起请求者可使用的工具。这是在通道访问控制之上的纵深防御;sender 值必须来自通道适配器,而不是消息文本。它不会对模型提示中的其他内容进行身份验证;请参阅请求者范围控制和提示上下文。
channel:<channelId>:<senderId>、id:<senderId>、e164:<phone>、username:<handle>、name:<displayName>,或 "*"。通道 id 是规范化的 OpenClaw id;像 teams 这样的别名会规范化为 msteams。旧式无前缀键会按 id: 处理。匹配顺序为 channel+id、id、e164、username、name,然后是通配符。
当匹配成功时,代理专属的 agents.entries.*.tools.toolsBySender 会覆盖全局 sender 匹配,即使策略为空对象 {} 也一样。
tools.elevated
控制沙箱外的提升级 exec 访问:
- 每个代理的覆盖配置(
agents.entries.*.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.entries.*.tools.loopDetection 中进行覆盖。
tools.web
provider 和 userAgent 除外。maxResponseBytes 会被限制在 32000–10000000;maxChars 会被限制为不超过 maxCharsCap(提高 maxCharsCap 可允许更大的响应)。
tools.media
配置入站媒体理解(图像/音频/视频):
tools.media.models 是唯一配置的模型列表。每个条目声明其处理的能力。可选的 preferredModel 选择器接受 provider/model、模型 id、用于提供方默认条目的 provider:<id>,或 cli:command;匹配的条目会移动到该能力回退顺序的前面。对于已配置和自动检测的模型,每种能力的提示词、限制、请求设置、作用域、附件策略和音频转录回显仍作为默认值;模型条目可以覆盖特定于模型的字段。
媒体模型条目字段
媒体模型条目字段
提供方条目(
type: "provider" 或省略):provider:API 提供方 id(openai、anthropic、google/gemini、groq等)model:模型 id 覆盖profile/preferredProfile:auth-profiles.json配置档案选择
type: "cli"):command:要运行的可执行文件args:模板化参数(支持{{AttachmentPath}}、{{AttachmentUrl}}、{{AttachmentContentType}}、{{AttachmentDir}}、{{AttachmentIndex}}、{{Prompt}}、{{MaxChars}}等;openclaw doctor --fix会将已弃用的{input}占位符迁移为{{AttachmentPath}})。较旧的{{MediaPath}}、{{MediaUrl}}、{{MediaType}}和{{MediaDir}}别名在兼容期内仍可用,但已弃用。
capabilities:包含image、audio和video中一个或多个值的列表。prompt、maxChars、maxBytes、timeoutSeconds、language:每个条目的覆盖值。- 匹配的图像模型中的
timeoutSeconds条目在代理调用显式image工具时同样适用。对于图像理解,此超时应用于请求本身,不会因之前的准备工作而缩短。 - 失败时回退到下一个条目。
auth-profiles.json → 环境变量 → models.providers.*.apiKey。tools.agentToAgent
tools.sessions
控制哪些会话可以被会话工具(sessions_list、sessions_history、sessions_send)作为目标。
默认值:tree(当前会话及其派生的会话,例如子代理,以及同一代理的环境感知监视群组会话)。
可见性范围
可见性范围
self:仅当前会话密钥。tree:当前会话及由当前会话派生的会话(子代理)。对于读取操作,还包括当前会话通过环境感知群组机制监视的同一代理群组会话。agent:属于当前代理 ID 的任何会话(如果在同一代理 ID 下为每个发送者运行独立会话,则可能包括其他用户)。all:任何会话。跨代理目标仍需要tools.agentToAgent。- 沙箱限制:当当前会话处于沙箱中,且
agents.defaults.sandbox.sessionToolsVisibility="spawned"(默认值)时,即使tools.sessions.visibility="all",可见性也会被强制设为tree。 - 当不是
all时,sessions_list会包含一个简要的visibility字段,用于描述生效模式,并警告当前范围之外的某些会话可能会被省略。
session.dmScope: "main" 设置下,群组中的人为活动会使同一代理的群组会话对该代理的主会话保持环境可见。在多用户设置中,"main" 还会让多个用户共享一个 DM 会话,因此被路由到该会话的每个用户都可以读取环境监视的群组内容,包括通过会话记忆的 memory_search 进行读取。若要隔离 DM,请为每个对话方使用独立的 dmScope;或者将 tools.sessions.visibility: "self" 设置为退出环境监视会话的读取范围。
tools.sessions_spawn
控制 sessions_spawn 的内联附件支持。
附件说明
附件说明
- 需要将
enabled设为true才可使用附件。 - 子代理附件会被物化到子工作区的
.openclaw/attachments/<uuid>/,并带有.manifest.json。 - ACP 附件仅限图像,并会在通过相同的文件数量、单文件字节数和总字节数限制后以内联方式转发到 ACP 运行时。
- 附件内容会在转录持久化中自动脱敏。
- Base64 输入会通过严格的字母表/填充检查以及解码前大小保护进行验证。
- 子代理附件文件权限为目录
0700、文件0600。 - 子代理清理遵循
cleanup策略:delete始终移除附件;keep仅在retainOnSessionKeep: true时保留它们。
tools.updatePlan
用于非简单多步骤工作跟踪的结构化 update_plan 清单工具的关闭开关。
- 默认值:对于每个提供商和模型均为
true。设置为false可关闭该工具;不存在针对特定模型的自动启用规则。 - 工具描述中添加了使用指导,因此模型只会在处理实质性工作时使用该工具,并且最多保持一个步骤处于
in_progress状态。 tools.deny: ["update_plan"]同样会移除该工具,因此请使用已经承载工具策略的配置方式。
tools.experimental.planTool。运行 openclaw doctor --fix 可将该值迁移到 tools.updatePlan。
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:网关agentannounce 投递尝试的单次调用超时时间(毫秒)。默认值:120000。临时重试可能会使总 announce 等待时间长于单个配置的超时时间。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 路径,而不会额外添加单独的配置项,也不会信任其他私有源。
身份验证和合并优先级
身份验证和合并优先级
- 使用
authHeader: true+headers满足自定义身份验证需求。 - 使用
OPENCLAW_AGENT_DIR覆盖 agent 配置根目录。 - 对匹配提供商 ID 的合并优先级:
- 非空的 agent
models.jsonbaseUrl值优先。 - 仅当该提供商在当前配置/auth-profile 上下文中不是由 SecretRef 管理时,非空的 agent
apiKey值才优先。 - 由 SecretRef 管理的提供商
apiKey值会根据源标记刷新(环境变量引用使用ENV_VAR_NAME,文件/exec/store 引用使用secretref-managed),而不是持久化已解析的密钥。 - 由 SecretRef 管理的提供商标头值会根据源标记刷新(环境变量引用使用
secretref-env:ENV_VAR_NAME,文件/exec/store 引用使用secretref-managed)。 - 空值或缺失的 agent
apiKey/baseUrl会回退到配置中的models.providers。 - 匹配模型的
contextWindow/maxTokens:存在明确配置值且该值有效(正的有限数值)时,明确配置值优先;否则使用隐式/生成的目录值。 - 匹配模型的
contextTokens遵循相同的“明确值优先,否则使用隐式值”规则;使用它可以限制有效上下文,而不改变原生模型元数据。 - 提供商插件目录会作为由插件拥有的生成目录分片存储在 agent 的插件状态下。
- 当你希望配置完全重写
models.json并跳过合并由插件拥有的目录分片时,使用models.mode: "replace"。 - 标记持久化以源为准:标记会根据活动源配置快照(解析前)写入,而不是根据已解析的运行时密钥值写入。
- 非空的 agent
提供商字段详情
顶层目录
顶层目录
models.mode:提供商目录行为(merge或replace)。models.providers:按 provider id 键入的自定义 provider 映射。- 安全编辑:使用
openclaw config set models.providers.<id> '<json>' --strict-json --merge或openclaw config set models.providers.<id>.models '<json-array>' --strict-json --merge进行增量更新。config set会拒绝破坏性替换,除非你传入--replace。
- 安全编辑:使用
Provider 连接与认证
Provider 连接与认证
models.providers.*.api: 请求适配器(openai-completions、openai-responses、openai-chatgpt-responses、anthropic-messages、google-generative-ai、google-vertex、github-copilot、bedrock-converse-stream、ollama、azure-openai-responses)。对于自托管的/v1/chat/completions后端,例如 MLX、vLLM、SGLang 以及大多数 OpenAI 兼容的本地服务器,请使用openai-completions。带有baseUrl但没有api的自定义 provider 默认使用openai-completions;仅当后端支持/v1/responses时才设置openai-responses。models.providers.*.apiKey:provider 凭证(优先使用 SecretRef/env 替换)。models.providers.*.auth:认证策略(api-key、token、oauth、aws-sdk)。models.providers.*.contextWindow:当模型条目未设置contextWindow时,该 provider 下模型的默认原生上下文窗口。models.providers.*.contextTokens:当模型条目未设置contextTokens时,该 provider 下模型的默认有效运行时上下文上限。models.providers.*.maxTokens:当模型条目未设置maxTokens时,该 provider 下模型的默认输出 token 上限。models.providers.*.timeoutSeconds:可选的按 provider 配置的模型 HTTP 请求超时时间(秒),包括连接、头部、主体以及总请求中止处理。models.providers.*.injectNumCtxForOpenAICompat:用于 Ollama +openai-completions,将options.num_ctx注入请求中(默认:true)。models.providers.*.authHeader:在需要时强制将凭证通过Authorization头传递。models.providers.*.baseUrl:上游 API 基础 URL。models.providers.*.headers:用于代理/租户路由的额外静态头。
请求传输覆盖
请求传输覆盖
models.providers.*.request:用于模型 provider HTTP 请求的传输覆盖。request.headers:额外头(与 provider 默认值合并)。值支持 SecretRef。request.auth:认证策略覆盖。模式:"provider-default"(使用 provider 内建认证)、"authorization-bearer"(配合token)、"header"(配合headerName、value、可选prefix")。request.proxy:HTTP 代理覆盖。模式:"env-proxy"(使用HTTP_PROXY/HTTPS_PROXY环境变量)、"explicit-proxy"(配合url)。两种模式都支持可选的tls子对象。request.tls:直接连接的 TLS 覆盖。字段:ca、cert、key、passphrase(均支持 SecretRef)、serverName、insecureSkipVerify。request.allowPrivateNetwork:当为true时,允许模型 provider HTTP 请求通过 provider HTTP fetch 保护器访问私有、CGNAT 或类似网段。自定义/本地 provider 的 base URL 已经信任精确配置的来源,但元数据/链路本地来源仍会在没有显式允许的情况下被阻止。将其设为false可退出精确来源信任。WebSocket 会使用同一个request处理头/TLS,但不会使用该 fetch SSRF 门禁。默认值:false。
模型目录条目
模型目录条目
models.providers.*.models:显式的 provider 模型目录条目。models.providers.*.models.*.input:模型输入模态。纯文本模型使用["text"],原生图像/视觉模型使用["text", "image"]。只有在所选模型被标记为支持图像时,图像附件才会注入 agent 回合。models.providers.*.models.*.contextWindow:原生模型上下文窗口元数据。此项会覆盖该模型的 provider 级别contextWindow。models.providers.*.models.*.contextTokens:可选的运行时上下文上限。此项会覆盖 provider 级别的contextTokens;当你希望有效上下文预算小于模型原生的contextWindow时使用此项;当两者不同时,openclaw models list会显示这两个值。
自定义 provider 能力声明
provider 目录负责维护内置模型路由和目录已知模型路由的compat。不要将这些标志复制到配置中:当已配置的 api 和 baseUrl 仍能标识该路由时,OpenClaw 会使用目录行。openclaw doctor --fix 会移除匹配的旧版覆盖,并报告存在差异的值供审核。对于真正的自定义 provider、自定义模型,或路由到不同端点的目录模型,仍支持使用 compat 块。仅设置已针对该端点验证过的能力: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:用于定向发现的可选 provider-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。本地模型(llama.cpp / llama-server)
本地模型(llama.cpp / llama-server)
将一个自定义 在不支持
openai-completions 提供商指向远程 llama-server(或其他兼容 OpenAI 的 llama.cpp 端点)。内置的 llama-cpp、ollama 和 lmstudio 提供商会自动应用 llama.cpp 模式清理器;自定义端点则不会。对于 llama-server 聊天模板会将工具参数编译为 GBNF 的模型,请在每个模型上设置 compat.toolSchemaProfile: "llamacpp"。该配置会移除大于或等于 2000 的 pattern 和 maxLength 值,从而涵盖 cron 工具中 trigger.script 的 65536 限制。这是一种有针对性的缓解措施,并不意味着完全兼容每一种 JSON Schema 约束,也不包含 minLength。toolSchemaProfile 的较旧版本中,更宽泛的回退配置是 compat.unsupportedToolSchemaKeywords: ["pattern", "patternProperties", "format", "propertyNames", "uniqueItems", "contains", "minContains", "maxContains", "minLength", "maxLength"]。与该配置文件不同,它会无条件移除所列出的每个关键字。本地模型(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 兼容的流式路径上,OpenClaw 默认会禁用 MiniMax M2.x thinking,除非你显式设置了 thinking;MiniMax-M3(以及 M3.x)默认保持提供商的省略/自适应 thinking 路径。/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 传输上支持流式 usage 兼容性,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认证选项会探测你的密钥,并自动检测它属于哪个端点(如果检测结果不明确,则回退到提示,并默认使用全球端点)。也可使用专用的中国区和编程计划认证选项进行显式选择。 - 对于通用端点,请定义一个带有基础 URL 覆盖的自定义提供商。
相关内容
- 配置 — agents
- 配置 — channels
- 配置参考 — 其他顶层键
- 工具与插件