OpenClaw 101|05|Context
Context 是模型每一轮真正看到的东西:system prompt、history、tool schemas、workspace 注入、工具结果、summary 和召回材料。
OpenClaw 101 是一组面向 Agent Engineering 的系统拆解文章。它不把 OpenClaw 当成单一聊天产品,而是把它当作一个长期运行的 Personal Agent OS 来观察。
这一篇讲 Context。很多 Agent 问题看似是模型不聪明,实际是 context 不可见、不可预算、不可维护。OpenClaw 把 context 当成可检查的工程对象。

读完本文,你应该能回答
- 模型这一轮到底看到了什么?
- system prompt、history、tool schema、memory、workspace 注入分别承担什么角色?
- memory 为什么不等于 context?
- context 太大或太旧时应该怎么处理?
本篇在系列中的位置
模型输入篇,把“上下文”拆成可检查、可预算、可优化的工程对象。OpenClaw 101 的主线是:先看控制面,再看执行面和状态边界,再进入上下文、能力系统、长期记忆、自动化、真实设备、扩展和 QA。下一篇进入 Tools / Skills / Plugins,看 context 中暴露的能力如何变成真实行动。
贯穿案例
后文会反复使用同一个任务来落地抽象机制:用户在手机上对 OpenClaw 说:“帮我看一下这个 repo 的测试为什么失败;如果需要跑命令就先做,修好后在聊天里提醒我。”
在本篇中,重点观察这个任务在 Context 这一层会遇到的边界:谁接收它,谁拥有状态,谁能触发工具,谁记录结果,以及失败后从哪里恢复。
Context 构成表
| 环节 | 读者应该抓住的问题 |
|---|---|
| System prompt | 定义身份、策略和运行约束 |
| History | 提供本 session 的近期事实和对话连续性 |
| Tool schemas | 告诉模型这一轮可以做哪些动作 |
| Memory | 只注入当前任务需要的长期事实 |
| Workspace/context files | 给任务必要背景,但必须预算和裁剪 |
核心判断
Memory 是存储,context 是本轮输入。工具是能力,也是上下文成本。
如果只看表面,很多 Agent 框架都像是“模型 + 工具 + UI”。但真正决定系统稳定性的,是这些边界如何被拆开:谁拥有状态,谁能触发副作用,谁负责恢复,谁暴露观察面,谁承担长期维护成本。
在 OpenClaw 里,Context 不是一个孤立模块,而是 Gateway、Session、Context、Tools、Plugins、Memory 之间的连接点。理解这个连接点,比记住某个命令或配置项更重要。
运行路径
一条真实消息进入系统后,大致会经过这些步骤:
- 每一轮 run 重建 OpenClaw-owned system prompt。
- 注入 workspace bootstrap files,例如 AGENTS、SOUL、TOOLS、USER 等。
- 加入 skills list,但不默认展开全部 skill 内容。
- 根据 tool policy 暴露工具 schema。
- 读取 session history、recent messages、compaction summaries。
- 剥离或裁剪过大的工具 details,保留模型需要的 content。
- 在接近窗口上限时触发 compaction 或 pruning。
- 通过 /status、/context list、/context detail 观察上下文构成。
这些步骤看起来很多,但它们解决的是同一个问题:让 Agent 的行为从“模型临场发挥”变成“系统可控制、可观察、可恢复的运行过程”。
可迁移伪实现:Context
下面的伪代码是机制抽象,不对应 OpenClaw 的真实 API 或文件结构。
async function buildContext(session: Session) {
return {
system: await buildSystemPrompt({
tools: visibleToolSchemas(),
skills: skillCatalogSummary(),
workspace: injectedBootstrapFiles(),
}),
messages: [
...compactedSummaries(session),
...recentConversation(session),
...boundedToolResults(session),
],
}
}
这段伪代码的重点不是函数名,而是边界:输入先被标准化,状态通过明确的 store 或 lane 管理,副作用通过 runtime 或 policy 执行,结果再回到 transcript、event stream 或 delivery target。
设计取舍
- 更多工具意味着更强能力,也意味着更多 schema token 和选择噪声。
- 把所有记忆塞进 prompt 会让系统变慢、变贵、变不可控。
- 上下文报告不应泄露完整系统 prompt,但要能解释主要成本来源。
这些取舍解释了 OpenClaw 为什么不像一个最小 demo。最小 demo 追求路径短,长期系统追求边界清晰。路径短会让第一个 demo 很快跑起来;边界清晰才会让系统在多渠道、长会话、多人入口、插件扩展和自动化场景下不崩。
评估清单
评估任何 Agent 框架的 Context 设计,可以看这几个问题:
- 这个层级是否有明确 owner,还是散落在多个客户端或插件里?
- 它是否把状态、权限、运行时副作用和展示逻辑分开?
- 它是否能被观测、被调试、被回放?
- 它失败时是否有恢复路径,而不是只给用户一个模型错误?
- 它是否避免把 provider/channel/tool 的私有细节写死进 core?
如果这些问题没有答案,系统一旦从单用户 demo 走向真实使用,很快就会在上下文污染、重复副作用、权限失控、长任务丢失和调试困难中付出代价。
下一篇
下一篇继续拆 Tools Skills Plugins。OpenClaw 101 的主线会继续沿着 Personal Agent OS 的边界往下走:从运行时,到状态,到能力系统,再到安全、扩展和 QA。
References
- Context
- System prompt
- Compaction
- Session pruning
- Tools overview