系统分析了数百条 Claude 生成提交的代码质量、设计模式和真实收益,提供了 AI 辅助开发效果的最具说服力的实战数据。
几天前,我的 CTO Chris 分享了 Cloudflare 开源的 OAuth 2.1 库,这个库几乎完全是由 Claude 编写的。
吸引我注意的不仅是技术成就本身,而是他们记录了整个创意过程。每一个 prompt、每一次迭代、每一次人为干预都保存在 git 提交信息中——形成了一份人工智能协作的考古记录。读他们的开发历史,就像在观看一场实时的对话(有时也是斗争),在人类直觉和人工智能之间展开。
主要工程师 @kentonv 最初是一个 AI 怀疑论者。"我当时想验证自己的怀疑。结果我证明了自己是错的。"两个月后,Claude 生成了几乎全部代码,这份代码最终成了一个生产级别的身份验证库。
Kenton 在每次提交中都包含了用于生成代码的 prompt,这使得这项探索成为可能。随着我们在开发中越来越多地依赖 AI 工具,这种实践将变得越来越重要。有时,原始 prompt 比生成的代码更有价值,也更容易审查——尤其是当工程师声称了一个错误的假设而模型盲目跟随的时候。
这种透明度将 git 历史从变更记录转变成意图记录,创造了一种新的文档形式,它将人类推理和机器实现联系在一起。
读了大约 50 次提交后,我发现了一些有趣的模式,说明这种协作实际上是如何展开的:
Prompt by example. 他们最初的 prompt 是一个相当庞大的代码块,精确地展示了库将如何被实现它的 worker 使用。这种方法消除了关于方法签名的歧义,同时也揭示了抽象规范经常遗漏的实际考虑。这就像演示舞蹈编排和单纯描述一舞蹈的区别。
"You did X, but we should do Y. pls fix." 最有效的 prompts 遵循一个一致的模式:清晰地说明当前状态的背景,解释为什么需要改变,以及具体的前进方向。没有繁复的指令——只是contextual反馈,感觉非常像是在纠正同事。
个人备注:在我自己使用 Cursor 的经历中,我发现在 prompts 中包含文档的直接链接很有帮助。我可以轻松地在 prompts 中引用 @<pasted_docs_link>,不过我还没有充分使用过 Claude Code,不知道是否有等效的工作流。
Documentation becomes effortless. 一个单句 prompt 生成了详尽的模式文档。我注意到模型在这些文档生成任务上表现出色——把原本繁琐的家务工作转变成开发的自然副产品。
大约在第 20 次提交时,我注意到 Kenton 不得不手动干预。Claude 无法正确地移动一个类声明,需要后续的一次提交才能修复位置。后来,Claude 还诉诸使用 grep 和 sed bash 命令,因为它的搜索替换功能无法处理重复的代码块。
有一条评论给我留下了深刻印象:"我本可以手工做这个,结果更快,哎呀。"
在第 40 次提交左右,手动提交变得频繁——样式、删除未使用的方法,都是现在编码模型仍在努力解决的家务工作。很显然 AI 生成了 >95% 的代码,但人工监督始终是必不可少的。
如果你在使用 AI 编码工具,根据他们方法的几点观察:
Focus on the deliverable. 对于后端服务,定义公开的端点和其预期行为。对于 CLI 工具,展示示例用法。对于库,演示集成。
Treat prompts as version-controlled assets. 在提交信息中包含 prompts,为未来的维护和调试创造有价值的背景。
Expect multi-shot prompting. 几乎每项功能都需要多次迭代和改进。这不是一个限制——这就是协作的工作方式。
Don't be afraid to get your hands dirty. 有些 bugs 和样式问题通过手动修复比通过 prompt 要快得多。知道何时干预是这项工艺的一部分。
读这些提交激发了我的一个想法:如果我们把 prompts 作为实际的源代码呢?想象一个版本控制系统,你提交用来生成功能的 prompts,而不是生成的实现。当模型不可避免地改进时,你可以连接最新版本并用增强的能力重新生成整个代码库。
这种方法会让业务逻辑本质上自我文档化——任何懂英文的人都能理解功能何时被添加以及为什么。prompts 会变成像遗传指令一样,包含了培育应用程序所需的基本信息。
当然,这假设模型可以实现严格的 prompt 遵守,并需要对模型有很高的信任。在实践中,生成的代码仍需要部署、测试和维护。但它提出了一个令人着迷的问题:如果所有业务逻辑都能包含在自我文档化的 prompts 中,我们最终是否可能到达这个 prompt 提交的历史本身变成"应用程序"的阶段,直接在模型中运行?我们能完全消除中介代码生成步骤吗?
无论如何,回到现实的当前状态。
这个 OAuth 库代表的远不仅是技术里程碑——它是一种新的创意动力出现的证据。一种人工智能处理机械实现,人类提供方向、背景和判断的动力。
很清楚,整个过程中都有大量的人类参与。我们离 AI 独立实现这个范围内的库仍然很远。几乎每项功能都需要多轮 prompting,一些 bugs 抵抗了所有自动修复的尝试,某些功能手动完成会更快,而且每个 prompt 都必须由人类创建,并提供战略方向。
尽管有这些限制,AI 生成了这个库中绝大多数的函数代码。Claude Code 是两周前才公开推出的,它已经在实现这个级别的协作。
目前为止,它只是另一种工具。但与锤子不同,这种工具在改进自己,从每一次互动中学习,随着每一次迭代变得更有能力。