「译」如何搭建一套会自我进化的 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