几天前,首席技术官Chris分享了 Cloudflare 开源的OAuth 2.1 库,几乎全是由 Claude 编写的。
引起注意的不仅是技术成就,还有他们记录了整个创作过程,每个提示、每次迭代、每次人工干预都保存在 git 提交消息中,就像人类与 AI 合作的考古记录。阅读开发历史就像观看人类直觉和人工智能之间的实时对话(有时是挣扎)。
首席工程师@kentonv起初是 AI 怀疑者,“我试图验证我的怀疑,结果却证明自己错了。”两个月后,Claude 生成了几乎所有成为生产就绪认证库的代码。
Kenton 在每个提交中都包含了生成代码的提示,这使这种探索成为可能。在开发中越来越依赖 AI 工具时,这种做法将变得越来越重要,有时原始提示比生成的代码更有价值(也更容易审查),尤其是当工程师声明了模型盲目遵循的错误假设时。
这种透明度将 git 历史从变更记录转变为意图记录,创建了一种新的文档形式,弥合了人类推理和机器实现的差距。
阅读大约 50 次提交揭示了这种合作实际展开的一些有趣模式:
- 示例提示:他们的初始提示是一个大量的代码块,展示了实现库的工作者将如何使用它,这种方法消除了方法签名的歧义,同时揭示了抽象规范经常错过的实际考虑因素,这是描述舞蹈和展示舞蹈编排的区别。
- “你做了 X,但我们应该做 Y,请修复。”最有效的提示遵循一致的模式:关于当前状态的清晰上下文、改变的原因解释和具体的前进方向,没有复杂的指令,只是感觉像纠正同事的上下文反馈。
- 文档变得轻松:一个简单的句子提示生成了全面的模式文档,模型在这些文档生成任务中表现出色,将原本繁琐的管理工作转化为自然的开发副产品。
大约 20 次提交后,Kenton 不得不手动介入,Claude 无法正确移动类声明,需要后续提交来修复位置,后来 Claude 求助于使用grep
和sed
bash 命令,因为其搜索和替换功能无法处理重复的代码块,有一条评论“我真的可以手动更快地完成这一个,哦,好吧。”
大约 40 次提交标记处,手动提交变得频繁,如样式、删除未使用的方法等,编码模型仍在这些方面挣扎,显然 AI 生成了超过 95%的代码,但人工监督在整个过程中是必不可少的。
如果使用 AI 编码工具,从他们的方法中可以得到一些观察: - 关注可交付成果:对于后端服务,定义公共端点及其预期行为;对于 CLI 工具,展示示例用法;对于库,演示集成。
- 将提示视为版本控制资产:在提交消息中包含提示,为未来的维护和调试创建有价值的上下文。
- 预期多轮提示:几乎每个功能都需要多次迭代和细化,这不是限制,而是合作的方式。
- 不要害怕亲自处理:一些错误和样式问题手动修复比通过提示更快,知道何时干预是技巧的一部分。
阅读这些提交引发了一个想法:如果将提示视为实际的源代码会怎样?想象一个版本控制系统,你提交用于生成功能的提示而不是生成的实现,当模型不可避免地改进时,你可以连接最新版本并使用增强的能力重新生成整个代码库。
这种方法将使业务逻辑本质上自我记录,任何阅读英语的人都可以理解功能何时添加以及为什么添加,提示将像遗传指令一样,包含生长应用程序所需的基本信息。
当然,这假设模型可以严格遵循提示,并需要对模型有非常高的信任度,实际上,生成的代码仍需要部署、测试和维护,但这提出了一个有趣的问题:如果所有业务逻辑都可以包含在自我记录的提示中,我们是否最终会达到一个点,即提示提交的历史本身成为“应用程序”,直接在模型中运行?我们是否可以完全消除中间的代码生成步骤?
不管怎样,回到现实的现状。
这个 OAuth 库代表的不仅仅是一个技术里程碑,它是一种新的创造性动态出现的证据,在这个过程中人类有大量的参与,我们仍远未达到 AI 独立实现这种范围的库,几乎每个功能都需要多轮提示,一些错误无法通过自动修复解决,某些功能手动完成更快,并且需要人类创建每个提示并提供战略方向。
尽管有这些限制,AI 在这个库中生成了绝大多数的功能代码,Claude Code 两周前才公开发布,已经实现了这种级别的合作。
目前,它只是另一个工具,但与锤子不同,这个工具在不断改进,从每次交互中学习,每次迭代都变得更有能力。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。