# Multi Lens Research

> 基于斯坦福STORM方法的多视角深度研究Skill。通过多团队Agent架构(11个专业团队+自定义)消除单线程思维盲点，执行4步研究流程。当用户需要深度研究话题、评审论文草稿、做Code Review、评估方向、投资研究、谈判策略、面试准备、安全审计、架构评估、产品设计评审、创业建议时使用。注意：这是一个通用思维框架而非信息检索工具——它通过多角色视角碰撞产生洞见，不保证外部信息的最新性。

- Skill: `id-verne/multi-lens-research` (Agent Skill, multi-file: 80 files)
- Install (CLI): `npx skillmds@latest add id-verne/multi-lens-research`
- Raw SKILL.md: https://api.skillmd.com/api/skills/id-verne/multi-lens-research/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: id-verne (https://skillmd.com/u/id-verne)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/id-verne/multi-lens-research

---


# multi-lens-research v3

> 基于斯坦福 STORM 方法的多视角深度研究 Skill。
>
> **核心理念**：不是让一个人在脑子里模拟 N 种角色——而是真的派出 **N 个独立的 agent** 各担任一种角色，并行分析，再让另一个 agent 合成他们的输出。
>
> **v3 新特性**：多团队架构。根据场景自动选择最合适的专家团队，角色定义从 `teams/` 目录按需加载，不再所有场景共用同一套角色。

---

## ⚡ 团队选择机制

根据用户输入中的关键词，自动选择匹配的专家团队：

| 关键词 | 团队 | 角色 |
|--------|------|------|
| 自动完成全流程/全自动/一口气跑完/auto/full auto/run all | 自动模式 | 所有 Phase 自动运行，不暂停确认 |
| 研究/话题/深度分析/默认 | `teams/default/` | 实践者/学者/怀疑论者/经济学家/历史学家 |
| 论文/审阅/投稿 | `teams/paper-review/` | 支持性审稿人/反对性审稿人/方法论审稿人/竞争性审稿人/跨学科桥梁 |
| 代码/功能/PR | `teams/code-review/` | 架构师/用户倡导者/极简主义者/安全性能工程师/业务分析师 |
| 方向/值不值得/评估 | `teams/direction-judge/` | 乐观者/悲观者/发表策略师/资源现实主义者/模式匹配者 |
| 股票/投资/买入 | `teams/investing/` | 价值投资者/宏观分析师/技术分析者/风险管理师/行业内部视角 |
| 谈判/交易/协商 | `teams/negotiation/` | 博弈策略师/谈判心理学家/BATNA分析师/文化顾问 |
| 面试/招聘/求职 | `teams/interview-prep/` | 技术面试官/行为面试官/系统设计面试官/招聘经理 |
| 安全/审计/渗透 | `teams/security-review/` | 威胁建模师/渗透测试者/合规官/隐私分析师 |
| 架构/技术选型 | `teams/tech-architecture/` | 系统架构师/可扩展性工程师/迁移专家/技术债务分析师 |
| 设计/UX/产品 | `teams/product-design/` | 用户研究员/产品经理/视觉设计师/无障碍专家 |
| 营销/增长/SEO/品牌 | `teams/marketing/` | 增长策略师/SEO专家/品牌分析师 |
| 测试/QA/质量 | `teams/testing/` | 测试策略师/质量分析师/性能基准师 |
| 医疗/健康/临床 | `teams/healthcare/` | 临床证据分析师/医疗创新策略师/卫生系统分析师 |
| 创业/商业/MVP | `teams/startup-advisor/` | 创业者导师/风险投资分析师/市场进入策略师/技术合伙视角 |
| 自定义 | `teams/custom/<name>/` | 用户自定义角色 |

**自动模式：** 如果用户输入包含"自动完成全流程"、"全自动"、"一口气跑完"、"auto"、"full auto"、"run all"等关键词，进入自动模式。自动模式匹配到的团队不变，但跳过所有 Phase 间的用户确认，直接跑完 4 个 Phase。在自动模式下，非自动模式关键词同样用于选择团队（例如"多视角自动分析一下XXX"→ 选中 default 团队并自动跑完）。

**加载流程：**
1. 从用户输入识别场景关键词
2. 匹配 `teams/<team>/team.json` 获取角色列表
3. 读取每个角色的 `.md` 文件获取完整 prompt
4. 如果未匹配任何关键词 → 默认加载 `teams/default/`
5. 同时加载 `teams/shared/`（Phase 2-4 角色）

---

## 触发词 / When to Use

你不需要记命令。想用的时候，直接说人话就行：

| 你想干什么 | 怎么说 |
|-----------|--------|
| 🔬 深度研究 | `用多视角研究一下 [话题]` |
| 📝 审阅论文 | `用多视角审一下我的论文` |
| 💻 评审功能 | `用多视角看看这个功能值不值得加` |
| 🧭 判断方向 | `用多视角评估一下这个方向` |
| 📈 投资分析 | `用多视角分析一下这个投资` |
| 🗣️ 谈判准备 | `用多视角帮我分析这个谈判` |
| 🎯 面试准备 | `用多视角模拟面试` |
| 🔒 安全审计 | `用多视角做安全审计` |
| 🏗️ 架构评审 | `用多视角评估这个架构` |
| 🎨 设计评审 | `用多视角评审这个设计` |
| 📈 营销分析 | `用多视角分析一下这个营销策略` |
| 🔬 测试评估 | `用多视角评估一下这个测试方案` |
| 🏥 医疗研究 | `用多视角研究一下这个医疗方向` |
| 🚀 创业建议 | `用多视角评估这个创业想法` |

**简单规则：** 只要你的话里包含"多视角" + 上面的动作词，Skill 就会自动触发。

---

## ⚡ 必需：使用 Agent 工具并行启动子 agent

**这是本 Skill 最核心的行为规则。不要在自己的上下文中顺序模拟 N 个角色。必须通过 Agent 工具派出独立的子 agent。**

### 数据收集机制

子 agent 返回输出有且只有两种可靠方式：

| 方式 | 做法 | 适合场景 |
|------|------|---------|
| **A. 直接返回值（推荐）** | Phase 1 的多个 agent 在同一 turn 用非 background 模式启动，它们的最终输出直接作为 tool result 返回 | Phase 1 多角色并行 |
| **B. 写入文件后读取** | 子 agent 用 Write 工具输出到指定目录，Coordinator 用 Read 工具读取 | Phase 2-4 单 agent，或内容特别长的场景 |

### 架构概述

```
你（Coordinator）
├── 识别场景 → 加载 teams/<team>/team.json → 读取角色 .md 文件
├── 判断是否 auto_mode（用户输入含"自动完成"/"全自动"/"auto"等）
├── 澄清主题（如不够具体 → 先 AskUserQuestion）
│
├── ═══ Phase 1：Multi-Perspective Scan ═══
│    ├── 同一 turn 并行启动所有角色 Agent（非background）
│    │   Agent("ROLE_1 prompt")  ← 从 .md 文件读取
│    │   Agent("ROLE_2 prompt")  ← 从 .md 文件读取
│    │   ...
│    ├── 等待所有 agent 完成
│    ├── 展示每个角色的核心结论摘要
│    ├── （auto_mode 则自动继续，否则问用户）
│    │
├── ═══ Phase 2：Contradiction Map ═══
│    ├── Agent("矛盾分析师", 从 teams/shared/ 加载 prompt)
│    ├── 展示矛盾地图
│    ├── （auto_mode 则自动继续，否则问用户）
│    │
├── ═══ Phase 3：Synthesis ═══
│    ├── Agent("综合简报师", 从 teams/shared/ 加载 prompt)
│    ├── 展示综合简报
│    ├── （auto_mode 则自动继续，否则问用户）
│    │
└── ═══ Phase 4：Peer Review ═══
     ├── Agent("同行评审员", 从 teams/shared/ 加载 prompt)
     └── 展示最终完整报告
```

---

## 🚫 强制执行规则

| 规则 | 说明 |
|------|------|
| ❌ 禁止合并 Phase | 每个 Phase 必须独立运行（自动模式下也保持独立，但跳过用户确认步骤） |
| 🟢 自动模式例外 | 如果用户输入包含"自动完成全流程"、"全自动"、"auto"、"run all"等关键词，跳过所有 Phase 间的用户确认，自动跑完完整的 4 步流程。每个 Phase 的输出仍然展示摘要，但不等待用户确认直接进入下一 Phase |
| ❌ 禁止分批启动 Phase 1 | 所有角色必须在同一 turn 全量并行启动 |
| ❌ 禁止在自己上下文模拟角色 | 必须通过 Agent 工具派出独立子 agent |
| ✅ 必须从 teams/ 加载 prompt | 不要凭记忆写角色 prompt，去 Read 对应的 .md 文件 |

---

## 核心方法（4 步 STORM 流程）

### Phase 0：场景识别 + 团队加载

```
1. 从用户输入识别场景关键词（见上面的关键词表）
2. 如果关键词包含"自动完成全流程"、"全自动"、"一口气跑完"、"auto"、"full auto"、"run all"等 → auto_mode = true
3. 非自动模式关键词同样用于选择团队（例如"多视角自动分析一下XXX"→ 选中 default 团队 + auto_mode）
4. 匹配 teams/<team>/team.json ← 获取角色列表
5. 对每个角色 Read teams/<team>/<slug>.md ← 获取完整 prompt
6. Read teams/shared/team.json 和 Phase 2-4 的 .md
7. 在用户当前工作目录下创建工作目录 outputs/<team>/（不是 skill 目录下，而是 $(pwd) 即用户启动对话的地方）
```

### Phase 1：Multi-Perspective Scan

```
在同一 turn 并行启动所有角色子 agent（非 background）：

✅ 正确做法：
   Agent("ROLE_1 prompt（从 .md 读取）", ...)
   Agent("ROLE_2 prompt（从 .md 读取）", ...)    ← 同一 turn
   ...                                              ← 同一 turn
   全部启动后 → 等待完成 → 收集结果

❌ 错误做法：
   - 分批启动（后启动的角色受前一批影响，破坏独立性）
   - background + SendMessage（子 agent 不会回复文字内容）
   - 在自己上下文里模拟角色（思维链互相污染）
```

每个子 agent 的 prompt 末尾追加：`"请将你的完整分析保存到 outputs/<team>/<role>.md 文件（相对于当前工作目录 $(pwd)）"`

### Phase 2：Contradiction Map

派出 **1 个子 agent**，使用 `teams/shared/contradiction-analyst.md` 中的 prompt。

### Phase 3：Synthesis

派出 **1 个子 agent**，使用 `teams/shared/synthesis-briefer.md` 中的 prompt。

### Phase 4：Peer Review

派出 **1 个子 agent**，使用 `teams/shared/peer-reviewer.md` 中的 prompt。

---

## 完整工作流

```text
你（Coordinator）
│
├── 识别场景关键词 → 加载 teams/<team>/ 和 teams/shared/
│   ├── 如果关键词包含"自动完成全流程"/"全自动"/"auto"/"run all"等
│   │   → 进入自动模式（auto_mode = true）
│   └── 否则 → 标准模式（auto_mode = false）
├── 澄清主题 → 如果不够具体，先问用户
│
├── ═══ PHASE 1：Multi-Perspective Scan ═══
│    ├── 创建工作目录 outputs/<team>/（相对于当前工作目录，不是 skill 目录）
│    ├── 同一 turn 并行启动所有角色 Agent（非background）：
│    │   从 team.json 读取角色列表，对每个角色：
│    │   Read teams/<team>/<slug>.md → 获取 prompt
│    │   每个 Agent prompt 末追加保存路径
│    ├── 等待所有 agent 完成
│    ├── 收集每个角色的输出
│    ├── 展示每个角色的核心结论摘要
│    ├── （auto_mode）→ 自动继续 Phase 2，不询问
│    └── （标准模式）→ 问用户：是否继续 Phase 2？
│        是 → 继续
│        否 → 结束，或按用户要求调整
│
├── ═══ PHASE 2：Contradiction Map ═══
│    ├── Read teams/shared/contradiction-analyst.md → 获取 prompt
│    ├── Agent("矛盾分析师", {读取 Phase 1 的所有文件并分析})
│    ├── 读取矛盾地图
│    ├── 展示核心矛盾点、共识和盲区
│    ├── （auto_mode）→ 自动继续 Phase 3，不询问
│    └── （标准模式）→ 问用户：是否继续 Phase 3？
│
├── ═══ PHASE 3：Synthesis ═══
│    ├── Read teams/shared/synthesis-briefer.md → 获取 prompt
│    ├── Agent("综合简报师", {读取 Phase 1+2 的所有文件})
│    ├── 读取综合简报
│    ├── 展示 5 个关键发现 + 可操作建议
│    ├── （auto_mode）→ 自动继续 Phase 4，不询问
│    └── （标准模式）→ 问用户：是否继续 Phase 4？
│
└── ═══ PHASE 4：Peer Review ═══
     ├── Read teams/shared/peer-reviewer.md → 获取 prompt
     ├── Agent("同行评审员", {读取简报文件})
     ├── 读取同行评审报告
     └── 展示最终完整报告（所有 Phase 的输出）
```

---

## 关键原则

1. **Agent 团队是强制性的**：Phase 1 的多个角色必须作为并行子 agent 运行。这是本 skill 区别于"一个人自言自语模拟 N 种角色"的根本所在。
2. **从 teams/ 加载 prompt**：不要凭记忆写角色 prompt。每次去 Read teams/<team>/<slug>.md 获取准确内容。这是"渐进式加载"的核心。
3. **英文提示词保持原文**：子 agent 的 prompt 保留英文原文效果最佳。你的交互（展示给用户看、问问题）用中文。
4. **盲点优先**：Phase 2 的盲点分析往往是整个分析中最有价值的部分。
5. **共识≈真相**：如果所有角色都同意一个观点，它有极大概率是真的。
6. **先问再跑**：如果主题不够具体，先问 2-3 个澄清问题再开始（自动模式下仍应澄清模糊主题，但不要询问"是否继续下一 Phase"这类流程性问题）。
7. **可中断、可迭代**：任何一步的输出如果用户不满意，可以要求重新调整某一角色的 prompt 强度或换一个角色，重新跑那个子 agent（自动模式下同样适用；用户可随时打断，打断后转回标准确认模式）。
8. **自定义团队**：用户可以创建 `teams/custom/<name>/` 文件夹，放入自己的 team.json + 角色 .md 文件，skill 会自动发现。详见 `teams/custom/README.md`。

---

## 参考资料

- STORM paper: "Synthesis of Topic Outlines through Retrieval and Multi-perspective Question Asking" — NAACL 2024, Stanford OVAL Lab
- Live demo: storm.genie.stanford.edu
- Source code: github.com/stanford-oval/storm (MIT License)
