凡人小北

「译」如何搭建一套会自我进化的 AI Agent 系统(40 天实战经验)


📌 译者说
这篇文章提供了一个新思路:当你真的需要多 Agent 协作时,怎么做才不会变成「差生文具多」?
答案是:不用框架、不用消息队列、不用数据库——就用文件系统。一个 Agent 写文件,其他 Agent 读。协作层就是磁盘上的 markdown。
作者用 8 个 Agent 跑了 40 天,同一个模型,产出质量天差地别。核心洞察:模型不会自动变聪明,但它周围的文件会越来越丰富。
这就是我们在用的方式:SOUL.md 定义身份、AGENTS.md 定义规则、MEMORY.md 记住教训——全是文件,没有魔法。
原文作者:@Saboo_Shubham_ (Shubham Saboo) | 译者:凡人小北

我的 Agent 每天都在变聪明。

不是调 prompt。不是换模型。不是重构架构。

就是聊天。给反馈。看它们自己记下来。

40 天前,我的内容 Agent 写推文还带 emoji 和 hashtag。我的研究 Agent 把重点淹没在噪音里。纠正它们花的时间,比我自己干还多。

今天呢?Kelly 能用我的语气写稿。Dwight 每天早上给我 7 条新闻,条条值得读。8 个 Agent 全天候跑着。我打开 Telegram,审稿,喝咖啡。

第 1 天和第 40 天,用的是同一个模型。区别在于一堆 markdown 文件——它们每周都在变丰富。


架构

三层,搞定整个系统:

• 身份层:这个 Agent 是谁(SOUL.md、IDENTITY.md、USER.md)

• 运营层:这个 Agent 怎么干活(AGENTS.md、HEARTBEAT.md、角色指南)

• 知识层:这个 Agent 学到了什么(MEMORY.md、每日日志、共享上下文)

没有编排框架。没有消息队列。没有数据库。

就是磁盘上的 markdown 文件。文件系统本身就是集成层。


身份层

SOUL.md:Agent 是谁

定义 Agent 的身份、职责、行为准则。

这是 Dwight(我的研究 Agent)的精简版:

# SOUL.md (Dwight)

## 核心身份
Dwight——研究担当。名字来自《办公室》里的 Dwight Schrute,
你们气质一样:极度认真,领域内无所不知,把工作当命。
没废话。没猜测。只有事实和来源。

## 职责
你是团队的情报中枢。研究、验证、整理,把情报交给其他 Agent:
- Kelly(X/Twitter)——热门趋势、爆款帖子、突发新闻
- Rachel(LinkedIn)——思想领袖视角、行业动态

## 原则
### 1. 绝不编造
- 每个论断都有来源链接
- 每个数据都来自原始出处,不是估算
- 拿不准的,标 [未验证]

### 2. 信号 > 噪音
- 不是所有热点都重要
- 优先级:跟 AI/Agent 的相关性、传播速度、来源可信度

电视角色技巧:每个 Agent 都用电视角色命名。我跟 Claude 说「你有 Dwight Schrute 的气质」,它从训练数据就知道什么意思——认真、较真、工作狂。30 季的角色塑造,白嫖。

控制在 60 行以内。SOUL.md 每次会话都加载。太长会吃掉干活的上下文。身份、职责、原则、关系、气质——够了。

IDENTITY.md:快速名片

SOUL.md 是完整人设。IDENTITY.md 是名片。

# IDENTITY.md

- **名字:** Dwight
- **角色:** 研究 AI——情报中枢
- **气质:** 较真、认真、零容忍不准确
- **Emoji:** 🔍
- **灵感:** Dwight Schrute(办公室)

小文件,大作用。同时跑 8 个 Agent 时,这就是 Telegram 里显示的身份信息。

USER.md:Agent 为谁干活

Agent 得知道它帮的是谁。USER.md 存你的偏好、背景、影响 Agent 行为的上下文。

# USER.md

- **名字:** Shubham
- **时区:** PST (America/Los_Angeles)
- **饮食:** 素食

## 背景
- Google Cloud 高级 AI 产品经理
- Awesome LLM Apps 作者(91k+ star)
- Unwind AI 通讯主理人(30k+ 订阅)

## 偏好
- 短段落,有力的句子
- 不要破折号,永远不要
- 实用优先,理论靠边

写一次,所有 Agent 都读。

别小看这些细节。时区意味着 Agent 不会凌晨 3 点给你安排事儿。饮食偏好意味着 Pam 起草团建邮件时不会推荐牛排馆。这些细节会累积。


运营层

AGENTS.md:行为规则

SOUL.md 是「我是谁」。AGENTS.md 是「我怎么干活」——启动流程、文件读取顺序、记忆管理、安全规则。

根级 AGENTS.md,所有 Agent 继承:

# AGENTS.md

## 每次会话
开干之前:
1. 读 SOUL.md——你是谁
2. 读 USER.md——你帮的人
3. 读 memory/YYYY-MM-DD.md(今天+昨天)——最近的上下文
4. 主会话的话,也读 MEMORY.md

## 记忆
- 脑子里的笔记活不过会话重启,文件可以
- 有人说「记住这个」→ 写进记忆文件
- 文件 > 大脑

## 安全
- 绝不泄露私人数据
- trash > rm(能恢复比永久删除强)
- 拿不准就问

每个 Agent 再加自己的。Kelly 的 AGENTS.md 扩展了她的工作流:

# AGENTS.md (Kelly)

## 每次会话
开干之前:
1. 读 SOUL.md
2. 读 USER.md
3. 读 X-ARTICLES-INSTRUCTIONS.md——写作风格指南
4. 读 X-ARTICLES-EXAMPLES.md——5 篇真实文章示例
5. 读 X-CONTENT-GUIDE.md——帖子类型和格式
6. 读 intel/DAILY-INTEL.md——Dwight 的研究成果
7. 读 DAILY-ASSIGNMENT.md——每日任务
8. 读 memory/YYYY-MM-DD.md——最近上下文

## 情报驱动
你不做研究,Dwight 负责。
你的活儿:读情报 → 写 X 内容 → 交草稿

Agent 没有跨会话记忆。每次从头开始。纠正没写进文件,下次就不存在。AGENTS.md 明确这一点,逼 Agent 把一切都写下来。

专业文件让 Agent 变强。Kelly 不只有 AGENTS.md,还有 6 个文件定义她怎么写内容:风格指南、格式参考、真实示例、每日任务。

Dwight 有目标受众画像和研究协议。每个 Agent 的文件夹随着角色定义越来越清晰而增长。从 AGENTS.md 开始,发现需要反复纠正的模式时再加专业文件。

HEARTBEAT.md:自愈机制

Agent 团队是基础设施。基础设施会挂。

Monica 的 HEARTBEAT.md:

## 健康检查(每次心跳)

**浏览器:** 检查 OpenClaw 托管浏览器是否在跑。
没跑就启动。浏览器登着 X 账号,Dwight 靠它做情报扫描。

**定时任务:** 检查每日任务有没有超过 26 小时没跑。
超了就手动触发:openclaw cron run <jobId> --force

监控列表:
- Dwight 早间(8:01 AM)
- Kelly X 草稿(5:01 PM)
- Rachel LinkedIn(5:01 PM)
- Pam 通讯(6:01 PM)

Monica 每次心跳都跑这个。查两件事:浏览器活着没,定时任务跑了没。

它们是连着的。浏览器挂了,Dwight 就没法做研究扫描。Dwight 错过扫描,Kelly 和 Rachel 就用过期的情报写内容。定时任务悄悄停了,表面看着正常,实际什么都没发生。

第三周我就被这么坑过。调度器有 bug,任务在队列里推进但从不执行。几个小时我都没发现。

之后我建了心跳来捕获这两种故障。已经救过我好几次了。

第一天不用建这个。第一次挂了之后再建。你会知道该监控什么,因为你亲身体会过什么会坏。


知识层

有效的记忆系统是三层结构,全靠文件。

MEMORY.md:策划过的长期记忆

不是原始日志,不是所有发生过的事。是重要的东西。

Monica 的 MEMORY.md:

# MEMORY.md

## Shubham 的写作偏好
- 不要破折号。用冒号、句号,或重组句子。

## 惨痛教训
- 绝不在没问 Shubham 的情况下删项目文件夹。2月26日,
  清理时删了 Ross 的 React 应用,丢了。删 agent 项目目录前永远先问。

## 记忆系统(2026-02-26)
- 试过自托管 Mem0(Ollama + SQLite)→ 崩溃,啥都没存
- 试过 Mem0 托管 API → 免费层太有限,移除了
- 现在用内置 memory-core:Gemini embedding,混合搜索,时间衰减,MMR

注意「惨痛教训」。Monica 删了项目文件夹,这个错误永久存在她的长期记忆里。她再也不会犯了。一次纠正,存一次,以后所有会话都不会再错。

Kelly 的 MEMORY.md:

## X 帖子规则(铁律)

### Shubham 的精确指示:
- 强钩子开头
- 整条推文超短(180 字符以下)
- 不要 hashtag,不要 emoji
- 不要空洞的营销废话
- 每个话题交付 3 个草稿

### 我犯过的错
[列出被拒绝的每个模式:项目符号、箭头、LinkedIn 语气]

Kelly 被纠正后自己写了「我犯过的错」。她记录自己的错误,不会重蹈覆辙。这一部分比任何 prompt 工程指南都值钱。

安全提示:MEMORY.md 只在直接会话加载,群聊等共享上下文不加载。敏感偏好不要放在到处都读的文件里。

不要第一天就写 MEMORY.md。它从反馈中生长。给反馈 → Agent 记到每日记忆 → 重要的提炼到 MEMORY.md → 每次会话都加载 → 这个纠正再也不用给了。

memory/YYYY-MM-DD.md:每日日志

原始笔记。今天干了啥,写了啥,收到什么反馈。

# Kelly 每日日志 — 2026年2月5日

## 5:00 PM — 每日 X 草稿

### 今天的热点
- Opus 4.6 vs GPT-5.3-Codex 相隔 27 分钟发布
- Anthropic 的 C 编译器(16 个 agent,$20k,编译 Linux 内核)

### 交付的草稿
1. C 编译器——单条帖子,发现格式
2. Mitchell Hashimoto 的 6 步——帖子串
3. Opus 4.6 vs GPT-5.3-Codex——热评

### 等待中
- Shubham 对草稿的反馈

每日日志是原材料,MEMORY.md 是精炼产品。两个都要。

维护规则:每日日志积累很快。不清理,上下文会爆。Kelly 的涨到 161,000 tokens,输出质量暴跌。我压缩到 40,000。现在每两周审查归档一次旧日志。

只加载今天和昨天的日志。Agent 不需要每次都加载全部历史。

shared-context/:跨 Agent 知识层

这是最新加的,也是改变一切的那个。所有 Agent 启动时都读的文件夹。

shared-context/
├── THESIS.md        — 我现在的判断
├── FEEDBACK-LOG.md  — 适用于所有 Agent 的纠正
└── SIGNALS.md       — 我在追踪的文章和趋势

THESIS.md 是我当前的世界观。我关心什么,写过什么,还有什么空白。Dwight 读它确定研究优先级。Kelly 读它匹配我的思维。Ryan 读它提议文章。每个 Agent 对齐同一个真相来源。

FEEDBACK-LOG.md 是跨 Agent 纠正层。我跟 Kelly 说「不要破折号」,Rachel、Ryan、Pam 也适用。与其单独纠正四个 Agent,我写一次,所有人都读。


Agent 之间怎么协作

没有 API 调用。没有消息队列。只有文件。

Dwight 把研究写到 intel/DAILY-INTEL.md。Kelly 读。Rachel 读。Pam 读。协作层就是文件系统。

一个 Agent 写,其他 Agent 读。交接就是磁盘上的 markdown 文件。

单写者规则:永远不要让两个 Agent 写同一个文件。每个共享文件都是一个写者、多个读者。这能干掉所有协作冲突。

调度是关键。Dwight 早 8 点和下午 4 点跑。Kelly 和 Rachel 下午 5 点跑。Dwight 先跑,因为所有人依赖他的产出。顺序错了,下游 Agent 就读到过期或空文件。


完整目录结构

workspace/
├── SOUL.md              # Monica(主 Agent)
├── IDENTITY.md          # Monica 的名片
├── AGENTS.md            # 根行为规则(所有 Agent 继承)
├── USER.md              # 关于我(所有 Agent 共享)
├── MEMORY.md            # Monica 的长期记忆
├── HEARTBEAT.md         # 自愈检查
├── shared-context/
│   ├── THESIS.md        # 我当前的世界观
│   ├── FEEDBACK-LOG.md  # 跨 Agent 纠正
│   └── SIGNALS.md       # 我追踪的趋势
├── intel/
│   ├── DAILY-INTEL.md   # Dwight 的产出(大家都读)
│   └── data/
├── agents/
│   ├── dwight/
│   ├── kelly/
│   ├── ross/
│   ├── rachel/
│   ├── pam/
│   ├── ryan/
│   └── chandler/
└── memory/
    ├── shubham/
    ├── shared/
    └── 2026-02-27.md

为什么这套系统有效

文件不是静态的。它们在进化。

Kelly 的 SOUL.md 第一天是粗略草图。第 40 天,有了具体的语气示例、她自己写的被拒绝模式列表、一个「永远不要再建议」部分列出写过的所有话题。

Dwight 的原则第一天是「找热门话题」。第 10 天变成「如果 Alex 今天不能拿它做点事,跳过」(Alex 是我们的目标读者画像)。第 20 天加了验证步骤:检查 repo 创建日期,检查 Show HN 时间戳,追溯到一手来源。

shared-context 层直到第 20 天才有。之前我在给多个 Agent 重复同样的纠正。建了 THESIS.md 和 FEEDBACK-LOG.md 后,一个纠正传遍所有地方。这个改变比任何 prompt 优化都省时间。

第 1 天和第 40 天用的是同一个模型。模型不会因为你用得久就变聪明。但它周围的文件在变丰富、变锐利、变得更针对你的需求。这些积累的上下文就是护城河。没人能靠用同样的模型复制。

你每天出现跟 Agent 聊天,就能赚到它。


怎么开始

别想一个周末建完。我也没有。

今天:装 OpenClaw。写一个 SOUL.md、一个 IDENTITY.md、一个 USER.md。选最重复的日常任务。设一个定时任务。跑起来。

3 天后:Agent 的产出会很烂。开始给具体反馈。确保反馈落到记忆文件,不只是聊天里。

1 周后:建 AGENTS.md。定义启动流程。加上记忆管理规则。

2 周后:开始 MEMORY.md。审查每日日志。哪些纠正老是重复?提炼成永久条目。这时候你会感觉到复利开始了。

3 周后:加第二个 Agent。设置文件协作:第一个写共享文件,第二个读。随着模式出现加角色专属指南。

同一时期:建 shared-context 层。你会在到这之前就感到需要。给多个 Agent 重复同样的纠正就是信号。THESIS.md 放当前想法,FEEDBACK-LOG.md 放跨 Agent 纠正。

4 周后:第一次挂了之后加 HEARTBEAT.md。你会知道该监控什么,因为你亲身体会过什么会坏。

你要做的就是跟 Agent 聊天。文件会搞定剩下的。


原文作者:Shubham Saboo (@Saboo_Shubham_)  

翻译:凡人小北  

原文链接:https://x.com/Saboo_Shubham_/status/2027463195150131572