OpenClaw 系统提示词解析
文件即认知,文本即记忆,文件即灵魂
📅 2026-02-12 | ✍️ 陶刚(Timeplus CTO) | 📖 技术深度
核心设计理念
OpenClaw 的核心秘密:一切皆 Markdown。没有模型微调,没有复杂的提示词编译器,没有黑盒——一组精心设计的 Markdown 文件在每次对话时被动态组装成系统提示词。
文件即认知,文本即记忆,文件即灵魂。
七个 Markdown 文件构成的"认知层"
OpenClaw 的提示词系统由一组放置在工作区目录下的 Markdown 文件组成,每个文件承担特定职责,共同构成 Agent 的完整"人格架构"。
SOUL.md | |
AGENTS.md | |
IDENTITY.md | |
USER.md | |
TOOLS.md | |
HEARTBEAT.md | |
BOOTSTRAP.md |
每个文件有字符上限(默认 20,000),超限时按 70% 头部 + 20% 尾部 + 10% 截断标记 的比例截断。
提示词组装流水线(三阶段)
第一阶段:运行时参数收集
buildSystemPromptParams() 收集主机名、操作系统、CPU 架构、Node 版本、当前模型、频道类型等上下文。
第二阶段:系统提示词组装
buildAgentSystemPrompt() 按严格顺序拼接:
基础身份("You are a personal assistant running inside OpenClaw.") 工具列表(经六层策略过滤) 工具调用风格 安全护栏 技能列表(仅 full 模式) 记忆召回指令 自更新指令、模型别名、工作区路径 沙箱信息、当前日期时间(仅时区,优化缓存命中率) 回复标签、消息路由、语音/TTS 反应指令、静默回复协议、心跳确认协议 运行时信息行、推理模式、项目上下文
第三阶段:注入 Agent 会话
通过 createSystemPromptOverride() 覆盖默认 prompt。
提示词模式与上下文压缩
Prompt 模式分层
full | ||
minimal | sessions_spawn 生成) | |
none |
上下文压缩
- 触发条件
:模型返回上下文溢出错误,或已使用 token 超过 contextWindow - reserveTokens(默认预留 20,000 token) - 最精妙设计
:压缩前的记忆刷写——提示 Agent 将重要信息写入 memory/YYYY-MM-DD.md,确保压缩不会造成认知丢失
技能与记忆系统
技能系统
- 即时加载原则
:系统提示词仅注入技能元数据(名称、描述、路径),不预加载 SKILL.md 基础 prompt 保持在约 2.7k-10k token ClawHub 已有超过 5,700 个社区构建的技能
记忆系统
- 单一真相来源
: MEMORY.md+memory/YYYY-MM-DD.md - 混合检索
:BM25 关键词搜索 + 向量语义搜索(text-embedding-3-small / text-embedding-004) 通过 memory_search和memory_get工具按需获取
心跳系统
每 30 分钟触发一次 Agent 回合,读取 HEARTBEAT.md 并执行任务,通过 HEARTBEAT_OK 抑制外发投递。
与其他框架的架构对比
| Claude Code | ||
| Cursor | .cursor/rules/ 按需加载规则 | |
| AutoGPT | ||
| LangChain/LangGraph | ||
| OpenClaw |
核心差异:其他框架的提示词是代码的一部分,而 OpenClaw 的 prompt 就是工作区里的文件——可以 git diff、可以 grep。
文件驱动架构的三大启示
- 关注点分离
:将人格、身份、用户画像、操作手册、环境配置解耦到不同文件 - 元数据进提示词、内容按需加载
:是管理大规模工具和知识库时控制 token 成本的最佳实践 - Agent 的自我修改能力
:更新 SOUL.md、维护 MEMORY.md、清理 HEARTBEAT.md,创造"文件即认知"范式
📋 核心要点总结
OpenClaw 用 7 个 Markdown 文件构建 Agent 的完整"人格架构" 提示词组装采用三阶段流水线:参数收集 → 系统提示词组装 → 注入会话 压缩前的记忆刷写机制确保认知不丢失 技能和记忆系统遵循"元数据进提示词、内容按需加载"原则 文件驱动架构让提示词工程从代码领域回归文档领域
本文由 AI 辅助整理,内容来源于知乎专栏"闻数起舞"
夜雨聆风