Conversational Software Engineering: Compiling Intent
🔑 核心要点
- 对话不是产物,是输入 - 对话必须被翻译成可验证、可测试、可维护的持久产物
- 演进路径 - Conversation → Structure → Determinism
- Stochastic Backsliding - 概率性编译带来的退化问题的解决方案
- The Gate - 验证状态决定自动化是否进行
核心思想
作者提出了 Conversational Software Engineering (CSE) 方法论:对话成为界面,底层系统被确定性验证。工程师通过对话表达意图,系统将其编译成可验证的产物。
对话是控制表面。工程系统通过对话运作——通过对话探索行为、编写和修改规格、调查验证失败、请求生成、请求解释。
关键概念
1. Conversation → Structure → Determinism
意图通过对话表达;结构通过受限表示、合约和显式断言消除歧义;确定性是那些结构化产物被机械检查的地方。
2. Authored Spec vs.Compiled Spec
- Authored Spec - 人类可读、结构化、意图的规范表达
- Compiled Spec - 规范化、规范化、可机器验证的形式
3. Stochastic Backsliding
编译步骤是概率性的。同一个输入不能保证同一个输出——也不能保证更好的输出。解决方案是单元级编译和保留:每个编译单元独立评估,如果新生成的单元更差,则拒绝并保留先前版本。
4. The Gate
下游系统问一个关键问题:规格的验证状态是什么?状态决定自动化是否进行。
- unvalidated - 未验证
- pass - 通过
- warning - 警告
- error - 错误
- stale - 已过期(工件自上次验证后已更改)
5. Full Spec Surface Validation
超越单单元检查,验证在整个规格表面运行:
- 规格之间的依赖关系
- 引用解析
- 行为、测试和指令的图结构
- 循环依赖检测
- 标识符一致性
- 覆盖度(每个行为至少有一个验收测试)
- 跨规格一致性
为什么重要
这篇文章提出了一个系统性的方法论来解决 AI 编码助手带来的问题。不是简单地让 AI 写代码,而是建立了一个完整的工程流程:
- 对话作为控制表面
- 结构化规格作为持久产物
- 确定性验证作为把关
- 验证状态作为自动化的门禁
评价
这是关于 AI 时代软件工程方法论的深度思考。对于正在探索如何有效使用 AI 进行软件开发的团队来说,这篇文章提供了重要的见解。