内容提要
AI代理在无指令文件的情况下,通过自行阅读代码库文档,成功构建了管理界面。这证明代码库本身比预加载指令更重要。作者强调,可读的代码库、代理先读后做和严格审查是成功关键。失败源于环境变化而非知识缺失,需定期复查。最终结论:与其优化提示词,不如让代码库自解释。
延伸解读
代码库即文档:代理的“冷缓存”策略
代理未加载预置指令文件,而是通过阅读代码库中的文档文件(如 doctrine 文件)来获取必要信息。这表明,代码库本身可以充当代理的“源真相”,而预加载指令只是缓存。当缓存未命中时,代理直接从源码中获取答案,只要代码库文档清晰且易于访问,代理就能成功执行任务。
失败模式:环境变化而非知识缺失
代理在构建过程中因符号链接导致数据误复制,但它通过逐字节验证和精确删除来纠正错误。这一失败并非源于缺乏知识,而是因为环境在代理操作期间发生了变化,导致其基于过时状态行动。这提醒我们,代理和人类一样,需要定期重新检查环境状态,而非仅仅依赖静态指令。
验证税:不可省略的保险
代理在无指令下成功,但并非未经审查。每个阶段都经过二次审查,确保代码与文档一致,边界未被破坏。作者强调,成功公式包含三个要素:可读的代码库、代理先读后做、以及严格的审查门禁。缺少任何一环,其他环节都无法弥补。这提示我们,在依赖代理时,验证环节是必要的保险。
优化提示词不如优化代码库
作者认为,与其花时间优化提示词或指令文件,不如投资于让代码库自解释。将边界规则写在代码旁,记录已修复的 bug,让测试体现设计意图。这样,即使代理没有预加载指令,也能通过阅读代码库获得所需信息。这从根本上改变了 AI 辅助开发的焦点,从提示工程转向代码库的可读性。
Q&A
AI代理在没有项目指令文件的情况下是如何成功构建管理界面的?
代理通过自行阅读代码库中的文档来获取必要信息,例如阅读数据湖包的契约文件和管理外壳的交换契约。它先读后做,并在每个阶段进行规划验证,确保集成点与代码一致。
作者认为代码库和预加载指令的关系是什么?
作者认为预加载指令只是一个缓存,而代码库才是真正的信息源。代理通过从代码库中按需获取信息,就像人类阅读代码一样,因此代码库的可读性比指令文件更重要。
作者在构建代码库时采用了哪些实践来提高其可读性?
作者为每个非平凡包编写了说明文档,记录关键文件、模式和已修复的bug;将边界规则用文字说明并在测试中强制执行;设计文档记录了决策和理由。这些实践使代码库能够被陌生人(包括AI代理)理解。
实验中代理遇到的一次失败是什么?原因是什么?
代理通过一个符号链接意外地将测试数据复制到了工作树中,导致生产数据中出现嵌套目录。失败的原因是环境在代理操作期间发生了变化,代理基于过时的状态行动,而不是因为缺乏知识。
作者认为成功使用AI代理的关键因素有哪些?
成功的关键因素有三个:可读的代码库、代理先读后做的习惯,以及严格的审查门禁。三者缺一不可,审查门禁确保代理的每个步骤都经过验证。
作者认为关于AI辅助开发的常见问题是什么?为什么他认为这是错误的问题?
常见问题是“如何为代理编写更好的提示词”或“指令文件应该包含什么”。作者认为这是错误的问题,因为指令文件只是缓存,会过时,而真正重要的是让代码库本身能够回答问题。