深度解析三大 Agent 上下文工程:Claude Code、OpenClaw、Hermes 的设计哲学

0 阅读10分钟

Hermes 最近成为了新的热点,除了自我进化机制,更值得注意的是它在上下文管理上做了不少激进设计,比如更早触发压缩、把摘要做成交接文档。

上周写了一篇文章为什么你的 Openclaw 龙虾总是智障,ClaudeCode 源码泄露揭露:Agent 的差距不在模型,在 Harness Engineering 阐述了 Claude Code 和 Openclaw 的 Harness 机制,能够让 AI 运行得更加稳定、完善。

在 Harness 之前,更底层的则是上下文工程,很多时候,模型的幻觉、失忆是因为上下文窗口乱了,如果我们把所有的事情“平权”的放在上下文里,就像大海捞针,模型会很难找到自己想要的东西。

那我们要怎么设计 AI 产品的上下文呢?Claude Code 把上下文做成了渐进式调度,OpenClaw 则做成了开放性的生态,而 Hermes 则更强调带交接语义的上下文压缩与回忆。

通过理解这三个 Agent 的上下文机制,能够给予我们 Agent 设计的启发。

上下文工程是什么?

提示词工程决定了 AI 怎么运行,而上下文工程决定模型每一轮对话中能看见的内容,它能够帮助我们提升 AI 对任务的理解、指令的遵循程度、任务的执行表现。

而提示词工程其实是上下文的一部分,模型在真正运作的时候会看见:

持久的记忆:Openclew的Soul,
模型的记忆Memory
全局的规则:CLAUDE.md、AGENTS.md
系统提示词System Prompt:AI的工作说明
用户提示词User Prompt:用户的输入,以及我们帮助用户注入的变量。
MCP、Function等工具的描述信息
工具调用返回的结果
近x轮的对话历史
压缩后的摘要……

所有这些东西,每一轮模型推理时怎么组合、怎么裁剪、什么时候出现、什么时候消失,其实都在上下文工程的范畴。

Context refers to the set of tokens included when sampling from a large-language model (LLM). The engineering problem at hand is optimizing the utility of those tokens against the inherent constraints of LLMs in order to consistently achieve a desired outcome. Effectively wrangling LLMs often requires thinking in context — in other words: considering the holistic state available to the LLM at any given time and what potential behaviors that state might yield.Effective context engineering for AI agents

Anthropic 的官方博客给上下文的定义是:通过持续优化上下文,来保障大模型在固有约束下,持续地实现预期效果。我们需要在不断演变的信息中筛选出有价值的信息将其放入有限的上下文窗口。

而 LangChain 也提供了一个四维框架

  • Write,把信息分门别类记录,例如记忆、状态写到窗口外面
  • Select,按需选择信息,包括工具、记忆、知识库
  • Compress,总结、裁剪上下文,保留高价值的信息
  • Isolate,隔离上下文,不同 agent 使用不同的内容

那上下文到底在解决什么问题呢?


  • 模型的窗口有上限

文件读取、工具输出、推理过程、输出结果会迅速累积,不仅很快会触发上限,也会因为大量的噪音影响到模型的推理。

  • 随着上下文变长会变笨

随着上下文变长,模型的表现会变差,内容越多注意力就会变差,就像我们也很难从 800 字里迅速的找到某句话。

  • 上下文越长会越贵、速度越慢

过多默认注入的内容不仅会抬高 token 成本,也会让模型响应更慢,而且重复发送大段上下文本身就是一笔持续成本。

  • 新会话信息丢失

在不同的窗口,其实模型是不会主动记住上次发生了什么除非是我们要求它记住。

  • 工具噪音

日志、文件内容、搜索结果会吞掉真正重要的推理空间。

如果说我们的 AI 容易失忆、跑偏、又或者一本正经的胡说八道,背后往往是上下文工程做得不好。

Claude Code:渐进式上下文压缩

第一个部分是不怎么变化的内容:系统提示词、CLAUDE.md 以及自动记忆。

系统提示词约束了 Claude Agent 的表现,它不会出现在我们的对话框里。而 CLAUDE.md 是指令、规则,它会在启动时自动加载,它为 Agent 提供了长期的行为约束和项目知识。

官方的 Explore the context window 可以看到整个过程,在你输入任何事情之前,会开始阅读环境数据、可以用的工具、Skills,项目级的 CLAUDE.md,这些其实已经提前占用了你的上下文窗口。

如果发现刚开始说几句话就上下文窗口超了,有可能是你的 MCP、Skill 装太多了。

另一个部分是输入后的内容:

在我们输入指令后,Claude 会进行一系列复杂的过程:阅读你的项目文件、思考怎么解决这个问题、开始执行修改代码....直到最后才给我们一个总结。但这些所有的过程都会占据我们的上下文窗口。

那官方是怎么解决这个问题的呢?

从第三方对泄露代码的逆向分析来看,Claude Code 采用了一套可被概括为 5 层的压缩思路。Claude Code 不是一上来就总结全部历史,而是先处理高噪音的工具结果,再做历史裁剪,以及带缓存感知的轻量压缩。

再往后,才会进入更重的上下文折叠或自动压缩。前者更像把全文换成摘要继续工作,后者则意味着对旧上下文做更激进的取舍。

最重要的是,Claude Code 在压缩后自动恢复:最近 5 个读取的文件,激活的 skills,它避免了重新读取刚刚编辑得到文件,不用重新激活 skills。

这也是 Claude Code 没有那么容易失忆、动作不容易变形的原因。

OpenClaw:极度开放的上下文框架

OpenClaw 和 Claude Code 的初始区别是上下文占用的文件列表相较于 Claude Code 更多,会包括 Soul、Identity、User 等等,而这些可能在 Claude Code 里只是系统提示词、CLAUDE.md 还有记忆。

而随着龙虾对我们的理解变深,这些内容也会变长和变多,这也是为什么我们经常性的超限了。。。

而在裁剪、压缩机制上面是相似的,它也会丢弃旧的工具输出结果。

但 Openclaw 的会话重置没有像 Claude Code 那样更强调工作集恢复。

而比较有意思的是 Openclaw 的 context-engine 插件。它是 OpenClaw 里的一个可替换组件,负责决定:每次调用模型时,把哪些历史消息塞进上下文窗口,以及窗口满了怎么压缩。

默认用的是内置的 legacy 引擎,但你可以写一个插件替换它,实现自己的上下文管理策略。

你可以自己选择什么信息要存储、什么时候压缩,以及上下文要按照什么结构梳理,还可以调整需要构建的上下文。

再配合内置的 /context list、/context detail 和 usage 视图,我们就能看到到底注入了什么、每一项大概占了多少成本。果说 Claude Code 像一套调优精细的内建策略,

OpenClaw 更像一个把上下文生命周期开放出来的平台。但框架的开放性、扩展性不等于开箱即用的可靠性,每个人的风格不同,如果我们没有主动配置和调优上下文策略,Agent 的表现可能不如预期。

Hermes:把交接当成常态

和 OpenClaw、Claude Code 不太一样的是,Hermes 明确采用了双层压缩。Gateway 层设了 85% 的高阈值,更像是一个兜底机制,在上下文瞬间膨胀过大时介入处理。

而 Agent 层则是 50% 的阈值,只要超过 50% 就主动压缩,尽早处理上下文,换取后续步骤的稳定性。

但最重要的地方在于它会生成结构化的摘要,它把压缩的摘要当成了交接文件。

每一次压缩都明确说明了,目标是什么,完成进度怎么样,核心的决策是什么,阅读、修改创建的相关文件,下一步又要做什么

这是 Hermes 设计品味最集中的表现,它不是宽泛的"总结一下之前做了什么",下一个窗口 AI 可以基于交接文档快速的接收工作。

它还支持增量更新:多次压缩后不会从零重新总结,而是在上一次的摘要上追加更新。信息在多次压缩中是递进保持的,而不是每压缩一次丢掉一些信息。

给我们做 Agent 的 5 条设计启发

  1. 上下文分层,区分短期会话和长期记忆

不要把上下分当垃圾桶,什么都往里塞的结果是既记不住重要的事,又被大量无关信息拖慢。至少应该拆成 4 层:

1)长时记忆(跨会话保持的东西)

2)稳定不变的规则,包括系统提示词、CLAUDE.md

3)当前使用的技能、工具、文件

4)当前的任务进展****

2。 能删就删,不要做没必要的压缩

例如无意义的你好、再见,例如不需要关心过程的工具输出结果,不需要花成本让模型去总结。

3. 缓存的稳定性是一等公民

system prompt、记忆快照、工具描述不要频繁变更,稳定才能省钱、才能高效,才能保护稳定性。

这一点,可能是我最近意识到我以前的误区,我原本以为当我们拥有了无数优化算力调度的机制,Token 会更便宜,但无论国内外大厂都在涨价,产品同学可能要更早的具备成本意识。

4. 压缩结果写成交接文档,不是总结

Hermes 的结构化交接模板告诉我们:压缩不是泛泛而谈,而是给下一轮模型准备一份可继续执行的交接清单。

5. 压缩后要记得恢复

至少要补充回当前工作集,比如关键文件、已激活的技能和当前任务状态;否则 Agent 压缩完,很容易重新读一遍刚刚做过的事。

注:部分图片由 AI 生成


模型的编程能力溢出,于是我们有了 Cursor。而 Openclaw+微信或者飞书又进一步把使用门槛拉低,Hermes 把上下文从压缩变成交接,也更早的压缩避免模型不稳定,再叠加上自我进化的机制。

于是 Hermes 的 Star 又迅速的提升,大量 Openclaw 的用户切换到了 Hermes。但 Hermes 的交接机制其实类似 HANDOFF,而自我进化的 skill 在 Openclaw 之前就已经出现过。

AI 时代,可能不仅止于技术创新,还在于把技术上的创新点以一个用户可感知的方式展示了出来。

原文:mp.weixin.qq.com/s/s0uEzsaMi…

觉得不错的话,可以关注下歪斯噢~

参考资料
1Anthropic Engineering - Effective context engineering for AI agents
https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents

2、LangChain Blog - Context Engineering(Write / Select / Compress / Isolate 四维框架)
https://blog.langchain.com/context-engineering-for-agents/

3Claude Cookbook - Context engineering: memory, compaction, and tool clearing

https://platform.claude.com/cookbook/tool-use-context-engineering-context-engineering-tools

4、Claude Code Docs - How Claude remembers your project

https://code.claude.com/docs/en/memory

5Anthropic Blog - Using Claude Code: session management and 1M context
https://claude.com/blog/using-claude-code-session-management-and-1m-context

6、HarrisonSec - Claude Code Deep Dive Part 3: The 5-Level Compression Pipeline Behind 1M Tokens

https://harrisonsec.com/blog/claude-code-context-engineering-compression-pipeline/

7Thoughtworks / Martin Fowler - Context Engineering for Coding Agents
https://martinfowler.com/articles/exploring-gen-ai/context-engineering-coding-agents.html

8OpenClaw Docs - Context
https://docs.openclaw.ai/concepts/context

9、OpenClaw Docs - Compaction
https://docs.openclaw.ai/concepts/compaction

10、OpenClaw Docs - Memory Overview
https://docs.openclaw.ai/concepts/memory

11、OpenClaw Docs - Context Engine
https://docs.openclaw.ai/concepts/context-engine

12、OpenClaw Docs - Prompt Caching
https://docs.openclaw.ai/reference/prompt-caching

13、Hermes Agent Docs - Persistent Memory
https://hermes-agent.nousresearch.com/docs/user-guide/features/memory

14、Hermes Agent Docs - Context Files
https://hermes-agent.nousresearch.com/docs/user-guide/features/context-files

15、Hermes Agent Docs - Architecture
https://hermes-agent.nousresearch.com/docs/developer-guide/architecture

16Hermes Agent Docs - Context Compression and Caching
https://hermes-agent.nousresearch.com/docs/developer-guide/context-compression-and-caching/

17Hermes Agent Docs - Prompt Assembly
https://hermes-agent.nousresearch.com/docs/developer-guide/prompt-assembly