关于 n-version-workflow
这项工作流技能用于高风险软件变更:先生成多个相互独立的实现,再比较并选择或综合方案。它覆盖规格制定、并行实现、测试审查、方案决策和记录理由等步骤。
主要功能
- 01制定统一的任务规格
- 02并行生成独立实现
- 03比较正确性、安全性与简洁性
- 04选择或综合解决方案
- 05记录决策依据与经验
适用场景
- 01评估安全功能的实现方案
- 02比较复杂算法的不同解法
- 03降低核心组件重构风险
- 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- 快速验证方案
选择标准(按优先级排序):
- 正确性 - 满足要求并通过测试
- 安全性 - 不存在漏洞或反模式
- 简洁性 - 极致简洁,复杂度最低
- 原则遵循度 - 遵循项目原则
- 性能 - 效率和资源使用情况
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 评估每个版本的安全性
- 按优先级顺序应用选择标准
- 淘汰未通过正确性测试的版本
- 按其他标准比较剩余版本
- 找出每个实现中的最佳部分
评估流程:
- 筛选:移除未通过正确性测试的版本
- 安全关卡:淘汰存在安全问题的版本
- 原则检查:评估各版本的简洁性和遵循度
- 性能比较:测量并比较基准测试结果
- 综合:判断混合方案是否更优
步骤 5:选择或综合方案
决策树:
- 是否有一个版本满足所有标准?
- 是 → 选择该版本并记录原因
- 否 → 继续步骤 2
- 是否有 2 个或更多版本在最高优先级标准上并列?
- 是 → 继续步骤 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