跳到正文
🛠️ 使用技巧避坑指南 · 第 03 章 进阶

工作区文件体系:SOUL、MEMORY、AGENTS 各是干什么的

深度解析 OpenClaw 工作区的 5 大核心配置文件,理解各自职责,避免配置错位。

⏱ 20 分钟 🔧 进阶
🎖️ 任务奖励 — 学完你能做到

清楚知道每个配置文件该写什么、不该写什么,配置不再臃肿

📖 本章目标:彻底理解六大工作区文件的职责,这是定制 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.mdIDENTITY.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 后会消失——配置文件里的内容才能幸存。


← 上一章:运行时问题排查 | 返回目录 | 下一章:高级配置 →