00 卷首语:当 Karpathy 说他半年没写一行代码
本机暂存
<blockquote><p>"I don't think I've typed like a line of code probably since December, basically, which is an extremely large change."<br>从去年十二月起,我基本上一行代码都没写过,这是一个巨大的变化。</p><p>——Andrej Karpathy,No Priors 播客,2026 年 3 月</p></blockquote><span id="more"></span><h2 id="半年没写一行代码"><a href="#半年没写一行代码" class="headerlink" title="半年没写一行代码"></a>半年没写一行代码</h2><p>2026 年春天的一个午后,Andrej Karpathy 坐在播客录制间里,用他标志性的、几乎不带任何修辞起伏的语调,说出了一句让整个软件行业安静下来的话。</p><p>他已经半年没有亲手写过一行代码了。</p><p>不是两周,不是一个月。是从去年十二月开始,一天都没有。</p><p>在任何一个其他时代,这句话如果出自一位顶尖程序员之口,只意味着一件事:他离开了这个行业。但 Andrej Karpathy——OpenAI 联合创始人、前特斯拉 AI 总监、计算机视觉领域最具影响力的研究者之一——并没有离开。恰恰相反,他正处在职业生涯中产出最高的时期。他以自然语言驱动 AI Agent,完成从创业项目到开源探索的全部开发工作——一人之力推动着过去需要一个完整团队才能完成的迭代节奏。英语成了他新的编程语言,而 AI 成了他的编译器。他只是不再亲手写代码了。</p><p>这是一个关于杠杆的故事。</p><img src="/2026/06/21/karpathy-half-year-no-code-prologue/image-20260523081343679.png" class=""><p>2026 年 5 月 19 日——Karpathy 宣布了一个消息:<strong>他加入了 Anthropic。</strong> "我认为未来几年在 LLM 的前沿将会特别具有塑造性,"他写道,"我非常兴奋能加入这个团队,重新回到研发工作中。我仍然对教育充满热情,并计划在适当的时候继续我的相关工作。"这个消息之所以意味深长,不在于一个人换了东家——而在于这位"半年没写一行代码"的工程师选择加入的公司,正是 Claude Code 的缔造者,而他返回的还是软件开发的前线。从 OpenAI 到特斯拉到独立探索,再到 Anthropic,他的轨迹恰好画出了 AI 软件工程从实验室到产品、从工具到基础设施的完整弧线。</p><p>在那期播客以及随后的多次深度访谈中,Karpathy 展开了一幅比他那句名言本身更为深邃的思想图景。他将软件工程的历史划分为三个时代——<strong>软件 1.0、软件 2.0、软件 3.0</strong>——并以此解释了他所看到的这场变革的本质。</p><p>软件 1.0 是人类编写明确的代码规则。你告诉机器每一步怎么做,机器照做。这是过去半个多世纪的编程范式。软件 2.0 是人类通过创建数据集来训练神经网络,让模型从数据中学到规则。这是过去十年的深度学习范式。而软件 3.0,Karpathy 说,编程变成了**提示(Prompting)**本身——上下文窗口成了控制这个新型计算设备(LLM)的杠杆。他说,LLM 已经不再是传统意义上的"程序",而是一种全新的计算机:你输入一段文本,它输出一段文本,但这中间执行的是人类无法逐行追踪的、基于大规模统计模拟和强化学习的涌现计算。他称之为 <strong>"召唤幽灵"</strong>——我们构建的不是具有动物般内在动力的智能体,而是基于统计模式的模拟产物。它们能在瞬间重构十万行代码或发现零日漏洞,却会在常识问题上给出荒谬的建议。它们的智能是"参差不齐的"(Jagged Intelligence):在可验证的领域(编程、数学)突飞猛进,因为强化学习能给明确的验证奖励;而在不可验证的领域,它们依然脆弱。</p><p>正是基于这种认识,Karpathy 提出了一个他亲自命名的概念区分:<strong>"氛围编程"(Vibe Coding)与"智能体工程"(Agentic Engineering)。</strong> Vibe Coding 的意义在于「拉高下限」——它让任何人,无论是否具备专业背景,都能让 AI 生成一个能跑的应用。这是一种民主化,也是一种诱惑。但 Agentic Engineering 的核心是「守住上限」——它是一门新的工程学科,要解决的问题是如何协调那些强大但带有随机性、容易出错的 AI 智能体,在不引入漏洞、不牺牲质量的前提下大幅提升开发速度。</p><p>Karpathy 的措辞很克制,但判断很锋利:<strong>掌握 Agentic Engineering 的工程师带来的效率提升,将远远超越过去所谓的"10 倍工程师"。</strong></p><p>这意味着人类的角色将发生根本性的重塑。开发者不再需要死记硬背 PyTorch 的张量维度或 NumPy 的 API 细节——这些都可以放权给拥有"完美记忆力"的 AI 智能体。但放手细节的同时,人类必须提升另一个维度的能力:品味、判断力、架构直觉、系统审美。人类与智能体共同制定详细的规格说明,然后智能体来填充底层实现。Karpathy 用了一个工业时代的比喻来总结:<strong>人类不再是打字员,而是工头。</strong></p><p>但他说出的最重要的一句话,也许是这句旁人转述给他的格言:"<strong>你可以外包你的思考,但不能外包你的理解力。</strong>"机器可以生成代码、总结文档、分析数据,但人类始终是那个决定"为什么要建这个系统"和"如何指导智能体"的人。利用 AI 工具来增强自身的理解力,而不是用 AI 来替代自身的思考——这才是 Agentic Engineering 的终极壁垒。</p><!--more--><h2 id="从软件危机到智能体崛起"><a href="#从软件危机到智能体崛起" class="headerlink" title="从软件危机到智能体崛起"></a>从软件危机到智能体崛起</h2><p>过去两年间,软件工程领域发生的变化,比过去二十年加起来还要剧烈。这不是修辞。这是一场从「工具辅助人类」到「人类指导工具」的根本性反转——程度的加深叠加方向的逆转。</p><p>时间线拉长一些,才能看清这件事的历史分量。</p><p>1968 年,北大西洋公约组织在德国加米施召开了后来被载入史册的 NATO 软件工程会议。在那次会议上,"软件危机"(Software Crisis)作为一个正式术语被提出——软件项目的失败率居高不下,成本超支成为常态,交付日期一再推迟。那次会议催生了"软件工程"这个学科本身。当时的解决方案是用工程化的流程约束创造力:瀑布模型、需求规格、阶段评审、文档驱动。</p><p>半个多世纪以来,这个基本框架没有变过。敏捷运动拆掉了瀑布的刚性阶段门,但保留了"人写代码、流程管质量"的核心假设。DevOps 打破了开发与运维的墙,但写代码的人依然是写代码的人。<br> <img src="/2026/06/21/karpathy-half-year-no-code-prologue/image-20260523075424864.png" class=""><br>直到 AI 编码 Agent 的出现。</p><p>2022 年,GitHub Copilot 让程序员第一次体验到了"AI 帮你写下一行"的感觉——它是一个聪明的自动补全工具。2025 年,Claude Code、Codex、Cursor、OpenCode 等一系列工具将这种体验升级为"AI 帮你写一个函数"。到了 进入 2026 年,这些工具已经进化为能够自主理解整个代码库、管理完整开发流程、甚至学习私有 API 和内部框架的工程 Agent。</p><p>变化的斜率不是线性的。它在加速。</p><h2 id="先行者们看到了同一件事"><a href="#先行者们看到了同一件事" class="headerlink" title="先行者们看到了同一件事"></a>先行者们看到了同一件事</h2><p>Andrej Karpathy 不是唯一一个感受到这场震荡的人。如果你仔细聆听,你会发现来自不同背景、不同时代、不同编程哲学的声音正在汇成同一个和弦。</p><p>2025 年,Anthropic 的 CEO Dario Amodei 在一次公开访谈中给出了一个让很多人不以为然的预测:AI 将在三到六个月内编写 90% 的代码,十二个月内编写几乎全部代码。批评者说这是营销。投资者说这是讲故事。但到了 2026 年,这个预测正在被一个又一个的数据点验证。Claude Code 的用户不仅仅是"使用 AI 辅助编码"——他们在与一个能够自主探索代码库、提出架构方案、执行完整功能开发的 Agent 协作。人类工程师的角色正在从"写代码的人"转变为"定义目标、审查产出、做架构决策的人"。</p><img src="/2026/06/21/karpathy-half-year-no-code-prologue/image-20260523081614821.png" class=""><p>Y Combinator 总裁兼 CEO Garry Tan 用一个对比数字让整个硅谷沉默了。他公开了自己作为同一个工程师、同样高强度工作状态下,2013 年和 2026 年的 GitHub 贡献数据:2026 年的逻辑代码行产出是 2013 年的 <strong>八百一十倍</strong>。这不是百分比增长,这是数量级的跃迁。他在全职运营 Y Combinator 的同时,用自己开发的 gstack 方法论,在六十天内交付了三个生产级服务和四十多个功能。他自己这样说:"Same person. Different era. The difference is the tooling."同样的人,不同的时代。差别只在于工具。</p><img src="/2026/06/21/karpathy-half-year-no-code-prologue/image-20260523081109306.png" class=""><p>Garry Tan 的数字让人震撼。2026 年 5 月的硅谷 AI Ascent 大会上,Claude Code 的缔造者 Boris Cherny 给出的画面则让人恍惚。Cherny——Anthropic 的工程负责人(Engineering Lead)、Claude Code 的创造者——走上台,平静地描述了他现在的日常工作:<strong>他不再写代码。他审查代码。</strong> 他曾经同时运行大约一千个 AI Agent,并在一天之内合并了一百五十个拉取请求。今天的开发者,Cherny 说,本质上是一支临时工模型大军的"工程经理"。</p><img src="/2026/06/21/karpathy-half-year-no-code-prologue/image-20260523081945708.png" class=""><p>但 Cherny 也没有回避最棘手的问题:<strong>AI Agent 编写补丁的速度,已经远远超过了人类组织验证它们的能力。</strong> 这就是"验证差距"(Verification Gap)。模型经常在工作真正完成之前表现得"非常自信"——你既不能完全不信任 Agent,那样你会失去速度;也不能完全信任 Agent,那样你会失去质量。他给出的答案简洁得近乎冷酷:<strong>委派任务前的判断力,给予信任前要求证据的能力,合并代码后的责任感。</strong> 敲击键盘的速度和记忆 API 的数量不再重要。判断力、验证力、责任感才是新的硬通货。这三项能力构成了 AI 时代工程师的新技能栈。</p><p>但也许最令人动容的转变来自 Redis 的创造者 Salvatore Sanfilippo——社区里人们叫他 antirez。在程序员群体中,antirez 代表了一种几乎已经消失的浪漫:他相信每一行代码都应该经过人手的雕琢。他曾经写道:"I love writing software, line by line. My career was a continuous effort to create software well written, minimal, where the human touch was the fundamental feature."他热爱一行一行地写代码。他的整个职业生涯都在追求一种极简的、充满人性触感的软件美学。</p><p>然而,就是这个人,在 2025 年坦承:"Facts are facts, and AI is going to change programming forever."事实就是事实,AI 将永远改变编程。</p><img src="/2026/06/21/karpathy-half-year-no-code-prologue/image-20260523082322418.png" class=""><p>antirez 没有选择抵制。他选择理解。他提出了一个至关重要的概念区分——<strong>"Automatic Programming"(自动编程)与 "Vibe Coding"(氛围编码)是两回事</strong>。Vibe Coding 是把需求丢给 AI,接受它吐出的一切,不做审查,不做设计。而真正的 Automatic Programming 需要人类的直觉、设计判断、持续引导和对软件系统的深刻理解。AI 是放大器,不是替代品。他用 AI 在一周内完成了 DS4 项目的开发,让它成为了当时最流行的本地 AI 体验工具。但他审查了 AI 生成的每一行代码,做出了每一个关键架构决策。</p><h2 id="AI-放大了一切——包括你的工程缺陷"><a href="#AI-放大了一切——包括你的工程缺陷" class="headerlink" title="AI 放大了一切——包括你的工程缺陷"></a>AI 放大了一切——包括你的工程缺陷</h2><p>这些声音——Karpathy 的平静陈述、Amodei 的大胆预测、Garry Tan 的冰冷数据、Cherny 的工程坦率、antirez 的审慎拥抱——来自完全不同的方向,却指向同一个结论:**软件工程的范式正在发生五十年之变。**一个人的产出可以等于过去一个团队。自然语言正在成为最强大的编程接口。写代码这项技能,正在从"必须自己动手"变成"必须自己动脑"。</p><p>但如果你仔细听,在这些声音下面,有一个更深层的矛盾正在浮出水面。</p><p>AI 让"写代码"变得前所未有的容易,却让"写好软件"变得前所未有的困难。</p><p>任何人都可以用一句话让 AI 生成一个能跑的应用。这就是 Vibe Coding 的诱惑:你不需要理解数据结构,不需要考虑边界条件,不需要设计错误处理——你只需要说"给我做一个"。AI 会给你一个。它甚至看起来还不错。但当这个应用需要维护、需要扩展、需要与团队协作、需要经受生产环境的流量冲击时,Vibe Coding 的产物往往暴露了它的本质:一团不可测试、不可重构、不可理解的代码浆糊。</p><p>AI 可以让你以一百倍的速度写出代码。它也可以让你以一百倍的速度积累技术债务。AI 可以让你一小时交付一个原型。它也可以让你一周后完全无法理解自己的代码做了什么。AI 不会救你——它会放大你。你给它清晰的架构,它还你整洁的代码;你给它模糊的意图,它还你一团浆糊。它暴露你的工程能力,也同等精确地暴露你的工程缺陷。</p><p>这就是为什么,在 AI 让编码门槛降到历史最低点的时刻,<strong>工程化的价值反而达到了历史最高点</strong>。</p><h2 id="当开发速度不再稀缺,工程化就是最后的壁垒"><a href="#当开发速度不再稀缺,工程化就是最后的壁垒" class="headerlink" title="当开发速度不再稀缺,工程化就是最后的壁垒"></a>当开发速度不再稀缺,工程化就是最后的壁垒</h2><p>如果你的木工房里突然出现了一把能以一百倍速度切割木材的激光刀,你最需要的是更精确的测量工具、更严格的工艺流程、更可靠的安全护栏——而不是更快的刀。软件工程同理。当执行的速度被 AI 提升到前所未有的高度时,决定质量的是执行之前的规划、执行之中的约束、执行之后的验证。执行本身不再稀缺。</p><p>这正是过去两年间涌现的一系列新方法论试图解决的问题。</p><p>Matt Pocock——TypeScript 社区最受尊敬的工程教育家之一——提出了 Skills 系统的概念。他的核心洞见:Prompt 是临时的,Skill 是持久的。你不需要每次都对 AI 解释"如何做代码审查",你只需要给它一个 Skill。/diagnose 系统化调试、/grill-me 启动前对齐、/tdd 红-绿-重构——每一个 Skill 都是针对 AI 编程中特定失败模式的工程化解药,小而聚焦,模型无关,鼓励改造。</p><p>如果说 Skills 解决的是"单次交互的质量",那么 Spec-Driven Development 解决的就是"跨次交互的一致性"。OpenSpec 和 Spec-Kit 代表的 SDD 方法论将规格文档变成了人类与 AI 之间的一份"合约"——在写代码之前先写规格,你不需要审查 AI 的每一行思维过程,你只需要审查它在规格层面是否履约。</p><p>Ralph Loop 将这个逻辑推到了极致:让 AI Agent 在循环中持续改进自己的代码,直到满足验收标准为止。Frank Bria 设计的双条件出口门机制要求 AI 既要说「我做完了」,还要显式发出退出信号。因为 AI 的自我评估不可信,需要多重验证。</p><p>Garry Tan 的 gstack 则展示了一种完全不同的想象力:将 Claude Code 变成一个拥有二十三个专家角色的虚拟工程团队。CEO 审查战略、工程经理审查架构、QA 审查质量、安全官审查漏洞——整个 Sprint 从 Think 到 Reflect 被构建为一条七阶段审查流水线。一个人就是一支军队。</p><p>superpowers 框架——全球已获超过十五万颗星标——将这些 Skills 组织成了一整套方法论库。而 jnMetaCode 的中文增强版 superpowers-zh,则为中国开发者补充了国内代码托管平台适配、中文排版规范、Conventional Commits 本地化等原创能力。</p><p>这些方法论背后的共同逻辑是什么?</p><p><strong>用结构化知识驾驭非结构化 AI 能力。</strong></p><p>Prompt 消失在对话历史里,Skill 留在你的工具链里。Vibe Coding 的产物不可复现,Spec-Driven 的产出有据可查。一次性的 AI 对话无法保证质量,闭环工作流让每一次产出都经过验证。</p><h2 id="为智能体构建运行环境"><a href="#为智能体构建运行环境" class="headerlink" title="为智能体构建运行环境"></a>为智能体构建运行环境</h2><p>2025 年末,一个被称为"Harness Engineering"的新概念开始在 AI Agent 开发者社区中流传。它的核心关注点不是写 AI 模型,不是做产品功能,而是构建编码 Agent 的底层运行基础设施——工具系统、权限模型、hooks 机制、配置管理层级。社区逐渐认识到:如果说 Prompt Engineering 是"教会 AI 说什么",Skill Engineering 是"教会 AI 做什么",那么 Harness Engineering 就是"为 AI Agent 构建安全可靠的运行环境"。</p><img src="/2026/06/21/karpathy-half-year-no-code-prologue/image-20260523082838441.png" class=""><p>这是一个信号。它意味着 AI Agent 的开发正在从一个"试试看"的实验阶段,进入一个需要专业工程实践的成熟阶段。正如游戏引擎架构之于游戏开发、编译器设计之于语言工具开发,Harness Engineering 正在成为 AI Agent 产品开发中的专门工程领域。它代表了从"能用的 Agent"到"可靠的 Agent 产品"之间那条必须跨越的工程鸿沟。</p><h2 id="关于这本书"><a href="#关于这本书" class="headerlink" title="关于这本书"></a>关于这本书</h2><p>我是一名在软件工程领域工作了近30年的程序员。过去两年里,我和许多同行一样,眼睁睁看着自己熟悉的那个世界——手写代码、逐行调试、Code Review——被 AI 一步步重构。我参与了多个 AI 驱动的开源项目,也亲手构建了一套名为 Goal Workflow 的 AI 研发工作流技能集。这本书中的每一个方法论,我都亲自实践过;每一个结论,都来自真实的项目迭代而非纸上推演。</p><p>这本书的写作动机,正是源于上述所有这些变化的交汇点。</p><p>全书分为三个部分。</p><p>第一部分——原理篇(第 1–11 章)——是全书的主体。我们从软件工程范式的五十年之变出发,逐一考察当前最具代表性的方法论:Matt Pocock 的 Skills 系统、OpenSpec 与 Spec-Kit 的规格驱动开发、Ralph Loop 的自主循环引擎、Garry Tan 的 gstack 虚拟团队方法、superpowers 技能框架、autoresearch 的全自动化开发流程,以及 Goal Workflow 的目标驱动研发闭环。然后将这些方法论放在一起对比、碰撞、融合。在此基础上,我们深入 Harness Engineering——为 AI Agent 构建安全可控运行环境的专门工程领域,以及用 Kanban 编排 AI Agent 项目的实践。这一部分帮助你构建属于自己的 AI 研发体系。</p><p>第二部分——技能篇(第 12–17 章)——聚焦 AI 软件工程的实用技能与工具链。我们考察 Anthropic 官方插件如何为 Agent 注入领域知识与工程工作流,Understand-Anything 如何构建代码知识图谱,UML 在理解 AI 生成代码中的新用途,AI 时代的重构方法论,Go 语言的 AI 开发工具链,以及 autoreview 与 Crabbox 带来的自动化代码审查与远程验证。这一部分是从方法论到日常工程实践的桥梁。</p><p>第三部分——实战篇(第 18–23 章)——以一个真实的 Go 语言项目 goscapy 为载体,完整演示前两部分的方法论和技能在真实项目中的落地执行。从项目背景理解到 PRD 规划,从 /goal 迭代实现到 /review-it 自动化审查,从 /ship-it 交付合入到 Bonus Skills 的增强工具链——每一步都是实战,每一步都有真实代码和真实决策。goscapy 是一个纯 Go 实现的网络协议库,多协议支持、跨平台兼容,在生产环境中运行。这不是一个玩具项目。</p><p>但需要说清楚的是:这<strong>不是</strong>一本「如何使用 AI 工具」的操作手册。工具每天都在变。今天的 Claude Code 明天就不长这样,后天又会出现全新的工具形态。这是一本关于「<strong>如何在 AI 时代思考软件工程</strong>」的方法论著作。</p><h2 id="声明式编程的古老智慧"><a href="#声明式编程的古老智慧" class="headerlink" title="声明式编程的古老智慧"></a>声明式编程的古老智慧</h2><p>回到 Karpathy。</p><p>在那期播客里,除了那句被广泛引用的"半年没写一行代码"之外,他还说了另一句话,没那么出名,但同样重要。他说,使用 AI 编程的体验让他想起了一个古老的计算机科学概念:<strong>声明式编程</strong>。你不需要告诉计算机"怎么做",你只需要告诉它"要什么"。</p><p>SQL 是声明式的——你说"给我这些列、从这个表、满足这些条件",数据库引擎自己决定执行计划。在 AI 时代,整个软件开发正在变成声明式的:你说"给我一个支持多协议、高并发、跨平台的网络包处理库",AI Agent 自己决定架构、选择模式、实现细节。</p><p>但声明式编程有一个前提:声明本身必须是精确的。模糊的 SQL 查询返回模糊的结果。模糊的需求描述产生模糊的软件。</p><p>这就是为什么,在 AI 可以帮你写出一切的时代,<strong>知道"要什么"比知道"怎么做"更重要</strong>。而"知道要什么"——定义清晰的验收标准、设计合理的架构约束、建立可验证的质量门——正是软件工程这门学科用半个世纪沉淀下来的核心能力。</p><p>这些能力从来没有过时。它们只是在等待一个让它们变得至关重要的时刻。</p><p>那个时刻就是现在。</p><p>欢迎来到 AI 时代的软件工程。</p>
同分类推荐文章
- LLM 究竟是如何工作的? (2026-06-21 11:09:44)
- Loop Engineering 实践:一次批量实现 8 个 issue,完成夔牛工具的开发 (2026-06-17 04:00:24)
- 从月球漫步到赛博都市,WBench 测出了世界模型的边界 (2026-06-15 09:05:33)
建议继续学习
- 哪本书是对程序员最有影响、每个程序员都该阅读的书? (累计阅读 15,084)
- 看源代码那些事 (累计阅读 10,567)
- 最常被程序员们谎称读过的计算机书籍 (累计阅读 9,126)
- 低级程序员和高级程序员的区别 (累计阅读 5,779)
- 从代码看不同层次程序员的进化 (累计阅读 5,636)
- 领导如何应对员工离职 (累计阅读 5,464)
- 对程序员职业的一些建议 (累计阅读 5,085)
- “好奇号”火星车和它搭载的软件(来自Erlang程序员的观点) (累计阅读 4,447)
- 每个程序员都应该了解的知识有哪些? (累计阅读 4,454)
- 也谈编程改革 (累计阅读 4,314)