首页 / 资讯中心 / 文章详情

OpenClaw 上下文(Context)完整指南:模型看到的窗口如何构建、如何排查与压缩

OpenClaw 上下文(Context)完整指南:模型看到的窗口如何构建、如何排查与压缩 ★ FEATURED ARTICLE
人工智能AI Agent即时通讯后端本地部署语音【免费下载链接】openclaw-cn中文社区版OpenClaw同原版保持定期更新已内置钉钉、企业微信、飞书、QQ、微信以及国内网络环境优化。你的专属个人AI助手。支持所有操作系统和平台。项目地址https://gitcode.com/gh_mirrors/op/openclaw-cn点击查看免费下载“Context上下文”指 OpenClaw 在**每一次运行run时发送给模型的所有内容其总量受模型上下文窗口context windowtoken 上限**约束。理解它是排查“模型为什么知道/为什么忘了”、控制 token 开销、优化会话体验的基础。读完本文你将掌握上下文由哪些部分组成、/context、/status、/usage tokens、/compact等内置命令如何帮你检查与释放窗口空间、系统提示词system prompt与注入工作区文件Project Context的构建机制、Skill 与工具的隐藏开销以及会话压缩compaction与修剪pruning对持久化内容的影响。全文结合本仓库源码给出可验证的实现级解释。一、什么是 Context与 Memory 的关键区别Context iseverything Clawdbot sends to the model for a run. It is bounded by the model’scontext window(token limit).对初学者最直观的心智模型mental model是三层System prompt系统提示词由 OpenClaw 构建规则、工具列表、技能skills列表、时间/运行时信息以及注入的工作区文件workspace files。Conversation history对话历史当前会话中你的消息和助手的回复。Tool calls/results attachments工具调用/结果与附件命令输出、文件读取、图片/音频等。Context 不等于 Memorymemory 可以存储在磁盘上并在之后重新加载而 context 是模型当前窗口内的内容。窗口一旦超限旧内容就会被压缩、修剪或丢弃——这正是/compact、会话修剪等机制存在的原因。二、快速上手用内置命令检查上下文OpenClaw 提供一组会话内命令Slash commands由 Gateway 处理用于检查窗口占用情况命令作用/status快速查看“我的窗口还有多少空间”以及会话设置/context list查看注入了什么内容 粗略大小按文件与总计/context detail更细的拆分按文件、按工具 schema 大小、按技能条目大小、系统提示词大小/usage tokens在普通回复末尾追加每次回复的 token 用量页脚/compact把较早的历史总结为一条紧凑条目释放窗口空间其中/context还支持机器可读的子命令/context json输出与/context list等价的报告与会话 token 数据结构化 JSON便于脚本与外部工具消费。相关实现见 src/auto-reply/reply/commands-context-report.ts。示例输出/context list实际数值因模型、提供商、工具策略tool policy与工作区内容而异。文档给出的典型输出如下 Context breakdown Workspace: workspaceDir Bootstrap max/file: 20,000 chars Sandbox: modenon-main sandboxedfalse System prompt (run): 38,412 chars (~9,603 tok) (Project Context 23,901 chars (~5,976 tok)) Injected workspace files: - AGENTS.md: OK | raw 1,742 chars (~436 tok) | injected 1,742 chars (~436 tok) - SOUL.md: OK | raw 912 chars (~228 tok) | injected 912 chars (~228 tok) - TOOLS.md: TRUNCATED | raw 54,210 chars (~13,553 tok) | injected 20,962 chars (~5,241 tok) - IDENTITY.md: OK | raw 211 chars (~53 tok) | injected 211 chars (~53 tok) - USER.md: OK | raw 388 chars (~97 tok) | injected 388 chars (~97 tok) - HEARTBEAT.md: MISSING | raw 0 | injected 0 - BOOTSTRAP.md: OK | raw 0 chars (~0 tok) | injected 0 chars (~0 tok) Skills list (system prompt text): 2,184 chars (~546 tok) (12 skills) Tools: read, edit, write, exec, process, browser, message, sessions_send, … Tool list (system prompt text): 1,032 chars (~258 tok) Tool schemas (JSON): 31,988 chars (~7,997 tok) (counts toward context; not shown as text) Tools: (same as above) Session tokens (cached): 14,250 total / ctx32,000输出里几个关键字段的语义与 src/agents/system-prompt-report.ts 的报告构建逻辑一一对应Bootstrap max/file单文件注入上限默认 20,000 字符agents.defaults.bootstrapMaxChars由 src/agents/pi-embedded-helpers/bootstrap.ts 的resolveBootstrapMaxChars解析。System prompt (run)/(estimate)run表示取自最近一次嵌入式tool-capable运行并持久化在会话存储中的报告estimate表示没有运行报告或经由不生成报告的 CLI 后端时即时估算的结果。Injected workspace files每个文件的OK / TRUNCATED / MISSING状态以及raw磁盘原始大小与injected实际注入大小。Tool schemas (JSON)工具 JSON schema 会发送给模型以便其调用工具虽不以纯文本形式展示但计入上下文。示例输出/context detail Context breakdown (detailed) … Top skills (prompt entry size): - frontend-design: 412 chars (~103 tok) - oracle: 401 chars (~101 tok) … (10 more skills) Top tools (schema size): - browser: 9,812 chars (~2,453 tok) - exec: 6,240 chars (~1,560 tok) … (N more tools)detail 模式还会额外给出Top tools (summary text size)与Tools (param count)两段见 commands-context-report.ts帮助你定位是哪个工具的 schema 或描述文本占用最大。文档展示的browser工具 schema 高达 9,812 字符约 2,453 tok足以说明“工具 schema 是上下文大头”并非夸张。三、哪些内容计入上下文窗口以下一切模型实际收到的内容都计入窗口System prompt所有小节。Conversation history对话历史。Tool calls tool results工具调用与结果。Attachments/transcripts图片/音频/文件附件与转录。Compaction summaries and pruning artifacts压缩摘要与修剪产物。Provider “wrappers” 或隐藏的 header不可见但仍计数。换句话说“你看不到”不等于“不占空间”——工具 schema、provider 包装层都是隐形开销排查窗口溢出时必须把它们算进去。四、OpenClaw 如何构建 System Prompt系统提示词由 OpenClaw独占Clawdbot-owned并在每次运行重新构建内容包括工具列表 简短描述Tool list text。技能列表仅元数据见下节。工作区位置Workspace。时间UTC以及配置了用户时区时转换后的用户时间。实现位于 src/agents/system-prompt.ts 的buildTimeSection只有配置了userTimezone才输出## Current Date Time小节。运行时元数据host/OS/model/thinking。注入的工作区引导文件归入Project Context小节src/agents/system-prompt.ts 处的# Project Context标题及后续注入内容。完整的系统提示词结构说明见 系统提示词指南。报告是如何“拆”出这些数据的/context之所以能报出“Project Context 占了多少字符”是因为报告构建器从完整 system prompt 文本中做标记提取Project Context 大小提取# Project Context到## Silent Replies之间的文本长度src/agents/system-prompt-report.ts。Tool list 文本大小提取“Tool names are case-sensitive…”与 TOOLS.md 说明之间的文本src/agents/system-prompt-report.ts。技能条目大小通过解析skill.../skill与name.../name标记逐一统计src/agents/system-prompt-report.ts。工具 schema 大小对tool.parameters执行JSON.stringify后取长度并统计properties数量src/agents/system-prompt-report.ts。因此/context detail中每个数字都能回溯到源码中的具体计算路径方便开发者核验与二次开发。五、注入的工作区文件Project Context默认情况下OpenClaw 会注入一组固定的工作区文件若存在AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md仅首次运行时这些文件名在 src/agents/workspace.ts 中统一定义并在 src/agents/workspace.ts 的VALID_BOOTSTRAP_NAMES集合里做运行时校验。大文件截断每个文件按agents.defaults.bootstrapMaxChars截断默认 20,000 字符。/context会显示raw vs injected的大小并标记是否发生截断TRUNCATED。真正的截断算法在 src/agents/pi-embedded-helpers/bootstrap.ts内容超过上限时保留70% 头部BOOTSTRAP_HEAD_RATIO 0.720% 尾部BOOTSTRAP_TAIL_RATIO 0.2中间用[...truncated, read fileName for full content...]标记占位——这保证注入文本既有“开头规则”又有“结尾关键信息”模型需要完整内容时可主动read该文件。resolveBootstrapMaxCharsbootstrap.ts只在配置为正数有限值时采用自定义上限否则回落到 20,000 默认值若传入-1等非法值同样回落默认。文件缺失时注入占位文本[MISSING] Expected at: pathbootstrap.ts报告中的raw 0 | injected 0即对应此类状态。六、Skills注入列表 vs 按需加载系统提示词中包含一份紧凑的技能列表name description location这份列表有真实的上下文开销示例中 12 个技能约占 2,184 字符 / 546 tok。关键设计是技能指令默认不被注入。模型被期望仅在需要时通过read工具读取该技能的SKILL.md。这样几十上百个技能也不会撑爆窗口——只有真正被调用的技能才产生完整指令开销。/context detail会按 prompt entry size 列出占用最大的技能条目帮你识别需要精简描述description的技能。七、Tools两种不同的开销工具以两种方式影响上下文Tool list text工具列表文本系统提示词中的 “Tooling” 部分即工具名 简短描述以纯文本形式可见。Tool schemasJSON发送给模型以便其调用工具的参数 schema计入上下文但不会以纯文本形式展示。文档示例中工具列表文本仅 1,032 字符约 258 tok而全部工具 schema 高达 31,988 字符约 7,997 tok——schema 通常是工具开销的绝对主力。/context detail专门列出最大的工具 schema如browser、exec用于定位“哪个工具最占地方”。这对调试很有价值如果某个工具的 schema 远超其实际使用频率可考虑裁剪其参数定义。八、命令、指令与“行内快捷方式”inline shortcuts斜杠命令由 Gateway 处理行为分三类独立命令Standalone commands整条消息只有/...时按命令执行如/context list、/status。指令Directives/think、/verbose、/reasoning、/elevated、/model、/queue在模型看到消息之前被剥离。仅含指令的消息会持久化会话设置普通消息中的行内指令则作为单条消息级提示per-message hints不改变会话持久设置。行内快捷方式Inline shortcuts仅白名单发送者普通消息中的某些/...token 会立即执行例如 “hey /status”并在模型看到剩余文本之前被剥离。/context帮助文本中也明确说明了 inline shortcut 语义commands-context-report.ts。命令的授权检查在 src/auto-reply/reply/commands-info.ts/context仅对isAuthorizedSender授权发送者响应未授权时记录日志并跳过。完整命令说明见 Slash 命令指南。九、会话、压缩与修剪什么会被持久化跨消息的持久化取决于机制正常历史Normal history持久保存在会话转录session transcript中直到被策略压缩/修剪。压缩Compaction把摘要写入转录并保留最近消息原样。修剪Pruning从内存中的 prompt某次运行移除旧的工具结果但不重写转录——即下次运行若历史仍在窗口内旧工具结果可能再次出现。三者的差别可用一句话概括compaction 改变转录内容并释放窗口pruning 只影响当次运行的可见性而不改转录。深入阅读 会话指南、压缩指南 与 会话修剪指南。心跳heartbeat相关的HEARTBEAT.md语义可参考 src/auto-reply/heartbeat.ts模型被指示“读取 HEARTBEAT.md若存在严格遵循不推断或重复旧任务”。十、/context到底报告什么/context报告优先使用最近一次运行构建的报告只要可用System prompt (run)从最近一次嵌入tool-capable运行捕获并持久化在会话存储session store中。resolveContextReport会先检查sessionEntry?.systemPromptReport若存在且source run则直接复用避免重复构建commands-context-report.ts。System prompt (estimate)当不存在运行报告时或经由不生成报告的 CLI 后端运行即时计算——resolveContextReport会现场重新解析工作区引导文件、技能快照、工具列表并调用buildAgentSystemPrompt与buildSystemPromptReport生成估算报告commands-context-report.ts。无论哪种来源报告都只输出大小与主要贡献者不会转储完整 system prompt 或工具 schema——既保护了窗口空间也避免把成千上万字符刷屏到会话里。token 估算采用chars / 4的近似值estimateTokensFromCharscommands-context-report.ts实际 token 数以模型/provider 的计数为准。十一、实战排查清单结合以上机制给出排障与优化路径窗口是否快满先/status看窗口占用再/context list看总览。谁占最大/context detail定位 Top 文件、Top 技能、Top 工具 schema工具 schema 与技能描述description往往是可优化项。文件被截断了没有看 injected workspace files 行的TRUNCATED标记与raw vs injected差值大文件可考虑精简或调大agents.defaults.bootstrapMaxChars默认 20,000见 配置参考。释放窗口/compact把旧历史压成摘要必要时按策略修剪旧工具结果。追踪用量开启/usage tokens在回复尾部附加 token 页脚结合 Token 用量与成本 理解费用来源。延伸阅读系统提示词构建详解Slash 命令全览Token 用量与成本压缩Compaction机制会话Session机制会话修剪Session pruning赞分享人工智能AI Agent即时通讯后端本地部署语音【免费下载链接】openclaw-cn中文社区版OpenClaw同原版保持定期更新已内置钉钉、企业微信、飞书、QQ、微信以及国内网络环境优化。你的专属个人AI助手。支持所有操作系统和平台。项目地址https://gitcode.com/gh_mirrors/op/openclaw-cn点击查看免费下载相关推荐3小时定制一只属于自己的虚拟桌宠VPet零基础完整教程3小时定制一只属于自己的虚拟桌宠VPet零基础完整教程 VPet 是一款基于 WPF 的开源虚拟桌宠模拟器。你不用写一行代码只要会换图片、改几行配置文件大桌面应用游戏开发深度剖析基于增强传播与对齐的视频超分辨率技术深度剖析基于增强传播与对齐的视频超分辨率技术 在当今数字媒体爆炸式增长的时代视频内容已成为信息传递的主流形式。然而受限于存储成本和传输带宽大量视频仍然以人工智能计算机视觉深度学习视频处理如何使用 TensorFlow Compression 构建高效数据压缩模型完整指南如何使用 TensorFlow Compression 构建高效数据压缩模型完整指南 TensorFlow CompressionTFC是一个强大的开源工上一篇从零到一CJQT框架QGui模块深度解析与实战指南下一篇HuLaSpark/HuLa的系统功能与扩展创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站