如何用一个文件夹的文本文件搭建九人工程团队

How to build a nine-person engineering team out of a folder of text files

中文译文 · 15k 字

一句话摘要

用文本文件构建 AI 工程团队

如何用一个装满文本文件的文件夹组建一支九人工程团队 2026年7月21日 · 14分钟阅读 · 查看原文 ↗ Claude AI Automation ![Cover image](https://pbs.twimg.com/media/HNrMTpDWwAE93BZ.jpg) > 两年来,从 AI 身上榨取更多产出,就意味着一个聊天窗口、一个你需要不断纠正的助手。 最优秀的构建者们已经悄悄不再这么做了。 在 **2026 年 3 月**,Andrej Karpathy 把一个 AI 工人(一个 agent)指向了他亲手调了二十年的训练代码,然后去睡觉,醒来时发现了二十处他自己漏掉的改进。Claude Code 的缔造者 Boris Cherny 已经有八个月没有亲手写过一行代码;有些早晨,他同时运行着几百个 agent。如今,一位典型的 Anthropic 工程师每天交付的代码量,大约是 2024 年的八倍。 他们谁也没有打出什么更聪明的字。他们干脆不再打字,转而开始经营团队。一个 agent 只是一个 AI 工人——你把活交给它,让它自己跑:它是一名员工,而不是一个你需要坐下来盯着伺候的聊天窗口。 这个团队就是一个装满文本文件的文件夹。一个文件就是一名工人。放进一个文件,你就等于招了一个人。 这就是全部构造:这些文件、让九名工人成本低于一名的钱,以及让它们保持诚实的两条规则。一名工人简单到今晚就能搭起来;整个团队不过是把那名工人复制一遍。如何用一个装满文本文件的文件夹组建一支九人工程团队 在开始之前,我每天都会在 X 和我的 Telegram 上发布这些实验的构建、失败和数字。两者都免费。 X - [https://x.com/Argona0x](https://x.com/Argona0x) Telegram - [https://t.me/+r0clI4-MMC03ZjAy](https://t.me/+r0clI4-MMC03ZjAy) ## 为什么文件夹胜过框架 人们一旦决定运行不止一个 agent,就会伸手去拿一个框架:一个庞大的预建系统,有很多你需要设置并让它保持运行的部件。CrewAI。LangGraph。AutoGen。首页上有一张示意图,画着小 agent 们互相传递工作。 > 你一个都不需要。 一支 agent 团队就是一个文件夹。每名工人是里面的一个小文本文件,不需要安装任何东西,也不需要维持任何东西运行。没有需要学习的库。文件夹就是组织结构图:想看看谁在为你干活,打开它、读读文件名就行。 ![Article image](https://pbs.twimg.com/media/HNrPJ6OXYAA1lms.jpg) — "VS Code 文件资源管理器,显示 .claude/agents 目录,其中包含 worker-1.md 到 worker-9.md、checker.md、gate.md、reviewer.md" ## 一个文件就是一名工人 招人所需的时间,大约和写下这句话一样长。 一名工人就是一个单独的文件。它有名字、它运行所用的模型,以及一段简短的工作描述。这里有一个真实的例子——一名 reviewer,它的全部工作就是读一处改动,并报告它哪里有问题: ```python --- name: reviewer description: Reviews a change against its job description. Reports problems only. tools: Read, Grep, Bash model: sonnet --- You review one change against one job description. List only real problems: work claimed but not done, files touched outside scope, tests changed just to pass, errors left unhandled. Name the file and the one-line fix. Do not praise. Do not soften. ``` Read、Grep、Bash 只是我们允许它执行的动作:查看文件、在文件里搜索、运行命令。sonnet 是我们为它选的大脑,而那三种大脑和它们的价格稍后再讲。 把它作为文件存进文件夹,你就招到了一个人。无需注册、无需服务器、无需框架来支撑它。文件就是这名工人。删掉文件,它就消失了。复制它、重命名它、改一行,你就用更便宜的模型雇到了它的双胞胎。 一个孩子都能打开那个文件夹,告诉你谁在那儿干活。这正是关键所在。六周之后,你也能做到。 ## 每支团队都需要的三种文件 一支团队需要三种工人。把一名工人复制九次,你就会得到九个同样的盲点,每一个都以同样的方式漏掉同样的东西。 **worker** 负责干活。它写代码、运行命令、做出改动,又快又便宜,只对准一个小任务,别的什么都不管。快手。除此之外对别无所求。 **checker** 读 worker 做了什么,并搜寻其中哪里出了问题。它是另一个工人,有另一个任务:找出第一个工人用嘴皮子糊弄过去的漏洞。 **gate** 拥有最终决定权。gate 是一个只回答通过或不通过的 checker,除非它说通过,否则什么都不许交付。 ![Article image](https://pbs.twimg.com/media/HNrQfLtXAAA45GB.jpg) — "示意图:worker 跑在 haiku 上,checker 跑在 sonnet 上,gate 跑在 opus 上,从左到右依次相连" 现在说说 checker 永远不能同时也是 worker 的原因。一个刚花了一个小时砌墙的人,是最不适合去验收这堵墙的人,因为他已经相信墙是直的,目光会径直滑过他亲手砌歪的那一块砖。让一个工人检查它自己的产出,它检查的是它想要构建的东西,而从来不是它实际构建的东西。 所以你有意把工作一分为二。一个工人干活快、有点马虎。另一个慢、严格,而且拿钱就是为了不信任。一个负责制造,一个负责怀疑。 干活的那个人,恰恰是最差劲的评判者。 ## 给每名工人一份自己的副本 两名工人在同一秒打开同一个文件。双方都读了它。双方都编辑了它。双方都保存了。其中一个获胜,另一个人的工作就彻底消失了,而输掉的那名工人仍然报告"完成",因为在它自己的脑子里,它确实做了工作。 这就是当九名工人共用同一份代码副本时会出现的故障。这是一场你永远听不到的崩溃。 解决办法是 git(那个保存你文件每个版本的工具)里一小块大多数人从未碰过的功能。一个 worktree 会给每名工人一份自己的工作空间副本。底下是同一栋房子,房间彼此分开,所以谁也不会把别人的活儿粉刷掉: ``` git worktree add ../repo-worker-1 -b worker-1 git worktree add ../repo-worker-2 -b worker-2 git worktree list git worktree remove ../repo-worker-1 ``` 现在每名工人在磁盘上都有自己的文件夹、自己的分支、自己可以随便折腾的文件,而所有这一切底下坐着一个共享的 git 仓库,保存着一份干净的历史。合并的动作发生在稍后,发生在你能亲眼看着的明处。 ![Article image](https://pbs.twimg.com/media/HNrQ6i3WIAAjlwp.jpg) — "终端:git worktree add 命令和 git worktree list,显示每名工人各自独立的路径" 现在九名工人可以在同一秒写入,而且谁也不会悄悄丢掉自己的工作。 代价只是磁盘空间,别无其他。几个文件夹里多几份代码副本,你的笔记本电脑根本不会察觉,而换来的却是九名工人同时运行,而不是轮流排队、互相覆盖。 ## 六字段的工作描述 "修复这个 bug。"三个函数坏了。它修好一个,报告完成。它没有撒谎。 这名工人确实干了真活。它找到了一个 bug 并干净地修好了。只是这个任务从未告诉它其实有三个,于是它能停下来的第一个地方就成了终点线。一个含糊的任务,等于给了诚实的工人提前收工的许可。 更长、更详细的提示词并不能弥合这个缺口。能弥合它的是别的东西:一条工人无法造假的终点线。六个字段,粘贴在你交给它的每份工作最前面: ```python GOAL: what must WORK when you are done, not what to do DONE WHEN: pytest tests/auth -q exits 0 and mypy src/auth reports no errors SCOPE: src/auth/**, tests/auth/** OUT OF SCOPE: migrations/, anything under infra/, any file outside SCOPE ON CONFLICT: flag it and stop. Never resolve silently. STOP: 6 turns, or $2 of spend, whichever comes first. Then report. ``` 真正挑大梁的那一行是 **DONE WHEN**。用大白话说,那个例子就是在讲"运行登录检查,带着零错误回来":pytest 和 mypy 是两个小的检查程序,而 "exits 0" 是它们表达"一切正常"的方式。它指向一条工人必须真正去运行的命令,而不是一种它能靠嘴皮子说服自己的感觉。然后再来一行,把它从一种希望变成一份承诺: ```python PROOF: paste the full output of the DONE WHEN command, word for word, exit code and all. If you cannot run it, paste the failures and stop. ``` "测试通过就算完成"是一句愿望。"测试通过、并把结果贴在这里才算完成"是一份契约。在工人被允许打出"完成"二字之前,它现在必须把命令自身的输出逐字逐句、连同退出码一起展示给你:命令自己做出的裁决,就摆在报告里,供你亲眼阅读。 ## 让九名工人比一名更便宜的那个诀窍 > 九个会让我破产。 大多数人就是在这里悄悄把这个念头搁下的。一个聊天窗口里用一个好模型,就已经是一笔实打实的账单了。一次九个,听起来就像你宁愿不要看到的数字。 这种恐惧是真诚的。但恐惧底下的算术是错的。 这是价格,按每百万词输入输出计算。共三档。Haiku 是便宜的那档,输入 $1、输出 $5,Sonnet 往上高一级,是 $3 和 $15,而 Opus 这个昂贵的家伙,则是 $5 和 $25——无论输入还是输出,都是 Haiku 价格的整整五倍。 诀窍就是几乎从不运行那个昂贵的。你的 workers 跑在 Haiku 上,因为大多数工作又小又重复,不需要沉重的推理。checker 跑在 Sonnet 上。Opus 则完全置身于工作之外,处于沉睡状态,只有当同一任务的检查连续两次报红时才会醒来。大概四十次调用里才有一次。 还有一件事能让这个数字保持低水平。当一名工人在每一轮都重读同样的规则和同样的工作时,这种重复的阅读只需花正常价格的十分之一。第一次全价,之后每一次都是十分之一。 把它们加起来看。上个月:九名工人、大约六百个任务,**总共 $186.40**。其中,那个吓人的 Opus 只花了 $22.15。 ![Article image](https://pbs.twimg.com/media/HNrRgoZWIAAksd2.jpg) 九名工人的花费,依然低于它们所取代的那一个漫长班次,而原因很无趣。当你的最贵模型被对准每一个任务时——哪怕是几百个便宜档位几秒就能搞定的小任务——账单就会一路飙升。 让模型去匹配工作。 九双手比一双手更便宜。 ## 如何在不盯着的情况下让它们保持诚实 这是让你能合上笔记本走开的那部分。有两个动作,能让一名工人被单独留下时也足够安全。 你写了一条规则。你把它放进一个文件里、靠近顶部、加粗:永远不要对生产环境运行 migration(一种改变数据存储方式的改动)。工人读到了它。然后它照样运行了 migration,还给你写了一段从容的文字,解释为什么这一次情况不同。 一条躺在文本文件里的规则,就是墙上的一块告示牌。工人读这块牌子,把它和它正试图完成的所有其他事情放在一起权衡,而在足够漫长的任务里,它会认定你的牌子不过是个建议而已。 所以你把规则移到模型底下,移进那个它无法辩驳的地方。一个 hook 就是一个门卫,在命令运行之前先检查它。工人请求运行某个东西,门卫先看一眼,于是坏命令永远到不了门口。 **在 Claude Code 里**,这个门卫是一个小脚本。它在命令之前运行,退出码 2 意味着被拦截: ```python #!/usr/bin/env bash # guard.sh - block dangerous shell calls before they run. # Wire as a PreToolUse hook on Bash. Exit 2 = the call is blocked. cmd=$(jq -r '.tool_input.command // ""') deny='(rm[[:space:]]+-rf[[:space:]]+/|drop[[:space:]]+table|--force|git[[:space:]]+push.*(main|master)|prod)' if printf '%s' "$cmd" | grep -Eiq "$deny"; then echo "blocked by guard.sh: '$cmd' matches a forbidden pattern" >&2 exit 2 fi exit 0 ``` 你只需接线一次,它就会检查每个会话里的每条命令,无论有没有人记得它的存在: ![Article image](https://pbs.twimg.com/media/HNrRy89WIAA22iu.jpg) — "终端:git push origin main 被 guard.sh 拦截,退出码 2" ```python { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [{ "type": "command", "command": "./guard.sh" }] } ] } } ``` 第二个动作更安静。它讲的是如何逐步培养一名工人,直到你能放心地留它单独运行涉及资金流动的任务——方法是把信任一档一档地发出去。给每名工人一个颜色。 绿色只能提议:它可以建议任何东西,但在你亲自看过这个建议并点头同意之前,它想做的任何一件事都不会真正发生。 黄色可以写,但只能在自己的房间副本里写,暂时哪里都无关紧要。 红色是生产环境、是钱、是任何会离开这栋楼的东西,而红色总是以一个人亲口说"去吧"作为结尾。 一名工人要靠自己一步步爬上去。它从绿色起步。花上一周时间读它实际请求要做的事,每天十分钟,如果它的行动全程都和它的报告吻合,它就赢得黄色。没有人从红色起步,也没有人在你不在回路里的情况下运行红色。 ## 什么时候不该这么做 你想交出去的大部分事情,其实都不该交出去,而一个过滤器能告诉你哪些该、哪些不该。 只有一个过滤器,而一切都压在它上面。只有当一条命令能检查结果、并返回一个干干净净的绿或红、中间不掺杂任何主观判断时,一个任务交给工人才是安全的。测试要么通过,要么不通过。文件要么解析成功,要么卡死。类型检查要么干净,要么不干净。如果评判这份工作的唯一方式是你自己的眼睛去读它,那这个任务就还是留给你自己。 然后是第二个问题:当它出错时,你能不能撤销它。撤销分三个层级,而且它们远非等价。 文件是完全可逆的。Git 保存着每一个版本,你可以在一秒内退回到其中任何一个。 数据库写入只有在运行之前就设置好撤销才可逆——用一个快照,或者一个你先写好回退步骤的 migration。数据库本身没有任何东西会自动往回退。 邮件、扣款、消息、帖子。这些东西一个都回不来,无论出多少钱。一封已发出的邮件,就是发出去了。 这就是为什么红色总是以一个人收尾。当事物已经离开这栋楼之后,一小时后再"你是对的"也一文不值了。 而如果你的工作没有一条能返回绿或红的命令,那上面这一切不过是一种高度有序的、不知道发生了什么的方式。没有那一条命令,你就只是把"感觉完成了"自动化了,仅此而已。 ## 先复制整支团队,再从一个开始 整套班底一张卡片就能装下。截个图吧,因为上面的每一行都是一个你可以打开的文件: 1. **workers:** 跑在 Haiku 上,也就是便宜的那档,干真正的活 2. **checker:** 跑在 Sonnet 上,读每一处改动、找出哪里有问题 3. **gate:** 跑在 Opus 上,那个昂贵的模型,沉睡到某次检查连续报红两次 4. **隔离:** 每名工人一个 worktree,这样谁也不会覆盖谁 5. **律法:** 那个 hook,一个在坏命令运行之前就拦住它的门卫 6. **任务书:** 六个字段加上 PROOF,一条工人无法造假的终点线 7. **汇报路线:** 每名工人向上级汇报给一位管理者,绝不横向汇报给彼此 8. **记忆:** 一个装满笔记的文件夹,这样明天的运行就从今天停下的地方接着开始 > 现在,是那条比卡片更重要的指令。今晚不要把这九个全搭出来。 挑出那一件你反复做、最烦人、再也无法忍受再做一次的事。把你手工做它的步骤写下来,先让一次人工运行从头到尾可靠地跑通,只有到那时,才把它包进一个 worker 文件里——一份工作描述、一条它必须满足的 DONE WHEN 命令。 一名诚实的工人,就是这门手艺的全部。一旦你有了它,第九个不过是第一个复制、改个名字罢了。 开头那些构建者做了一件你今天晚上就能照抄的事。他们不再死盯着一个窗口,而是让一个文件夹去干活。 如果你想趁它还安静的时候赶上下一场构建,我在这里: X - [https://x.com/Argona0x](https://x.com/Argona0x) Telegram - [https://t.me/+r0clI4-MMC03ZjAy](https://t.me/+r0clI4-MMC03ZjAy) 标签:# X # Claude # AI # Automation # Guide # Sonnet 相关文章 10 个 SEO 外链 Claude 自动化,3 个月内换来 61k 次 AI 提及 外链建设就是试错。 SEO AI Claude Automation 统治本地 SEO 的指南(用 Claude 自动化) "这是我的网站:[url]。审查我的 Google Business Profile 设置。找出针对我的主关键词在本地排名前三的竞争对手,告诉我他们用的是哪些主要和次要类别,然后给我一个……" SEO AI Automation Claude GROK BOT:如何用 10 步把日常工作交给一个机器人 你至今用过的每一个 AI 工具都在等你。你打开它、你提问、它回答、你关掉它。工作仍然握在你手里,模型只是用嘴陪你走一遍流程。 Grok Bot AI Automation Claude

原文参考:https://maxed.wiki/posts/how-to-build-a-nine-person-engineering-team-out-of-a-folder-of-text-files/ (Maxed.wiki,本页为站内中文整理)