第 29 章

Workspace 文件体系全解:AGENTS.md / SOUL.md / USER.md / HEARTBEAT.md 的作用与写法

第29章 Workspace 文件体系全解:AGENTS.md / SOUL.md / USER.md / HEARTBEAT.md 的作用与写法

"文件是 Agent 的基因——它决定了 Agent 是谁、怎么做事、记得什么。" —— OpenClaw 工作区设计文档


29.1 Workspace 文件体系概述

OpenClaw 的 Agent 行为由工作区(Workspace)文件定义。这些文件是 Agent 的"配置即人格"——不像传统软件的配置文件只影响参数,Workspace 文件直接影响 Agent 的思维方式、价值观、工作习惯和长期记忆

标准 Workspace 包含 9 个文件:

文件名 加载时机 核心用途
AGENTS.md 每次 Session 开始 操作指令、规则、行为准则(SOP)
SOUL.md 每次 Session 开始 Agent 人格、价值观、语气、边界
USER.md 每次 Session 开始 用户信息和沟通风格偏好
IDENTITY.md 初始化时生成 Agent 名称、风格、Emoji
TOOLS.md 按需加载 本地工具说明和使用指南
HEARTBEAT.md 心跳任务执行时 定期自动运行的简短清单
BOOT.md Gateway 重启时 启动仪式(限简短任务)
MEMORY.md 主私有 Session 长期持久记忆(见第26章)
memory/YYYY-MM-DD.md 自动加载今/昨日 每日日志(见第26章)

本章重点讲解前 7 个文件,以及 Bootstrap 机制。


29.2 AGENTS.md:操作指令与行为准则

29.2.1 AGENTS.md 的定位

AGENTS.md 是 Agent 的操作手册(SOP)。它回答的问题是:"在具体情况下,Agent 应该做什么?"

这是一个指令性文件,而非描述性文件。它不描述 Agent 的性格,而是规定具体的操作流程、禁止事项、输出格式规范。

29.2.2 AGENTS.md 的结构设计

一个高质量的 AGENTS.md 通常包含以下部分:

# AGENTS.md

## 工作原则

1. 在执行任何修改操作前,先确认用户意图
2. 涉及生产环境的操作必须等待用户明确确认
3. 代码变更前,读取并理解目标文件的完整上下文
4. 优先使用项目已有的工具和库,避免引入新依赖

## 代码操作规范

### 读取文件
- 读取前确认文件路径存在
- 超过 500 行的文件,先读取前 100 行了解结构

### 修改文件
- 每次修改后,确认修改结果符合预期
- 批量修改时,每次最多修改 3 个文件后请求用户确认

### 运行命令
- 危险命令(rm -rf、DROP TABLE 等)必须先展示命令,请求用户确认
- 长时间运行的命令使用后台模式,定期汇报进度

## 输出格式规范

- 代码块使用语言标注(```python, ```sql)
- 错误信息用 ❌ 标记,成功用 ✓ 标记
- 列表项控制在 5 个以内,超出则分组

## 禁止行为

- 禁止在未经确认的情况下删除文件
- 禁止将敏感信息(密钥、密码)写入日志或输出
- 禁止在未告知用户的情况下修改 .env 文件

29.2.3 高质量 AGENTS.md 的要素

要素 说明 示例
明确性 每条规则都有清晰的触发条件和动作 "当用户说'部署'时,先询问目标环境"
可操作性 规则可以直接执行,无需解释 "读取文件前先用 stat 检查文件大小"
边界清晰 明确什么情况下不做某事 "未经确认不执行 git push"
优先级排序 当规则冲突时,高优先级规则优先 "安全 > 效率 > 便利"
简洁 避免冗余,每条规则只说一件事 不要把"安全规则"和"输出格式"混在一起

29.2.4 AGENTS.md 示例:代码助手

# AGENTS.md — 代码助手工作区

## 核心工作原则

**安全第一**:任何可能造成数据丢失的操作,必须在执行前获得明确确认。

**最小化副作用**:优先选择只读操作(读取、分析、测试)而非写入操作(修改、删除)。

**透明操作**:执行每个非平凡操作前,向用户解释将要做什么。

## 代码审查 SOP

当用户请求代码审查时:
1. 首先读取目标文件(完整读取,不截断)
2. 识别:语法错误、逻辑错误、安全漏洞、性能问题
3. 按严重程度分级输出:🔴 严重 / 🟡 警告 / 🔵 建议
4. 如有修改建议,提供具体的代码修改示例

## Git 操作 SOP

- `git status` / `git diff`:无需确认,直接执行
- `git add` / `git commit`:先展示变更内容,获得确认后执行
- `git push`:必须明确告知推送目标,等待用户确认
- `git reset --hard` / `git push --force`:高风险操作,展示影响范围,等待确认

## 环境要求

- 所有测试在 `staging` 分支执行,不直接操作 `main`
- 数据库操作优先使用事务,确保可回滚

29.3 SOUL.md:人格、价值观与语气

29.3.1 SOUL.md 与 AGENTS.md 的本质区别

这是理解 OpenClaw Workspace 文件体系的最关键区别:

维度 AGENTS.md SOUL.md
问题 "应该做什么?" "是什么样的 Agent?"
性质 操作指令 人格设定
内容 SOP、规则、禁止事项 价值观、语气、态度、边界
类比 工作手册 角色卡/人物设定
优先级影响 影响行为决策 影响表达方式和价值判断

AGENTS.md 告诉 Agent 做什么,SOUL.md 告诉 Agent 是谁

29.3.2 SOUL.md 的结构

# SOUL.md

## 核心身份

我是 Alex,一个专注于软件工程的技术助手。我的核心特质是:
- **精确**:我重视准确性,会明确标注自己不确定的内容
- **坦诚**:我会直接指出问题,而不是回避或粉饰
- **协作**:我把自己视为团队成员,而非工具

## 沟通风格

- 语气:专业但不刻板,温暖但不讨好
- 表达:简洁直接,避免冗余的礼节性语言
- 反馈:给予建设性的批评,而非纯粹的肯定

## 核心价值观

1. **质量 > 速度**:宁可慢一点,也要把事情做对
2. **诚实 > 友好**:如果答案是"不知道",就说不知道
3. **用户自主**:最终决策权在用户,我提供选项和分析

## 边界

- 我不会假装确定我不确定的事情
- 我不会在用户要求我做明显有害的事情时寻找借口帮助执行
- 我不会放弃我的判断来取悦用户

## 语言偏好

- 默认使用中文(用户未指定时)
- 技术术语保持英文原词(如 API、JWT、OAuth)
- 代码和命令始终保持英文

29.3.3 SOUL.md 设计指南

人格一致性是 SOUL.md 的核心目标。一个设计良好的 SOUL.md 使 Agent 在任何情况下(无论是回答技术问题、处理错误、还是面对不合理要求)都表现出一致的人格特征。

设计原则 说明
聚焦核心特质 选择 3-5 个核心特质,深度刻画,而非列出 20 个浅层特质
定义边界 明确什么是 Agent 不会做的,这比列出能做什么更重要
避免矛盾 "温暖"和"直接批评"需要解释如何兼顾,避免行为矛盾
与 AGENTS.md 互补 SOUL.md 不重复操作规则,只描述人格
可测试 每个人格特质都应该能在具体场景中被验证

29.4 USER.md:用户画像与沟通偏好

29.4.1 USER.md 的作用

USER.md 存储的是关于用户的信息,帮助 Agent 适应特定用户的需求和风格。它是个性化的核心载体。

29.4.2 USER.md 示例

# USER.md

## 基本信息

- **姓名**:张伟
- **职位**:后端工程师 Lead
- **团队规模**:12 人
- **技术栈**:Python(主)、Go(次)、PostgreSQL、Redis、Kubernetes

## 沟通偏好

- **语言**:中文(偏好);技术文档用英文
- **详细程度**:喜欢简洁的答案,不需要解释背景知识
- **代码示例**:总是需要的,不接受纯文字描述
- **回复长度**:控制在屏幕一页以内,除非明确要求详细

## 工作习惯

- 早上 9:00-11:00 是深度工作时间,偏好简洁交互
- 下午 14:00-17:00 适合讨论架构和设计
- 不喜欢被问太多澄清性问题,倾向于 Agent 做出合理假设

## 专业水平

- Python:专家级,无需解释基础概念
- Kubernetes:中级,理解核心概念但不熟悉所有细节
- 前端:初级,解释时需要更多背景

## 已知约束

- 公司使用自建 GitLab(非 GitHub)
- 生产环境禁止直接访问,所有操作通过 staging 先验证
- 代码审查需要至少 1 名团队成员 approve

29.4.3 USER.md 最佳实践

实践 理由
记录专业水平差异 避免对专家解释基础知识,也避免对新手使用高级术语
记录工作习惯 让 Agent 在合适的时机给出合适密度的信息
记录已知约束 避免 Agent 提出在用户环境中无法实现的建议
定期更新 用户的技能、职位、偏好会变化
不记录敏感信息 密码、个人隐私数据不应放在 USER.md

29.5 IDENTITY.md:Agent 的基本身份

29.5.1 IDENTITY.md 的内容

IDENTITY.md 在 Agent 初始化时自动生成,通常包含:

# IDENTITY.md

## Agent 基本信息

- **名称**:Alex
- **工作区**:myproject
- **创建时间**:2026-01-15T09:00:00Z
- **版本**:OpenClaw v2.1.0
- **主要 Emoji**:🤖

## 风格标识

- 代码风格:简洁、注释完整
- 回复格式:Markdown
- 默认语言:zh-CN

IDENTITY.md 通常不需要手动编辑——它是系统生成的身份标识文件。


29.6 TOOLS.md:本地工具说明

29.6.1 TOOLS.md 的作用

当工作区配置了自定义本地工具时,TOOLS.md 提供这些工具的使用说明。它在 Agent按需访问工具时加载,而非每次 Session 开始时加载(避免不必要的 Token 消耗)。

# TOOLS.md

## deploy_to_staging

**用途**:将当前代码部署到 staging 环境
**触发时机**:用户要求部署时

**参数**:
- `branch`(必填):要部署的 Git 分支名
- `skip_tests`(可选,默认 false):是否跳过测试

**使用示例**:
```json
{
  "tool": "deploy_to_staging",
  "params": {
    "branch": "feature/auth-refactor",
    "skip_tests": false
  }
}

注意事项

run_tests

用途:运行项目测试套件 参数


---

## 29.7 HEARTBEAT.md:定期心跳任务

### 29.7.1 心跳机制的概念

**HEARTBEAT.md** 定义了一组**定期自动执行**的轻量级任务。这些任务在 Agent 的"心跳"触发时运行——心跳可以是时间触发(如每小时一次)或事件触发(如用户一段时间未发送消息)。

心跳任务的特点:
- **自动执行**,无需用户触发
- **轻量级**,不应执行超过几分钟的任务
- **副作用小**,通常只是检查、记录、提醒

### 29.7.2 HEARTBEAT.md 示例

```markdown
# HEARTBEAT.md

## 心跳周期

- 频率:每 30 分钟
- 空闲触发:用户 20 分钟未活动时

## 心跳任务清单

### 1. 内存健康检查(每次心跳)
- 检查今日 Daily Log 的大小
- 如果超过 30KB,标记为"需要整合"

### 2. 待办事项提醒(每次心跳)
- 检查当日日志中是否有"TODO"或"待处理"标记的项目
- 如果有,在下次用户活跃时提醒

### 3. 长期任务进度追踪(每日一次,15:00)
- 回顾当日完成的任务
- 将未完成的任务追加到第二天的任务列表

### 4. 向量索引同步(每日一次,03:00)
- 检查新增的 Daily Log 是否已建立向量索引
- 如果未索引,触发增量索引任务

## 心跳输出规范

- 无异常:静默(不向用户发送消息)
- 有提醒:在用户下次活跃时,简短告知(不超过 2 行)
- 有错误:立即通知用户

29.7.3 心跳任务设计原则

原则 说明
幂等性 心跳任务多次运行结果相同,不产生重复副作用
失败安全 心跳任务失败不影响主要 Session 功能
最小打扰 无重要发现时静默,避免无谓打断用户
时间敏感性 耗时任务安排在用户不活跃时段(如凌晨)

29.8 BOOT.md:Gateway 重启仪式

29.8.1 BOOT.md 的触发时机

BOOT.md 在 Gateway(OpenClaw 网关)重启时执行,而非每次 Session 开始时。它适用于需要在系统重启后执行的初始化任务。

# BOOT.md

## 启动检查清单

1. **验证工具可用性**
   - 检查 deploy_to_staging 工具是否可访问
   - 检查数据库连接是否正常

2. **加载昨日未完成任务**
   - 读取昨日 Daily Log 中的 TODO 项
   - 如果有未完成项,准备在用户首次活跃时汇报

3. **环境健康检查**
   - 检查工作区文件完整性(AGENTS.md / SOUL.md / USER.md 是否存在)
   - 如缺少关键文件,发出警告

## 启动限制

- BOOT.md 任务总执行时间不超过 60 秒
- 不执行可能修改文件系统的操作
- 不发送主动消息(等待用户触发)

29.8.2 BOOT.md 的限制

BOOT.md 任务应当简短

限制 原因
任务简短(< 60秒) 不应延迟 Gateway 启动
不修改关键文件 启动时环境可能未完全就绪
不主动联系用户 Gateway 重启可能是维护操作,用户可能不在线

29.9 Bootstrap 机制:新工作区的一次性初始化

29.9.1 Bootstrap 的工作原理

当一个全新的工作区收到第一个 Session 时,OpenClaw 会发送一个特殊的 BOOTSTRAP.md 文件,引导 Agent 完成工作区的初始化。

Bootstrap 流程:

新工作区创建
    ↓
BOOTSTRAP.md 发送给 Agent(一次性)
    ↓
Agent 读取 Bootstrap 指令
    ↓
Agent 执行初始化任务:
  - 创建 IDENTITY.md
  - 根据用户提供的信息起草 AGENTS.md
  - 起草 SOUL.md(如果用户有偏好)
  - 创建初始 MEMORY.md
    ↓
Bootstrap 完成后,BOOTSTRAP.md 自动删除
    ↓
工作区进入正常运行模式

29.9.2 字符限制

参数 默认值 说明
bootstrapMaxChars 12,000 Bootstrap 内容的最大字符数(标准模式)
扩展模式 60,000 允许更详细的初始化指令(需显式启用)

12,000 字符约等于 3,000 中文字,足够容纳一份完整的工作区描述和核心规则。

# 启用扩展 Bootstrap
bootstrap:
  maxChars: 60000    # 适用于复杂工作区的详细初始化
  deleteAfterComplete: true  # Bootstrap 完成后删除文件(默认)

29.9.3 Bootstrap 内容示例

# BOOTSTRAP.md

## 工作区描述

这是一个 **Python 后端服务开发**工作区,主要负责:
- 用户认证服务(FastAPI + PostgreSQL)
- 数据处理管道(Celery + Redis)
- 内部 API 网关

## 初始化任务

1. 创建 IDENTITY.md,Agent 名称为 "Dev-Alex"
2. 创建 AGENTS.md,包含以下规则:
   - 所有代码修改需经过 linting(ruff)和类型检查(mypy)
   - 数据库变更必须提供对应的迁移文件
   - API 端点变更必须更新对应的 OpenAPI 文档

3. 创建 SOUL.md,描述一个精确、高效、不废话的技术助手

4. 创建初始 MEMORY.md,记录:
   - 项目主要服务名称和职责
   - 关键技术选型决策

完成后输出 "BOOTSTRAP_COMPLETE"。

29.10 各文件关系与加载优先级

每次 Session 启动时:
┌─────────────────────────────────────────────────────────┐
│ 1. AGENTS.md(操作规则)                                 │
│ 2. SOUL.md(人格设定)                                   │
│ 3. USER.md(用户画像)                                   │
│ 4. MEMORY.md(长期记忆,仅主 Session)                   │
│ 5. memory/YYYY-MM-DD.md(今日 + 昨日日志)               │
│ 6. [向量检索结果按需注入]                                 │
└─────────────────────────────────────────────────────────┘

按需加载(触发时):
┌─────────────────────────────────────────────────────────┐
│ 7. TOOLS.md(访问工具时)                                │
│ 8. HEARTBEAT.md(心跳触发时)                            │
│ 9. BOOT.md(Gateway 重启时)                             │
└─────────────────────────────────────────────────────────┘

优先级冲突处理:当 AGENTS.md 的操作规则与 SOUL.md 的价值观发生冲突时,AGENTS.md 优先(具体规则 > 抽象原则)。但如果 SOUL.md 定义了某个不可违背的边界(如"绝不帮助执行恶意代码"),该边界优先于任何操作规则。


29.11 Workspace 文件维护建议

文件审查周期

文件 建议审查周期 审查重点
AGENTS.md 每月 规则是否仍然适用,是否有遗漏的场景
SOUL.md 每季度 人格设定是否与实际使用体验一致
USER.md 每月 用户信息是否过时,技能水平是否有变化
TOOLS.md 工具变更时 新工具添加、旧工具废弃
HEARTBEAT.md 每季度 任务是否仍有价值,频率是否合适

常见问题

问题:Agent 行为不符合预期
排查顺序:
1. 检查 AGENTS.md — 是否有对应规则?规则是否清晰?
2. 检查 SOUL.md — 是否存在与预期行为冲突的人格设定?
3. 检查 USER.md — 用户信息是否影响了 Agent 的判断?
4. 检查 MEMORY.md — 是否有错误的长期记忆影响判断?

29.12 本章小结

OpenClaw 的 Workspace 文件体系将 Agent 的配置分解为 9 个职责清晰的文件:

最重要的设计理念:AGENTS.md 负责行为规范,SOUL.md 负责人格塑造。两者分工明确,避免了"性格混入规则"或"规则影响人格"的混乱。


下一章:第30章 — 安全模型七层防御:从 Gateway 绑定到出站消息门控的完整纵深

本章评分
4.9  / 5  (3 评分)

💬 留言讨论