ADHD:用并行发散思考修复 AI 编码代理的过早收敛
posts posts 2026-08-19T03:26:14+08:00ADHD 是一个面向编码 Agent 的 skill,用并行隔离的发散思考加独立批判机制修复自回归推理的过早收敛问题,在创意与跨学科任务上对比单次提问显著提升方案广度与陷阱识别能力。技术笔记AI Agent, 推理, Claude Code, 开源ADHD:用并行发散思考修复 AI 编码代理的过早收敛
当你在 Claude Code 里问"给我几个设计方案",它给出的往往是一组看起来很合理、实则都困在同一条思路里的答案。问题不在提示词写得不够好,而在推理架构本身:自回归模型会锚定它先说的那个想法。ADHD 把这个问题当作架构缺陷而不是提示词缺陷来处理——这篇文章讲清楚它怎么做的、代价在哪、什么时候值得用。
一分钟总览
ADHD(可理解为 “parallel divergent ideation”,并行发散思考)是 Udit Akhouri 为编码 Agent 写的一个 skill,基于 Claude 与 Codex Agent SDK。核心机制是两阶段循环:
Diverge(发散): 选 N 个认知框架,并行发起 N 个互相隔离的 Agent 调用
每个只看到"问题 + 一个框架的视角提示",且系统提示禁止评估
——分支间互不可见,没有锚定
Focus(聚焦): 独立批判调用,给每个想法打 新颖性/可行性/契合度 分
标记陷阱并给原因,按底层角度聚类,把 Top-K 幸存者深化成带风险与第一步的草图生成与批判是机械分离的——两个独立的 LLM 调用、相反的 system prompt,而不是在一条提示词里承诺"请批判性思考"。因为批判本身也是模型输出,把"产出想法"和"审视想法"放进同一次推理,后者很容易被前者带偏。
安装一行命令:npx skills add UditAkhourii/adhd,兼容 Claude Code、Cursor、Codex、Cline、Gemini CLI、Windsurf 等 50 多种 Agent。
它针对的架构问题
这个想法立意的出发点,是自回归推理的两条主干路径的共性缺陷:线性 Chain-of-Thought(CoT,思维链)锚定它先输出的内容;Tree-of-Thought(ToT,思维树)扩大了搜索空间,但所有分支仍共享同一份上下文,锚定会跨分支持续存在。ADHD 的答案是在发散阶段做真正的隔离:
- 每个分支进程有零共享上下文
- 每个分支被一个刻意扭曲的认知框架驱动
- 独立的批判过程负责打分、聚类、剪枝陷阱、深化幸存者
“刻意扭曲"是关键。正常的思考会收敛到最稳妥的角度;这里故意给每个分支一个偏离主流的视角(比如经济激励、感知扭曲、冗余竞赛),逼它看到默认视角看不到的选项。三个参数直接控制发散宽度与聚焦深度:
--frames 3 一次用几个认知框架(发散宽度)
--ideas 8 每个框架产出几个想法
--top 2 最终保留深化几个幸存者(聚焦深度)适合的场景:设计决策、模糊调试、命名、API 表面设计、策略,以及任何形如"给我几个思路"的提问。
一个直观的对比案例
README 里给出一个经典评估问题:“我们有个调用 LLM 的 CLI 有时会挂起 90 秒,设计正确的重试/超时/UX 策略。”
基线(单次提问)走通了四个教科书模式:分阶段超时、快速失败 + 指数退避、hedged 并行请求、流式 keepalive,最后给一个 15s/30s/90s 的混合建议。合理、专业,但没有命名任何陷阱,也没有质疑"等待然后重试同一个模型"这个框架本身。
ADHD 展开 6 个隔离框架,浮出 30+ 个跨 经济激励、异步控制面、游戏化、感知扭曲、集体智能、冗余竞赛 聚类的想法,然后:
- 非显而易见的选点:“rage-quit = 一键中止 + 切换到更便宜/更快的模型”——一个等待越久脉搏越热的按钮,一次点击取消并重新提交给 Haiku 级别模型。基线从未考虑过的关键点:慢模型可能根本不是这个提示词该用的模型。
- 附带短名单:30s 时侦察式 fork 到备选端点;把 CLI 守护进程化并带 ticket ID;并发跑 3 个 LLM 副本、缓存胜者。
- 标记 20 个陷阱并各附一行原因——包括"反向流式 token"和"耐心 token 计费"这类看起来很可爱、实则浪费工程时间的想法。
独立 LLM 评审:广度 9 vs 6、新颖性 8 vs 3、陷阱检测 ~8 vs ~2。
实测数据
这个 benchmark 在测什么,要先说清楚:它测的不是解码质量或代码正确性,而是开放式工程问题上的方案探索能力。项目给出 6 个开放式工程问题的平均分对比(0-10,ADHD vs 单次基线),由独立 LLM 以怀疑的资深工程师提示词评判,A/B 顺序随机化:
| 维度 | ADHD | 基线 | 差距 |
|---|---|---|---|
| 广度 | 9.00 | 4.83 | +4.17 |
| 新颖性 | 7.83 | 2.67 | +5.17 |
| 陷阱检测 | 9.50 | 1.83 | +7.67 |
| 可执行性 | 9.50 | 6.50 | +3.00 |
| 构建者实用性 | 7.67 | 6.83 | +0.83 |
6 个问题上 ADHD 赢下 5 个,最大差距出现在陷阱检测(基线几乎从不点名"看起来诱人、实则会翻车"的想法)——这正是"批判与生成分离"这段机制的直接收益。但也要警惕这些数字能推出什么、推不出什么。项目在评测文档里也坦承了它的局限,值得原样读一遍:
- 同模型判分:评审与被评审是同一模型家族,自带熟悉性偏差;跨模型判分仍在路线图上。
- 样本很小:只有 6 个问题,且全是工程向的。
- 规模代差:评测跑在 K=5 分支上,而学术界的多样性研究普遍在 K=100 规模。
- 反例未被回避:一项受控的 CHI 2025 研究发现,在人类设计师 + LLM 问题重构场景下收益不显著;ADHD 是 LLM 对 LLM,语境不同,但这确实是坦诚的反面证据。
收益主要来自发散与批判带来的广度、新颖性与陷阱检测,以显著的时间和 token 成本换取——不是所有任务都值得。 对具体问题,最好自己用同一模型跑一遍 ADHD 与单次基线对比,不要无条件相信榜单数字。
它怎么接入你的 Agent
npx skills add UditAkhourii/adhd # 自动检测你的 Agent然后在 Claude Code 里显式调用 /adhd "your problem",或让它按意图自动触发。CLI 与库两种形态:
adhd "name this function" --frames 3 --ideas 8 --top 2import { run, renderText } from "adhd-agent";
const result = await run({
problem: "How should we shard this queue under bursty load?",
framesPerRun: 5,
topK: 3,
});
console.log(renderText(result));
// result.shortlist · result.nonObviousPick · result.traps · result.deepened · result.clusters
生态信号
按项目方整理,ADHD 已在多个开源项目落地:repowire 第一个把它正式移植到自己的 mesh-orchestrator 原语(PR #313 合并后作为默认编排模板内置)、mstack 把它 vendored 进插件市场作为 think 插件、zk-flow-oss 把 IDEATION_FRAMES 前置于批判工作流以削弱锚定、han(testdouble)发布了 11 个来源、8 轮验证的研究型应用。The New Stack 也为它做过专题报道。整体属于"有人认真接手、也有人在挑刺迭代"的早期阶段——信号积极,但离成熟共识还早。
适用边界
- 适合:设计决策、模糊调试、命名、API 设计、策略,以及需要"多个方案 + 识别坑"的创意/跨学科工作。
- 不适合:确定性任务(明确的正误答案、简单重构),这类任务发散反而浪费时间;对延迟和成本敏感、且任务收益覆盖不了约 2 倍开销的场景。
- 采用顺序建议:先在 1 个真实问题上用单次基线跑一遍,记住它漏掉什么;再装 ADHD 跑同题,对比是否有质的补充。若你的日常工作靠"广撒网、多探测"赚钱,这 2 倍开销是划算的。
小结论
ADHD 的贡献不是又一个"更聪明的提示词”,而是把发散-批判变成了一种机械强制、互相隔离的架构,直接回应了自回归推理"先入为主"的结构性缺陷。它的权衡也很诚实——用时间和 token 换广度和陷阱识别。如果你的工作是"从一堆选项里找出真正好的那个",装上这个 skill 跑一次对比,会比空想"要不要发散思考"更有说服力。
参与讨论
使用 GitHub 登录。欢迎补充事实、异议与实践。
讨论暂时无法加载。