# Algorithm Advisor

> 为复杂的系统设计问题提供算法建议和优化方案。分析约束条件，评估不同算法方案，提供具体的实现策略。

- Skill: `microwind/algorithm-advisor` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add microwind/algorithm-advisor`
- Raw SKILL.md: https://api.skillmd.com/api/skills/microwind/algorithm-advisor/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: microwind (https://skillmd.com/u/microwind)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/microwind/algorithm-advisor

---


# 算法顾问 (Algorithm Advisor)

## 概述

算法选择是系统设计的核心。选择错误的算法可能导致性能瓶颈、可扩展性问题和成本超支。本技能帮助你在给定的约束条件下，选择和优化最合适的算法。

**核心原则**: 没有万能的算法，只有权衡取舍。理解你的约束，评估你的选项，做出有根据的决定。

## 何时使用

**始终:**
- 设计新的系统功能和特性
- 优化现有的性能瓶颈
- 评估不同的技术方案
- 处理大规模数据或高并发场景
- 需要满足特定性能或准确性要求时

**触发短语:**
- "怎样设计一个..."
- "哪个算法适合..."
- "如何优化..."
- "需要 O(n) 的解决方案"
- "如何达到 100ms 响应"

## 算法顾问的功能

### 需求分析
- **理解约束** - 吞吐量、延迟、准确性、成本
- **识别权衡** - 时间 vs 空间、准确性 vs 速度
- **量化指标** - 具体数字和阈值
- **识别瓶颈** - 哪里最关键

### 算法评估
- **列举选项** - 2-4 个可行方案
- **性能分析** - 时间复杂度、空间复杂度
- **成本评估** - 开发、维护、运维成本
- **风险评估** - 各方案的风险点

### 解决方案设计
- **架构设计** - 模块化、分层设计
- **数据结构** - 选择合适的数据结构
- **优化策略** - 缓存、索引、并行处理
- **实现路径** - 分步实现计划

### 验证和测试
- **性能测试** - 如何验证性能指标
- **边界条件** - 极端情况如何处理
- **可扩展性** - 如何支持更大规模

## 常见算法选择场景

### 搜索和排序
```
场景: 在 100 万商品中快速搜索
约束: <100ms 响应时间

选项 1: 线性搜索 O(n)
- 性能: 100ms 对 100 万条
- 成本: 低
- 缺点: 无法扩展

选项 2: 二分搜索 O(log n) (需要排序)
- 性能: <1ms 对 100 万条
- 成本: 中等（排序开销）
- 缺点: 数据必须提前排序

选项 3: 哈希表 O(1) 平均
- 性能: <1ms
- 成本: 内存开销
- 推荐: 用于精确匹配

选项 4: 倒排索引 (ElasticSearch)
- 性能: <100ms，支持模糊搜索
- 成本: 中等
- 推荐: 用于全文搜索
```

### 推荐系统
```
场景: 1000万用户，100万商品，100ms 响应

选项 1: 协同过滤 (Collaborative Filtering)
- 性能: O(k*log n)，k 是推荐数量
- 准确性: 高（>80%）
- 冷启动: 差
- 推荐: 高活跃用户

选项 2: 内容推荐 (Content-Based)
- 性能: O(n)，预计算
- 准确性: 中等（60-70%）
- 冷启动: 好
- 推荐: 新用户/新商品

选项 3: 混合模型 (Hybrid)
- 性能: O(k*log n)
- 准确性: 更高（>85%）
- 冷启动: 好
- 推荐: 平衡方案

选项 4: 深度学习 (DNN)
- 性能: <100ms（离线计算）
- 准确性: 最高（>90%）
- 成本: 高（GPU）
- 推荐: 大规模高价值场景
```

### 缓存策略
```
场景: 热点数据访问，需要降低数据库压力

选项 1: LRU (Least Recently Used)
- 适用: 工作集相对固定
- 实现: HashMap + DoublyLinkedList
- 成本: O(1) 访问

选项 2: LFU (Least Frequently Used)
- 适用: 有明显冷热分布
- 实现: HashMap + PriorityQueue
- 成本: O(log n) 访问

选项 3: 时间衰减 (Time-decay)
- 适用: 流量随时间变化
- 实现: 复杂
- 成本: O(log n) 访问

选项 4: Redis 集群
- 适用: 大规模分布式缓存
- 性能: <10ms 延迟
- 成本: 中等（额外机器）
```

### 数据处理
```
场景: 处理 100GB 日志，提取关键指标

选项 1: 单机处理
- 性能: 几小时
- 成本: 低
- 缺点: 慢，容易超时

选项 2: MapReduce/Hadoop
- 性能: 30 分钟
- 成本: 中等（集群）
- 缺点: 写法复杂

选项 3: Spark
- 性能: 5-10 分钟
- 成本: 中等
- 推荐: 通用大数据处理

选项 4: 流处理 (Kafka + Flink)
- 性能: 实时
- 成本: 高
- 推荐: 实时分析需求
```

## 算法选择检查清单

**理解需求:**
- [ ] 明确性能目标（延迟、吞吐量）
- [ ] 明确准确性要求
- [ ] 明确可扩展性目标
- [ ] 明确成本限制
- [ ] 理解数据特征（大小、分布、更新频率）

**评估选项:**
- [ ] 列出至少 2 个可行方案
- [ ] 比较时间/空间复杂度
- [ ] 考虑实现复杂度
- [ ] 评估运维成本
- [ ] 考虑团队技能

**选择方案:**
- [ ] 选择满足约束的最简单方案
- [ ] 有备选方案以应对需求变化
- [ ] 规划迭代升级路径
- [ ] 设计性能测试方案

## 如何使用本技能

### 1. 明确问题
```
任务: 为电商平台设计个性化推荐系统

上下文:
- 100 万商品
- 1000 万用户
- 平均 100ms 响应时间
- 日均 1 亿次推荐请求
```

### 2. 分析约束
```
性能约束:
- 响应时间: <100ms (p99)
- QPS: 1000+

准确性约束:
- 推荐准确率: >80%
- 多样性: 类别覆盖 >5 种

成本约束:
- 不超过 1000 万人民币年预算
- 开发周期: 3 个月
```

### 3. 提出方案
```
方案 1: 离线协同过滤 + 在线召回
方案 2: 混合模型（内容 + 协同）
方案 3: DNN 模型（如果成本允许）
```

### 4. 详细设计
```
选定方案: 混合模型

架构:
1. 离线计算层 - 协同过滤、内容相似度
2. 在线服务层 - 快速排序和多样化
3. 缓存层 - 热点推荐预缓存
```

## 常见陷阱

**❌ 过度优化**
- 为了 1ms 延迟优化，增加 100 倍复杂度
- 在真正的瓶颈出现前优化

**❌ 忽视权衡**
- 不了解算法的性能权衡
- 选择看起来最快的，忽视内存/成本

**❌ 无法扩展**
- 选择对小规模有效但无法扩展的算法
- 没有考虑 10 倍/100 倍增长

**❌ 过度设计**
- 用复杂算法解决简单问题
- 在证明需要前过度工程化

**❌ 忽视实现复杂度**
- 算法复杂度低，但实现困难
- 增加开发时间和 bug 风险

## 红旗警告 - 重新评估

- 算法复杂度 > O(n²)，数据量 > 百万级
- 无法满足响应时间要求
- 需要支持 10 倍扩展但算法无法扩展
- 实现复杂度超出团队能力
- 成本高于预算

## 相关技能

- **Architecture Analyzer** - 理解整体架构
- **Performance Optimizer** - 性能优化
- **Database Design** - 数据库算法选择
- **Distributed Systems** - 分布式算法

## 资源

- 算法复杂度: https://bigocheatsheet.com
- 推荐系统: https://en.wikipedia.org/wiki/Recommender_system
- 数据结构: https://en.wikipedia.org/wiki/Data_structure

