OpenClaw 的 Hello 为什么这么费 Token?我顺着源码终于懂了

OpenClaw 的 Hello 为什么这么费 Token?我顺着源码终于懂了

OpenClaw 一跑 Hello 就很烧 Token,根子不在模型贵,而在上下文链路太长。顺着源码拆开请求路径、上下文拼接和调用轮次,就能看明白钱到底花在哪。

发布于 2026/03/30
更新于 2026/06/29
10 分钟阅读
34 次阅读

你以为自己只发了一句 hello,模型看到的却常常是一整套运行现场。

我是青玉白露,大厂程序员,主业写代码,副业做 AI 工具和内容。

这次我把 openclaw/openclaw 仓库里几份最关键的文档和运行时路径对着看了一遍,终于把这件事想明白了:OpenClaw 里最贵的地方,往往不在 hello 这 5 个字符上,贵在它为了把这轮回复说对,额外补进去的上下文。

image.png

你在输入框里看到的是一句问候。

Gateway、session、system prompt、tools、skills、历史摘要、记忆检索,看到的却是一整套“当前现场”。

只要这个 Agent 还想记得你前面说过什么、知道自己在哪个群里、能不能调工具、要不要继承上一轮设置,token 账单就很难只按一句 hello 来算。

你发出 hello 之后,中间其实还要过几站

OpenClaw 官方文档 docs/concepts/messages.md 把消息流写得很直白:一条入站消息,会先做路由,拿到 sessionKey,必要时进入队列,随后才进入 agent run。

再往下看 docs/concepts/session.mddocs/reference/session-management-compaction.md,你会发现它还要恢复会话状态、读取 transcript、确认当前 session 的运行信息。

一条 hello,在真正进模型前,差不多会经历这样一条链路:

hello
-> 解析来源,得到 sessionKey
-> 从 sessions.json 找当前 session 的状态和计数
-> 从 <sessionId>.jsonl 取最近消息、工具结果、历史摘要
-> 组装 system prompt、tools、skills、workspace 信息
-> 必要时补 compaction 摘要和 active memory
-> 再把整包上下文交给模型

OpenClaw 上下文总览图

所以“Hello 为什么费 Token”这件事,真正该盯的从来都不是问候语本身,而是这条链路每一站都往包里塞了什么。

真正把 Token 顶上去的,是这 4 层信息

Token 消耗分层图

  1. 消息不会原样直送模型

docs/concepts/messages.md 讲的是高层流程,src/agents/transport-message-transform.ts 讲的是更细一层的运行时处理。

也就是说,OpenClaw 看到的通常不是“纯文本的一句 hello”,而是一条带来源、角色、工具结果配对、平台差异修补后的消息。你在界面里只看见一句话,运行时看到的已经是更完整的消息结构了。

  1. 会话状态要先恢复

docs/concepts/session.md 说明了消息会被路由到不同 session;docs/reference/session-management-compaction.md 进一步给出了两个很关键的落盘位置:

  • ~/.openclaw/agents/<agentId>/sessions/sessions.json
  • ~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl

前者管的是当前 session 的元信息,后者存的是实际对话、工具调用、压缩摘要这些内容。

src/agents/command/session-store.ts 则说明,OpenClaw 每轮运行后还会继续回写 session 的 token、模型、状态等信息。换句话说,模型每次开口前,系统都得先知道“我现在接的是哪一段对话、这段对话已经走到哪里了”。

  1. system prompt 本身就很重

这部分是我这次最有感触的一层。

docs/concepts/system-prompt.md 明确写了,OpenClaw 会为每次 agent run 组装一份自己的 system prompt,而且里面不只有一段“你是谁”的提示。Tooling、Execution Bias、Skills、Workspace、Runtime、Heartbeats 这些固定区块都会进来。

真正落到运行时,关键路径在 src/agents/pi-embedded-runner/run/attempt-system-prompt.tssrc/agents/system-prompt.ts。前者负责把基础 prompt、额外上下文、provider 侧变换拼起来,后者定义了 system prompt 的固定结构和注入顺序。

你只说了一句 hello,模型却可能同时拿到:

  • 当前可用工具说明
  • 已加载 skills 的内容
  • 工作目录和上下文文件
  • 运行环境、时间、推理模式
  • 子 agent / 群聊 / runtime 的额外提示

这部分 token 很少会在 UI 里直接露出来,但账单会老老实实记上。

  1. 历史压缩和记忆检索也会继续占上下文

很多人以为“压缩了就省完了”。

仓库里的 docs/concepts/compaction.mdsrc/agents/compaction.ts 给出的答案更像是:旧消息会被压成摘要,摘要还是要带进下一轮;只不过它比整段原文短得多。

再加上 docs/concepts/active-memory.md 里那套 active memory 机制,系统还有机会在主回复前主动捞一把相关记忆。这样做很值,因为回复会更稳,但这也意味着模型前面的那包上下文,通常不只有“最近几句聊天”。

我对着仓库看,最关键的几个源码/文档锚点在这里

如果你也想自己顺着仓库往下看,最值得先看的就是这几处:

docs/concepts/messages.md
docs/concepts/session.md
docs/reference/session-management-compaction.md
docs/concepts/system-prompt.md
docs/concepts/compaction.md
docs/concepts/active-memory.md
src/agents/command/session-store.ts
src/agents/pi-embedded-runner/run/attempt-system-prompt.ts
src/agents/system-prompt.ts
src/agents/compaction.ts

更多上下文换来什么能力

我自己的阅读顺序是这样的:

  • 先看 messages.mdsession.md,把消息是怎么进 session 的看清楚。
  • 再看 system-prompt.md,你会立刻明白为什么一句短消息也能带出一大包运行信息。
  • 然后看 session-management-compaction.mdcompaction.ts,这时候就能看懂“历史为什么不会凭空消失,只会换一种更短的形态继续留下来”。

看到这里,标题里那句“顺着源码终于懂了”,才算真正落到了文件路径上。

真想把成本降下来,可以先做这 5 个动作

OpenClaw 节省 Token 建议图

  1. 话题已经切了,就别还挂在同一个 session 里

你昨天在聊部署,今天在聊写作,中间还穿插了一轮调模型。继续硬接在同一条长 session 里,模型每轮都得先回忆“我们之前在干嘛”。

  1. 长对话要接受 compaction 这件事

/compact 的意义,不只是省钱,它是在帮你把旧历史缩成更轻的可复用上下文。对持续很久的 Agent 会话来说,这是必要动作。

  1. skill 和 tool 只开当前真的要用的

system prompt 里每多一段工具说明、每多一段 skill 内容,输入体积都会继续涨。想让 hello 便宜一点,最有效的办法之一就是别让每一轮都背着一整个工具箱。

  1. 长期要记住的东西,尽量交给记忆系统

能沉到 OpenViking 或 memory 的事实,就别每轮都靠整段聊天硬带。这样做更省,也更像真正的长期记忆。

  1. 比模型价格时,别只看 input 单价

很多人拿两家模型比价,只看“每百万 input token 多少钱”。真到 Agent 场景里,更该看的其实是:这套 prompt 装配之后,你平均每轮到底会带进去多少额外上下文。

一句话记住就够了:hello 很短,运行现场很长。

你看到的只是提问本身,模型看到的却是“这句话该放进怎样的一套环境里理解”。OpenClaw 想把 Agent 做得连续、可控、能调工具,token 就一定会有一部分花在这里。看懂这一点,你后面才知道该精简哪一层。

延伸阅读

  • AI公司正在失去定义自己边界的能力:OpenAI主动送5%股权,Anthropic被五角大楼逼拆护栏。看似截然不同的选择,底层逻辑一样:AI公司的独立性窗口正在关闭。互联网公司走了二十年的路,AI只用了四年。
  • AI的账单到了:花旗限制旗舰模型、扎克伯格承认Agent不如预期、谷歌用电量超新西兰——三条新闻串起同一个转折:从不计代价追求能力到在成本约束下找最优解。免费午餐阶段结束了。
  • 给 AI 注入品味:当编码工具性能趋同,审美成了新战场:Emil Kowalski把十年前端经验打包成Skill文件注入AI编码工具、Kimi K2.7成为GitHub Copilot首个开源权重模型、Senior SWE-Bench评估高级工程师任务——当性能不再是瓶颈的时候,品味就成了新的战场。
  • Agent 嵌入一切:从支付宝到群聊,AI 正在吞噬 App:支付宝阿宝开放公测、Skywork Tags让Agent加入工作群聊、千问Agent工程方法论——三件事串在一起看,2026下半年Agent的主旋律已经很清楚了:Agent的终局不是做一个新App,而是消失在你已有的工作流和生活流里。

评论区

欢迎留下你的看法,支持匿名评论。

你的评论会公开展示,建议填写便于交流的昵称,并尽量提供有信息量的反馈。