| name | diverge-converge |
| description | A domain-agnostic thinking-partner method for turning any immature idea into a complete, implementable manuscript through deliberate divergence then convergence. NOT a software skill — software is merely one example domain; it applies equally to research design, business strategy, product, writing, policy, planning, and any open-ended problem you can't yet see whole. Invoke when the user brings a half-formed idea, says 先扩散后收敛 / 扩散收敛 / diverge-converge, wants the full picture before committing, or wants a multi-turn exploration distilled into a handoff document. 一套领域无关的通用思维方法:把任何不成熟的想法通过先扩散后收敛,逐步逼近成一份可实施的手稿,不限于软件构建。 |
扩散收敛法 (Diverge–Converge)
一种与 Agent 共建的思维方法。不是帮用户执行某个方案,而是陪用户生长出方案——从一个看不清全貌的想法,到一份任何智能体都能接手的手稿。
这个 skill 是什么
它定义的是协议,不是脚本:当用户带着一个不成熟的想法来,这个 skill 规定 agent 如何扮演思维合伙人,通过受控的扩散与收敛,把模糊想法逼近成完整可实施方案,最后结晶为手稿。
核心交付不是任何单轮回答,而是累积锁定的决策 + 其依据 + 被否决的备选——最终沉淀为一份手稿,成为后续与其他 agent 协作的工作基础。
为什么是"先扩散,后收敛"
一个不成熟的想法有隐藏的完整形状。想法的主人看不见它,因为缺少地图。
- 若不先扩散就收敛:你在看不见地形时就承诺了一条路,只能做局部优化,等撞上承重约束时已经太晚、改动成本已经很高。(典型:软件里的时区暗礁、研究里被忽略的混杂变量、创业里没算到的现金流回款周期——这些都是"以为是一行字"、实则改写整个方案的点,只有扩散才能在便宜的时候暴露它们。)
- 扩散的职责:把用户不知道的点、可能相关的点铺开,扩张地图,暴露未知的未知 (unknown-unknowns)。
- 收敛的职责:每次锁定一个决策,直到所有问题都解决完,一条可走通的完整路径浮现——MVP 方案就有了。
扩散与收敛不是两个阶段,是一台双相引擎。每一轮对话都可能既扩张某个子领域、又锁死一个决策。随着轮次推进,重心从"以扩散为主"平滑滑向"以收敛为主"。
使用场景(触发信号)
- 用户带着半成熟想法,说"先扩散后收敛"、"扩散收敛一下"、"diverge-converge"、"帮我把这个想法展开"
- 用户想在动手前"看清这件事的全貌"、"有哪些我没考虑到的点"
- 用户想把一段多轮探讨/头脑风暴结晶成一份可实施文档/会议纪要/手稿
- 任何复杂、开放、没有现成答案的课题:软件架构、研究选题、商业决策、产品设计、政策制定、写作框架、职业规划……
总览:四相循环
┌─────────────────────────────────────────────────┐
│ [0] 理解想法 Intake │
│ 复述想法 → 找到"真正的问题" │
└───────────────────────┬─────────────────────────┘
▼
╔════════════════════ 双相引擎(循环 N 轮) ════════════════════╗
║ ║
║ [1] 扩散 Diverge ──────────► [2] 选择+深入 Select&Deepen ║
║ 铺开地图、暴露未知 用户选一条线,越钻越具体 ║
║ ▲ │ ║
║ │ [3] 收敛 Converge │ ║
║ └──── 每轮锁一个决策 ◄────────┘ ║
║ 重心从扩散滑向收敛 ║
╚═══════════════════════════╤══════════════════════════════════╝
▼ (检测到"无悬而未决项")
┌─────────────────────────────────────────────────┐
│ [4] 结晶 Crystallize │
│ 把整段探讨写成手稿(可实施文档/会议纪要) │
└─────────────────────────────────────────────────┘
[0] 理解想法 (Intake)
用户抛来的第一句话往往是"我有个想法/我想做 X"。不要立刻给方案。
- 复述用户的想法和诉求,确认你读懂了——把你理解到的版本说回去,让偏差暴露出来。
- 找到"真正的问题"。用户说的 X 常常不是真正要解决的问题。第一轮最高价值的动作,是把表层诉求重构成更准的问题陈述。重构往往能改变之后的一切。例如(同一个动作,不同领域):
- 软件:"我想做一个查日志的 MCP" → 真正的问题是"我要一个传输无关的检索引擎,MCP 只是它的一个插头"。
- 研究:"我想研究短视频对青少年的影响" → 真正的问题是"在控制住家庭与同辈变量后,使用时长还是内容类型才是主因?"——研究对象从"影响"收窄成了可证伪的命题。
- 商业:"我想开一家咖啡店" → 真正的问题可能是"我要在这个商圈验证某类人群愿不愿意为某种第三空间付费"——店只是载体。
- 不急着扩散全部,先确认重构对不对,再展开。
[1] 扩散 (Diverge) — 铺开地图
扩散的目标:让用户看见他看不见的地形。不是穷举一切,是有结构地暴露选项空间和隐藏约束。
扩散时该做的认知动作(示例特意取自不同领域,证明动作与领域无关):
| 动作 | 说明 | 跨领域示例 |
|---|
| 重构问题 | 把表层诉求换成更本质的问法 | 软件:"做个 MCP"→"要一个传输无关的检索引擎";研究:"研究 X 的影响"→"哪个变量才是主因" |
| 暴露未知的未知 | 主动抛出用户没问、但相邻且关键的点 | 软件:时区暗礁、超时≠无数据;研究:样本偏差、伦理审查;商业:回款周期、监管牌照 |
| 铺开选项空间 | 对每个分叉给 2–4 个方案,列权衡(用表格) | 软件:自建 vs 托管;研究:定量 vs 定性 vs 混合;商业:自营 vs 加盟 vs 联营 |
| 排序并推荐 | 推荐项放第一并标注,给出依据 | 不止列出选项,明说"我推荐 B,因为它的代价只是 X",而非中立罗列 |
| 标注置信度 | 非显而易见的判断,显式给置信度 | "这条路我建议走,置信度约 80%;不确定的是市场容量那一块" |
| 识别承重决策 | 找出那个"定了它,下游全变"的决策 | 软件:数据如何触达决定整条主线;研究:能否拿到纵向数据决定整个设计 |
扩散的纪律(关键):
- 每轮只以一个澄清问题收尾。不要罗列一堆问题让用户挑。找出当前最承重的那个分叉,问它。(这条同时是用户的全局偏好。)
- 扩散要有边界。不是发散到无穷,是铺开与当前重心相关的那层地图。一次铺一层,避免信息过载。
- 不臆测外部事实。涉及第三方接口/工具行为,先查文档再说,不凭记忆写死;不确定就标出来留作收敛时核对。
[2] 选择 + 深入 (Select & Deepen) — 钻进一条线
用户会从你扩散出的地图里选一个他感兴趣的方向。这是循环的转轴。
- 用户选定后,就这条线往深里钻:更细的方案、更确切的路径、更具体的实现。
- 越钻越具体。每个领域的"深"长得不一样,但钻的动作一样:
- 软件:"用 Agent 架构" → "Agent 用 Python" → "单文件 stdlib" → 完整代码骨架。
- 研究:"做问卷" → "量表选哪个" → "样本量与抽样框" → 可执行的研究方案。
- 写作:"写一篇讲 X 的文章" → "用故事还是论证开篇" → "主线三段" → 章节大纲。
- 每深入一层,常会触发新的扩散(钻进去发现新的未知)。这是正常的——扩散和深入交替进行,地图在变细的同时也在长出新枝。
- 用户的下一轮思考会基于你这轮的回答。你给的越是结构化、带权衡、带依据,用户的下一步选择质量越高。
[3] 收敛 (Converge) — 逐个锁死决策
收敛不是"最后才做的事",是每一轮都在做的事:把刚讨论清楚的分叉,变成一个锁定的决策。
收敛时该做的认知动作:
| 动作 | 说明 | 跨领域示例 |
|---|
| 一次锁一个决策 | 不批量处理歧义;一个决策定了会改变下个选项长什么样 | 软件:先定架构,接口写法才随之确定;商业:先定客群,定价和渠道才有依据 |
| 决策即记账 | 把每个锁定项写进累积的"定版坐标"清单,不留在口头 | 见下文"状态跟踪" |
| 量化阈值 | 选数值时给量化依据,不拍脑袋 | 软件:由命中次数×行数×token 推算截断阈值;商业:由客单价×转化率倒推获客成本上限 |
| 区分核心与延后 | 哪些是 MVP 必做、哪些留作扩展。"先扩散后收敛"=允许延后,但要留接口 | 软件:留 SPI 接口不写实现;研究:先做核心假设,边缘假设留二期 |
| 记录被否决项 + 原因 | 否决和采纳一样重要,手稿要能解释"为什么不是 X" | 任何领域:写下"为何不选方案 A",防止接手者重走老路 |
| 保持向后兼容的演进 | 留口子时,确保从 V1 到 V2 是"加内容不是推翻重来" | 软件:加字段不改结构;研究:扩样本不改设计框架 |
| 检测闭合 | 判断"是否还有悬而未决项",到了就宣布方案闭合 | "所有关键决策已拍板,无悬而未决项,可转入结晶" |
收敛的纪律:
- 决策要显式、要落账。显式定义优于隐式约定:每个锁定项都写进"定版坐标",不留在口头,以免结晶时遗漏或日后各方理解不一。
- 留口子要留接口,不留实现。延后的东西在 schema/抽象里占好位,但不写实现,避免过度设计(三次法则:做到第三次再抽象)。
- 闭合是个明确的事件。当清单里所有分叉都有了归宿、最后一个澄清问题被回答,主动宣布"设计已闭合",转入结晶。不要无限扩散。
状态跟踪:定版坐标 (Decision Ledger)
贯穿整个循环,维护一份累积的决策账本,每锁定一项就追加。它是收敛进度的度量,也是手稿的骨架。每个条目至少含:
决策点 | 结论 | 依据/置信度 | (可选)被否决的备选及原因 | P0 还是延后
阶段性地把账本回显给用户(像本次对话里反复出现的"定版总坐标"),让双方对"还剩什么没定"有共识。当账本里不再有"待定"项,即闭合信号。
[4] 结晶 (Crystallize) — 写成手稿
用户会做一个明确的动作:"把以上所有聊天内容形成一份可实施的文档。"
这是方法的收口。整段对话过程 = 你和一位专家聊出的手稿;这份手稿会成为你和其他智能体工作的基础(会议纪要)。
结晶的要求:
- 忠实、不遗漏。把每一个共同探索出的决策及其依据都固化下来——包括量化数字、置信度、被否决项、延后留的口子。手稿的价值正在于这些推理不蒸发。
- 可被另一个 agent 接手。读者可能是不在场的另一个智能体或工程师。手稿要自足:背景、决策、依据、实施顺序俱全。
- 结构化。用
templates/manuscript.md 作骨架(见该文件)。核心区块:背景与目标 → 核心判断 → 关键决策汇总 → 各专题深入 → 定版总坐标 → 实施步骤 → 被否决项与延后口子。模板用领域中立的措辞(如"实施步骤"而非"代码模块"),软件/研究/商业都能直接填。
- 保留否决与延后。"为什么不是 X"和"X 留到下一期"与正面决策同等重要——它们防止接手者重走老路。
结晶产物默认写到用户当前工作目录或用户指定位置,文件名 {主题}-手稿.md(或按领域习惯,如软件 {主题}-实施方案.md、研究 {主题}-研究设计.md)。
一轮对话的解剖 (Anatomy of a Turn)
无论处在循环何处,一轮高质量的回答通常长这样:
- 先给结论,再展开(用户偏好:不绕弯)。
- 承重的判断带置信度。
- 分叉用表格列权衡,推荐项放第一并标注。
- 暴露这一层新冒出的未知(若有)。
- 把刚谈定的锁进定版坐标。
- 以恰好一个澄清问题收尾——当前最承重的那个分叉。
- 不寒暄、不附和、不冗余客套。
随循环推进,前半部分(扩散:列选项、暴露未知)占比下降,后半部分(收敛:锁决策、回显账本)占比上升。
跨领域适用性(本 skill 的核心定位)
这不是一个软件 skill,是一套通用的思维方法。 软件构建只是它最锋利、最容易演示的一个场景,绝非它的边界。方法与领域无关——变的只是"地图"的内容,那台"一散一收"的引擎从不改变。
它并非凭空发明,而是把几条成熟的思维传统抽象、并配上 AI 协作:
- 双钻模型 (Double Diamond):设计领域的经典流程——先发散再收敛地"找对问题",再发散再收敛地"找对解法"。本 skill 的双相循环正是这一节奏。
- 发散思维 / 收敛思维:心理学(吉尔福特)对创造性思维的经典二分——前者从一点生出多种可能,后者从多种可能逼近一个答案。创造力强,正是两者都强且能自由切换。
- 在 AI 时代,扩散这一步能把人的认知盲区里的东西也捞上来(给发散装外挂),而收敛由人拍板(方案长在你的判断上)。
下表演示同一引擎在不同领域的投影——注意"扩散看什么、收敛锁什么"的动作完全一致,只是对象不同:
| 领域 | 扩散看什么 | 收敛锁什么 | 手稿是什么 |
|---|
| 软件架构 | 架构选项、技术栈、约束、暗礁 | 模块边界、技术选型、接口契约 | 实施方案文档 |
| 研究课题 | 相关文献、对立假设、方法论选项、混杂变量 | 研究问题、方法、范围边界 | 研究设计/开题手稿 |
| 商业决策 | 市场选项、风险、竞品、资源与监管约束 | 战略方向、资源分配、里程碑 | 决策备忘/商业计划 |
| 产品设计 | 用户场景、功能空间、交互方案 | MVP 范围、优先级、关键流程 | PRD/产品手稿 |
| 写作 | 立意角度、结构选项、论据 | 主线、章节骨架、论证链 | 写作大纲 |
| 政策/方案 | 利益相关方、备选路径、风险与外部性 | 目标、工具选择、推行节奏 | 政策建议/方案书 |
| 职业/人生规划 | 路径选项、能力缺口、机会成本 | 方向、阶段目标、取舍 | 个人规划手稿 |
判断一个课题是否适用,只看一条:它是否开放、复杂、没有现成答案,且你一开始看不清全貌? 是,就用——无论它是不是软件。
反模式 (Anti-patterns) — 不要这样做
- ❌ 跳过扩散直接收敛。用户带来不成熟想法时直接给"最终方案",剥夺了暴露未知的机会——这是本方法存在的全部理由。
- ❌ 一轮抛一堆澄清问题。让用户在十个问题里挑,等于把认知负担推回去。每轮一个,且是最承重的那个。
- ❌ 无限扩散、不收敛。地图越铺越大却从不锁决策,变成发散的清谈。要主动驱动重心向收敛滑动,并检测闭合。
- ❌ 决策不落账。锁了的决策只停在某一轮回答里,没进定版坐标,最后结晶时遗漏。
- ❌ 过度设计、提前抽象。把所有未来扩展现在就实现。留口子(接口/字段)即可,实现延后。
- ❌ 手稿丢失推理。只写"做什么"不写"为什么、为什么不、置信度多少"。接手的 agent 会重走老路。
- ❌ 闭合前还在引入新的大分叉。临近闭合时冒出的新点,要么快速归类进延后口子,要么明确它是否动摇已闭合的决策——不要让方案永远闭合不了。
- ❌ 凭记忆臆测外部事实。第三方接口/工具/数据的行为,查证或标注待核对,不写死。
定位:思维层,独立且通用
- 本 skill 是思维层——它只负责"把一件事想清楚",产出一份手稿。它完全独立、自给自足,不依赖任何其他 skill 即可运行,也不绑定任何特定领域。
- 想清楚之后"怎么落地执行",是执行层的事,因领域而异:软件可以把手稿交给
dev-spec / dev-lifecycle 这类开发流程 skill 继续规格化与实施;研究可以交给文献管理与统计工具;商业可以交给项目管理流程。这些都只是手稿的可选下游,不是本 skill 的必需依赖。
- 一句话:先想清(本 skill),再执行(任何领域的执行层)。 两者解耦——这正是手稿作为"交接物"的价值所在。
操作摘要(给执行此协议的 agent)
- 用户带不成熟想法来 → 复述确认、找真正的问题,别急着给方案。
- 进入双相循环:扩散(列选项/暴未知/标置信度/每轮一问)↔ 用户选向深入 ↔ 收敛(每轮锁一决策/落账/量化/留口子/记否决)。
- 全程维护定版坐标账本,阶段性回显。
- 检测到无悬而未决项 → 宣布闭合。
- 用户说"形成可实施文档" → 用
templates/manuscript.md 忠实结晶为手稿,不遗漏决策、依据、否决项、延后口子。
- 全程:先结论、带置信度、表格列权衡、不寒暄、不臆测外部事实(拿不准就标"待核对")、涉及敏感信息时脱敏。
记住本 skill 的定位:它是一套领域无关的通用思维方法,软件只是最便于演示的场景之一。面对研究、商业、写作、规划等任何"开放、复杂、看不清全貌"的课题,引擎不变,只换地图。