System Prompt Architecture

真正可控的,不只是 SOUL.md,
而是整个 9 层 Prompt 结构。

如果不理解 Prompt 是怎么被拼出来的,就很容易出现“改了文件但行为没变”或者“为什么这个规则会覆盖另一个规则”的困惑。这一页专门讲清楚 OpenClaw 的系统提示词是如何分层构成的。

为什么这页重要

OpenClaw 不是单一 System Prompt 文件,而是一个分层拼装系统。你平时改的 SOUL.md、AGENTS.md、USER.md、MEMORY.md,只是其中一部分。理解这件事,能让你知道:哪些东西能直接调、哪些东西只能顺着框架来、哪些内容根本不该乱塞进核心文件。

9 层结构的核心理解

内容控制权意义
Layer 1Core Identity & Guidelines框架层定义基础身份与规则
Layer 2Tool Definitions框架层定义 read / exec / edit 等工具
Layer 3Skills Catalog半自动告诉模型有哪些专业能力可调
Layer 4Model Aliases框架层模型快捷名与别名体系
Layer 5Interaction Protocols框架层心跳、静默回复、reply tag 等协议
Layer 6Runtime Context运行时当前 agent / host / model / channel 等状态
Layer 7Workspace Files用户可控IDENTITY / AGENTS / USER / MEMORY / TOOLS
Layer 8Bootstrap Hooks用户可控动态注入项目资料、实时上下文与外部文件
Layer 9Inbound Context间接影响消息、引用、当前对话内容

Layer 7:你最常改的部分

这层是你最熟悉也最稳定的入口:IDENTITY.md 管身份与偏好,AGENTS.md 管工作规则,USER.md 管用户画像,MEMORY.md 管长期记忆,TOOLS.md 管本机事实。它适合放长期、静态、需要稳定持续生效 的内容。

Layer 8:进阶玩家真正该学的层

如果你想按项目动态加载文档、按上下文注入额外说明、把某些外部资料自动塞进 prompt,这就不是 Layer 7 的职责了,而应该走 bootstrap hooks。它更灵活,也更容易把系统做成真正的“上下文感知型”工作台。

Layer 8 的四种 Hook 机制

Hook用途适合场景
agent:bootstrap完全控制 bootstrapFiles复杂定制
bootstrap-extra-files追加额外文件补充项目文档最方便
before_prompt_build在最终 prompt 发送前修改注入实时上下文
bootstrapMaxChars控制字符预算避免 prompt 膨胀

简单说:静态规则放 Layer 7,动态资料放 Layer 8。

最容易犯的错

  1. 把所有规则和资料都堆进 AGENTS.md / SOUL.md
  2. 在核心文件里重复框架本来就知道的东西
  3. 不区分“长期规则”和“临时上下文”
  4. 明明应该走 Hook,却一味往 Workspace Files 里塞文档

对你最实用的结论

  • 要定义身份与长期规则,优先改 Layer 7
  • 要按项目动态学习资料,开始认真用 Layer 8
  • Prompt 结构优化的关键就是“分层,不混层”
  • 你现在这套 AGENTS / SOUL / USER / MEMORY 体系,本质上就是正确利用了 Layer 7