拆解 OpenClaw 2026.4.20:一个 AI Agent 网关的工程自白
方向:AI工程 / 开发工具 / Agent架构
开源社区里有一类项目,不够性感,没有惊艳的 Demo,也没有什么爆炸性的功能——但每次版本更新的时候,你翻开 Changelog,能明显感受到这是一群真正在用它解决问题的人写出来的东西。
OpenClaw 是这类项目的典型代表。
2026年4月20日发布的 v2026.4.20,没有新功能发布会,没有产品宣传稿,Update Notes 的标题直接就是"修复成本统计重复累加数十倍的 Bug"。
这种风格很能说明一些事情。
OpenClaw 是什么
简单说:一个自托管的多通道 AI Agent 网关。
你可以把它想象成一个中间层:
Discord ──┐ Telegram ─┤ ┌── Claude Slack ────┼── OpenClaw ────────┼── GPT-5 iMessage ─┤ (自托管) ├── Kimi K2 Matrix ───┘ └── Ollama(本地)用户通过任意一个聊天平台发消息,OpenClaw 统一处理路由、工具调用、记忆管理,然后把结果返回到对应的聊天界面。整套服务跑在你自己的服务器上,数据不经过任何第三方。
这个定位本身就挺有意思——它解决的不是"AI 能力"的问题,而是"AI 基础设施"的问题:如何让一个 AI Agent 实实在在地活在你的日常工作流里,而不是每次都要打开单独的 APP 或者网页。
4.20 这次更新解决了什么
成本统计重复累加
这个 Bug 是本次更新里最严重的一个,也最容易被忽视。
问题表现:同一轮对话的 API 成本会被重复累计数十倍。你以为今天用了 2 美元,实际只用了几分钱。
这种 Bug 不影响功能,但会严重影响用户对系统的信任感。如果你在给团队搭 AI 基础设施,成本统计失准是绝对不能接受的——你要向领导汇报的时候拿什么说事?
修复方式:对estimatedCostUsd做一次性快照,确保每轮只记录一次,同时支持分层定价读取(不同 token 范围,输入/输出单价不同)。
顺带把 Kimi K2.6 和 K2.5 的成本估算也内置进来了。
会话文件无限增长导致 OOM 崩溃
问题表现:长时间运行的实例,会话历史文件越来越大,最终把内存撑爆,进程崩溃。
这是一个典型的"用的时候没问题,跑长了就出事"的 Bug,生产环境的必现问题。
修复方式:
- 默认开启条目上限(超过阈值自动截断旧数据)
- 启动时主动修剪超大的历史文件
- 不是简单的"删最老的",而是保留足够的上下文窗口
// 伪代码示意修复逻辑constMAX_SESSION_ENTRIES=1000;constTRIM_THRESHOLD=1200;asyncfunctionsaveSession(entries){if(entries.length>TRIM_THRESHOLD){// 保留最近的 MAX_SESSION_ENTRIES 条entries=entries.slice(-MAX_SESSION_ENTRIES);console.log(`[Session] Trimmed to${MAX_SESSION_ENTRIES}entries`);}awaitwriteSessionFile(entries);}安全修复:防止配置注入
这是本次更新里含金量最高的一块,但技术文档写得比较简洁,值得多说几句。
漏洞场景:攻击者可以在项目的.env文件里写入以OPENCLAW_开头的配置键,来覆盖系统级配置。
比如:
# 恶意项目的 .env 文件 OPENCLAW_ADMIN_BYPASS=true OPENCLAW_SANDBOX_DISABLED=true OPENCLAW_PLUGIN_TRUST_ALL=true如果系统会加载工作区的.env文件,这些配置就能篡改 OpenClaw 的安全设置。
修复方式:工作区.env文件里,任何以OPENCLAW_开头的 key 直接被过滤掉,不加载。关键配置只能从系统级别的配置文件里读取。
看起来是个小改动,但这种"边界清晰"的意识很重要。尤其是 OpenClaw 这种作为 AI Agent 基础设施的工具,如果连配置权限边界都不清晰,一旦跑在企业内网里,风险很大。
Cron 任务定义与状态分离
这个改动不是 Bug 修复,但是个好的设计决策。
以前jobs.json里同时存了任务定义(做什么)和运行状态(上次跑了什么时候,下次什么时候跑)。这有两个问题:
- 没法用 Git 管理任务配置:因为状态在频繁变化,每次任务执行都会 dirty 这个文件,git diff 全是噪音。
- 任务配置的迁移麻烦:换机器部署的时候,状态文件也一起带过去了,导致各种预期外的行为。
修复后分成了两个文件:
jobs.json ← 任务定义(做什么、什么时候跑、Cron 表达式) jobs-state.json ← 运行时状态(上次执行时间、执行结果)这是标准的"配置与状态分离"设计原则。在 Git 仓库里只提交jobs.json,.gitignore里加上jobs-state.json,完美。
Moonshot / Kimi K2.6 的深度适配
国内用 Kimi 的同学有福了。这次更新对 Moonshot 做了几个细节适配:
默认模型切换:现在默认指向kimi-k2.6(而非老版本的 k1.5)
Thinking 模式控制:
# 在配置文件里加这个moonshot:thinking:mode:"disabled"# 生产环境默认关闭,避免冗余思考链输出keep:"all"# 如果开启,保留完整思考链(用于调试)为什么默认关 thinking 模式?因为开启后输出里会有大段的<thinking>块,如果你只是想要一个干净的回答,这些内容是噪音,而且还要消耗更多 token。
Mattermost 流式响应
这个功能点值得单独提一下,因为它展示了 OpenClaw 对用户体验的思考方式。
以前 Mattermost 集成里,用户发了问题之后,只能等 AI 完全生成完才看到回复。如果是个复杂问题,可能要等 30 秒以上,用户体验很差。
现在:
用户:帮我总结一下这份技术文档的主要观点 [AI 思考中...] ← 草稿状态,实时更新 [AI 正在生成...第1段已完成,第2段生成中...] [最终回复:...] ← 生成完毕后替换草稿AI 的思考过程和部分回复会以"草稿"形式实时显示,最终替换为正式内容。对于习惯了 Claude.ai / ChatGPT 网页端流式体验的用户,这个差距现在补上了。
一点思考:自托管 AI 网关的价值
OpenClaw 这类工具的核心价值,在云 AI API 越来越便宜的今天,到底是什么?
我认为有三点:
1. 数据主权
企业里有大量不能上传到第三方服务的数据:内部系统的接口文档、客户数据、代码库。自托管的 AI 网关让你可以用最好的 AI 模型,同时确保数据不离开自己的基础设施。
2. 工具集成的深度
OpenClaw 里的 Agent 可以通过插件访问内部 API、企业 Wiki、数据库。这种深度集成在 SaaS AI 产品里是做不到的(或者说很难做到)。
3. 成本控制
企业级 AI 产品通常按座位数收费,成本线性增长。自托管的方案按 API 调用付费,成本更可控。OpenClaw 的精细化成本统计(这次 4.20 刚修好),让这种控制变得可信。
对于有能力自己运维服务器的团队,这是一个值得研究的方向。如果你正在考虑给团队搭一套内部 AI 工具,OpenClaw 比 “用公司账号开一堆 Copilot 订阅” 要灵活得多,也便宜得多。
参考资料:高效码农博客 “AI Agent革命性升级!OpenClaw 2026.4.20全面修复”,发布于2026-04-21