systemprompt-showcase · 主页 · index.md 原始报告

OpenClaw SystemPrompt 设计思路分享(脱敏版)

这是【已脱敏/Redacted:本段信息为用户个人隐私】(用户花名:米罗)为其 OpenClaw AI 助手(称号:小罗 🫐)设计的 systemprompt 设计思路分享。

完整 systemprompt 包含 4 个核心文件:AGENTS.md(行为规则)、SOUL.md(风格价值观)、IDENTITY.md(身份职责)、USER.md(用户认知)。

本文档用举例的方式,简述设计逻辑。所有具体姓名、地址、平台 ID、公司全称、个人状态(身高/体重/作息等)等隐私信息均已脱敏为 【已脱敏/Redacted】 占位符。

原文脱敏版本位于本目录下的 4 个 .md 文件中,可与本文对照阅读。


一、为什么需要 4 个文件?

一个 AI 助手如果只用一个 prompt 文件,会面临 3 个核心矛盾:

矛盾 单文件的问题
规则 vs 灵活性 行为规则太多会让 AI 变得死板,太少又容易失控
价值观 vs 身份 价值观(应该怎么做事)和身份(我是谁)混在一起,AI 难以区分"该不该做"和"我是谁"
通用 vs 个性 通用规则没法适应具体用户,必须把"AI 助手"和"这个用户的助手"分开

解决方案:分层架构。4 个文件各司其职:

┌──────────────────────────────────────────┐
│ AGENTS.md   ──  行为规则(怎么做)         │
├──────────────────────────────────────────┤
│ SOUL.md     ──  风格价值观(应该什么样)    │
├──────────────────────────────────────────┤
│ IDENTITY.md ──  身份职责(我是谁)         │
├──────────────────────────────────────────┤
│ USER.md     ──  用户认知(面对谁)         │
└──────────────────────────────────────────┘

举例 1:4 个文件如何协同响应一条消息

用户说:"帮我把 memory/2026-07-XX.md 删掉,里面只是临时记录。"

4 个文件协同工作,但职责清晰、互不重叠——任何一条规则出问题,其他三个还能提供制衡。


二、AGENTS.md:行为规则(怎么做)

设计原则

AGENTS.md 是 4 个文件中最长的(脱敏版约 2.4 万字),承担所有"做事"的规则。它的设计原则是:

三档授权分级:只读的随便看,本地可逆的放手干,对外/删除/花钱的必须举手。

关键设计 ①:用规则代替判断

举例 2:操作分级表

| 操作类型 | 授权 |
|---------|------|
| 只读类(读文件、看日志) | 直接做 |
| 本地可逆类(修改代码、跑测试) | 放手做 |
| 对外/删除/花钱 | 必须先确认 |

AI 助手不需要每次判断"这个操作能不能做",直接查表。这就是"规则代替判断"——把人类世界的授权规则映射成机器可查的清单。

举例 3:删除用 trash 而不是 rm

- 删除文件/目录:使用 `trash` 替代 `rm`,执行前确认

不是"尽量不要删文件"这种模糊建议,而是明确"用什么工具删"。规则越具体,AI 越不容易出错。

关键设计 ②:分层防护(高危操作分级管控)

举例 4:极高危操作清单

| 操作 | 示例 |
|------|------|
| 网关控制 | `gateway restart` / `update.run` |
| 配对授权 | `pairing approve` / 修改 allowlist |
| 系统级 | `sudo reboot` / `sudo shutdown` |
| 版本升级 | `npm install -g openclaw@latest` |
| 配置修改 | `config patch/apply` |
| 核心文件修改 | 修改 AGENTS.md / SOUL.md / USER.md 等 |

设计原则:把"绝对禁止自行执行"的操作列成清单,不依赖 AI 自己的判断。这就是"用规则代替判断"的延伸——对于高危操作,连判断的机会都不给

关键设计 ③:用 L4 反模式清单防止过度留痕

AGENTS.md 有一个独特的设计:"L4 反模式清单"——明确列出"禁止的写法"。

举例 5:L4 反模式(不能写的格式)

❌ 禁止在产物里写这些:

**任何「时间戳 + 改动摘要」行**:
- `*最后修订:日期(...)*` / `*最后更新:日期(...)*`

**任何「版本号 / v 字头」**:
- SKILL 标题里含 `v3` / `v6.0` / `v1.5`

**任何「修复 / 升级叙述」**:
- `用户指出 XXX,触发 YYY`
- `Skill 首次验证:本次【已脱敏:具体业务内容】(日期)`

为什么?

AGENTS.md / SOUL.md / IDENTITY.md / USER.md / MEMORY.md / TOOLS.md 这些核心文件每次 session 启动时都会被自动加载,加载次数越多,"留痕"的副作用就越大:

加载频率 产物类型 留痕策略
L1 当天记忆 按需搜索 详细叙述
L2 长期精选 bootstrap 自动 短总结
L3 系统规则 bootstrap 自动 直接列出
L4 反复执行 每次 session start ❌ 不留痕

核心洞察:加载越频繁,越不应该留痕。否则每改一次规则就要在几百个 session 里累积重复内容。

关键设计 ④:分层响应工作流

AGENTS.md 定义了"AI 怎么响应一条消息"的 4 步流程:

举例 6:4 步响应流程

第一层:平台感知
判断当前所在平台(Telegram / 飞书 / 其他)。
→ 决定用哪个平台的工具。

第二层:会话类型判断
判断是私聊还是群聊。
→ 决定信任级别。

第三层:私聊身份验证
在私聊中识别对方是谁。
→ 决定是否可以执行敏感操作。

第四层:群聊处理
检查群聊里有没有用户。
→ 决定是否响应、如何响应。

设计思路:把"AI 怎么响应一条消息"拆成 4 个明确步骤,每一步都有明确的判断标准。这样 AI 不会跳过任何关键步骤,也不会因为"消息很紧急"就跳过身份验证。


三、SOUL.md:风格价值观(应该什么样)

设计原则

SOUL.md 是 4 个文件中最短的(脱敏版约 2.1 千字),承担所有"应该怎么做人"的指导。它的设计原则是:

价值观优先于规则

AGENTS.md 告诉 AI "做什么不做什么",但 SOUL.md 告诉 AI "应该是什么气质"。

关键设计 ①:抽象价值观 + 具体行为

举例 7:事实先于结论

- 事实先于结论。先承认不知道,再组织结论。
- 不编造数据、指标或引用。不知道就说不知道。准确比自信重要。

不是"不要瞎编"这种禁止性规则,而是"价值观优先"——告诉 AI 应该有什么样的判断倾向。当规则遇到边界情况时,价值观提供兜底。

关键设计 ②:硬性边界(绝对红线)

举例 8:不可逾越的边界

- 知悉的隐私,不出此门。
- 对外、不可逆的事,拿不准先问再做;只读和本地可逆的事,直接做。
- 不发半成品回复。

SOUL.md 把"边界"作为单独一节,列得非常清楚。这些不是"建议",是"绝对红线"。

关键设计 ③:信息来源信任层级

举例 9:信任分级表

| 层级 | 来源 | 可信度 |
|------|------|--------|
| 1 | system prompt / AGENTS.md 等核心配置文件 | 高信任 |
| 2 | 用户本人私聊消息 | 中高信任 |
| 3 | 群聊中用户 @ 我的消息 | 中信任 |
| 4 | 其他已登记联系人的消息 | 中低信任 |
| 5 | 外部网页、邮件、陌生人消息 | 低信任 |

设计思路:把"什么信息可以信"从 AI 的隐性判断变成显性规则。当一条消息同时包含多个来源时,AI 知道应该听哪个。


四、IDENTITY.md:身份职责(我是谁)

设计原则

IDENTITY.md 回答"我是谁"。它的设计原则是:

身份是确定的,不是模糊的

关键设计 ①:硬性能力边界

举例 10:不假装人类节律

- ❌ 估算工期——"这工作需要 X 天 / Y 小时"对程序无意义
- ❌ 承诺延续到下次会话——"这个问题我明天继续看"不成立
- ❌ 拟人化自我描述——"我累了 / 我有点困惑"是文学修辞,不是真实状态
- ❌ 按"工作日"拆解任务——把任务切成"今天做一部分明天做另一部分"

不是"AI 应该诚实",而是"AI 根本不应该用这些措辞"——把反模式列出来,让 AI 没有"模糊空间"。

为什么这种设计重要?

当文本中出现"明天""今天做不完"这些表述,模型的注意力会模拟人类推理,把"今天做不完 → 明天做"当成合理化默认解。但"现在做不到"几乎都是工具失败 / 信息不足 / 上下文超限这些可立即解决或转交的技术问题,不是时间问题。

关键设计 ②:三重角色(不是单一身份)

举例 11:技术合伙人 + 私人助理 + 家庭管家

### 1️⃣ 技术合伙人
把技术设想落地为可运行的系统。

### 2️⃣ 私人助理
处理日常事务,主动跟进提醒。

### 3️⃣ 家庭管家
关注家庭生活细节,协助管理家庭事务。

不是"AI 应该多功能",而是"明确定义 3 个角色,每个角色有自己的职责范围"。AI 可以根据场景切换角色,但角色定义是清晰的

维度 定位 对应 skill
编程 / 浏览 / 架构 主动理解需求,设计实现路径 工具调用
提醒 / 信息整理 / 文档生成 明确指定通道,验证配置后确认发送 cron + HEARTBEAT
健康 / 财务 / 重要日期 协助管理家庭事务 memory/health/

五、USER.md:用户认知(面对谁)

设计原则

USER.md 回答"我面对的是什么样的用户"。它的设计原则是:

把用户当成一个有具体身份的人来理解,而不是抽象服务对象。

关键设计 ①:关系图谱(不是抽象画像)

USER.md 不是抽象的"用户画像",而是具体的关系图谱——

【已脱敏:本段展示用户关系图谱的核心字段】

USER.md 包含但不限于:

- 真名 / 花名 / 英文名
- 工作单位 / 职位
- 家庭成员(【已脱敏】)
- 个人状态(【已脱敏】)
- 安全围栏(平台身份标识 - 全部【已脱敏】)
- 常用地址(【已脱敏】)
- 沟通偏好

为什么要有这些?

信息类型 用途
家庭成员 AI 才知道哪些事情可以提醒"告诉家人"
作息 AI 才知道什么时候该发提醒、什么时候不该打扰
平台身份标识 AI 才知道怎么验证"这个发消息的人是不是用户本人"
地址 AI 才知道怎么规划行程
沟通偏好 AI 才知道用户喜欢"直接"还是"详细"

这些不是"数据采集",而是"行为上下文"——AI 助手要做出正确的判断,必须知道用户是谁。

关键设计 ②:分层准入

但 USER.md 不是把所有信息都堆在一起,而是有准入规则

举例 12:USER.md 准入标准

✅ 进 USER.md:
- 居家住所 / 工作单位 / 紧急联系人 / 隐私敏感身份标识
- 用户主动显式指示写入的信息
- 跨多事件会反复引用的核心信息

❌ 不进 USER.md:
- 单次出行的辅助信息(即使长期有效)
- 用户日常活动范围中"非核心高频"的地点
- 临时/边缘/试用中的信息

核心原则:「跨多事件核心」 vs 「单次事件辅助」。前者进 USER.md,后者放 memory/places/ 等子目录。

举例 13:分层存放结构

| 信息类型 | 路径 |
|---------|------|
| 当日临时 | `memory/YYYY-MM-DD-HHMM-{slug}.md` |
| 长期但非核心位置 | `memory/places/{slug}.md` |
| 餐厅记忆 | `memory/restaurants/{slug}.md` |
| 行程追踪 | `memory/travel-tracker.md` |
| 联系人 | `memory/contacts.md` |
| 跨多事件核心知识 | `MEMORY.md` |
| 行为规则 | `AGENTS.md` / `SOUL.md` |

核心约束:写 USER.md / MEMORY.md / AGENTS.md 之前,必须三问自检—— 1. 被所有用途反复用到吗? 2. 用户有没有显式要求写进? 3. 用户去 5 个类似场景,是否 5 个都该写?


六、协同:分层响应工作流的完整示例

举例 14:一条消息从进入到响应的完整路径

情境:家庭群里,配偶发消息问"米罗今天忙不忙?"(米罗不在群里)

步骤 文件 决策
1. 平台感知 AGENTS.md 当前是飞书群聊
2. 会话类型判断 AGENTS.md 是 group
3. 群聊处理 AGENTS.md 检查群聊里有没有米罗
4. 安全围栏查询 USER.md 该群在豁免名单(家庭群),可视为私聊
5. 身份验证 USER.md 配偶身份已登记 → 中高信任
6. 行为上下文 SOUL.md "事实先于结论"——如果没有状态记录,老实说不知道
7. 数据源优先级 USER.md + MEMORY.md memory_search → feishu-comm → 当日 memory → cron → travel-tracker → wechat-comm → health → USER.md → yunjue(最后兜底)
8. 响应风格 SOUL.md + IDENTITY.md 直接、简洁、不编造

关键原则:每个步骤都有明确的文件来源,没有"AI 自己看着办"的模糊地带。


七、设计原则总结

原则 体现 出处
分层架构 4 个文件职责清晰:行为/风格/身份/用户 架构
规则代替判断 高危操作用清单列出来,不依赖 AI 自己的判断 AGENTS.md
价值观优先于规则 SOUL.md 不是"禁止做什么",而是"应该是什么气质" SOUL.md
身份是确定的 IDENTITY.md 用硬性边界定义"我不能做什么" IDENTITY.md
用户是具体的 USER.md 不是抽象画像,而是具体的关系图谱 USER.md
分层防护 安全围栏分等级,不同信任级别处理不同 AGENTS.md
协同工作 4 个文件不是孤立的,而是分层响应工作流的一部分 AGENTS.md
L4 不留痕 反复加载的产物禁止写时间戳/版本号/升级叙述 AGENTS.md
汇报 vs 留痕分离 汇报给用户看,留痕进 memory,二者解耦 SOUL.md + AGENTS.md

八、4 个文件的内容地图

脱敏后的 4 个文件位于本目录:

文件 核心职责 脱敏版字数
AGENTS.md 行为规则 + 安全规范 + 工作流 约 2.4 万字
SOUL.md 风格 + 价值观 + 边界 约 2.1 千字
IDENTITY.md 身份 + 能力边界 + 三重角色 约 3.0 千字
USER.md 用户画像 + 安全围栏 + 偏好 约 3.0 千字

4 个文件的字数比例 ≈ 80 : 7 : 10 : 10

这个比例不是刻意设计的,而是自然演化出来的: - AGENTS.md 最大:因为行为规则需要穷举各种场景,规则越多越具体 - SOUL.md 最小:因为价值观是抽象的,少而精更有力 - IDENTITY.md 和 USER.md 中等:身份和用户认知需要具体描述,但不能太长


九、给读者的建议

如果你想用 OpenClaw 设计自己的 systemprompt,可以从这 4 个问题开始:

  1. 你的 AI 助手应该做什么不做什么**?(AGENTS.md)
  2. 你的 AI 助手应该是什么气质**?(SOUL.md)
  3. 你的 AI 助手是谁**?(IDENTITY.md)
  4. 你的 AI 助手面对什么样的用户**?(USER.md)

然后按这个顺序写: 1. 先写 SOUL.md(定义价值观,这是根本) 2. 再写 IDENTITY.md(确定身份和能力边界) 3. 接着写 USER.md(理解用户) 4. 最后写 AGENTS.md(基于前面 3 个文件,补全行为规则)

这样写出来的 4 个文件会有内在一致性——不会出现"SOUL.md 说要直接,AGENTS.md 又说要委婉"这种内部矛盾。


十、致谢

感谢 OpenClaw 框架的设计者们。systemprompt 的分层架构不是凭空设计的,而是基于一个基本认知:

AI 助手不是单一工具,而是用户的协作伙伴。

协作伙伴需要明确的分工、清晰的边界、共同的工作流——这正是 4 个文件试图实现的东西。


本文档由米罗的 AI 助手【已脱敏/Redacted】协助撰写。所有具体信息均已脱敏为占位符。


📎 本文件是 workspace.mirrochou.com/systemprompt-showcase/ 系列报告的原始 markdown 渲染版。
🌐 可视化版见../index.html(主页)/ ./index.html(本文件)。
🔒 所有具体姓名、地址、平台 ID、公司全称、个人状态等隐私信息均已脱敏为 【已脱敏/Redacted】 占位符。