这是【已脱敏/Redacted:本段信息为用户个人隐私】(用户花名:米罗)为其 OpenClaw AI 助手(称号:小罗 🫐)设计的 systemprompt 设计思路分享。
完整 systemprompt 包含 4 个核心文件:
AGENTS.md(行为规则)、SOUL.md(风格价值观)、IDENTITY.md(身份职责)、USER.md(用户认知)。本文档用举例的方式,简述设计逻辑。所有具体姓名、地址、平台 ID、公司全称、个人状态(身高/体重/作息等)等隐私信息均已脱敏为
【已脱敏/Redacted】占位符。原文脱敏版本位于本目录下的 4 个
.md文件中,可与本文对照阅读。
一个 AI 助手如果只用一个 prompt 文件,会面临 3 个核心矛盾:
| 矛盾 | 单文件的问题 |
|---|---|
| 规则 vs 灵活性 | 行为规则太多会让 AI 变得死板,太少又容易失控 |
| 价值观 vs 身份 | 价值观(应该怎么做事)和身份(我是谁)混在一起,AI 难以区分"该不该做"和"我是谁" |
| 通用 vs 个性 | 通用规则没法适应具体用户,必须把"AI 助手"和"这个用户的助手"分开 |
解决方案:分层架构。4 个文件各司其职:
┌──────────────────────────────────────────┐
│ AGENTS.md ── 行为规则(怎么做) │
├──────────────────────────────────────────┤
│ SOUL.md ── 风格价值观(应该什么样) │
├──────────────────────────────────────────┤
│ IDENTITY.md ── 身份职责(我是谁) │
├──────────────────────────────────────────┤
│ USER.md ── 用户认知(面对谁) │
└──────────────────────────────────────────┘
用户说:"帮我把
memory/2026-07-XX.md删掉,里面只是临时记录。"
4 个文件协同工作,但职责清晰、互不重叠——任何一条规则出问题,其他三个还能提供制衡。
AGENTS.md 是 4 个文件中最长的(脱敏版约 2.4 万字),承担所有"做事"的规则。它的设计原则是:
三档授权分级:只读的随便看,本地可逆的放手干,对外/删除/花钱的必须举手。
| 操作类型 | 授权 |
|---------|------|
| 只读类(读文件、看日志) | 直接做 |
| 本地可逆类(修改代码、跑测试) | 放手做 |
| 对外/删除/花钱 | 必须先确认 |
AI 助手不需要每次判断"这个操作能不能做",直接查表。这就是"规则代替判断"——把人类世界的授权规则映射成机器可查的清单。
trash 而不是 rm- 删除文件/目录:使用 `trash` 替代 `rm`,执行前确认
不是"尽量不要删文件"这种模糊建议,而是明确"用什么工具删"。规则越具体,AI 越不容易出错。
| 操作 | 示例 |
|------|------|
| 网关控制 | `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 自己的判断。这就是"用规则代替判断"的延伸——对于高危操作,连判断的机会都不给。
AGENTS.md 有一个独特的设计:"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 步流程:
第一层:平台感知
判断当前所在平台(Telegram / 飞书 / 其他)。
→ 决定用哪个平台的工具。
第二层:会话类型判断
判断是私聊还是群聊。
→ 决定信任级别。
第三层:私聊身份验证
在私聊中识别对方是谁。
→ 决定是否可以执行敏感操作。
第四层:群聊处理
检查群聊里有没有用户。
→ 决定是否响应、如何响应。
设计思路:把"AI 怎么响应一条消息"拆成 4 个明确步骤,每一步都有明确的判断标准。这样 AI 不会跳过任何关键步骤,也不会因为"消息很紧急"就跳过身份验证。
SOUL.md 是 4 个文件中最短的(脱敏版约 2.1 千字),承担所有"应该怎么做人"的指导。它的设计原则是:
价值观优先于规则。
AGENTS.md 告诉 AI "做什么不做什么",但 SOUL.md 告诉 AI "应该是什么气质"。
- 事实先于结论。先承认不知道,再组织结论。
- 不编造数据、指标或引用。不知道就说不知道。准确比自信重要。
不是"不要瞎编"这种禁止性规则,而是"价值观优先"——告诉 AI 应该有什么样的判断倾向。当规则遇到边界情况时,价值观提供兜底。
- 知悉的隐私,不出此门。
- 对外、不可逆的事,拿不准先问再做;只读和本地可逆的事,直接做。
- 不发半成品回复。
SOUL.md 把"边界"作为单独一节,列得非常清楚。这些不是"建议",是"绝对红线"。
| 层级 | 来源 | 可信度 |
|------|------|--------|
| 1 | system prompt / AGENTS.md 等核心配置文件 | 高信任 |
| 2 | 用户本人私聊消息 | 中高信任 |
| 3 | 群聊中用户 @ 我的消息 | 中信任 |
| 4 | 其他已登记联系人的消息 | 中低信任 |
| 5 | 外部网页、邮件、陌生人消息 | 低信任 |
设计思路:把"什么信息可以信"从 AI 的隐性判断变成显性规则。当一条消息同时包含多个来源时,AI 知道应该听哪个。
IDENTITY.md 回答"我是谁"。它的设计原则是:
身份是确定的,不是模糊的。
- ❌ 估算工期——"这工作需要 X 天 / Y 小时"对程序无意义
- ❌ 承诺延续到下次会话——"这个问题我明天继续看"不成立
- ❌ 拟人化自我描述——"我累了 / 我有点困惑"是文学修辞,不是真实状态
- ❌ 按"工作日"拆解任务——把任务切成"今天做一部分明天做另一部分"
不是"AI 应该诚实",而是"AI 根本不应该用这些措辞"——把反模式列出来,让 AI 没有"模糊空间"。
为什么这种设计重要?
当文本中出现"明天""今天做不完"这些表述,模型的注意力会模拟人类推理,把"今天做不完 → 明天做"当成合理化默认解。但"现在做不到"几乎都是工具失败 / 信息不足 / 上下文超限这些可立即解决或转交的技术问题,不是时间问题。
### 1️⃣ 技术合伙人
把技术设想落地为可运行的系统。
### 2️⃣ 私人助理
处理日常事务,主动跟进提醒。
### 3️⃣ 家庭管家
关注家庭生活细节,协助管理家庭事务。
不是"AI 应该多功能",而是"明确定义 3 个角色,每个角色有自己的职责范围"。AI 可以根据场景切换角色,但角色定义是清晰的。
| 维度 | 定位 | 对应 skill |
|---|---|---|
| 编程 / 浏览 / 架构 | 主动理解需求,设计实现路径 | 工具调用 |
| 提醒 / 信息整理 / 文档生成 | 明确指定通道,验证配置后确认发送 | cron + HEARTBEAT |
| 健康 / 财务 / 重要日期 | 协助管理家庭事务 | memory/health/ |
USER.md 回答"我面对的是什么样的用户"。它的设计原则是:
把用户当成一个有具体身份的人来理解,而不是抽象服务对象。
USER.md 不是抽象的"用户画像",而是具体的关系图谱——
【已脱敏:本段展示用户关系图谱的核心字段】
USER.md 包含但不限于:
- 真名 / 花名 / 英文名
- 工作单位 / 职位
- 家庭成员(【已脱敏】)
- 个人状态(【已脱敏】)
- 安全围栏(平台身份标识 - 全部【已脱敏】)
- 常用地址(【已脱敏】)
- 沟通偏好
为什么要有这些?
| 信息类型 | 用途 |
|---|---|
| 家庭成员 | AI 才知道哪些事情可以提醒"告诉家人" |
| 作息 | AI 才知道什么时候该发提醒、什么时候不该打扰 |
| 平台身份标识 | AI 才知道怎么验证"这个发消息的人是不是用户本人" |
| 地址 | AI 才知道怎么规划行程 |
| 沟通偏好 | AI 才知道用户喜欢"直接"还是"详细" |
这些不是"数据采集",而是"行为上下文"——AI 助手要做出正确的判断,必须知道用户是谁。
但 USER.md 不是把所有信息都堆在一起,而是有准入规则:
✅ 进 USER.md:
- 居家住所 / 工作单位 / 紧急联系人 / 隐私敏感身份标识
- 用户主动显式指示写入的信息
- 跨多事件会反复引用的核心信息
❌ 不进 USER.md:
- 单次出行的辅助信息(即使长期有效)
- 用户日常活动范围中"非核心高频"的地点
- 临时/边缘/试用中的信息
核心原则:「跨多事件核心」 vs 「单次事件辅助」。前者进 USER.md,后者放 memory/places/ 等子目录。
| 信息类型 | 路径 |
|---------|------|
| 当日临时 | `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 个都该写?
情境:家庭群里,配偶发消息问"米罗今天忙不忙?"(米罗不在群里)
| 步骤 | 文件 | 决策 |
|---|---|---|
| 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 个文件位于本目录:
| 文件 | 核心职责 | 脱敏版字数 |
|---|---|---|
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. 先写 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】 占位符。