锦书在线
80.52M · 2026-03-21
在复杂的生产任务中,对话上下文的处理是决定 Agent 成败的关键。Token 窗口是有限的,但业务逻辑往往是跨越数天、甚至数百轮对话的长程任务。OpenClaw 通过多层次的“思维器官”设计,让 Agent 拥有了既能快速响应当前细节、又能回忆起核心业务背景的能力。
OpenClaw 的上下文处理并非简单的字符串拼接,而是经过 ContextEngine 协议高度抽象的内存管理。
在大脑的核心层,ContextEngine(src/context-engine/types.ts)定义了标准的处理流水线:
maxHistoryTurns 配置丢弃过早的消息。当会话长度达到阈值时,OpenClaw 通过 src/agents/pi-embedded-runner/compact.ts 触发“压实”。这是一个“语义提炼”过程:系统调用模型对老对话进行总结,生成一个摘要基线并回填到 System Prompt 中,从而在节省 Token 的同时保留“长程记忆”。
对于一个成熟的数字员工,其 System Prompt(包含大量的工具定义)通常占用了 70% 以上的上下文。
OpenClaw 深度利用了现代模型商(如 Anthropic)的 Prompt Caching。在 proxy-stream-wrappers.ts 中,系统会自动为静态头部打上标记:
// 注入 cache_control,确保首字响应时间 (TTFT) 缩短至毫秒级
if (payload.stream && model.id.startsWith('claude-3-5')) {
content.cache_control = { type: "ephemeral" };
}
在 OpenClaw 的大规模落地实践中,Prompt Caching 带来了量级的变化:
数字员工的“大脑”不仅要有深度,还要有跨度。OpenClaw 通过内存分层架构,实现了从单轮对话到跨月知识的无缝衔接。
短期记忆存储在 AgentSession 的活跃转录(Transcript)中。
ContextEngine 进行实时的 Sanitize 和 Truncate。对于跨越数周或多个项目的知识,OpenClaw 引入了基于 QMD(src/memory/qmd-manager.ts)的长期记忆引擎。
MEMORY.md、memory/*.md 文件,以及经过脱敏后自动导出的历史会话片段。一个成熟的架构师不仅看文档,更看代码和元数据。OpenClaw 在处理内存内容时,具备深度的“内容识别”能力。
对于自然的对话、文档描述或日志,OpenClaw 通过 pi-embedded-block-chunker.ts 将其拆分为具有语义完整性的 Chunks(切片)。
对于具有强逻辑的关系,OpenClaw 鼓励并识别 Markdown Frontmatter。
skills 或 memory 文件中,通过 YAML 头部定义 name, requires, version 等属性。resolveSkillInvocationPolicy 直接读取这些结构化字段,实现比模糊语义搜索更可靠的逻辑判断。通过这种“结构化控节奏,非结构化补语义”的配合,OpenClaw 的记忆系统既具备了人类般的联想力,又拥有了数据库级的严谨性。
通过 Context Engine 的精细调度和 Prompt Caching 的极致省钱,OpenClaw 让 Agent 的“大脑”既能承载海量信息,又不失灵活性。
在下一篇文章中,我们将讨论 Agent 的“双手”——它是如何通过 MCP 协议与现实世界进行交互的。
本文为 OpenClaw 技术系列文章第二篇。