
Prompt 编写的四个黄金原则:让 AI 从「随机消耗」到「精确收敛」

Ralph Loop(AI 的无限迭代循环)是所有 AI 使用者的噩梦。
你给 AI 一个任务,它开始工作。你等待结果。它一直在迭代,一直在改,一直在消耗你的配额。但它从来没有「完成」。
为什么?
因为你的 Prompt 没有「明确的完成标准」。
AI 不知道自己在朝什么方向努力,就会在随机方向上消耗所有的迭代配额。
问题:Ralph Loop 的本质

什么是 Ralph Loop?
Ralph Loop 是 AI 在执行任务时陷入的一种状态:
- 它在不断地改代码
- 它在不断地尝试新的方法
- 它在不断地优化细节
- 但它从来没有停下来
这不是 AI 「笨」。
这是 AI 「不知道什么时候该停」。
根本原因:
AI 的优化目标是「更好地完成任务」。
但如果你没有定义「什么是完成任务」:
- AI 会无限地优化细节
- AI 会不断地尝试更好的方案
- AI 会永远找不到「完成」的状态
原则 1:明确的完成标准
模糊的完成标准是 Ralph Loop 最大的杀手。
Bad Example
帮我优化这个函数AI 会做什么:
- 优化性能
- 优化可读性
- 优化代码结构
- 优化命名
- 优化注释
- ...
它永远不会停。
Good Example
优化这个函数,满足以下标准时停止:
1. 函数执行时间 < 100ms(基于 1000 次调用测试)
2. 代码行数 ≤ 20 行
3. 圈复杂度 ≤ 5
4. 所有现有测试通过
5. 新增测试覆盖率 ≥ 90%
完成标准:
- [ ] 执行时间达标
- [ ] 代码行数达标
- [ ] 圈复杂度达标
- [ ] 测试全部通过
- [ ] 测试覆盖率达标
当所有checkbox都被勾选时,停止工作并报告结果。AI 会做什么:
- 测量当前执行时间
- 优化代码
- 再次测量
- 达到 < 100ms → 停止优化性能
- 检查代码行数
- 重构到 ≤ 20 行 → 停止重构
- 运行所有测试
- 全部通过 → 停止修改
- 报告:任务完成
完成标准的四个维度
维度 1:性能指标
执行时间 < 100ms
内存占用 < 50MB
并发支持 ≥ 1000 users维度 2:代码质量
代码行数 ≤ 20
圈复杂度 ≤ 5
测试覆盖率 ≥ 90%维度 3:功能完整性
功能 A:✅ 已实现
功能 B:✅ 已实现
功能 C:✅ 已实现维度 4:验收标准
场景 1:输入 X → 输出 Y
场景 2:输入 Z → 输出 W
场景 3:边界情况 → 正确处理原则 2:阶段性目标

不要在一个 prompt 里塞入整个项目。
拆成阶段,让 AI 逐个攻克。
Bad Example
帮我开发一个完整的电商系统,包括用户管理、商品管理、订单管理、支付集成、库存管理、物流跟踪...AI 会做什么:
- 陷入混乱
- 不知道从哪里开始
- 每个功能都做了一点,但没有一个完成的
- 最终报告:任务太复杂,无法完成
Good Example
【阶段 1:用户管理】
任务:
- 实现用户注册
- 实现用户登录
- 实现密码重置
完成标准:
- [ ] 注册功能:邮箱 + 密码 → 验证通过
- [ ] 登录功能:正确凭证 → token 返回
- [ ] 重置功能:邮箱验证 → 密码更新
完成阶段 1 后,等待我的下一步指令。
【阶段 2:商品管理】
任务:
- 实现商品列表
- 实现商品详情
- 实现商品搜索
完成标准:
- [ ] 列表功能:分页返回 20 条商品
- [ ] 详情功能:ID → 商品详情
- [ ] 搜索功能:关键词 → 匹配商品
完成阶段 2 后,等待我的下一步指令。
【阶段 3:订单管理】
...AI 会做什么:
- 聚焦阶段 1
- 完成阶段 1 的所有功能
- 验证完成标准
- 报告:阶段 1 完成
- 等待下一步指令
阶段拆分的三个层次
层次 1:功能模块级
阶段 1:用户管理
阶段 2:商品管理
阶段 3:订单管理
阶段 4:支付集成层次 2:任务级
阶段 1.1:用户注册
阶段 1.2:用户登录
阶段 1.3:密码重置层次 3:步骤级
步骤 1.1.1:设计注册表单
步骤 1.1.2:实现邮箱验证
步骤 1.1.3:实现密码加密
步骤 1.1.4:实现数据库存储
步骤 1.1.5:测试注册流程原则 3:内建自我纠正

不要假设 AI 一次就能写对。
在 prompt 中嵌入 TDD 循环。
Bad Example
帮我写一个排序算法AI 会做什么:
- 写一个快速排序
- 可能有小 bug
- 可能边界情况没处理
- 直接报告完成
你会得到:
- 看起来对的代码
- 运行后可能出错
Good Example
帮我写一个排序算法,必须按照以下 TDD 循环执行:
【Red - 写失败测试】
1. 先写测试用例,覆盖以下场景:
- 正常数组:[3, 1, 2] → [1, 2, 3]
- 空数组:[] → []
- 单元素:[5] → [5]
- 重复元素:[2, 2, 1] → [1, 2, 2]
- 负数:[-1, 3, -2] → [-2, -1, 3]
2. 运行测试,确保全部失败(因为还没实现)
【Green - 最小实现】
3. 实现排序算法,让测试通过
4. 运行测试,确保全部通过
【Refactor - 重构】
5. 检查代码质量:
- 是否有重复代码?
- 命名是否清晰?
- 是否有优化空间?
6. 重构代码
7. 再次运行测试,确保仍然通过
完成标准:
- [ ] 所有测试场景覆盖
- [ ] Red 步骤:测试失败
- [ ] Green 步骤:测试通过
- [ ] Refactor 步骤:代码优化
- [ ] 最终测试全部通过
报告每个步骤的结果。AI 会做什么:
- 写测试
- 运行测试 → 失败
- 报告:Red 完成
- 实现算法
- 运行测试 → 通过
- 报告:Green 完成
- 检查代码质量
- 重构
- 运行测试 → 仍然通过
- 报告:Refactor 完成,任务完成
TDD 循环的价值
对于 AI:
- 强制 AI 先思考测试场景
- 避免「写代码再补测试」的遗漏
- 确保代码质量
对于你:
- 看到完整的测试覆盖
- 知道代码经过了验证
- 有信心代码是正确的
原则 4:逃生舱

不是所有任务都能完成。
如果 AI 卡住了,它应该留下有用的信息而不是沉默地消耗配额。
Bad Example
帮我优化这个遗留系统的性能AI 可能会做什么:
- 尝试优化
- 遇到困难
- 继续尝试
- 遇到更多困难
- 一直消耗配额
- 最终:配额耗尽,没有输出
你会得到:
- 时间浪费了
- 配额浪费了
- 不知道问题在哪里
- 无法继续工作
Good Example
帮我优化这个遗留系统的性能。
【逃生舱规则】
如果遇到以下情况,必须立即停止并报告:
1. 无法找到性能瓶颈
2. 优化后性能没有改善
3. 改动风险超过收益
4. 缺少关键信息(文档、测试、监控)
【停止并报告的内容】
1. 停止原因(对应上面的 1-4)
2. 已完成的步骤
3. 遇到的具体问题
4. 建议的下一步行动
5. 需要的额外信息
【任务执行】
现在开始性能优化...
如果卡住超过 3 次迭代,触发逃生舱。AI 卡住时会做什么:
- 尝试优化
- 遇到困难
- 再尝试
- 还是卡住
- 触发逃生舱
- 报告:
【逃生舱触发】
停止原因:2. 优化后性能没有改善
已完成的步骤:
1. 分析性能瓶颈 → 发现数据库查询是瓶颈
2. 添加索引 → 性能提升 10%
3. 优化查询语句 → 性能没有进一步改善
遇到的具体问题:
- 数据库结构无法修改
- 查询已经是最优的
- 缓存策略受业务限制
建议的下一步行动:
1. 考虑读写分离
2. 考虑分库分表
3. 需要架构级别的调整
需要的额外信息:
- 业务能否接受最终一致性?
- 是否有预算增加硬件?
- 历史数据归档策略?你会得到:
- 知道 AI 在哪里卡住了
- 知道已经做了什么
- 知道问题在哪里
- 可以继续推进,而不是重新开始
四个原则的综合应用

场景:开发一个用户登录功能
Bad Prompt
帮我做用户登录AI 可能的行为:
- 开始写代码
- 不断添加功能
- 不断优化细节
- 永远不停止
Good Prompt
【任务:用户登录功能】
【阶段 1:基础登录】
任务:
- 实现邮箱 + 密码登录
- 实现密码加密存储
- 实现基础错误处理
完成标准:
- [ ] 正确邮箱 + 密码 → 登录成功
- [ ] 错误邮箱或密码 → 返回错误
- [ ] 密码使用 bcrypt 加密
- [ ] 单元测试覆盖率 ≥ 90%
【TDD 循环】
按以下步骤执行:
1. Red:写测试(正常、错误、边界)
2. Green:实现功能
3. Refactor:优化代码
【逃生舱】
如果遇到:
1. 无法集成 bcrypt 库
2. 数据库连接问题
3. 测试环境配置失败
立即停止并报告:
- 停止原因
- 已完成的步骤
- 具体问题
- 建议的下一步
完成阶段 1 后,等待我的指令再开始阶段 2。AI 的行为:
- 清晰知道要做什么
- 知道什么时候算完成
- 知道遇到困难怎么报告
- 完成后等待下一步
写在最后:从「模糊指令」到「精确契约」

传统 Prompt 的风格:
帮我做 X这是「模糊指令」。
AI 不知道:
- 什么时候算完成
- 遇到问题怎么办
- 如何评估自己的工作
最佳实践 Prompt 的风格:
任务:X
完成标准:A、B、C
执行步骤:1、2、3
逃生舱:如果卡住,报告 Y这是「精确契约」。
AI 知道:
- 朝什么方向努力
- 什么时候停下来
- 遇到困难怎么报告
四个原则的总结
| 原则 | 核心价值 | Bad | Good | |-----|---------|-----|------|" | 1. 明确的完成标准 | 知道什么时候停 | "优化这个函数" | "优化到 < 100ms,≤ 20 行,测试通过时停止" | | 2. 阶段性目标 | 避免任务过大 | "做整个系统" | "阶段 1:用户管理 → 阶段 2:商品管理" | | 3. 内建自我纠正 | 确保质量 | "写算法" | "Red → Green → Refactor 循环" | | 4. 逃生舱 | 避免卡死 | "优化遗留系统" | "卡住时报告:原因、已完成、问题、建议" |
Ralph Loop 不是 AI 的错。
是我们的 Prompt 没有给 AI 足够的引导。
模糊的完成标准 → AI 随机消耗配额明确的完成标准 → AI 精确收敛
一次性大任务 → AI 陷入混乱阶段性小任务 → AI 逐个攻克
假设一次写对 → 充满 bug 的代码内建 TDD 循环 → 可验证的代码
卡住时沉默 → 配额浪费卡住时报告 → 可继续推进
好的 Prompt 不是「更长的描述」。
好的 Prompt 是「更精确的契约」。
它告诉 AI:要做什么、什么时候停、怎么验证、遇到问题怎么办。
这就是从「模糊指令」到「精确契约」的转变。
