Dan Shipper · 2025-06-11

Claude Code - 两位工程师如何实现15人团队的效率

摘要

Kora团队仅凭两名工程师借助Claude Code等AI代理工具实现了15人团队的产出效率。他们通过构建能生成提示的提示实现复利式工程,利用多智能体并行协作完成编码、研究与审查,并在AI工作流程的早期阶段进行人工审核以确保方向正确,展示了AI驱动开发的全新范式。

核心概念及解读

复合工程(Compounding Engineering):一种通过构建能生成其他提示的提示来实现效率指数级增长的工程方法,每次完成的工作都为后续任务奠定更坚实的基础

多智能体协同:根据任务特性灵活调用不同AI代理的专长,如Claude Code负责深度研究、Friday完成UI设计、Charlie进行代码审查,实现任务并行化处理

最低价值阶段干预:源自《高产出管理》的原则,强调在AI生成规划和需求文档的早期阶段就进行人工审查,避免后期大规模返工

Agentic AI工具:以Claude Code为代表的自主式AI工具,不仅能编写代码,还能访问文件系统、运行程序、搜索网络,具备理解反馈和自我纠错的能力

提示词评估(Evals):针对AI提示进行系统化测试的机制,通过多次运行评估确保提示能持续稳定地产生预期结果,支持AI自主迭代优化

精简版

AI 开发新范式:流程革新与人类智慧的融合

人工智能正以前所未有的速度重塑软件开发的蓝图,其核心驱动力在于构建高效的AI辅助工作流程,并清晰界定人类在这一变革中的关键干预角色。这一新范式昭示着一个时代的来临:AI将作为主要的执行者,承担起繁重的开发任务,而人类工程师则升维为管理者、指导者与最终质量的把控者。团队日益倾向于让AI完成绝大部分工作,包括编码、研究、工作流程优化乃至开发过程中的所有相关事务,人类则专注于更高层次的策略引导和AI管理。

在这些AI驱动的开发流程中,“复合工程”(Compounding Engineering)的理念尤为突出。其核心在于构建能够生成其他提示(prompts)的提示,使得每一次完成的工作都能为后续任务打下更坚实的基础,从而实现效率的指数级提升。一个生动的例子是,开发者仅需向AI工具(如Claude Code)提出一个功能需求,甚至可以通过语音输入,AI便能自动完成所有研究,创建详尽的开发文档——例如包含问题陈述、解决方案愿景、详细需求和技术要求的GitHub Issue——并将其无缝集成到项目管理看板中。这种“提示构建提示”的模式,如Kora团队所实践的,先投入时间构建一个能生成详细研究文档的“元提示”,该文档本身又成为AI执行后续编码任务的有效指令,极大地减少了每次开发新功能时所需的手动指令和前期准备工作。据Kora团队反馈,这种方法使得他们仅有两个人的团队感觉像一个15人的团队在高效运作。

并行工作与多智能体协同是AI驱动工作流程的另一显著优势。AI系统允许同时发起并处理多个任务请求,实现了真正意义上的任务并行化。团队可以根据任务特性,灵活调用不同AI智能体的专长,例如使用Claude Code进行深度研究,利用Friday完成UI设计与实现,借助Charlie进行代码审查。这些智能体能够协同作战,避免了对单一全能型智能体的过度依赖,并且能与现有的GitHub、拉取请求(Pull Requests)等开发者生态系统无缝集成,确保人类开发者能够轻松介入,进行协作、审查和管理。

然而,AI的强大执行力并不意味着人类角色的削弱,反而对其提出了新的要求。在AI驱动的开发中,人类干预的关键点首先体现在“在最低价值阶段捕捉并解决问题”。这一源自管理学名著《高产出管理》的原则,强调在AI工作流程的早期,如AI生成规划和需求文档的阶段,就必须进行人工审查。如同火箭发射,初始阶段的微小偏差可能导致最终结果的巨大偏离。因此,及早审查AI的规划,确保方向正确,可以避免在后续实施阶段投入大量时间精力进行返工或修正。

其次,人机协作的核心在于人类贡献其独特的直觉、经验与“品味”。虽然AI能够高效执行任务,但“做什么”以及“如何做”的宏观方向仍需人类定义。在审查AI生成的计划、代码或文档时,人类需要运用自身的专业判断力,洞察AI可能存在的遗漏或潜在问题。有时,一个简单的提示,如提醒AI“查看历史记录”,就能引导AI找到正确的解决方案。为了使审查过程更为高效和有趣,甚至可以尝试让AI以更具互动性的方式呈现信息,比如让AI像一个优秀的产品经理那样提出引导性问题,或提供多种备选方案,而非直接输出冗长的文档。

掌握AI工具本身也是一项需要持续练习和精进的技能。高效使用AI并非依赖于寻找所谓的“魔法提示”,而是要深刻理解AI的工作原理及其优势,并通过不断实践来熟练驾驭。正如Kora团队的Natasha从ChatGPT问世后开始学习编程,并经历了AI工具的快速迭代,这体现了工程师需要不断学习和适应新技术的重要性。

传统的测试与评估在AI开发时代依然不可或缺,并被赋予了新的内涵。对于AI生成的代码,传统的烟雾测试、单元测试等依然是保证其基本功能正常的基石。而对于AI的“提示”(prompts),则需要引入“评估”(evals)机制,将其视为对提示进行的测试。通过多次运行评估,可以确保提示能够持续、稳定地产生期望的结果,甚至可以利用AI自主迭代修改提示,直至其稳定通过所有测试用例。

最后,AI极大地加速了与人类专家的战略性合作。例如,团队可以通过记录与领域专家的深入对话,然后将对话内容输入给AI(如Claude Code),AI便能依据专家的见解生成详尽的开发问题清单或初步解决方案。专家随后仅需审查这些由AI整理和初步分析的材料,再由AI继续执行后续的实现工作,从而将原本可能需要数周的协作过程压缩到短短几个小时。

Agentic AI工具,如Kora团队高度依赖的Claude Code,是实现上述高效流程的核心。这类工具由强大的底层模型(如Claude Opus 4)驱动,通过命令行界面(CLI)等方式运行,它们不仅能编写代码,更能访问文件系统、运行程序、截取网站截图、搜索网络,拥有远超普通聊天模型的工具集。这使得它们能够处理工程工作中除了编码之外的更多任务,如理解反馈、诊断问题、自我纠错并决定下一步行动。Kora团队发现Claude Code因其灵活性和强大的问题解决能力,成为他们进行通用工程支持的首选。尽管功能复杂,但其用户界面却追求极简(如单一文本输入框),反而降低了使用门槛,同时其强大的底层模型保证了长时间稳定运行和精确指令遵循的能力。Kieran甚至对各类Agentic AI工具进行了评级,将Claude Code和AMP列为S级,强调根据特定任务(如Friday擅长UI,Charlie擅长代码审查)选择合适的AI代理,实现多代理协同。

综上所述,AI辅助的工程实践正将软件开发从一种主要依赖手动编码的活动,转变为一个以AI管理和协作为核心,强调早期规划、迭代验证,并充分利用专业AI代理能力的自动化流程。这要求工程师发展新的技能,如精通提示工程、理解如何引导和审查AI的输出,并持续适应日新月异的技术,从而在AI时代实现前所未有的生产力飞跃和创新速度。Kora团队的经验生动地证明,拥抱这一变革,即使是小型团队也能爆发出惊人的能量。

内容纲要

├── 一、引言:两位工程师的超高生产力
│   ├── Kora AI 邮件助手与 Every 公司
│   ├── Kieran Klaassen (GM) 与 Nityesh Agarwal (工程师) 的两人团队
│   ├── 核心理念:“复利式工程 (compounding engineering)”
│   └── 新工具需要新原则与流程
├── 二、AI 工程的转变:从编码辅助到全面赋能
│   ├── Kieran 认为 AI 代理正经历转折点
│   ├── AI 应用超越编码,扩展至研究、工作流程
│   ├── 工程师角色转变为管理 AI
│   ├── Claude Code 工具介绍 (Anthropic 出品,CLI 运行)
│   │   ├── 访问本地文件与计算机
│   │   ├── 运行程序、截图、搜索网页
│   │   └── 拥有更多工具集
│   └── Claude Code 能力展示:总结周报、分析基础设施更新
├── 三、Claude Code 与其他AI编码工具的对比
│   ├── Nityesh 观点:Claude Code 简化性提升10倍
│   ├── 简洁界面下的强大底层模型能力
│   └── Kieran 案例:快速定位并修复表单未收回复的 bug
├── 四、Cora 团队的 AI 驱动工作流程
│   ├── 任务启动:为新模型准备 GitHub Issues
│   ├── 核心方法:Claude Code 自定义命令 (cci)
│   ├── 提示词执行流程 (想法 -> 计划)
│   │   ├── 代码库研究
│   │   ├── 最佳实践研究
│   │   ├── 提出计划 (人工审核)
│   │   └── 创建 GitHub Issue 并归类
│   ├── GitHub Issue 文档内容示例
│   ├── 提示词的构建:ChatGPT 初稿 -> Anthropic 提示词改进器优化
│   ├── 复利效应:构建能生成提示词的提示词
│   ├── 并行工作:同时运行多个 Claude Code 实例
│   └── 协同方式:团队通话构思 -> AI 执行 -> 人工审查
├── 五、新时代的软件工程心智模型与实践
│   ├── Nityesh 心智模型来源:《高产出管理》
│   ├── 核心原则:“在价值最低的阶段修复任何问题”
│   ├── 人工审核的重要性:品味、经验、直觉
│   └── Nityesh 的学习与适应:工具迭代与 Kieran 的影响
├── 六、传统测试与评估在 AI 时代依然关键
│   ├── Kieran 强调测试与评估的重要性
│   ├── 代码测试:冒烟测试等
│   └── 提示词评估 (Evals):检验提示词稳定性与效果,AI 自我迭代修正
├── 七、Kieran 对主流 AI 编码代理的排名
│   ├── S 级: Claude Code, AMP
│   ├── S 级与 A 级之间: Friday
│   ├── A 级: Cursor (使用 Claude 4 时)
│   ├── B 级: Devin, Charlie (代理时B, 代码审查A), Codex, Factory
│   ├── C 级: Binsurf (wind surf)
│   ├── D 级: GitHub Copilot (基于较早版本体验)
│   └── 使用策略:按任务特性选择代理,代理间协同
├── 八、结合人类专家智慧与 AI 协同工作
│   ├── 案例:与基础设施专家合作解决交付可见性问题
│   ├── 过程:专家访谈录音 -> Claude Code 生成 Issues -> 专家审阅 -> Claude Code 实施 -> 专家代码审查
│   └── 效果:数周工作压缩至数小时
└── 九、总结与展望
    ├── Kieran 建议:尝试 Claude Code,即使非技术人员
    ├── Nityesh 建议:在价值最低阶段检查 AI 工作
    └── 主持人推荐:试用 Cora

访谈实录:Claude Code: 两位工程师如何实现15人团队的效率

一、引言:两位工程师的超高生产力

Dan: Kieran,Nityesh,欢迎来到节目!非常感谢你们能来。

Kieran/Nityesh: 谢谢你邀请我们,Tom(此处应为Dan,脚本中小错误)。

Dan: 我很高兴能邀请到你们。对于不了解的观众,你们两位都在 Kora 工作,这是 Every 公司的 AI 邮件助手。Kieran 是总经理,Nityesh 是一名工程师。除了 Kora 是一个非常酷的产品,我非常激动能把它带给所有收听或观看这个节目的朋友们之外,我之所以想和你们二位做这一期节目,是因为我认为你们正在探索一种全新的工程方式。因为 Kora 团队实际上只有两个人,但感觉上却像有 15 个人,因为你们有 AI 代理在拉取 PR(Pull Requests)、在分支上工作,然后你们推送它们,又有其他代理进行审查,这简直太疯狂了。这是一种全新的软件构建方式。Kieran 前几天说的一句话让我印象深刻,他说你们正在探索如何实现“复利式工程” (compounding engineering),也就是说,每完成一项工作,都在为下一项工作铺平道路,使其更容易、更快捷。我只是觉得,把你们学到的东西分享给所有观看这个节目的观众非常重要,因为我们有了新工具,所以我们需要新的原则和新的工作流程来使用这些工具。所以我非常期待与你们讨论这个话题。

Kieran: 是的,谢谢。构建 Kora 非常有趣,而且作为 Every 的一员,能处在一个可以接触到各种工具、思想和令人兴奋的新工作方式的环境中,确实帮助我们重新思考了我们的构建方式。所以,这真是一场实验。我们正在构建一个产品 Kora,但同时,我们也在探索应该如何构建。这非常有趣,我们正处于人们会问“你觉得这个新模型怎么样?”或者“我们怎么用这个研究工具?”的阶段,我们只是在不断尝试。

二、AI 工程的转变:从编码辅助到全面赋能

Kieran: Nityesh 和我,可以说在最近几周,确实感受到了一个转变。我们并非唯一有此感受的人,我们也听到其他人这么说,但人数不多。我们学到了很多,想分享一些我们学到的东西,以及我们所知道的:我们才刚刚开始,仅仅触及了皮毛。这是一场巨大的变革,正在由新模型、人们的思维方式、多模态能力(MCP,可能指 Multi-modal Capability or Claude Multimodal Capabilities)等诸多因素共同推动。是的,从不同角度来讨论这个话题非常好。

Dan: 我同意,而且我觉得能在 Every 工作非常特别,因为我们每天都能在 Discord 里看到有人说“我构建了一个 AI 代理,你们想在发布前试用一下吗?”所以我们能接触到 OpenAI 发布前的模型,有时还有 Anthropic 的模型。我们因此拥有了这种早期优势,然后你们又非常擅长弄清楚如何将它们实际整合到生产流程中。Kieran,你刚才说有些事情改变了。所以我想了解一下,你认为是什么改变了?以及,为你们团队开始形成的这种工作流程,能否勾勒出一个大致的轮廓?

Kieran: 对我而言,显然是所有因素共同作用的结果。但我认为最重要的一点是我自身的一种认知转变:用 AI 编码远不止编码本身。它真正关乎的是利用 AI 进行研究、优化工作流程,应用于所有事情。它应该被用于一切。我们现在正处于一个AI代理足够优秀,能够实际完成所有任务的阶段。所以我们需要再次反思:嘿,Cursor、Binsurf(脚本中提及为 wind surf,应指同类工具)这些传统的编码方式曾经很棒,那种更偏向“vibe coding”(凭感觉编码)的方式是一个阶段。而现在,我们意识到,哦,实际上我们只需给出一个任务,它就能完成。但工作仍然需要我们来决定做什么、怎么做。关键在于我们应该更深入地利用这一点,真正地深入下去。就像 Claude Code,它就是一个很好的编码代理,或者说,现有的代理与像 Claude 4 这样的新模型配合得很好,非常擅长遵循指令和指示。所有这些因素结合在一起,让我意识到,哦,我们已经到这儿了,未来已来。我们一直在谈论的这种代理式演进(agentic evolution),突然之间就实现了,而且它正在实际的、非实验性的、非玩具般的场景中运作。我们就是在构建一个应用程序,而它正在帮助我们构建这个应用程序。

Dan: 所以我听到的意思是,这不仅仅关乎用 AI 开发,还包括开发过程中所有你正在使用 AI 的环节。而你们为此使用最多的工具是 Claude Code,对吗?如果对的话,能否跟我们介绍一下 Claude Code?对于不了解或没用过它的人,简单介绍一下,然后告诉我们你们具体是如何使用它的。

Kieran: Claude Code 基本上是 Anthropic 推出的编码代理版本,它底层使用 Claude 模型,并在你的终端中作为命令行界面(CLI)工具运行。我知道对于非技术人员来说,这听起来可能有点吓人。但我已经成功说服了一些非技术背景的朋友使用 Claude Code,他们用后都说“哦,这太棒了”。它其实非常简单,你只需打开终端,输入 claude,一个界面就会弹出。 (Dan 描述 Kieran 的屏幕:Kieran 在他的终端里,就是那种经典的黑色屏幕,感觉像在用 DOS 或类似的系统,他刚输入了 claude,然后弹出了一个写着“Welcome to Claude Code”的提示,还有一个小文本框供他输入命令。) 这有什么不同,或者说是什么让它与众不同呢?它能访问目录或计算机,所以它能查看我电脑上的文件,它已经可以在我的电脑上运行程序,可以截取网站的屏幕截图,可以搜索网页。它拥有工具,但比普通 Claude 版本拥有的工具要多得多。这一点很重要,因为工程工作,也就是构建东西,你需要的工具远不止基础那些。你需要 GitHub 来查看你需要构建什么,或者当前的状态如何,或者 CI(持续集成)流水线做了什么,比如测试是否失败了。将所有这些东西整合到一个编码代理中,实际上使我能够让一个代理来完成我的工作流程或我所做的事情。这才是重点,真正的“复利”效应来自于做的不仅仅是编码。因为如果你和工程师交流,大部分工作可能是在编码,但实际上可能只占 20%,也许 80% 的工作是弄清楚下一步该做什么,或者理解人们的反馈并如何解读。在这里,你可以做很多事,举个有趣的例子,比如用它来问:“我们上周发布了什么?”它知道这些事情。所以我问它我们发布了什么,它很可能会查看 git log,因为那是我们追踪已发布内容的方式。是的,它会查看 git log,看我们合并到主分支的内容。这是一种有趣的用法。例如,我们可以用这个来进行产品营销。它会说,哦,这些是错误修复,一个摘要跳过功能,聊天面板状态,邮件摘要 XML 标签,主要功能,摘要帮助监控,时区自动检测。这些都是我们发布的东西。现在我可以说…

Dan: 它以一种易读的技术性报告形式写了出来,而且对于两个人来说,这工作量相当大。大概有六个主要功能,五个重要的错误修复,和三个基础设施更新。这很多了。

Kieran: 是的,很多。这周我们确实在深入实践“让 AI 为我们工作,我们只负责管理 AI”。例如,另一件事是,如果有人来问你:“这个项目的状态如何?”或者“你下周打算发布什么?”我们来看看它会怎么做。“你能看看流水线里有什么,以及很快会推出什么吗?”

(Nityesh 在旁,Dan 示意他可以随时加入)

Kieran: 我们会看看,我不知道它是否有项目访问权限,但你应该明白我的意思了。如果你把信息连接到代理,使用起来就非常方便。而且,使用你熟悉的工具非常重要。目前来说,我认为 Claude Code 对我最有效。它是最灵活的,因为它不只解决编码问题,这一点很重要。很多这类编码代理是为编码而设计的,但我想做的不仅仅是编码,我希望它能成为整个工程领域的支持。我认为 Claude 团队确实考虑到了这一点,他们没有把它做得过于特定,而是保持了通用性,同时在解决问题、分析所犯错误并进行自我纠正方面表现得非常出色。所以,这些因素结合在一起,非常难以实现,但却使得我们现在能够使用它了。

三、Claude Code 与其他AI编码工具的对比

Dan: 用 Cursor 编码和用 Claude Code 进行代理式编码有什么区别?

Nityesh: Claude Code 是对我们习以为常的 Cursor 和 Binsurf(脚本中提及为 wind surf)这类工具的一次非常简单的革新。这两者都具备代理式编码能力,但 Claude Code 更进一步,将复杂度降低了大约 10 倍。Kieran 之前提到 Claude Code 可能因为是终端界面而让人觉得望而生畏,但实际上它比 Binsurf 或 Cursor 简单得多,因为除了一个文本框之外什么都没有。没有 Command K,没有快捷键,除了删除、拒绝、移除之类的基本操作,什么都没有,就只是一个文本框。它之所以能行,是因为底层的 Claude 模型现在强大得多,能够工作更长时间并进行工具调用。所以,它是一个更简单的用户界面,这反而让它更强大,即使像 Cursor 和 Claude Code 背后的底层模型是相同的。

Kieran: 举个例子,今天早上我在获取一些指标,我想知道为什么我们没有收到任何对某个表单的回复。 (Dan 补充背景:他们有一个表单,用来询问用户如果不能再使用 Cora 会有多失望,以此衡量产品表现。Kieran 在周会上注意到没人填写这个表单。) 我当时就觉得肯定有什么问题,这个表单没有被发送出去。我问 Claude Code:“14 天前出了什么问题,你能看看是怎么回事吗?”它做了一个清单,列出了待办事项:获取最近的日志,控制器相关的变更,搜索代码库。它查看了那个日期前后发生的变化,然后发现我们移除了一段将用户添加到那里的代码。它在这里说:“嘿,实际上你只需要加上这个。”我说:“好吧,帮我做吧,创建一个 Pull Request。”它照做了。然后它还说:“哦,顺便说一下,我还会创建一个脚本,把我们遗漏的所有人都加回去,进行迁移。”就这样完成了。有趣的是,这完全没花费我任何精力,就像我把它写在 GitHub 上留待以后处理一样轻松。我不需要做什么,我只管问,它就立刻去做了,这真的很好。就像收件箱清零原则,如果一件事花不了五分钟,那就马上去做。

Dan: 我想人们可能没有完全意识到,这样的任务,如果没有 AI,可能需要花费 30 分钟到几个小时不等。而且不仅仅是时间,它还需要你集中精力,专门抽出时间坐下来做。现在你只需要发出这样的请求,然后你可以再发一个,再发一个,你可以同时处理很多这样的事情。

四、Cora 团队的 AI 驱动工作流程

Dan: 给我具体描述一下你们实际的工作流程是怎样的?你们到底在做什么?开了多少个标签页?你们自己还手动编码吗?是同时运行五个代理,还是只用 Claude Code?让我了解一下情况。

Kieran: 我也来分享一下我的屏幕吧。Nityesh,或许你可以说说我们之前是怎么做的,比如当我们刚获得 Claude 的早期使用权时,我们很兴奋,都做了些什么。

Nityesh: 是的,大概是在 Claude 直播前一天,我们想:“好吧,明天编码方式就要改变了。我们会有一个能力强得多的模型,它能胜任我们想做的所有事情。我们基本上会得到一个编码精灵。”所以,今天对我们来说,最有成效的事情不是按原计划进行,而是应该花两个小时开个会,集中讨论,列出一个庞大的问题清单,让未来那个——也就是明天那个更高级的模型——来解决。我们确实这么做了,我们创建了大约 20 个 issue,涵盖了我们想要修复的问题,我们计划要做的东西,并为新的 Claude 模型准备好了系统。

Kieran: 有趣的是,Nityesh 当时提示 ChatGPT 说:“嘿,明天我们就实现 AGI(通用人工智能)了,你能帮我们想出所有需要做的事情,并准备好让 AGI 解决我们所有的问题吗?”然后我们把这个结果输入到 Anthropic 的提示词改进器 (prompt improver),再用它作为提示词。 (Dan 描述屏幕:Kieran 展示了一个 GitHub 项目中的看板式界面,类似于 Trello。每个待办事项(功能、bug修复等)都有一个详细文档,阐述了具体内容和执行方法。Dan 点开一个名为“AI 生成合成数据”的功能卡片,文档包含了问题陈述、解决方案愿景、所有需求、技术需求、实施步骤以及估算的“天数”(这里的“天数”实际上是指秒数)。) 我们使用 Claude Code,并创建了这个自定义提示词来生成这些文档。因为创建这些文档工作量很大,即使有 ChatGPT,也需要很多步骤,你得查看所有代码,你得思考,是的,需要大量思考,所以很难做好。于是我们创建了一个 Claude Code 命令。命令是一种你经常使用的自定义提示词。我们的命令是这样的:“嘿,这里有个功能……”

Dan: 这是 Claude Code 里的命令,还是 Cursor 里的?因为你现在开着 Cursor。

Kieran: 我开着 Cursor 是因为我用它编辑文件,但这是 Claude Code 的命令。你可以看到我们现在在 Claude 界面里。我可以通过输入 cc(Claude Code 的别名)来使用这个命令,然后说一些我遇到的问题,比如一个 bug,一个难题,任何事情。所以门槛很低。我用了 cci 这个命令别名。Nityesh 和我当时就在一起头脑风暴,我们会说:“哦,如果我们这样做会怎么样?哦,那听起来很酷。”然后通过语音转文字输入,它就开始工作了。我们来看看它是怎么运作的,等它运行的时候,我们可以再详细看看具体内容。我想在 Kora 里实现无限滚动,就是当我看摘要看到末尾时,它应该加载下一篇摘要,一直加载到所有未读摘要都读完为止。 (Dan 解释:Kieran 几乎从不打字,都是用语音转文字,他当时正对着终端里的 Claude Code 用语音输入,可能用的是一个 Every 内部孵化的、尚未发布的工具 Monologue。) 它似乎正在将我刚才说的内容,插入到功能描述这里,然后它会遵循所有这些步骤。这些步骤包括:研究,研究最佳实践。首先是在代码库中进行定位 (grounding itself in the codebase),也就是研究已有的东西。然后是研究最佳实践 (researching best practices),它会搜索网络,寻找开源模式,也就是将方案建立在通用的最佳实践之上。然后它会提出一个计划,当我说“嗯,听起来不错”时,我喜欢这个人工审核计划的环节,因为有时它会出错,但大多数时候是对的。然后我说“嗯,听起来不错”,它就会创建 GitHub issue,并把它放到正确的看板列等等。

Dan: 太酷了!所以你们之前在 GitHub 上看到的整个看板,你们创建了一种方式,你把功能需求用语音输入到 Claude Code,然后它会进行所有研究来创建那个长长的文档,并自动添加到 GitHub Issues 里。

Kieran: 是的,这是重要的一步。这与 Cursor 编码不同,因为在 Cursor 中,你通常会跳过这一步,因为那个工具主要不是为此设计的。那个工具是用来编码的。是的,你可以创建 Markdown 文件之类的,但让我们专注于像 issue 跟踪器这样的工具,它已经存在并且运行良好,人们都在使用它,而且它已经能接入现有的模式。比如,我们可以把这个交给一个开发者,他们就能实现它。

Dan: 需要指出的一点是,你正在运行这个,我觉得当我们第一次看到 Opus 4(Claude 4 Opus)时,让我们惊叹“我的天!”的一点是,它可以在没有任何干预的情况下持续运行很长时间,然后给你一个相当不错的结果。我们之前也用过一些类似代理的东西,但这在自主性和质量上都达到了一个前所未有的水平。它正在以一种我认为其他代理循环远不能及的彻底方式,逐项完成这个待办事项列表。

Nityesh: 我和 Kieran 有个好玩的竞赛,看谁能让 Claude Code 运行最长时间。Kieran 现在正在打破纪录,他让它运行了 25 分钟,我现在才 8 分钟。

Dan: Kieran,你是怎么让它运行这么久的?

Kieran: 一个非常非常长的计划,是的,就是一个非常非常复杂且冗长的计划,并且包含大量测试,确保它运行所有测试并修复所有测试,这样它就能运行很长时间了。

Dan: 带我了解一下,你是怎么做出那个能创建提示词的提示词的?就是那个能创建研究文档的提示词。你是怎么知道要加入哪些元素的?你也是用了类似 Claude 提示词改进器(Anthropic prompt improver)那样的工具来做的吗?或者说,你是怎么构思并把它组合起来的?

Kieran: 这是“复利效应”的一部分,就是有一个能产生很多成果的想法。这是 Nityesh 发给我的,他说:“我们刚得到了 AGI,它已经交付了,我们可以编写软件了。”这是你最初的提示,挺有趣的,非常戏剧化。然后 ChatGPT 说:“我准备好了,那么现在开始做这个吧。”我说:“好吧,行,但是你知道 Anthropic 控制台的提示词改进器吗?”那是什么?哦,他们改版了。是的,就是这个。哦,是的,他们改动了一点。但这很棒,因为基本上你粘贴一个提示词或者类似的东西进去,然后你可以说:“是的,我们会思考。”然后点击“生成”,它就会自动改进提示词。你可能会想,它能有多好?其实相当不错,因为它的使用门槛也很低。所以,花一分钟看看是否能得到什么成果,如果有效就用,如果无效就删掉,没关系。我们当时只是在集中讨论,想着要提出 30 个研究任务,所以我们最好有一个提示词。我只是复制了这个提示词,然后它就变成了那个文档。把它放到这里,修改参数,然后你就可以通过输入斜杠在 Claude 中触发它们,我们这里有两个自定义提示词。

Dan: 我想这让我更清楚地理解了你所说的“复利式工程”是什么意思。在我看来,你首先做的是花时间构建一个能有效生成其他提示词的提示词,因为那些研究文档实际上就是 Claude Code 的提示词。所以现在你有了一个能生成提示词的提示词,每次你想创建一个新功能时,你只需要指定很少的内容,你只需说出那个小功能,然后它就会去做研究,把它扩展成一个大文档。而以前,每次你要做一个功能,你都得先说,我希望你先研究它,然后我希望你仔细考虑所有这些不同的边界情况,或者我喜欢构建东西的方式等等。我觉得这太酷了。而且,特别值得指出的是,在我们谈话的这段时间里,它一直在工作。这是一种完全不同的编码方式。我们,你知道,上周或前一周一起打电话的时候,我们一起测试了这个,我在和你通话的时候就发布了一个上线到生产环境的功能,而我根本没接触过代码库,所以这真的有点疯狂。这是一种更具社交性的编码方式,我们现在就在编码,构建东西,这在以前是不可能的。 (中场赞助商广告时间)

Dan: 是的,太棒了。在我们谈话的时候,它完成了研究并创建了这个 issue,这很酷。我们当时大概同时运行了六七个,因为我们就是不停地:“新想法,开始!新想法,开始!”我们还做了什么呢?我们查阅了用户反馈,阅读了邮件,收集了所有能收集到的信息,然后进行头脑风暴。这真的很有趣,因为当你在这种头脑风暴的状态时,你可以直接启动代理,看看它们会想出什么,然后再花时间去审查。所以我们也会……是的,我同意你的看法,在通话中一起做这件事真的很有趣,因为那是奇迹发生的地方。这里仍然有人工审查的步骤,因为我们发现我们想看看它是否合理,是否遗漏了什么。这关乎品味、经验和直觉。比如我之前解决的那个邮件发不出去的 bug,Nityesh 用他的 Claude Code 也做了同样的操作,但它没有给出正确的答案。

Nityesh: 是的。

Kieran: 所以,这里面还是有人为的直觉因素。我提示它“查看历史记录”,这实际上引导它往正确的方向思考了。而 Nityesh 没有加上“查看历史记录”这个提示,然后它就说“不,一切正常”。所以,这仍然是一种技巧,绝对是一种技巧。

Dan: 当然,这绝对是一种技巧。

Kieran: 是的,并不存在能搞定一切的魔法提示词。关键在于正确地使用它,并发挥它的优势,这一点毫无疑问。

Dan: Nityesh,你对此有何感想?因为我知道,Kieran 是一个资深的 Rails 专家,一个非常厉害的程序员。而你,我感觉在编程之路上可能还处于比较早期的阶段。那么,来到 Every,开始参与 Kora 项目,并以这种方式工作,对你来说是怎样的体验?

Nityesh: 我得说,这真是令人大开眼界。老实说,我的编程经历是这样的:两年前 ChatGPT 刚出来的时候,我想,好吧,现在是我自学编程、构建那个我一直想做的 SaaS 应用的绝佳时机了。所以我从第一天起就用 ChatGPT 自学编程。因此,我经历了所有的转变。我从 ChatGPT 开始,然后当 Cursor 出来后,我把工作流程转移到了 Cursor,再然后 Binsurf(脚本中提及为 wind surf)变得更好,我们又转向了 Binsurf。我当时一直觉得,好吧,我走在了最前沿,我的朋友里没人像我这样深度使用 AI,我处于领先地位。然后我加入了 Every,开始和 Kieran 一起工作,Kieran 则完全是另一个境界。在我们的会议上,他从不写代码,从不打字,总是对着电脑说话。我当时就想,好吧,我得把这个记到我的“待学习”清单里。然后,即使在 Claude Code 问世后,Kieran 实际上也是推动我开始使用它的。很明显,这现在就是编程的方式。我和 Kieran,我们大概有三周左右都没碰过 Binsurf 或 Cursor 了。即使我们偶尔用一下,通常也只是因为想阅读某些内容。基本上,我们用它们是因为我们电脑上没有 VS Code。就算用的是 VS Code,或者旧版的 VS Code、Cursor 之类的,也无所谓了,因为所有 AI 相关的工作现在都用 Claude Code 完成了。能身处这样一个整个编码领域每三个月就彻底改变一次的境地,并且意识到其实没有人真正处于“最前沿”,这种感觉真的很有趣。

Dan: 我得说,我真羡慕你在 ChatGPT 刚出来的时候学习编程。我二十年前可是靠书本学习编程的,比如《PHP傻瓜教程》。

Kieran: 还有《24天学会Basic》之类的,Sam’s 出版社的《Teach Yourself Basic》或者类似的。

Dan: Delphi 5!太有趣了,你说“我以为我走在 AI 编码的前沿,然后我加入了 Every,开始和 Kieran 一起工作”,这让我想起《星球大战前传一:幽灵的威胁》里的一个场景,他们在水下被一个海怪袭击,眼看就要没命了,结果另一个更大的海怪出来把那个正在攻击他们的海怪吃掉了。魁刚·金说:“总有更大的鱼。”是的,Kieran 就是那条更大的鱼。

Kieran: 我也觉得,你那么说我,但我其实觉得自己什么都不知道,感觉自己落后了,还有百万件事情需要做。这就是这个领域的现实,总有更多东西要去学,但关键在于实践。你应该每天都练习使用 AI,每天都督促自己,否则你会错过很多很酷的东西。

五、新时代的软件工程心智模型与实践

Dan: 我很好奇,无论是从个人角度还是为观众考虑,这种方式存在哪些问题呢?基本上,听起来你们正在转向一种不直接接触代码的编码形式,你们处于更高一个层级。那么,随之而来的问题是什么?你们又是如何解决这些问题的呢?为了确保事情顺利进行,你们需要引入哪些新的工程实践?

Nityesh: 对我来说,最重要的认知是,我总是会回顾一个理念,尤其是在使用 Claude Code 的时候。我是在那本管理学书籍《高产出管理》(High Output Management) 中读到的,那是英特尔前 CEO 大约 50 年前写的。在第一章,他提到,在任何生产过程中,都应该在价值最低的阶段修复任何问题。我一直无法停止思考这句话,因为 AI 和 Claude Code 现在能为我们做这么多事情,所以专注于事情的最早阶段变得非常重要。我的意思是,当我们使用 Kieran 刚才展示的工作流程来创建一个非常详细的 GitHub Issue 时,很容易就想启动另一个 Claude Code,让它直接去处理这个 GitHub Issue 并修复它。但这实际上会是个问题,因为 Claude 在那个 Issue 中提出的计划,可能并不是你想要的方向。你需要在要求 Claude 去实施解决方案之前就发现这一点,并在那个阶段进行修正。

Dan: 这非常有道理,我非常喜欢这个想法。它让我想起,所有这些东西都像一个杠杆,你在杠杆上离支点越远,你的力量就越大,但同时,你往错误方向前进的力量也越大。每一点微小的偏差,在最终结果上都会造成巨大的差异。所以,尽早发现问题,我认为是确保你不会偏离轨道太远的关键。这个杠杆的比喻可能不太恰当,但你应该明白我的意思。就像你把火箭对准月球,一英寸的偏差就意味着数千英里的差距。我想 AI 的事情也是如此。这对我来说其实是个很好的教训,因为我总是想快点完成计划阶段的工作,对我来说,仔细阅读那样的文档,就像我们写东西时那样集中精力,真的很难。你们是怎么处理这个问题的?

Kieran: 是的,大多数时候阅读那些文档确实有点无聊。但你可以让它变得更有趣一些。比如,你可以说:“尽量简化,这太多了。”但问题是,那样它又会遗漏东西。所以这其实很重要。对于代码,我喜欢让它专注于用户故事,或者提问并回答问题。比如说:“嘿,一个优秀的产品经理会针对这个提出哪些我们应该考虑的问题?”然后给出两个选项。阅读这样的内容比阅读“第一周我们做这个,第二周我们做那个”要有趣得多。就像产品需求文档(PRD)很无聊一样,你可以让它们变得更有趣一些,或者多给些例子,你可以塑造那个研究过程。这通常就是我们在人工审核阶段做的事情:我们看到任何危险信号吗?我们是否需要添加更多东西?因为这样做能节省大量时间。

Dan: 这实际上让我想起了我们在公司另一个部门发现的事情。Danny,他上过这个节目,是 Spiral 的总经理。在 Spiral 内部,我们正在构建一个写作代理。你可以把它想象成类似 Claude Code,但专门用于写作任务。我觉得这里面有相似之处,有时候你希望写作代理能切换到一种“访谈模式”,它会尝试更多地了解你是谁,你想要什么,而不是直接吐出一堆东西让你去阅读。听起来 Claude Code 或者这类编码工作流程中可能缺少了点什么,如果它能找到一些方式向你提问,而不是让你去读那个长长的文档,从而使它输出的东西更有可能正确,那会非常好。

Kieran: 绝对是的,这是一个有趣的自定义命令的想法。我们完全应该试试这个。是的,这绝对是我们应该自动化并改进的地方。同时,它知道很多东西,因为它能访问你的代码库和你的编码风格,这非常强大。所以,你有代码库,而且它做得其实相当不错。

六、传统测试与评估在 AI 时代依然关键

Kieran: 我认为,除了在开始阶段把它做得非常好之外,那些看似乏味的传统测试和评估 (evals) 也同样非常重要。因为,你怎么知道你做出来的东西确实有效呢?你可以打开控制台,点点看,但为什么不让它去测试呢?为它写个测试。比如,最基本的冒烟测试就很好,你只需看看它大体上是否能工作。否则它会做太多无用功。但这是一个让它自行迭代和修复问题的好方法。我们还没怎么尝试,但我们用了 Figma MCP(多模态能力原型),我们会说:“嘿,从 Figma 实现这个。”然后现在,你可以让 Puppeteer 截取一个移动版的屏幕截图,然后说:“比较一下这两个。”我们还没真正试过,但我们想更多地尝试这类方法。所以,有一些你通常会手动进行的检查和测试,现在可以内置到流程中。对于提示词也是一样,就是对提示词进行评估 (eval)。我有点把对提示词的评估看作是为代码编写测试,评估就是对提示词的测试。上周我也看到了,我让 Claude Code 运行一个评估,然后它说:“实际上,它 10 次里失败了 4 次。”我说:“运行 10 次,它是否总是通过?”“不,有 4 次不通过。”我说:“哦,看看输出,为什么它没有调用那个工具?”那是一个很酷的工具调用测试。它说:“哦,是的,它不够具体。”我说:“好吧,继续,修改提示词,直到它能持续稳定地一直通过为止。”然后它就做到了。我只是下楼去喝了杯咖啡,再上来,事情就解决了。所以评估也非常强大,因为它们能告诉你一个提示词是否有效。与编写代码类似,测试能说明你的代码是否有效。所以,更多地依赖那些更枯燥的传统方法,也非常强大。这说得通吗?

Dan: 我有个想法。因为我认为非常特别的一点,而且我想 Nityesh 你可能也是这样,如果我说错了请告诉我,Kieran,你特别之处在于你几乎测试了所有东西。你测试了每一个代理。Nityesh,你也用过很多代理吗?

Nityesh: 不,那是 Kieran 的专长。

七、Kieran 对主流 AI 编码代理的排名

Dan: 好吧,我想我们还是可以做这个,应该会挺有趣的。我想花五分钟,让 Kieran 对各种 AI 编码代理进行一个 S 级到 F 级的排名。我会分享我的屏幕,然后我会说出一个代理的名字,你告诉我它排在哪个级别。你准备好了吗?

Kieran: 来吧!

Dan: 好的,酷。让我们看看……嗯……Cursor 怎么样?

Kieran: 有趣的是,Cursor……什么样的 Cursor?是 Claude 4 版本的?是 Max 版本的?还是最佳设置下的 Cursor?是后台代理还是……好吧,传统的最佳设置下的 Cursor,使用 Claude 模型。这就是 Cursor 和 Binsurf(脚本中提及为 wind surf)令人困惑的地方,它们有无数个版本。为什么不直接提供最好的版本呢?这就是我喜欢某些代理的原因,它们直接说:“看,这就是最好的代理。”所以,它不会是最好的,我会说……A 级。Cursor 在配合 Claude 模型时非常好。

Dan: 好的。Binsurf(脚本中提及为 wind surf)呢?

Kieran: C 级,因为他们没有 Claude 4。这太荒谬了,因为三周前他们可能还是 A 级,现在却不是了。

Dan: 哇!哇!好吧,因为我几个月前从 Cursor 换到了 Binsurf,但后来又换回来了。好的,所以 Binsurf 是 C 级,Cursor 是 A 级。我们来看看……Devin。

Kieran: B 级。

Dan: 为什么?

Kieran: 感觉它集成度不高,设置起来有点麻烦,代码质量也……不如 Cursor 或 Claude Code 那么全面。我不知道他们后台用的是不是 Claude 4,但它不像其他的那样好用。

Dan: Charlie 呢?

Kieran: Charlie 主要用于代码审查,我们大多用 Charlie 进行代码审查。所以我还没怎么把它当作一个代理来用。我认为 Charlie 作为代理是 B 级,但作为代码审查工具是 A 级。我非常喜欢它做的代码审查。所以这很有趣,它在某些方面特别擅长。

Dan: 那么 Friday 呢?

Kieran: 我会把 Friday 排在比 Cursor 更高的位置,可能在 S 级和 A 级之间。有趣的是,他们甚至还没用上 Claude 4,他们还在……哇,他们还在研究如何让它真正发挥好作用。现在用的是 3.7 版本。但我为什么喜欢它呢?它和 Claude Code 绝对不同,但 Friday 有一种非常独特的、有主见的工作方式,我非常欣赏他们的理念,而且效果非常好。它就是能搞定事情。你给它一个 issue,它们制定计划,你批准,然后它就去做了,创建一个 pull request。我见过它做一些我用 Claude Code 做不到的事情,比如,实现这个 Figma 设计,它一次性就为助手生成了 Figma 设计。我还见过更多类似的时刻,它做的事情让我觉得:“哇,好吧,这让我尝到了未来的滋味。”这非常独特,而且它也是一个小团队,所以真的很酷。

Dan: Codex 呢?

Kieran: 对我来说是 B 级。

Dan: 好的,Codex 是 B 级。Copilot 呢?

Kieran: 我没用过 Copilot。

Dan: 你从没用过 GitHub Copilot?

Kieran: 我是说,我三年前用过,但是……不,我……好吧,公平点说,我大概半年前试用过一次,一秒钟后我就不用了。

Dan: 你给它排哪个级别?

Kieran: D 级。它不具备代理功能。但是我得说,我肯定应该试试新版本。我们还没试过。是的,我们还没试过具有代理功能的 Copilot,所以这样说不太公平。

Dan: 好的。我们是不是漏了什么?我觉得我们漏了……Claude Code。

Kieran: 显然是 Claude Code,但我猜是 S 级,宝贝。我们还有 Factory。

Dan: 哦,对。Factory 排在哪里?

Kieran: 有趣的是,Factory 在某些方面比其他任何工具都好,但它不是我的风格。Factory 更适合那些非常技术宅、追求绝对顶级代码质量的企业级用户。它确实不错,比如处理多仓库之类的。用起来有点麻烦,因为它是在线的,但也有本地部分。所以我给它评 B 级,可能比 Codex 和 Devin 稍低一点。是的,但它肯定有它的用武之地,它有些东西做得很好,但可能不适合我们,不是我的菜。

Dan: AMP 呢?AMP。

Kieran: 是的,AMP。

Dan: 怎么样?

Kieran: 我会把它放在……S 级,在 Claude Code 之下,在另一个 S 级工具之间。

Dan: 好的,为什么?

Kieran: 它在完成工作方面非常出色。人体工程学设计得很好,工具也很棒。使用那个工具并构建它的人,他们自己也在用(dogfooding)。你能从 Claude Code 和 AMP 中感觉到,它们的开发者是热爱代理的,他们只是在构建最好的东西,并且在尝试新事物。

Dan: 这就是为什么 Kieran 是那条“大鱼”的原因。

Kieran: 我的意思是,你正在把它们串联起来使用,你同时使用 Claude Code、Friday 和其他工具,这才是真正酷的地方。是的,就像……我越来越倾向于这样思考:就像你在为一个职位面试,你找到一个开发者来解决某个特定问题。我认为编码代理也是类似的。Friday 现在擅长做 UI,所以如果我需要 UI方面的工作,我会去找 Friday。如果我需要做研究,我会用 Claude Code。是的,如果我想要代码审查,我会用 Charlie。这很有趣,而且代理们可以协同工作,你不需要只用一个代理。我们用 Claude Code,那是因为 Charlie 可以在 GitHub 里工作,所以你只需 CC Charlie,Charlie 就会在 PR 上进行代码审查。

八、结合人类专家智慧与 AI 协同工作

Kieran: 所以我们使用 GitHub、Pull Request 和常规的开发者流程,这样人类就可以介入。我们可以雇佣一个在特定领域非常擅长的人来审查代码,然后 Claude Code 会完成剩下的工作。这非常强大,因为它就是一个我们完善了大约 20 年(或许更久)的生态系统,而且它行之有效。所以,让我们充分利用它。这可能也是为什么 Copilot 可能会表现不错的原因,因为它已经集成在里面了。

Dan: 等等,你最近确实这么做了。我们遇到了一些基础设施方面的问题,你知道,Kora 处理了大量大量的邮件,所以我们需要解决一些基础设施问题。我记得你好像请来了一位真正的专家,然后以一种特定的、结合 AI 代理的方式与他们合作,你从他们那里得到了你需要的东西,但对他们来说工作量却减少了。

Kieran: 是的。所以,当时还没有出现问题,但我们希望在交付最重要的事情时有更高的可见性。我在这方面不是很擅长,或者说我知道一些,但还是让我们请一位专家来。我们所做的就是进行了一次大约两小时的通话交流,我把所有内容都录了下来。最后,我把录音内容输入到 Claude,说:“好吧,你能根据这个创建两个相关的 issue 吗?”大概 10 分钟后,我说:“好了,这是 issue,你能审查一下吗?”他当时的反应是:“天啊!这……这家伙……”他不是那种 AI 怀疑论者,但他非常擅长他所做的事情,而通常他做的事情,AI 目前还做不好,因为有些事情 AI 确实还不太擅长。但他对结果印象非常深刻,并且对此提出了很好的修改意见,以便进行迭代。我们基本上做的就是,因为有了可以讨论的具体内容,所以我们能更快地迭代想法。然后第二天,当他完成了人工审查后,我们就说:“开始吧!”我直接用 Claude Code 来实现它,然后我们坐下来一起进行了代码审查。所以,这就像是把原本可能需要两周时间的工作,加速到几个小时内就完成了,这真的非常酷。

九、总结与展望

Dan: 我明白了。好了,这就是你们的代理工具排行榜,Claude Code 独占鳌头,AMP 紧随其后位列第二,不幸的是 GitHub Copilot 垫底,但一旦我们试用了它的代理功能,它还有提升空间。在今天结束之前,你们还有什么想说或想谈论的吗?

Kieran: 每个人都应该使用 Claude Code,或者至少尝试一下,即使你不是技术人员。订阅他们的 Max 或 Pro 套餐,每月只需 100 美元,就能无限制访问。如果你对技术方面持怀疑态度,其实它非常容易上手。我见过一些朋友,我的一个朋友,他之前用 Cursor,我说:“用 Claude Code 吧,它更好。”他问:“能好多少呢?”后来他说:“是的,确实更好。”然后他用 Claude Code 重建了所有他用 Cursor 凭感觉编码出来的东西,他说:“是的,这太棒了!”他感受到了那种进步。每个人都应该尝试一下,真正地去推动你的工具发挥极限。

Nityesh: 务必在价值最低的阶段检查 AI 的工作,你希望尽早发现那些问题。

Dan: 这是个很棒的建议。另外,也请大家使用 Kora,访问 Cora.computer 看看。它非常棒,我们一直在不断推出新功能。非常感谢两位来到节目,这真是一次愉快的交流。我迫不及待想看看你们在接下来几个月里还会创造出什么新东西。我们很快再聊。

Kieran/Nityesh: 谢谢你!非常感谢! (音乐) (Dan的幽默结尾和对节目的推广)


要点回顾

一、引言:两位工程师的超高生产力

  • Kora 是 Every 公司的 AI 邮件助手。
  • Kieran Klaassen (Kora 总经理) 和 Nityesh Agarwal (Kora 工程师) 两人团队的产出效率堪比 15 人团队。
  • 核心理念:“复利式工程 (compounding engineering)” - 每完成一项工作,都使得下一项工作更容易、更快、更可靠。
  • 新工具的出现需要新的工作原则和流程。

二、AI 工程的转变:从编码辅助到全面赋能

  • Kieran 认为 AI 代理正经历一个转折点,其能力在最近几周有显著提升。
  • AI 的应用已超越单纯的编码,扩展到研究、工作流程等各个方面。
  • 当代理足够优秀时,可以完成所有任务,工程师的角色转变为管理 AI。
  • Claude Code 是 Anthropic 公司推出的编码代理工具,通过命令行界面 (CLI) 在终端运行。
  • Claude Code 的特点:
    • 可以访问本地文件目录和计算机。
    • 能够运行计算机上的程序。
    • 可以对网站进行截图。
    • 可以搜索网页。
    • 拥有比标准 Claude 版本更多的工具集。
  • Kieran 展示了 Claude Code 的能力:
    • 通过询问“what did we ship in the last week”,Claude Code 查阅 git log 并总结了一周内发布的内容。
    • 一周内交付成果:6个主要功能 (major features),5个重要错误修复 (important bug fixes),3个基础设施更新 (infrastructure updates)。

三、Claude Code 与其他AI编码工具的对比

  • Nityesh 认为 Claude Code 相较于 Cursor 和 Binsurf (脚本中提及为 wind surf) 等工具,在简化性上提升了约 10 倍。
  • Claude Code 的界面极为简洁(只有一个文本输入框),其强大之处在于底层 Claude 模型的卓越能力,能够执行更长时间的任务和进行工具调用。
  • Kieran 举例说明 Claude Code 的应用:
    • 发现一个表单(用于收集用户反馈“如果不能再使用 Cora 会有多失望”)14天没有收到回复。
    • 询问 Claude Code 原因,它通过检查日志、搜索代码库,发现是一段添加用户的代码被移除了。
    • Claude Code 提供了解决方案,并按指令创建了拉取请求 (pull request),还编写了脚本来迁移错过的用户。
    • 整个过程耗费精力很少,如同将任务记录到 GitHub issue 一样简单。

四、Cora 团队的 AI 驱动工作流程

  • 任务启动:在 Claude 新模型(指 Opus 4)发布前一天,团队集中精力创建了大量 (约 20 个) GitHub Issues,为新模型准备工作。
  • 核心方法:使用 Claude Code 中的自定义命令 (Kieran 使用 cci 作为别名)。
    • 通过语音转文字将功能需求输入到 Claude Code。
    • Claude Code 根据预设的提示词 (prompt) 执行一系列动作。
  • 提示词执行流程(将想法转化为计划):
      1. 在代码库中进行研究 (grounding itself in the codebase)。
      1. 研究最佳实践 (searching the web, finding open-source patterns)。
      1. 提出一个计划 (present a plan),由人工审核 (human in the loop)。
      1. 人工确认计划后 (“Yep sounds good”),Claude Code 创建 GitHub Issue,并将其放入正确的看板列中。
  • 生成的 GitHub Issue 文档包含:问题陈述 (problem statement)、解决方案愿景 (solution vision)、所有需求 (requirements)、技术需求 (technical requirements)、实施步骤 (implementation steps) 和估时 (day counts,其中一天约等于一秒)。
  • 提示词的构建:
    • Nityesh 最初用 ChatGPT 生成了一个关于“AGI 已实现,如何准备任务”的提示。
    • 该提示随后被输入到 Anthropic 的提示词改进器 (prompt improver) 中进行优化。
    • 优化后的提示词成为了 Claude Code 中自定义命令的基础。
  • 复利效应的体现:首先花时间构建一个能有效生成其他提示词(即详细的任务规划文档)的提示词。
  • 并行工作:团队曾同时运行 6-7 个 Claude Code 实例,处理不同的想法和任务。
  • 协同方式:团队成员在通话中一起构思,然后启动 AI 代理执行,之后再进行人工审查。

五、新时代的软件工程心智模型与实践

  • Nityesh 的心智模型来源:借鉴《高产出管理》(High Output Management) 一书的理念。
  • 核心原则:“在价值最低的阶段修复任何问题 (fix any problem at the lowest value stage)”。
    • 应用于 AI 工作流程:在要求 AI 实施解决方案之前,仔细审查 AI 生成的计划文档(GitHub Issue),确保方向正确。
  • 人工审核的重要性:
    • 尽管 AI 能力强大,但人的品味、经验和直觉仍然不可或缺。
    • 示例:Kieran 通过提示 Claude Code “查看历史记录”才使其找到 bug,而 Nityesh 未作此提示时,Claude Code 则认为一切正常。
  • Nityesh 的学习与适应:
    • 两年前 ChatGPT 问世时开始自学编程。
    • 经历工具迭代:ChatGPT -> Cursor -> Binsurf (wind surf) -> Claude Code。
    • 在 Kieran 的推动下开始使用 Claude Code。
    • 过去三周,团队几乎没有接触过 Binsurf 或 Cursor 进行实际编码,主要依赖 Claude Code。VS Code 或 Cursor 主要用于阅读代码。

六、传统测试与评估在 AI 时代依然关键

  • Kieran 强调,传统的测试 (tests) 和评估 (evals) 对于确保 AI 生成代码的质量至关重要。
  • 代码测试:例如,编写冒烟测试 (smoke tests) 来验证功能是否基本可用。
  • 提示词评估 (Evals for prompts):类似于代码的单元测试,用于检验提示词的稳定性和效果。
    • 示例:Kieran 让 Claude Code 运行一个评估,发现某个提示词在 10 次调用中失败了 4 次。他指示 Claude Code 分析失败原因并修改提示词,直至其能持续稳定地通过所有测试。AI 自行完成了这个迭代过程。

七、Kieran 对主流 AI 编码代理的排名

  • S 级 (S tier):
    • Claude Code
    • AMP (略低于 Claude Code)
  • S 级与 A 级之间:
    • Friday (Kieran 提到其尚未使用 Claude 4,但因其独特的工作方式和效果而评价高)
  • A 级 (A tier):
    • Cursor (特指使用 Claude 4 模型时)
  • B 级 (B tier):
    • Devin
    • Charlie (作为代理时为 B 级;作为代码审查工具 (code reviewer) 为 A 级)
    • Codex
    • Factory
  • C 级 (C tier):
    • Windsurf (wind surf) (因其没有 Claude 4)
  • D 级 (D tier):
    • GitHub Copilot (Kieran 表示基于较早版本的使用体验,未充分测试其最新的代理功能)
  • 使用策略:根据任务特性选择最合适的代理,例如 Friday 擅长 UI 实现,Claude Code 擅长研究,Charlie 擅长代码审查。代理之间可以协同工作。

八、结合人类专家智慧与 AI 协同工作

  • 案例:与一位基础设施专家合作解决交付可见性问题。
    • 过程:
      • Kieran 与专家进行了 2 小时通话并录音。
      • 将录音内容输入 Claude Code,要求其生成两个相关的 GitHub Issues。
      • 专家审阅了 AI 生成的 Issues 并提出修改意见。
      • Kieran 使用 Claude Code 根据修订后的 Issues 实施解决方案。
      • 专家再对 AI 生成的代码进行审查。
    • 效果:将原先可能需要数周的工作压缩到几小时内完成。

九、总结与展望

  • Kieran 建议:每个人都应该尝试使用 Claude Code,即使是非技术人员。可以订阅其 Max 或 Pro 计划 (每月 $100)。
  • Nityesh 建议:务必在价值最低的阶段检查 AI 的工作成果,以便尽早发现并修正问题。
  • Dan (主持人) 推荐:试用 Cora (Cora.computer)。