深度解析 OpenClaw 在 Prompt / Context / Harness 三个维度中的设计哲学与实践

一句话概括

阿里云开发者公众号上由”飞樰”撰写的 OpenClaw Prompt / Context / Harness(脚手架)三维度深度解析,最大亮点是列出了 OpenClaw System Prompt 的 23 个组装模块——身份 / 工具清单 / 工具调用风格 / 安全准则 / CLI 操作 / Agent Skills / 记忆召回 / 自更新 / 模型别名 / Workspace / 参考文档 / Sandbox / 授权发送者 / 时间 / Workspace 文件注入 / Reply Tags / Messaging / 群聊回复 / 推理格式 / 静默回复 / 心跳 / Runtime 等。

实践内容

System Prompt 23 个模块清单

每个模块带条件加载标记 [full] / [full/minimal] / [full, 有X时]

#模块加载条件
1身份与定位full
2工具清单 Available Toolsfull / minimal
3工具调用风格full
4安全准则 Safety Guidelinesfull
5OpenClaw CLI 操作指令full
6技能(Agent Skills)full, 有技能时
7记忆召回 Memory Recallfull, 有记忆工具时
8自更新管理full, 有网关工具时
9模型别名full / minimal, 有配置时
10Workspacefull
11参考文档 Documentationfull, 有路径时
12沙箱 Sandboxfull, 沙箱模式时
13授权发送者 Authorized Sendersfull, 有配置时
14时间信息 Current Date & Timefull / minimal, 有配置时
15Workspace 文件注入(AGENTS.md / SOUL.md / USER.md / IDENTITY.md / TOOLS.md)full / minimal
16Reply Tagsfull
17Messagingfull
19群聊回复full, 有配置时
20推理格式 Reasoning
21静默回复 Silent Modefull
22心跳机制 Heartbeatsfull
23运行时信息 Runtime永远存在

(编号 18 在原文跳过,未给出)

Workspace 文件注入示例

# AGENTS.md - Your Workspace
## First Run
...

AGENTS.md / SOUL.md / USER.md / IDENTITY.md / TOOLS.md 是 Workspace 的”灵魂文件”——OpenClaw 启动时自动把它们的内容拼到 system prompt,让每个 Agent 拥有”个性”。

摘录

OpenClaw 的 System Prompt 不是一段定死的字符串,而是一个由 23 个模块按条件拼接而成的运行时产物。每个模块都标注了加载粒度——full(完整加载)/ minimal(最小化)/ 仅当满足某条件时加载(如有技能时、有沙箱时、有配置时)。这种条件化拼接的核心动机是 token 预算:默认全量拼出来可能上万 tokens,按当下任务动态裁剪可以瘦到几千。OpenClaw 把”system prompt 是什么”重新定义成了”我现在需要的 system prompt 是什么”。

Skill 的注入是其中第 6 个模块——而且仅”有技能时”才加载。注入的是 Skill 的菜单(name + description + location),不是 SKILL.md 的全文。这意味着 Agent 看到的是”我有什么 Skill 可选”而不是”每个 Skill 怎么用”,需要细读时再去 read 那个 Skill 文件。这种”两阶段加载”在多 Skill 场景下能省下数倍的 token 消耗。

Workspace 的”灵魂文件”AGENTS.md / SOUL.md / USER.md / IDENTITY.md / TOOLS.md 是 OpenClaw 让每个 Agent 拥有”个性”的关键——这些文件的内容会被拼到 system prompt 第 15 个模块。换句话说,“配置一个 Agent” 在 OpenClaw 里被翻译成了”在 Workspace 里写几个 Markdown 文件”,而不是改某个 YAML 字段或 JSON schema。这与 OpenClaw-双源记忆系统 的”文件即真相”哲学是同一血脉。

涉及实体

涉及主题

(积累 ≥5 篇同议题来源后聚合)

我的评注

  • 23 个模块的清单本身就是 OpenClaw 的”系统提示词工程化教科书”——每个模块的存在都对应一个真实的设计取舍,值得逐一研究
  • “条件加载 + 模板拼接 + 灵魂文件” 是一套很有”架构感”的 prompt 工程——比起”写一段长 prompt”,这种思路更工程化、更可维护
  • 模块 6(Skills)+ 模块 7(Memory Recall)+ 模块 12(Sandbox)+ 模块 22(Heartbeats)四个加在一起,几乎就是 OpenClaw 区别于普通 LLM 客户端的全部”特性密度”——每个特性都对应一个模块开关
  • 有趣的是模块 18 在原文目录中被跳过,可能是作者整理时漏掉,或确有内部废弃模块;后续若 ingest 续作可对照