# Tech Evaluation

> 技术选型技能：在多个候选方案中做出有依据的决策。 和 deep-research 的区别：deep-research 是广度调研（搞清楚一件事）， tech-evaluation 是聚焦决策（A 还是 B，选哪个，给结论）。 包含权重矩阵、PoC 验证流程、决策报告模板。 触发词：选型、选哪个、A 还是 B、对比、评估方案、用什么框架、用什么库。 触发场景：task-start 方案阶段遇到选型问题、引入新依赖前、架构决策。 即使用户没有说"选型"，只要意图是"在几个方案中做选择"，都应触发此技能。

- Skill: `312362115/tech-evaluation` (Agent Skill)
- Install (CLI): `npx skillmds@latest add 312362115/tech-evaluation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/312362115/tech-evaluation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: 312362115 (https://skillmd.com/u/312362115)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/312362115/tech-evaluation

---


# 技术选型（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 决策

