技术选型(Tech Evaluation)
选型的核心不是"哪个更好",而是"在我们的场景下哪个更合适"。 没有最好的技术,只有最合适的技术。
第一步:定义选型问题
用 AskUserQuestion 明确以下信息:
| 要素 | 问什么 | 为什么重要 |
|---|---|---|
| 要解决的问题 | 选型是为了解决什么? | 锚定评估标准 |
| 候选方案 | 已经有哪些候选?需要我帮忙发现更多吗? | 确定评估范围 |
| 硬性约束 | 必须满足的条件(许可证、语言、兼容性) | 先排除不合格的 |
| 优先维度 | 最看重什么?(性能 / 生态 / 学习成本 / 成本) | 决定权重 |
| 决策时间 | 需要多深入?快速判断还是深度评估? | 控制投入 |
第二步:快速筛选
2.1 排除不合格的
用硬性约束做第一轮筛选:
markdown## 候选方案筛选 | 候选 | 约束 1(MIT 许可) | 约束 2(支持 TS) | 约束 3(活跃维护) | 结果 | |------|-------------------|-------------------|-------------------|------| | 方案 A | ✅ | ✅ | ✅ | 进入评估 | | 方案 B | ✅ | ❌ | ✅ | 排除 | | 方案 C | ✅ | ✅ | ❌(2 年无更新) | 排除 |
2.2 快速判断路径
如果筛选后只剩 1-2 个候选,且差异明显:
- 直接给出推荐 + 理由,不需要走完整评估
- 记录决策到 spec 文档中即可
如果筛选后有 2-3 个势均力敌的候选 → 进入第三步完整评估。
第三步:多维度评估
3.1 构建评估矩阵
根据用户关注的维度,构建权重矩阵:
markdown## 评估维度与权重 | 维度 | 权重 | 说明 | |------|------|------| | 功能匹配度 | 30% | 是否满足核心需求 | | 性能 | 25% | 对应场景下的实际表现 | | 生态与社区 | 20% | 文档质量、社区活跃度、第三方集成 | | 学习成本 | 15% | 团队上手难度 | | 运维成本 | 10% | 部署复杂度、监控、升级成本 |
权重确定方式:
- 用户明确说了优先级 → 直接用
- 用户没说 → 给出建议权重,让用户确认
3.2 逐维度评估
对每个维度,用事实和数据评估,不用"感觉":
| 维度 | 怎么评估 | 数据来源 |
|---|---|---|
| 功能匹配度 | 列出需求清单,逐项检查每个候选是否支持 | 官方文档、GitHub issues |
| 性能 | 找 benchmark 数据,或自己跑 PoC 测试 | 官方 benchmark、第三方评测、自测 |
| 生态与社区 | GitHub stars/issues 响应速度、npm 周下载量、Stack Overflow 问题数 | GitHub、npm、Stack Overflow |
| 学习成本 | 文档质量、API 设计是否直觉、有无迁移指南 | 官方文档、教程资源 |
| 运维成本 | 部署方式、配置复杂度、升级历史(有无 breaking changes) | CHANGELOG、升级指南 |
3.3 PoC 验证(可选但推荐)
对关键维度,写代码验证比看文档更可靠:
markdown## PoC 验证 ### 验证目标 用方案 A 和方案 B 分别实现 <核心场景>,对比: - 代码量和复杂度 - 实际性能数据 - 遇到的坑 ### 验证结果 | 指标 | 方案 A | 方案 B | |------|--------|--------| | 代码行数 | 120 行 | 85 行 | | 响应时间(p95) | 23ms | 18ms | | 遇到的问题 | 文档缺失,靠看源码 | 顺利,文档完整 |
PoC 不需要做完整功能,只需要验证最不确定的维度。
第四步:综合评分与决策
4.1 评分汇总
markdown## 综合评分 | 维度 | 权重 | 方案 A | 方案 B | 方案 C | |------|------|--------|--------|--------| | 功能匹配度 | 30% | 9 | 8 | 7 | | 性能 | 25% | 7 | 9 | 8 | | 生态与社区 | 20% | 8 | 7 | 9 | | 学习成本 | 15% | 6 | 8 | 7 | | 运维成本 | 10% | 7 | 8 | 6 | | **加权总分** | | **7.65** | **8.05** | **7.50** |
4.2 给出决策
markdown## 选型决策 **推荐:方案 B** ### 核心理由 - 加权总分最高(8.05) - 在最看重的性能维度(权重 25%)上明显领先 - PoC 验证中开发体验最好 ### 取舍说明 - 放弃方案 A 的原因:学习成本较高,团队没有相关经验 - 放弃方案 C 的原因:社区活跃但功能匹配度不足 ### 风险提示 - 方案 B 的社区规模较小,未来可能面临维护风险 - 建议:核心功能不过度依赖其独有特性,保持可替换性
第五步:输出选型报告
选型结论写入 spec 文档(调 writing skill 的技术文档模式),至少包含:
- 背景与动机:为什么需要选型
- 候选方案:有哪些选项
- 评估过程:评估维度、权重、数据来源
- PoC 结果:如果做了验证
- 决策与取舍:选了什么、为什么选它、放弃了什么
选型准则
- 场景优先:不存在"最好的"技术,只有"最合适当前场景的"技术
- 数据说话:每个评分都要有事实依据,不凭印象打分
- 验证不确定性:最不确定的维度用 PoC 验证,不靠猜
- 考虑团队:技术本身好不等于团队用得好,学习成本是真实成本
- 留退路:优先选不锁定的方案,保持可替换性
- 不过度评估:2 个候选差异明显就直接选,不需要搞 5 维 10 分的矩阵
与其他 skill 的关系
task-start(方案阶段遇到选型)→ tech-evaluation(评估决策) deep-research(需要广度调研时)← tech-evaluation 按需调用 tech-evaluation → writing(输出选型报告到 spec)
tech-evaluation vs deep-research:
- tech-evaluation:必须给结论。"选 A,因为 XYZ"
- deep-research:不一定给结论。"目前市场格局是这样,趋势是那样"
- 选型前如果对候选方案不够了解,可以先用 deep-research 调研,再用 tech-evaluation 决策


