Claude skill sansheng
Fusion-style multi-agent research skill for Claude Code: spawn N sub-agents in parallel, then Judge + synthesize while preserving the minority I-don't-know vote. 把 OpenRouter Fusion 思路用原生 Agent tool 落地。
npx -y skills add DQT-bit/claude-skill-sanshengAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
三省(sansheng)——多 Agent 并行调研工坊。把 OpenRouter Fusion API 的"panel + judge + 综合"多模型协作思路映射到 Claude Code 原生 Agent tool。 名字典故:曾子"吾日三省吾身"(独立反思)+ 三省六部(多部独立议事综合决策),三 = 推荐的 sub-agent 数。 方法论:spawn N 个 sub-agent 从互补角度并行调研 → 主 agent 做 Judge 交叉评审(标共识/分歧/缺口/独特观点)→ 综合输出敢下判断的结论。 当用户需要做"开放性研究、对比、评审、选型、风险盘点、跨领域调研"时使用。最终产出一份带共识/分歧/缺口标记的综合判断,以及可立即落地的下一步。 触发词包括但不限于:研究下 X、对比 X 和 Y、评审这个方案、X 的选型建议、X 有哪些风险、分析下 X、调研一下 X、X 和 Y 哪个更适合 Z、帮我看看 X 怎么选、X 方案有什么坑、三省一下 X、让三省看看。 即使用户只是丢一个开放性问题"应该 A 还是 B"、或要"全面看一下 X",只要任务有多个合理答案、需要多视角综合,都应该触发。 不要用于答案唯一的任务(bug 已定位、格式转换、单函数实现、删除冗余代码);不要用于用户在线等结果的实时迭代场景(spawn + 综合至少要 1-2 分钟);不要用于单页 web 查询能搞定的轻量问题。
SKILL.md
8.8 KB, ~2.9k tokens by cl100k_base, as published. Nobody here has run it
三省 | 多 Agent 并行调研工坊
工坊规矩 「吾日三省吾身」——独立反思三遍胜过一遍想透。OpenRouter 在 DRACO benchmark 上把这事坐实了:Opus×3 + Opus judge 比 Opus 单跑高 +6.7pp,提升的 3/4 来自"综合"环节本身,1/4 才来自模型多样性。意味着 sub-agent 即便都是 Claude 家族也能拿大头收益。但 Judge 阶段如果只投票多数赢,就把最值钱的产物(少数派的"我不知道")扔了。
参考:https://openrouter.ai/blog/announcements/fusion-beats-frontier/
接活:用户给的输入
用户通常给以下任意一种,足够明确就直接开始:
- 一个开放问题:「X 和 Y 哪个更适合 Z」/「X 选型」/「评审 X 方案」
- 一个研究对象:「研究下 X」/「全面看一下 X」
- 一个隐性研究需求:「帮我做 X 决定」(背后是需要先调研)
如果问题太窄("修这个 bug"),停手,告诉用户这不适合 Fusion,用单 Opus 跑更划算。
班规总纲
- 拆角度异质 > 同质。三个都拍"成本"等于没拆。如果实在想不出三个互补角度,也好过单跑——但写综合时明说"角度同质,多样性贡献弱"。
- 同条消息里发 3 个 Agent tool 调用。串行 spawn 就是花三倍时间装样子。
- 每个 sub-agent prompt 自包含。它看不到主对话,要的 context 一并给。
- 每个 sub-agent 都加硬约束:「不要凭记忆瞎编,查不到就说"未找到"」、「输出 ≤ 500 字」、「不要给"看情况"的废话结论」、「必须加载 web-access skill」(如需联网)。
- Judge 阶段保留少数派。某个 sub-agent 老实说"查不到 / 无法验证"——这条不能被另两个 agent 的笃定数字淹没。这是 sub-agent 模式最值钱的产物。
- 综合输出敢下判断。"看情况" / "需要更多信息" 是这个 skill 的最大失败模式。
- 不要把 Judge 偷偷做成 Vote。Judge 的工作是对比、找空白、调和张力,不是数票。
第一步:拆角度(异质 > 同质)
针对用户问题,拆 3 个互补角度。常见模板:
| 任务类型 | 推荐角度 |
|---|---|
| 技术选型 | 任务质量 / 成本 / 实操集成 |
| 架构评审 | 性能 / 可维护性 / 演进风险 |
| 方案对比 | 优势面 / 劣势面 / 落地约束 |
| 调研类 | 一手来源 / 社区实践 / 已知陷阱 |
| 决策类 | 短期收益 / 长期影响 / 退出成本 |
第二步:并行 panel
Agent A (Explore): 角度 1(偏调研)
Agent B (Explore): 角度 2(偏调研)
Agent C (general-purpose): 角度 3(偏实操 / 需要更深的工具理解)
每个 sub-agent prompt 必须包含:
- 明确的研究目标 + 完整背景(self-contained)
- 硬约束:不编、查不到就说不到、≤ 500 字、敢下判断
- 必须加载
web-accessskill(如需一手来源) - 输出结构提示(建议小标题 + bullet)
第三步:Judge 阶段
三 agent 全部回来后,按这个清单交叉评审:
| 维度 | 怎么做 |
|---|---|
| 共识 | 三家都点到的核心结论 → 这是可信的基线 |
| 分歧 / 张力 | 各家结论差异 → 标 ⚠️ 待核实项 |
| 关键缺口 | 谁老实说"查不到 / 无法验证" → 这条不能被淹没 |
| 独特观点 | 某 agent 单独发现的硬事实 / 反直觉点 |
| 潜在错误 | 凭印象写的数据 / 未引用一手来源的判断 |
第四步:综合输出
按这个顺序:
- 一句话敢下判断的结论
- 结构化对照表(决策维度 + 推荐)
- 老实标注待核实项 + 它们对结论的影响
- 可立即落地的下一步
- (可选但建议)元观察:这次得到了什么单跑拿不到的东西
第五步:落 Obsidian 知识卡(默认开)
调研一散就废了。综合输出完成后,主 agent 额外写一张 Obsidian 卡片到用户的 vault,让今天的调研三个月后还能搜得到。
默认 vault 路径:~/Documents/Obsidian/三省研究/(用户可在主对话里改、或软链接到真 vault;不存在会自动建)。
文件名:<YYYY-MM-DD>-<slug>.md(slug 从 topic 取,中文按拼音可选,留 8-12 字)。
卡片模板(严格按这个结构生成,留好 [[wikilink]] 占位让用户在 Obsidian 里手连):
---
type: research
date: {YYYY-MM-DD}
topic: {一句话主题}
tags: [{领域}, {方法}, 三省调研]
sources:
- {一手 URL 1}
- {一手 URL 2}
sub_agents:
- {Agent A 角度}
- {Agent B 角度}
- {Agent C 角度}
---
# {主题}
> 一句话判断:{综合输出的那句话}
## 共识
- {三家都点到的核心结论}
## 分歧 ⚠️
- {差异 + 待核实项}
## 缺口(少数派的"我不知道")
- {谁说了"查不到/无法验证"——这条不能被淹没}
## 独特发现
- {某 agent 单独发现的硬事实 / 反直觉点}
## 下一步
- [ ] {可立即落地的动作 1}
- [ ] {可立即落地的动作 2}
## 元观察
{这次得到了什么单跑拿不到的东西}
## 相关
[[{相关概念 1}]] [[{相关概念 2}]]
硬约束:
- frontmatter 字段必须齐全(type/date/topic/tags/sources/sub_agents)——Obsidian Dataview 靠这些
- sources 只放真的查过的一手 URL,没查过就留空数组
sources: [],不要为了好看编 URL(同班规"少数派的我不知道"原则) [[相关]]占位用方括号,让用户自己在 vault 里连——自动猜的双链质量差,反而污染图谱- 文件已存在就在文件名后加
-v2别覆盖(同 topic 多次研究是常态)
告诉用户卡片在哪:综合输出末尾加一行:
📝 已落 Obsidian 知识卡:
<vault path>/<filename>.md(在 Obsidian 里搜topic或 tag 找到它)
已知陷阱
- ❌ Sub-agent 拿到主对话的隐式上下文 → spawn 时务必给完整自包含 prompt
- ❌ 串行 spawn(三次单独消息)→ 总耗时变三倍,并行收益归零
- ❌ Judge 阶段简单"投票多数赢" → 丢掉少数派的不确定结论
- ❌ 三个 sub-agent 角度同质(都是"成本")→ 多样性贡献为零
- ❌ Sub-agent prompt 用"搜索"动词 → 把它锚定到 WebSearch,对反爬站点失效(参考 web-access skill 的论述)
- ❌ 综合输出"看情况" → 等于没综合
- ❌ 用户明显是"实时迭代"场景却强上 Fusion → 用户在等,1-2 分钟 spawn 时间会让他离开
- ❌ Obsidian 卡片硬编"相关 [[X]]"自动双链 → 自动猜的链接质量差污染图谱,留空让用户手连
- ❌ Obsidian 卡片 sources 凑数填假 URL → 同班规"少数派的我不知道"原则,没查过的就留空数组
实测案例
完整案例见 examples/openrouter-fusion-research.md——会话里现场跑过一次"OpenRouter Fusion API 在 Claude Code 工作流里何时值得用",Agent B 老实说"OpenRouter API 返回 Fusion 价格 -1,无法估算"——这条被保留进最终结论,验证了"少数派的'我不知道'是最贵的信号"。
一句话出师证书
Fusion 不是把同一个问题问三遍,是从三个互补视角各看一眼,然后保留少数派的"我不知道"。如果你的综合输出是"看情况",你没在做 Fusion,你只是浪费了三倍 token。
发现日期:2026-06-16 · 打磨日期:2026-06-17(按鲁班 Skill v1.0 思路)
What ships with it: 5 files
14.7 KB alongside SKILL.md
examples/
- .gitignore181 B
- LICENSE1.0 KB
- README.md6.1 KB