“近期将连续发布《从OpenClaw源码分析小龙虾是如何工作的?》,本系列一共十篇文章。 主题为:概览与调试环境搭建->Gateway中央控制器->Session管理分析->提示词上下文分析->ReAct原理与源码分析->定时任务与心跳机制->记忆系统分析->Skill 体系分析->Channel 系统分析->自我进化机制。
第4篇:提示词上下文分析
一、提示词上下文
提示词上下文以下简称为Context。Context = 发送给模型的所有内容,受限于模型的上下文窗口(Token 上限)
主要包含三个核心部分。

系统提示词:OpenClaw核心提示词,包括各类说明:工具、Skills、运行时、注入的工作区文件等等。 历史对话:当前会话包含的所有消息,包括AI助手的回复。 工具执行结果及附件:智能体执行的工具及其输出,还有文件、图片/音频等。
二、Context ≠ Memory
在深入分析提示词之前,我们首先要区分两个核心概念:
| Context | ||
| Memory |
Memory = 存储在磁盘上的文件(MEMORY.md、memory/*.md),模型不直接看到 Context = 当前模型窗口内的所有内容,包括 system prompt + history + tool results Agent通过 memory_search / memory_get 工具按需检索 Memory 文件
核心关系:模型通过 memory_search / memory_get 工具按需检索 Memory 文件,将检索结果注入到 Context 中。
三、系统提示词的结构
核心代码:src/agents/system-prompt.ts中的buildSystemPromptParams() 函数。
这个函数是整个提示词的构建函数,负责将各种组件(工具列表、安全规则、Skills、记忆、工作空间等)组装成最终发送给 LLM 的系统提示词。
系统提示词的内容很多,长度很长,包括如下的核心模块。


四、三种提示词模式
OpenClaw 支持三种提示词模式,根据使用场景灵活切换:
exporttype PromptMode = "full" | "minimal" | "none"4.1 full 模式(完整模式)
适用场景:普通用户对话
包含内容:
所有章节(Tooling, Safety, Skills, Memory, Workspace 等) 完整的工具描述和功能说明 支持心跳机制和静默回复 完整的项目上下文(AGENTS.md, SOUL.md 等)
4.2 minimal 模式(精简模式)
适用场景:子 Agent 会话
包含内容:
精简章节:Tooling, Workspace, Runtime 不包含:Skills, Memory, Safety 用于子 Agent 会话,避免信息冗余
4.3 none 模式(无提示词模式)
适用场景:极简场景或特殊用途
包含内容:
仅返回: "You are a personal assistant running inside OpenClaw."

五、系统提示词各模块详解
5.1 工具列表
系统提示词会动态注入当前可用的工具列表:

5.2 工具调用风格

5.3 安全规则

5.4 CLI 快速参考

5.5 Skills 注入(重要!)

Skills 注入格式(只有元数据):
<available_skills><skill><name>github</name><description>GitHub 操作,如 PR、Issue 管理</description><location>/home/user/.openclaw/skills/github/SKILL.md</location></skill><skill><name>peekaboo</name><description>UI 自动化测试工具</description><location>/home/user/.openclaw/skills/peekaboo/SKILL.md</location></skill></available_skills>关键特性:
name + description + location 完整指令不注入 — 模型通过 read 工具按需加载 保持 base prompt 小,按需读取不浪费 context
5.6 记忆召回

5.7 自更新机制

5.8 工作空间及文档

5.9 沙箱环境说明

5.10 用户、时间、工作空间文件

5.11 回复标签

5.12 消息路由及工具

5.13 项目上下文(核心配置文件注入)
# Project ContextThe following project context files have been loaded:If SOUL.md is present, embody its persona and tone. Avoid stiff, generic replies; follow its guidance unless higher-priority instructions override it.## AGENTS.md[文件内容]## SOUL.md[文件内容]## TOOLS.md[文件内容]## IDENTITY.md[文件内容]## USER.md[文件内容]## HEARTBEAT.md[文件内容]## BOOTSTRAP.md[文件内容]
5.14 静默回复机制

5.15 心跳机制

5.16 运行时信息

六、提示词压缩机制
OpenClaw会根据LLM上下文窗口的长度来调整整体提示词,也就是提示词压缩机制,通过多种方法来控制 LLM 上下文长度,防止因历史过长导致上下文溢出错误。
limitHistoryTurns,丢弃超出的完整对话轮次。这是最粗粒度的裁剪——直接丢弃整个对话轮次(user + assistant 消息对)。比如只保留近10轮历史对话。 context-pruning,上下文修剪。 软修剪,截断过长的tool_result,只保留头部和尾部,中间用 ... 代替,并添加裁剪说明。比如10000 字符只保留头 2000 + 尾 500 字符。 硬清除,如果仍超限,用占位符替换tool_result。 LLM调用返回上下文溢出错误时,自动调用 LLM 对历史消息进行语义总结,最多 3 次重试,将大量对话历史压缩为一段摘要文本。 用户手动触发,通过compact命令调用 LLM 对历史做深度语义总结。

下一篇:《从OpenClaw源码分析小龙虾是如何工作的?——ReAct原理与源码分析》
夜雨聆风