mcpField
N
n-version-workflow

n-version-workflow

github.com/rysweetAgent 工作流76133 次安装21 周前更新
代码仓库

关于 n-version-workflow

这项工作流技能用于高风险软件变更:先生成多个相互独立的实现,再比较并选择或综合方案。它覆盖规格制定、并行实现、测试审查、方案决策和记录理由等步骤。

主要功能

  1. 01制定统一的任务规格
  2. 02并行生成独立实现
  3. 03比较正确性、安全性与简洁性
  4. 04选择或综合解决方案
  5. 05记录决策依据与经验

适用场景

  1. 01评估安全功能的实现方案
  2. 02比较复杂算法的不同解法
  3. 03降低核心组件重构风险
  4. 04基于证据作出架构决策

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rysweet/amplihack --skill n-version-workflow

安装后在 Claude Code 中输入/n-version-workflow确认已加载。

详细介绍

N 版本编程工作流技能

目的

针对需要生成并比较多个独立方案、以选出最佳方法的关键实现,执行 N 版本编程工作流。

何时使用此技能

适用于:

  • 关键安全功能(身份验证、授权)
  • 存在多种有效方案的复杂算法
  • 核心组件的高风险重构
  • 对长期影响重大的架构决策
  • 正确性比速度更重要的情况

不适用于:

  • 简单的 CRUD 操作
  • 直接明了的错误修复
  • 文档更新
  • 细微的 UI 调整
  • 需要快速完成的紧急修复

配置

核心参数

N(版本数量):

  • 3 - 标准任务的默认值
  • 4-6 - 需要较高置信度的关键功能
  • 2 - 快速验证方案

选择标准(按优先级排序):

  1. 正确性 - 满足要求并通过测试
  2. 安全性 - 不存在漏洞或反模式
  3. 简洁性 - 极致简洁,复杂度最低
  4. 原则遵循度 - 遵循项目原则
  5. 性能 - 效率和资源使用情况

Agent 多样性配置:

  • conservative - 经验证的模式与安全性
  • innovative - 新颖方案与优化
  • minimalist - 极致简洁
  • pragmatic - 权衡利弊,采用实用方案
  • performance-focused - 针对速度和效率进行优化

执行流程

步骤 1:准备通用上下文
  • 使用 prompt-writer Agent 创建清晰明确的规格说明
  • 明确记录所有要求
  • 以可衡量的方式定义成功标准
  • 为所有 N 个版本准备完全一致的任务规格说明
  • 提前确定评估指标
  • 重要:记录无法通过优化舍弃的明确用户要求

输出: 一份权威规格说明文档

步骤 2:生成 N 个独立实现
  • 同时启动 N 个 Claude 子进程
  • 每个子进程接收完全相同的任务规格说明
  • 子进程之间不得共享上下文(确保真正独立)
  • 每个子进程使用不同的 Agent 多样性配置
  • 每个子进程都生成包含测试的完整实现
  • 每个子进程在独立目录中工作(version_1/、version_2/ 等)

N=3 的示例:

  • 子进程 1:保守方案(采用经验证的模式,进行全面的错误处理)
  • 子进程 2:实用方案(平衡简洁性和健壮性)
  • 子进程 3:极简方案(极致简化,尽量减少依赖项)
步骤 3:收集并比较实现
  • 等待所有 N 个实现完成
  • 使用 analyzer Agent 检查每个实现
  • 使用 tester Agent 运行每个版本的测试
  • 在比较矩阵中记录结果

比较矩阵:

| Version | Correctness | Security | Simplicity | Philosophy | Performance | Lines of Code |
|---------|-------------|----------|------------|------------|-------------|---------------|
| v1      | PASS        | PASS     | 7/10       | 8/10       | 150ms       | 180           |
| v2      | PASS        | PASS     | 9/10       | 9/10       | 180ms       | 95            |
| v3      | FAIL        | N/A      | 10/10      | 7/10       | N/A         | 65            |
步骤 4:审查和评估
  • 使用 reviewer Agent 进行全面比较
  • 使用 security Agent 评估每个版本的安全性
  • 按优先级顺序应用选择标准
  • 淘汰未通过正确性测试的版本
  • 按其他标准比较剩余版本
  • 找出每个实现中的最佳部分

评估流程:

  1. 筛选:移除未通过正确性测试的版本
  2. 安全关卡:淘汰存在安全问题的版本
  3. 原则检查:评估各版本的简洁性和遵循度
  4. 性能比较:测量并比较基准测试结果
  5. 综合:判断混合方案是否更优
步骤 5:选择或综合方案

决策树:

  1. 是否有一个版本满足所有标准?
    • 是 → 选择该版本并记录原因
    • 否 → 继续步骤 2
  2. 是否有 2 个或更多版本在最高优先级标准上并列?
    • 是 → 继续步骤 3
    • 否 → 选择得分最高的版本
  3. 各版本是否具备互补优势?
    • 是 → 综合各方案的优点,形成混合方案
    • 否 → 按加权标准优先级进行选择

综合示例:

Selected: Hybrid of v1 and v2
- Core logic from v2 (ruthless simplicity)
- Error handling from v1 (comprehensive coverage)
- Testing approach from v2 (focused, minimal)
- Documentation style from v1 (thorough)

Rationale: v2's minimalist core paired with v1's robust
error handling provides optimal balance of simplicity
and production-readiness.
步骤 6:实现选定的方案
  • 使用 builder agent 实现最终版本
  • 如果选定单个版本:直接使用
  • 如果是综合方案:结合各版本的优点实现混合方案
  • 保留步骤 1 中用户提出的所有明确要求
  • 运行完整测试套件
  • 在代码注释中说明选择理由

文档模板:

"""
N-Version Implementation Selection

Generated Versions: 3
Selection: Hybrid of v1 (conservative) and v2 (pragmatic)

Rationale:
- v1 had superior error handling and edge case coverage
- v2 had cleaner architecture and better testability
- v3 failed correctness tests (edge case handling)

This implementation combines v2's core logic with v1's
defensive programming approach for production robustness.

Selection Criteria Applied:
1. Correctness: v1=PASS, v2=PASS, v3=FAIL
2. Security: All passed
3. Simplicity: v2 ranked highest
4. Philosophy: v1 and v2 tied
5. Performance: Negligible difference
步骤 7:记录经验
  • 创建分析文档:n_version_analysis.md
  • 记录生成的所有 N 个实现方案
  • 详细说明选择理由
  • 总结被否决方案中的见解
  • 使用 amplihack.memory.discoveries 中的 store_discovery() 将学到的模式存入记忆
  • 添加对比矩阵,供日后参考

权衡

成本: 需要 N 倍的计算资源和时间 收益: 大幅降低出现严重错误的风险 最适用场景: 错误代价高昂的功能(安全性、数据完整性)

示例

示例 1:身份验证系统

任务: 实现基于 JWT 的身份验证 配置: N=4(关键安全功能) 配置档案: conservative、security-focused、pragmatic、minimalist

结果:

  • v1(conservative):最全面,但设计过度
  • v2(security-focused):安全性出色,但较复杂
  • v3(pragmatic):平衡性良好,但遗漏了一些边缘情况
  • v4(minimalist):过于简单,存在安全漏洞

选择: 综合 v2 和 v3

  • 采用 v2 的安全实现
  • 采用 v3 的 API 设计和简洁性

理由: 安全性不容妥协,但 v3 更简洁的 API 设计在不牺牲安全性的前提下提升了易用性。

示例 2:数据处理流水线

任务: 高效处理大型 CSV 文件 配置: N=3(性能关键型) 配置档案: pragmatic、performance-focused、minimalist

结果:

  • v1(pragmatic):基于 Pandas,容易上手但速度较慢
  • v2(performance-focused):自定义流式处理,速度快 10 倍
  • v3(minimalist):Python CSV 模块,简单但速度较慢

选择: v2(performance-focused)

理由: 性能要求足以证明复杂度的合理性。v2 的流式处理方案满足了吞吐量要求,而 v1 和 v3 无法扩展以满足需求。

理念契合

此工作流贯彻以下原则:

  • 降低风险: 多种实现方案可以发现单一方案可能遗漏的错误
  • 探索: 不同方案能揭示设计上的权衡
  • 基于证据进行选择: 系统化比较,而非凭直觉判断
  • 学习: 被否决的版本仍能提供有价值的见解
  • 并行执行: 同时运行 N 个实现方案以提高效率

与默认工作流集成

启用此工作流后,它会取代 DEFAULT_WORKFLOW 中的步骤 4–5(研究/设计和实现)。其他所有步骤(需求、测试、CI/CD)保持不变。

评论

支持 Markdown