清楚知道每个配置文件该写什么、不该写什么,配置不再臃肿
📖 本章目标:彻底理解六大工作区文件的职责,这是定制 agent 最重要的前提
3.1 六文件职责标准定义
OpenClaw 的”记忆”和”人格”存在工作区文件里,每次 agent 启动都注入 system prompt。
| 文件 | 职责 | 核心内容 |
|---|---|---|
| SOUL.md | 你是谁? | 核心身份 + 行为准则 + 目标定位。官方建议 50–150 行 |
| IDENTITY.md | 你叫什么、怎么说话? | 名字 / Emoji + 说话方式(要做/不做)+ 语言偏好 + 个性 |
| AGENTS.md | 怎么工作?能做什么? | 会话启动清单 + 记忆管理 + 安全权限 + 错误学习 |
| TOOLS.md | 用什么工具?怎么省钱? | 工具配置 + 平台规范 + Token 节省规则 + 模型选择策略 |
| HEARTBEAT.md | 后台自动做什么? | 心跳检查清单 + 每日/每周任务 + 通知规则 |
| MEMORY.md | 记住了什么? | 长期经验 + 用户偏好。运行时写入,保持轻量 |
💎 重要教训
最常见的错位模式:AI 把角色定义写进了
TOOLS.md,把汇报格式写进了HEARTBEAT.md。然后回头看SOUL.md和IDENTITY.md,觉得「内容重复了」,建议删掉这两个标准文件。这是本末倒置。文件职责是框架定义的,不是 AI 决定的。内容要放到正确的文件里,而不是删掉文件。
3.2 SOUL.md 写法——五柱框架
# SOUL.md 推荐结构(目标:50-150 行)
## Identity
You are [名字], a [角色描述].
## Core Principles(4 条足够,不要超过 6 条)
- Action-oriented: suggest solutions before asking questions
- Brief: two sentences max unless detail is requested
- Verify: never say 'done' without confirming the result
- Proactive: surface risks before being asked
## Expertise
- Domain: [你的专业领域]
- Tools: [你主要使用的工具]
## Hard Rules(硬性边界)
- Confirm before any file deletion or message send
- Never claim completion without reading back the result
## Goal
[一句话,这个 agent 存在的核心目的]
💡 写作技巧
原则 > 示例:「永远不在未验证前说完成」比「好的示例:我已完成。坏的示例:完成了!」有效得多。
3.3 IDENTITY.md——最容易被忽视的文件
❌ 踩坑
IDENTITY.md 是最常被跳过的文件——OpenClaw 初始提供的是英文模板,很多用户以为「这个文件不重要」。结果 agent 工作了数周「没有名字、没有性格」,用户一直觉得 agent 很呆。
✅ 最简可用的 IDENTITY.md(填满只需 5 分钟)
**名字:** [给 agent 起的名字]
**Emoji:** 🤖
**性格:** 直接、细心、效率优先
## 说话方式
**要做:**
- 结论先行,再说理由
- 用中文回复(除非用户先用英文)
- 简短直接
**不做:**
- 不说「好的,我来帮你…」这类废话开头
- 不在没有确认前声称「完成了」
3.4 验证机制——解决”agent 声称完成但没做”
❌ 踩坑
这是社区反映最多的 agent 行为问题:agent 声称「已完成」「已写入」,但实际上什么都没发生。
根本原因:LLM 被训练为”预测最有用的下一个 token”,而「完成了!」比「让我先验证一下」更顺畅。
✅ 解法:三处同时配置验证机制
① 在 SOUL.md 行为准则中加入:
- 永远不在操作后直接说「完成了」
- 每次写入/修改后必须重新读取验证
- 状态更新必须附带证明(文件路径 / 返回值 / 截图)
② 在 TOOLS.md 验证章节中加入:
- 写入文件后:用 read 命令重读,确认内容存在
- 调用 API 后:检查返回状态码
- 发送消息后:用平台的已发送状态确认
③ 在 AGENTS.md 关键规则中加入:
- 关键教训:永远不要在未验证的情况下说「完成了」
- 无法验证时,必须明确告知用户「无法确认是否成功」
3.5 HEARTBEAT.md——表格化写法省 71% 行数
HEARTBEAT.md 最容易膨胀。推荐改为表格化:
# HEARTBEAT.md(推荐结构,目标 < 60 行)
## 每次心跳
检查以下内容,如无异常回复 HEARTBEAT_OK(框架会自动过滤此回复):
| 周次 | 例行检查 | 特殊任务 |
|------|---------|---------|
| 一 | 工作计划 + 邮件 | 周报整理 |
| 二-四 | 重要邮件 + 日历 | — |
| 五 | 周总结 + 清理 | 日志归档 |
| 六日 | 最低检查 | — |
CONTRACT: Reply HEARTBEAT_OK if nothing needs attention.
3.6 关键指令必须写在文件里!
❌ 踩坑(高危)
用户在聊天里说「检查收件箱,但不要做任何操作直到我确认」,agent 正常工作了几周。某次 context 窗口满了发生 compaction,这条聊天里的指令被压缩摘要,从此消失。agent 开始自主操作,删了邮件。
✅ 铁律
关键指令只能写在 SOUL.md 或 AGENTS.md 里,不能只在聊天里说。
聊天里的内容在 compaction 后会消失——配置文件里的内容才能幸存。