那个因为”手写代码”而被拒绝 PR 的工程师——以及他用来取代手写的工作流

AI 原生工程:走进 Boris Cherny 的 Claude Code 工作流
⚡ 一个改变一切的被拒 PR
想象这样一个场景:你加入全球最顶尖的 AI 实验室,以资深工程师的身份提交第一个 Pull Request——代码认真、逻辑清晰、考虑周全。结果被拒了。不是因为逻辑有问题,不是因为缺少测试,而是因为:这些代码是你”手写”的。
这不是段子,这是 Claude Code 工程负责人 Boris Cherny 加入 Anthropic 时的真实经历。曾是 Meta 最多产工程师之一的他,发现自己置身于一个以 AI 生成代码为默认基线的环境。那个手写的 PR,是他还没完成思维转变的信号。
这次被拒,成了后来一切的起点——一套能够每天提交 20 到 30 个 PR 的工作流,以及一种正在悄然重塑软件工程方式的 AI 原生哲学。
🚫 核心错误:把 AI 关进盒子里
Claude Code 的前身是一个内部原型,代号 Clyde。在早期设计中,Boris 犯了几乎所有工程师都会犯的错误:他试图限制 AI 能做什么。
那时 AI 工具的主流范式是插件模式——高亮一段代码,让模型补全或解释,得到答案。AI 是一个被框在窄道里的助手。Boris 最初的直觉是把这条窄道形式化,给模型结构化的输入和受控的输出。
结果不灵。模型像是被捆住手脚。
突破来自于彻底放弃控制。团队不再告诉 AI 怎么解决问题,而是给它工具——Bash 执行权限、文件系统访问、运行任意程序的能力——然后退后一步,看它怎么做。
“别把它关在盒子里。给模型工具,让它自己跑程序。”
差别立竿见影。一次早期测试中,研究员问 Clyde:”我现在在听什么歌?”这个问题没有明显的 API 可用。但模型没有抱怨缺少上下文,它自己写了一段 AppleScript 查询本地播放器,用 sed 处理输出,返回了歌名。
没人告诉它这样做,没人想到过这个方案。模型用被授予的工具,推理出了一条完全自主的解题路径。
Boris 把这称为应用于 Agent 设计的苦涩教训(Bitter Lesson):通用能力配上真实工具,几乎总能胜过精心设计的窄域系统。
🎼 并行 Agent 工作流:指挥家模式
一旦接受 AI 应该有自主权,下一个问题就是:如何把它规模化?
Boris 的答案是他所说的指挥家模式——工程师不再是打字员,而是同时调度多个 AI Agent,每个 Agent 在独立分支上工作,接受高层次任务描述,工程师在它们之间轮转。
这套设置刻意保持低技术复杂度:
- 在 tmux 中开启 5 个终端标签页(或用 Git Worktree 做完全隔离)
- 每个标签页启动 Claude Code,进入计划模式(按两次 Shift+Tab)
- 向每个 Agent 描述任务
- Agent 1 在思考或执行时,切换到 Agent 2 分配新任务
- Agent 1 需要决策时再切回来
1 | [标签1] Claude Code — feature/auth-refresh → 执行中 |
在这个循环里,工程师的工作不是实现,而是定义类型签名——明确正确输出的形状——以及在 Agent 提出决策时做判断。认知负载从”写代码”转移到了”判断代码”。
这正是指挥家比喻的精髓。指挥家不演奏乐器,他们把整部作品的结构装在脑子里,向拥有深度专业技能的演奏者传达意图,实时做出关于节奏和重点的决策。这,现在就是工程师的工作。
🔬 规模化质量控制:当 80% 的代码由 AI 生成
在 Anthropic 内部,约 80% 的代码由 Claude Code 生成。这带来一个显而易见的问题:当代码库的大部分不是人类打出来的,质量如何保证?
Boris 的答案是分层的:
第一层 — Agent 自我闭环。 Claude Code 在提交前自己编写并运行测试。对 Claude Code 自身的修改,甚至包括用模型测试模型的端到端测试。
第二层 — Best of N 审查。 PR 提交后,多个审查 Agent 并行独立运行,各自评估变更,再由一个去重 Agent 汇总结果。这能拦截约 80% 的低级 Bug,在人类看到代码之前就过滤掉。
第三层 — 动态 Lint 规则。 某类错误反复出现时,Boris 不写 ticket,而是让 Claude 直接写一条 Lint 规则,从源头杜绝同类问题。质量系统本身也是 AI 生成的,且持续自我扩展。
第四层 — 人类终审。 尽管自动化程度极高,进入生产的每个 PR 仍需人类工程师最终拍板。不是因为自动化不够好,而是因为责任和判断属于人,不属于工具。
注意:这不是完全自动化。人没有被移出循环——人在循环中的位置变了。从编写者变成审查者,从实现者变成决策者。
🖨️ 印刷术时刻
Boris 用了一个历史类比,值得比通常给予的更多关注。
15 世纪,识字和抄写是稀有的特权。抄写员在信息经济中占据核心位置——他们通过控制谁能生产和复制文本来控制知识的流通。然后古登堡发明了活字印刷。
抄写员没有消失。抄写的功能——对文本的细心专业处理——成了作家、编辑和出版商的基础。印刷术没有缩小识字的市场,而是让它爆炸式扩张。
“我们就像 15 世纪的抄写员。那些以前不会写代码的人——CEO、PM、设计师——就像那些不识字的国王。他们正在开始’识字’了。”
在 Anthropic 内部,几乎 100% 的非工程师现在都在用 Claude Code 构建自己的东西——工具、工作流、原型——而这些以前都需要专门的工程资源。软件创作的总量在扩张,不是在收缩。
实际含义:AI 编程工具不是对工程就业的整体威胁,而是对工程作为瓶颈的威胁。蛋糕在变大,问题是工程师在更大的蛋糕里扮演什么角色。
🔄 技能的重新分配
这引出了对话中最让人不舒服的部分:现在到底哪些技能值得投入?
Boris 对正在贬值的技能直言不讳:
- 框架偏好。 你喜欢 React 还是 Vue,
fastapi还是gin,每个月都越来越不重要。AI 可以在数小时内用不同框架重写一个前端。对某个特定工具细节的专门知识,正变得越来越无关紧要。 - 语法记忆。 能够从头脑中写出样板代码的能力不再是技术信号,越来越只是”没在用正确工具”的信号。
正在升值的能力:
- 系统化调试思维。 能够假设”为什么出错”——而不只是”哪里出错”——更难被自动化。用科学方法逼近问题的工程师,会持续保持不可替代性。
- 跨领域广度。 Boris 描述的新理想是”一人公司”工程师:有全栈技术深度,同时有足够的业务、设计或领域知识来独立做产品决策。AI 扩大了一个人能构建的边界,广度决定这个人选择构建什么。
- 高频上下文切换能力。 同时管理五个 Claude Code Agent 是一种与深度单任务专注完全不同的认知技能。能够在多条并行工作线之间快速做出高质量决策——而不丢失任何一条的状态——正是并行工作流所要求的。
🧠 智识上的谦逊
Boris 最后还说了一句话,值得认真停留一下。
他坦承,连他自己都感到模型进步的速度令人眩晕。六个月前尝试过、认为行不通而放弃的方案,用现在这代模型已经可行了。这意味着,那些早期实验、失败、并由此得出固定结论的工程师,现在可能携带着关于 AI 能力的错误信念——而这些信念正在限制他们的有效性。
“智识上的谦逊,比过去的经验更重要。”
这是对经验作为资本的直接挑战。在大多数工程场景中,做过某件事是一种优势。在基础能力以超出任何人跟踪速度持续提升的领域,做过某件事并且失败了,有时反而是劣势——如果那次失败导致了固化的结论。
正确的姿态,Boris 认为,是把你对 AI 能力的心智模型视为需要持续更新的变量,而不是可以依赖的常量。
✅ 总结
Boris Cherny 的故事,核心不是生产力指标——每天 30 个 PR 是一个引人注目的数字,但它是症状,不是重点。重点是:一种关于编程是什么的不同心智模型,已经在全球最领先的工程组织之一扎根。
在那个模型里,工程师最核心的贡献不是代码,而是判断——判断构建什么、如何验证、何时信任输出、何时推翻。打字这件事,从来都是工作中最不有趣的部分。现在,它变成了可选项。
在这种环境中蓬勃发展的工程师,是那些认识到放下键盘不是失去身份、而是把注意力重新分配到始终更有价值的事情上的人。
你的工作流里已经在跑并行 Agent 了吗?还是这个想法感觉太难管理了?在 AI 原生开发的转型中,你遇到的最大心理障碍是什么?欢迎在评论区分享。
评论