AI 循环

ai-loop
分类编程
作者Agentic Awesome Skills 社区
许可MIT
评分4.30/5
使用15.1K

AI-Loop 技能

概述

ai-loop 技能为智能体工作流构建了一个有界的开发周期。通过将过程分为明确的规划(Spec)、实现(Build)和验证(Review)阶段,它能帮助智能体在构建和修正限定范围的代码变更时,确保需求、风险关卡和停止条件保持透明。

何时使用此技能

  • 当你需要从零开始构建或大幅修改某个功能,且希望智能体在一个清晰的有界工作流中处理整个生命周期(规格定义、实现和验证)时。
  • 当处理具有明确范围和约束的独立组件、模块或功能时。
  • 当用户要求完成一次完整的开发流程,且该工作具有明确的成功标准、合理的验证路径,且不存在未解决的安全或产品决策时。

工作原理

该技能执行一个由三个阶段(Spec、Build、Review)组成的受控开发循环。调用后,智能体将依次经过这些阶段,直到限定的需求通过验证、达到停止条件或需要人工审批。

在开始之前,需定义:

  • 构建-评审循环的最大迭代次数。
  • 作为证据的验证命令或手动检查项。
  • 需要明确审批的操作,例如破坏性命令、生产环境变更、外部服务写入或重大的架构调整。

第一阶段:Spec(规划)

1. 就用户想要构建的功能或应用进行访谈。每次只问一个聚焦的问题,直到你完全理解目标、必须满足的需求、约束条件以及“完成”的标准。
2. 此时不要开始构建。
3. 在获取足够信息后,编写一份清晰、详细的规格说明书,并将其保存至 specs/<feature-name>.md
4. 规格说明书必须包含:
- 目标
- 确切的需求
- 需要处理的边界情况
- 一个可供检查构建结果的具体“完成”定义
- 迭代预算、验证命令和审批关卡。

第二阶段:Build(实现)

1. 阅读你在 specs/<feature-name>.md 中创建的规格说明书。
2. 严格按照说明书进行构建。
3. 不要添加额外功能,不要重构无关代码,也不要凭空创造规格说明书之外的需求。
4. 严格专注于完成规格要求。列出你已覆盖的规格需求,以便在评审步骤中进行核对。

第三阶段:Review(验证)

1. 将你的实现结果与 specs/<feature-name>.md 进行对比。
2. 逐项核对需求是否达成。列出所有差距、Bug 或缺失项,并指明其违反了规格说明书中的具体条款。
3. 如果有任何项未通过且迭代预算尚未耗尽,请写下具体的修复方案,并返回第二阶段(Build)进行处理。
4. 在以下情况停止并请求人工干预:接下来的修复将改变规格、超出迭代预算、需要高风险操作,或依赖于规格说明书中未涵盖的产品决策。
5. 只有在所有需求均通过验证时,才通过构建并结束技能执行。
规格中的要求已完全满足,且声明的验证证据已通过。

示例

示例 1:创建基础统计助手

用户:
> 我想添加一个用于计算数字数组基础统计数据(平均值、中位数、众数)的实用工具。

智能体 (阶段 1 - 规格):
> 我可以帮您实现。首先,这个统计计算器应该用哪种编程语言实现?另外,空数组或无效输入应该如何处理?

用户:
> JavaScript。如果数组为空,返回 null。如果包含非数字,请忽略它们。

智能体 (阶段 1 - 规格):
> 谢谢。我已经根据我们讨论的需求在 specs/stats-calculator.md 中创建了规格文件。现在,我将开始实现它。

智能体 (阶段 2 - 构建):
> *(创建 stats_calculator.js 并严格按照规格实现 meanmedianmode)*
> 我已完成计算器的实现。现在我将验证实现结果。

智能体 (阶段 3 - 评审):
> 对照 specs/stats-calculator.md 检查实现情况:
> - 要求:平均值计算 -> 通过 (PASS)
> - 要求:中位数计算 -> 通过 (PASS)
> - 要求:众数计算 -> 通过 (PASS)
> - 要求:空数组返回 null -> 通过 (PASS)
> - 要求:忽略非数字 -> 失败 (FAIL)(我注意到 mode 函数没有过滤非数字)。
>
> 我现在将返回阶段 2 以修复 mode 函数。

智能体 (阶段 2 - 构建回溯):
> *(修复 mode 以过滤非数字)*
> 我已更新实现。让我们重新验证。

智能体 (阶段 3 - 评审):
> - 要求:众数过滤非数字 -> 通过 (PASS)
>
> 所有要求均已通过!统计计算器已完成并验证。

最佳实践

  • ✅ 在规划阶段,请一次只提出一个澄清问题,以免让用户感到压力过大。
  • ✅ 在编写任何代码之前,请在 specs/<feature-name>.md 中明确记录边界情况。
  • ✅ 在构建阶段,请严格遵守已批准的规格。
  • ✅ 为循环设置较小的迭代预算,如果预算耗尽,请准确报告剩余事项。
  • ✅ 在执行破坏性、生产环境、涉及凭据或外部可见的操作前,请暂停并请求明确批准。
  • ❌ 不要实现未指定的额外功能或进行无关的重构。
  • ❌ 不要跳过评审阶段,或在未验证每一项要求的情况下通过评审。
  • ❌ 在没有新证据或改变方法的情况下,不要重复尝试相同的失败修复方案。

局限性

  • 此技能要求在规格 (Spec) 阶段提供关于功能的充分上下文。
  • 它最适用于边界清晰的独立功能或任务,而非开放式的架构重构。
  • 评审阶段依赖于智能体对照生成的规格进行自我评估;对于关键系统,仍建议进行人工评审。
  • 它不能替代人类对安全敏感、破坏性、生产环境、合规性或外部可见变更的审批。
  • 如果出现需求冲突、测试无法运行,或验证依赖于不可用的凭据或系统,应停止执行而非继续。

安全与防护注意事项

  • 运行或测试构建阶段生成的代码时请保持谨慎。务必在安全的沙箱环境中运行测试。
  • 避免在未验证安全性的情况下直接执行用户提供的任意 Shell 命令。
  • 确保代码或规格中没有硬编码的密钥、令牌或凭据。
  • 将生产环境部署、数据迁移、支付流程、凭据更改和外部写入操作视为需要审批的工作。

常见陷阱

  • 问题: Agent 试图一次性构建一个庞大的系统,导致规格说明过于复杂且实现不完整。
解决方案:ai-loop 的范围限制在小型、模块化的功能上。将大型系统拆分为多个独立的循环。
  • 问题: 规格说明模糊,导致构建阶段依赖于主观假设。
解决方案: 在规划阶段投入更多时间,通过提出针对性问题来明确需求。

相关技能

  • @plan-writing - 用于为大型项目编写更详细的实施计划。
  • @ask-questions-if-underspecified - 关于访谈用户的标准指南。