上下文
"上下文"是OpenClaw 发送给模型的所有内容。它受模型的上下文窗口(令牌限制)约束。
初学者心理模型:
- 系统提示(OpenClaw 构建):规则、工具、技能列表、时间/运行时和注入的工作区文件。
- 对话历史:你的消息 + 该会话中助手的消息。
- 工具调用/结果 + 附件:命令输出、文件读取、图像/音频等。
上下文与"记忆"不相同:记忆可以存储在磁盘上并稍后重新加载;上下文是模型当前窗口内的内容。
快速开始(检查上下文)
/status→ 快速"我的窗口有多满?"视图 + 会话设置。/context list→ 注入了什么 + 粗略大小(每个文件 + 总计)。/context detail→ 更深入的分解:每个文件、每个工具模式大小、每个技能条目大小和系统提示大小。/usage tokens→ 将每回复使用页脚附加到正常回复。/compact→ 将较旧的历史总结为紧凑条目以释放窗口空间。
示例输出
值因模型、提供商、工具策略和工作区中的内容而异。
/context list
🧠 上下文分解
工作区:<workspaceDir>
引导最大/文件:20,000 字符
沙箱:mode=non-main sandboxed=false
系统提示(运行):38,412 字符(~9,603 token)(项目上下文 23,901 字符(~5,976 token))
注入的工作区文件:
- AGENTS.md: OK | 原始 1,742 字符(~436 token)| 注入 1,742 字符(~436 token)
- SOUL.md: OK | 原始 912 字符(~228 token)| 注入 912 字符(~228 token)
- TOOLS.md: 已截断 | 原始 54,210 字符(~13,553 token)| 注入 20,962 字符(~5,241 token)
- IDENTITY.md: OK | 原始 211 字符(~53 token)| 注入 211 字符(~53 token)
- USER.md: OK | 原始 388 字符(~97 token)| 注入 388 字符(~97 token)
- HEARTBEAT.md: 缺失 | 原始 0 | 注入 0
- BOOTSTRAP.md: OK | 原始 0 字符(~0 token)| 注入 0 字符(~0 token)
技能列表(系统提示文本):2,184 字符(~546 token)(12 个技能)
工具:read、edit、write、exec、process、browser、message、sessions_send、…
工具列表(系统提示文本):1,032 字符(~258 token)
工具模式(JSON):31,988 字符(~7,997 token)(计入上下文;不显示为文本)
工具:(同上)
会话令牌(缓存):14,250 总计 / ctx=32,000/context detail
🧠 上下文分解(详细)
…
顶部技能(提示条目大小):
- frontend-design: 412 字符(~103 token)
- oracle: 401 字符(~101 token)
…(+10 更多技能)
顶部工具(模式大小):
- browser: 9,812 字符(~2,453 token)
- exec: 6,240 字符(~1,560 token)
…(+N 更多工具)什么计入上下文窗口
模型接收的所有内容都计入,包括:
- 系统提示(所有部分)。
- 对话历史。
- 工具调用 + 工具结果。
- 附件/记录(图像/音频/文件)。
- 压缩摘要和修剪产物。
- 提供商"包装器"或隐藏头(不可见,仍计入)。
OpenClaw 如何构建系统提示
系统提示由 OpenClaw 拥有并在每次运行中重建。它包括:
- 工具列表 + 简短描述。
- 技能列表(仅元数据;见下文)。
- 工作区位置。
- 时间(UTC + 转换后的用户时间,如果配置)。
- 运行时元数据(主机/操作系统/模型/思考)。
- 在项目上下文下注入的工作区引导文件。
完整分解:系统提示。
注入的工作区文件(项目上下文)
默认情况下,OpenClaw 注入一组固定的工作区文件(如果存在):
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(仅首次运行)
大文件按文件使用 agents.defaults.bootstrapMaxChars(默认 20000 字符)截断。/context 显示原始 vs 注入大小以及是否发生了截断。
技能:注入什么 vs 按需加载
系统提示包括紧凑的技能列表(名称 + 描述 + 位置)。这个列表有真实开销。
技能说明默认不包含。模型被期望仅在需要时 read 技能的 SKILL.md。
工具:有两种成本
工具以两种方式影响上下文:
- 系统提示中的工具列表文本(你看到的"工具")。
- 工具模式(JSON)。这些被发送给模型以便它可以调用工具。它们计入上下文,即使你看不到它们作为纯文本。
/context detail 分解最大的工具模式,以便你可以看到什么占主导。
命令、指令和"内联快捷方式"
斜杠命令由网关处理。有几种不同行为:
- 独立命令:仅是
/...的消息作为命令运行。 - 指令:
/think、/verbose、/reasoning、/elevated、/model、/queue在模型看到消息之前被剥离。- 仅指令消息持久化会话设置。
- 正常消息中的内联指令作为每消息提示。
- 内联快捷方式(仅限允许的发送者):某些
/...标记在正常消息中可以立即运行(例如,"hey /status"),并在模型看到剩余文本之前被剥离。
详情:斜杠命令。
会话、压缩和修剪(什么持久化)
什么跨消息持久化取决于机制:
- 正常历史在会话记录中持久化,直到被策略压缩/修剪。
- 压缩将摘要持久化到记录中并保持最近的消息完整。
- 修剪从内存提示中移除旧工具结果,但不重写记录。
/context 实际报告什么
/context 更喜欢最新的运行构建系统提示报告(当可用时):
System prompt (run)= 从最后嵌入(支持工具)运行捕获并持久化在会话存储中。System prompt (estimate)= 在没有运行报告时(或通过不生成报告的 CLI 后端运行时)即时计算。
无论如何,它报告大小和主要贡献者;它不转储完整系统提示或工具模式。