1. 公开部署的 OpenClaw 为什么必须立刻升到 2026.3.13
如果你把 OpenClaw 挂在公网、或者让它处理带敏感信息的任务,2026.3.13 这个版本不是「有空再升」,而是「现在就升」。这次是安全修复的紧急发布,从 2026.3.12 到 2026.3.13,官方一口气修了 30 多个安全问题,其中三个属于公开部署环境下可被直接利用的高危项。
第一个是执行审批绕过。旧版本里system.execApprovals.*能通过node.invoke被绕开,等于你设的审批形同虚设,攻击者可能触发未授权命令执行。修复后强制走exec.approvals.node.*路径,所有启用执行审批的部署都受影响。
第二个是 SSRF 防护增强。之前 IPv4 映射的 IPv6 字面量能绕过防护,去访问环回、私有网段和元数据服务。公开部署里这个洞很危险,等于把内网服务的门给撬开了。新版直接封锁了这些访问。
第三个是网关工具调用安全。gatewayUrl覆盖可被恶意利用,现在被限制为环回地址或你配置的gateway.remote.url。
除此之外还有浏览器控制的路径遍历、环回路由的 CSRF 防护等中危修复。好消息是这次没有破坏性变更,配置向后兼容,升级不会把你现有功能打挂。所以升级本身不折腾,真正需要花心思的是升级之后——把模型调用链路收敛到统一通道,避免 Key 散落在各个配置文件里。这也是我下面要重点讲的:用 TaoToken 做统一入口,把config.toml和settings.json的骨架一次配好。
2. 升级前先理清 TaoToken 在链路里的位置
OpenClaw 的模型调用链路大致是:Agent 发起请求 → 网关路由 → 模型 Provider → 返回结果。公开部署最容易出问题的地方,是每个渠道、每个工具各自持有一份 API Key,散落在config.toml、settings.json、环境变量里,一旦要轮换或者某个 Key 泄露,排查成本极高。
TaoToken 在这里扮演的是统一 API 通道的角色。你只需要在 TaoToken 侧生成一个 Key,然后在 OpenClaw 的配置里把模型请求的 base URL 指向https://taotoken.net/api,所有走 OpenAI 兼容协议的调用都能收敛到这一条通道上。这样做的好处很直接:Key 只有一份,轮换只改一处;公开部署时暴露面更小;出问题看一处日志就够。
需要提前准备的东西不多:一个 TaoToken 账号、一个 API Key、以及确认你的 OpenClaw 版本已经是 2026.3.13。Key 的获取入口在控制台的 API Keys 页面,模型对话能力可以在模型对话页先验证,长期跑编码或 Agent 任务的话建议看下 Coding Plan。
注意:TaoToken 是合规的 API 通道服务,配置时只填官方给的地址,不要自行拼接或改写域名。
3. config.toml 与 settings.json 的可复制配置骨架
升级到 2026.3.13 后,先跑一遍安全审计确认基线,再动配置。下面这套骨架是我实测下来比较稳的写法,你可以直接抄。
先看config.toml里和模型通道、网关相关的部分:
# config.toml [gateway] # 公开部署时远程网关地址,必须显式配置,避免被 gatewayUrl 覆盖利用 remote.url = "https://your-openclaw-host.example.com" [gateway.remote] # 仅允许环回或上面配置的地址,2026.3.13 起强制校验 allowLoopback = true [model] # 统一走 TaoToken 通道,OpenAI 兼容协议 provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" default_model = "gpt-4o-mini" [exec.approvals.node] # 2026.3.13 起审批强制走这个路径,旧路径已失效 enabled = true require_confirm = true [security] # 开启 SSRF 防护,封锁环回/私有/元数据访问 ssrf_protection = true block_metadata = true这里有个关键点:api_key用${TAOTOKEN_API_KEY}引用环境变量,而不是把明文写进文件。2026.3.13 的配置写入逻辑会保留${VAR}引用,不会把它持久化成明文密钥,这一点对公开部署特别重要。
再看settings.json,主要管会话、内存和渠道行为:
{ "session": { "maxStateSize": 5000, "ttlMinutes": 120, "enableDerivedTitleCache": true }, "memory": { "qmd": { "rawKeyPrefix": "openclaw:", "scopeEnforcement": true }, "index": { "exactIdMatchFirst": true } }, "channels": { "telegram": { "webhookTimeout": "return", "webhookTimeoutSeconds": 10 }, "signal": { "preserveGroupCase": true } }, "browser": { "outputRoot": "/tmp/openclaw", "restrictOutputPath": true } }session.maxStateSize和ttlMinutes是防止会话状态无限增长,公开部署下这个必须设。memory.qmd.rawKeyPrefix对应 2026.3.13 新增的作用域规则,能防作用域绕过。browser.outputRoot配合restrictOutputPath把文件输出限制在临时根目录,堵住路径遍历。
环境变量在启动前导出:
export TAOTOKEN_API_KEY="你的_TaoToken_Key"如果你用 systemd 托管,把这一行写进 service 的Environment=或EnvironmentFile=,别写进仓库。
4. 升级与连通性验证的完整动作
配置改完,按顺序执行下面这套动作,每一步都有明确的预期结果。
第一步,确认版本已经到位:
openclaw status预期输出里版本号显示2026.3.13。如果还是 2026.3.12,先完成升级再继续。
第二步,跑安全审计,确认高危项已关闭:
openclaw security audit重点看执行审批路径、SSRF 防护、网关 URL 限制三项是否通过。这一步是公开部署的硬门槛,任何一项报红都别急着上线。
第三步,验证内存系统作用域规则生效:
openclaw memory status预期能看到 QMD 作用域已启用、索引使用精确 ID 匹配。如果提示集合元数据漂移,按诊断工具的建议修复一次。
第四步,检查网关健康:
openclaw gateway status预期网关处于 healthy,远程地址与你config.toml里配的一致。
第五步,实际打一次模型请求,验证 TaoToken 通道连通。用 curl 直接测最干净:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer ${TAOTOKEN_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o-mini", "messages": [{"role": "user", "content": "ping"}] }'返回里带choices字段就说明通道通了。如果返回 401,是 Key 问题;返回 404,检查 base_url 有没有多写或少写路径;返回超时,看网关出站规则。
第六步,回到 OpenClaw 里发一条真实 Agent 请求,确认工具调用 ID 正常、会话转录没有报错。2026.3.13 清理了 OpenAI/Codex 工具调用 ID,这一步能验证修复是否生效。
5. 本篇常见错排查
报错一:exec.approvals.node路径不生效。大概率是你还在用旧的system.execApprovals.*写法。2026.3.13 强制走新路径,旧配置会被忽略。把config.toml里的审批段整体替换成第 3 节的写法。
报错二:SSRF 拦截了正常请求。新版封锁环回、私有网段和元数据服务,如果你的某个工具确实需要访问内网地址,得在网关侧显式放行,而不是关掉ssrf_protection。公开部署下别为了图省事关防护。
报错三:gatewayUrl覆盖被拒绝。这是预期行为。检查你的gateway.remote.url是否配置正确,请求里的 gatewayUrl 必须匹配它或为环回地址。
报错四:浏览器工具输出路径报错。确认browser.outputRoot指向的目录存在且可写,restrictOutputPath为 true 时输出会被限制在该目录内,写到别处会被拒。
报错五:TaoToken 请求 401。先确认环境变量在当前 shell 或 service 里真的导出了,echo $TAOTOKEN_API_KEY看有没有值。再确认 Key 没有多余空格。如果都没问题,去控制台 API Keys 页面确认 Key 状态正常。
报错六:会话状态持续增长。检查settings.json里session.maxStateSize和ttlMinutes是否生效,2026.3.13 限制了会话状态跟踪,但配置没设的话默认值可能偏大。
报错七:Telegram webhook 超时。新版把回调超时处理设为onTimeout: "return",10 秒。如果你之前自定义过超时逻辑,需要对齐这个行为。
6. 把通道收敛这件事一次做对
公开部署的 OpenClaw,安全更新只是第一步,真正决定你后续维护成本的是模型调用链路有没有收敛。我踩过的坑是早期每个渠道各配一份 Key,结果一次轮换改了五个文件还漏了一个。现在统一走 TaoToken 通道,config.toml里只有一处 base_url 和一处环境变量引用,升级、轮换、排障都只盯一个点。
如果你还在配 Key 的阶段,先去 API Keys 页面把 Key 建好,接入细节看接入文档。想先确认模型对话是否正常,模型对话页可以直接试。长期跑编码或 Agent 任务的话,Coding Plan 比按量更划算。配置骨架照第 3 节抄,验证动作照第 4 节跑一遍,公开部署的安全加固和通道切换基本就一次到位了。