
oh-my-openagent Hyperplan 模式深度解析基于对抗式多智能体的规划工作流【免费下载链接】oh-my-openagentOmO: Just type mass ulw keyword with your prompt. Now you are the master of graph engineering.项目地址: https://gitcode.com/gh_mirrors/oh/oh-my-openagentHyperplan 是 oh-my-openagentOmO中面向规划阶段的对抗式多智能体工作流由 5 个立场相互敌对的 category 成员对同一规划请求进行三轮攻防辩论再由 Lead 把幸存下来的可辩护结论蒸馏成洞察包Insight Bundle最后强制移交给专职规划 Agentulw-planskill完成可执行计划的正式化。本文将以 prompts/mode/hyperplan.md 为主线结合 hyperplan skill、关键词检测器、内置/hyperplan命令与 team-mode 底层工具的源码实现完整讲解其触发机制、7 阶段执行流程、5 名对抗成员的角色设计、必须遵守的交接契约与常见反模式帮助你读懂并正确使用这一先对抗、后规划的能力。Hyperplan 模式是什么从一句话触发到对抗式规划Hyperplan 模式的定位是adversarial multi-agent planning via team-mode即基于 team-mode 的对抗式多智能体规划。它解决的问题是当一个规划请求需要最大程度的严谨性时单个模型的一次性思考容易被先入为主的方案、乐观假设和遗漏的边界条件污染。Hyperplan 的应对方式是——组建一支互相敌对的 5 人团队让每个成员从自己的立场出发独立分析、互相攻击、再辩护或退让最终只保留经得起攻击的洞察并由专职规划器将其形式化为可执行计划。在 oh-my-openagent 的架构中Hyperplan 并非一个独立的可执行二进制而是一条由关键词检测 → 模式提示注入 → skill 加载 → team 工具编排串联起来的链路。其模式提示本体就存放在 packages/prompts-core/prompts/mode/hyperplan.md由 mode-prompts.ts 以HYPERPLAN_MODE_PROMPT的形式导出。触发方式关键词、斜杠命令与组合模式关键词检测Keyword DetectorOmO 的插件通过chat.messagehook 实时扫描用户输入一旦命中关键词就把模式提示注入到用户消息之后。Hyperplan 的触发正则定义在 hyperplan/default.tsexport const HYPERPLAN_PATTERN /\bhyperplan\b|(?![\w.])hpp\b/i即大小写不敏感地匹配单词hyperplan或简写hpp。注意hpp使用了负向后顾(?![\w.])这是因为.hpp是 C 头文件的常见扩展名若不排除前置的.或字母数字像interface.hpp、src/buffer.hpp这类文本会因为\b的边界特性被误判为 Hyperplan 触发参见该文件中的注释说明。检测到的关键词会被KEYWORD_DETECTORS列表见 constants.ts统一处理命中hyperplan时注入的消息正是HYPERPLAN_MODE_PROMPT同时 hook 会弹出 Hyperplan Mode Activated 的 toast 提示见 hook.ts 中的hasHyperplan分支。内置斜杠命令/hyperplan除了自然语言关键词OmO 还提供了内置命令/hyperplan其模板定义在 templates/hyperplan.ts并在 commands.ts 中注册为hyperplan参数提示为[planning-request]。该命令模板与关键词注入的提示几乎一致同样要求先加载hyperplanskill并把$ARGUMENTS作为user-request传入。需要指出的是该命令模板中给出的配置路径为~/.omo/omo.jsonc而模式提示文档中给出的是~/.config/opencode/oh-my-opencode.jsonc两者分别对应 senpi 运行时与 opencode 插件运行时实际以你当前使用的配置文件为准。与 Ultrawork 的组合模式在 constants.ts 中还定义了严格相邻匹配的组合模式hyperplan-ultraworkexport const HYPERPLAN_ULTRAWORK_PATTERN /\b(?:hpp|hyperplan)\s(?:ulw|ultrawork)\b|\b(?:ulw|ultrawork)\s(?:hpp|hyperplan)\b/i当用户输入同时包含两个关键词如 hyperplan ulw ...hook 会注入hyperplan-ultrawork-mode横幅要求模型首句必须说 HYPERPLAN ULTRAWORK MODE ENABLED!随后在 Ultrawork 执行框架之上再叠加 Hyperplan 的完整对抗式工作流见 hook.ts 中suppressComboStandalones的逻辑组合命中时不再单独注入 standalone 的 ultrawork/hyperplan 消息。此外若命中组合模式同一消息中单独的ultrawork或hyperplan命中会被抑制避免重复注入。前置条件team-mode 必须可用Hyperplan 的运行依赖 team-mode 的底层工具。模式提示中明确指出如果team_*工具缺失不可用应引导用户配置team_mode.enabled: true并重启 opencode。具体到 senpi 运行时hyperplan skill 的 HARD PRECONDITIONS 补充了两点工具必须注册team_create、task_send、team_delete默认随 task 组件注册。若缺失说明 task 组件被禁用应停止并提示用户重启 senpi 时不要带--no-omo-tasktask 组件默认开启。必须是顶层 lead 会话team 工具是 lead-only 的永远不会下发给子进程。如果你自己就是一个被 spawn 的成员/子 Agent本 skill 并不适用——成员不能领导团队。7 阶段执行流程从接单到解散整个工作流在 hyperplan skill 中被划分为 7 个阶段Phase 06加上 Phase 7 清理实际为 7 步主流程。核心原则是Lead 负责蒸馏绝不亲笔写计划计划的正式化必须由专职规划任务完成这一步不可协商。Phase 0确认并捕获请求首句必须且仅说一次 HYPERPLAN MODE ENABLED!让用户明确编排已经开始用一句话复述用户的规划请求确保所有成员从同一范围出发建立覆盖 7 个阶段的 todo list且必须把 Phase 6 的规划器交接显式列入。Phase 1创建对抗团队调用一次team_create携带内联规格inline spec每个成员以kind: category创建通过category选择模型与提示塑造prompt字段承载其对抗身份的系统提示。标准名册如下成员名category对抗角色skepticunspecified-low实用主义怀疑者Pragmatist Skepticvalidatorunspecified-high集成测试者Integration Testerresearcherdeep自主研究员Autonomous Researcherarchitectultrabrain架构战略家Architect Strategistcreativeartistry创意挑战者Creative Challenger名册契约unspecified-low、unspecified-high、ultrabrain、artistry四个 category 必须保留deep仅在对应 category 可用时加入。如果team_create因deep无法解析而拒绝则只移除researcher成员重试一次并声明降级后的名册。调用后捕获返回的team_run_id后续所有task_send与team_delete都需要它。Phase 2Round 1 —— 独立分析通过 5 次task_send每个成员一次发送同一任务。消息结构要求把用户的规划请求原样放入user-request并指示成员从自身对抗角色出发产出 37 条编号发现每条不超过 3 句话且必须具体引用文件、行号、备选方案或证据明确禁止在 Round 1 相互批评或提出综合方案。发送是 fire-and-forget 的task_send写入持久消息后立即返回不会打断接收者。成员的回复以注入式通知injected notification的形式在下一个工具调用边界或空闲边缘到达。因此 Lead 发送完 Round 1 后应继续做独立的 lead 工作或结束回合等 5 条回复全部到达后再继续。对沉默的成员只有超过预期窗口后才用task_send轻推一次。Phase 3Round 2 —— 交叉攻击将 5 名成员的 Round 1 发现聚合为一个 Findings Bundle按成员名分组、编号罗列再次通过 5 次task_send发给所有成员。每个成员收到的 Bundle 相同但任务要求明确攻击其他 4 名成员的发现不批评自己的发现。输出格式为按成员逐条列出[member-name] Finding #N: [他们的主张]与ATTACK: [你的具体攻击]若某条发现确实无法攻破则写STANDS — [原因]并继续。Phase 4Round 3 —— 辩护、精化或退让Lead 将交叉攻击按原始发现聚合只把针对某人自己发现的攻击发回给该成员。每个被攻击的发现必须三选一DEFEND用具体证据/推理反驳攻击REFINE承认攻击成立以更强形式重述发现CONCEDE承认攻击击败了该发现说明若有什么幸存了下来。格式为每条发现一行[finding #N] DEFEND/REFINE/CONCEDE: [不超过 3 句话的解释]。Phase 5洞察蒸馏这是 Lead 的工作辩论结束后Lead 的职责仅限于蒸馏不写工作计划。步骤是只保留可辩护的发现未被攻击、或 Round 3 中成功辩护、或精化为更强形式的发现被 CONCEDE 的一律丢弃。分类为 4 个桶Hard Constraints计划必须遵守的不变量、Decisions辩论收敛出的决策及推理轨迹、Risks Mitigations风险及其明确缓解措施、Open Questions未收敛的分歧点将成为计划中的用户输入门。按固定形状构建洞察包Insight Bundle这是交给 Phase 6 规划器的载荷包含Original User Request、Hard Constraints、Decisions、Risks Mitigations、Open Questions以及 Adversarial Provenance按成员统计幸存发现数量与总过滤数量。需要特别强调洞察包是 Phase 6 的原始输入不是交付物。Lead 可以告知用户对抗蒸馏完成正在将幸存洞察移交给规划器进行可执行计划正式化但绝不能把洞察包当作最终计划呈现。Phase 6强制规划器交接Lead 必须通过一次task调用前台任务run_in_background: false把洞察包交给专职规划器并通过load_skills: [ulw-plan]加载规划 skill。调用示例来自 hyperplan skilltask({ category: ultrabrain, load_skills: [ulw-plan], run_in_background: false, description: Formalize hyperplan-distilled insights into an executable plan, prompt: hyperplan-handoff ...完整洞察包粘贴于此 /hyperplan-handoff })交接契约的硬性规则包括每条 Hard Constraint 必须被计划尊重每条 Risk 的缓解措施必须织入对应任务每个 Open Question 必须在依赖它的任务开始前成为用户输入门每个任务必须有明确的成功标准。ulw-planskill见 packages/shared-skills/skills/ulw-plan/SKILL.md 及 senpi 侧副本 packages/omo-senpi/skills/ulw-plan/SKILL.md把规划器塑造成名为 Prometheus 的规划顾问只读探索、绝不实现、产出决策完备decision-complete的工作计划计划产物写入.omo/目录下的草稿与计划文件。它处理规划请求时会先做意图路由CLEAR / UNCLEAR再决定是提问还是采用最佳实践默认值最终经批准门后才落盘计划——这些机制与 Hyperplan 的交接需求天然契合。规划器输出后Lead 必须逐字呈现规划器的产出并冠以一行来源声明*Plan derived from hyperplan adversarial review (5 members, 3 rounds) and formalized by the ulw-plan planner.*若规划器返回的是澄清问题而非计划应原样转发给用户——规划器在提交前有权采访用户。Phase 7清理规划器输出呈现给用户后调用team_delete({ team_run_id, force: true })一次性解散 5 名成员并清除团队运行时状态辩论已结束即使成员仍驻留也应强制拆除。随后用一行 Hyperplan team disbanded. 向用户确认。若team_delete失败向用户展示错误并建议手动重试同一条命令。5 名对抗成员的角色与攻击向量对抗压力是 Hyperplan 的机制本身。skill 为每名成员设计了系统提示system prompt与其攻击武器库下面是各成员的核心画像完整系统提示见 SKILL.md成员立场攻击向量代表武器skepticunspecified-low简单性捍卫者复杂性的敌人过度工程、过早抽象、范围蔓延、镀金Why is this complexity here? Delete this. Prove its needed. 只做减法不做加法validatorunspecified-high集成测试者不完整性的敌人遗漏的边界情况、未验证的假设、跨模块脆弱性、爆炸半径What about edge case X? Whats the blast radius if this fails in production? 敌视乐观主义与以后再说researcherdeep自主研究员无据主张的敌人基于直觉的思考、未经验证的假设、我觉得是这样Cite the file and line, or you dont know. This is vibes-based. Show me the evidence. 要求 file:line 级别的引用architectultrabrain架构战略家坏架构的敌人泄漏抽象、隐藏耦合、脆弱接口、违反关注点分离、技术债This violates separation of concerns. This is hidden coupling. 同时强调要的是最简单的正确架构拒绝不付钱的企业模式creativeartistry创意挑战者正统思维的敌人显而易见的方案陷阱、缺乏想象力、接受首个方案Is this really the only way? I count three more. Have you considered inverting the problem? 强制考虑至少 3 个角度但明确不为新而新skill 还明确绝不要软化这些对抗系统提示如加上请保持礼貌。敌意就是机制本身礼貌会毁掉整个 skill 的价值。注入式交付模型与信息代理角色Hyperplan 的编排建立在注入驱动injection-driven的交付模型之上task_send写入一条持久消息并立即返回永不打断接收者成员的回复在 Lead 的下一个工具调用边界或空闲边缘以注入通知的形式到达。因此每轮的正确做法是发送给所有成员 → 继续独立工作或结束回合 → 等待全部预期回复到达后再综合成员之间互相看不到对方的回复只有 Lead 在 Phase 3/4 转发的 Bundle 才是他们了解彼此的唯一渠道——Lead 是唯一的信息代理information broker静默不等于卡死安静通常意味着仍在工作只有超过预期窗口才轻推一次聚合发现过大时可以先总结再转发但要保留每条发现的精神实质。反模式清单这些做法会毁掉 Hyperplanskill 末尾列出了一系列必须避免的反模式详见 SKILL.md 的 ANTI-PATTERNS 表格其中最关键的四条是跳过轮次省时间对抗过滤器就是全部价值跳过轮次 普通规划。Lead 在 Phase 5 亲笔写计划而不在 Phase 6 交接交接是契约。Hyperplan 对抗蒸馏 专职规划器正式化Lead 亲写计划会丢掉规划器的排序、依赖分析与成功标准价值。跳过规划器分派洞察包已经是计划了洞察包是输入不是输出规划器拥有排序、并行化与验证门的责任。在分派前预写任务草稿这会把规划器锚定在你的草稿上削弱其独立判断。要分派原始洞察让规划器自己搭建结构。此外还包括软化成员提示、在 Round 3 完成前综合、把被 CONCEDE 的发现塞进洞察包、把洞察包交给团队成员而非规划器任务成员是辩论者洞察包只能交给带load_skills: [ulw-plan]的task绝不能走task_send、忘记清理团队、以及在任何回复到达前推进下一轮。源码级验证模式提示如何进入运行时从源码可以完整追踪 Hyperplan 提示的注入链路提示本体 prompts/mode/hyperplan.md 以with { type: text }方式导入经 mode-prompts.ts 的stripFinalLineFeed去掉末尾换行后导出为HYPERPLAN_MODE_PROMPT。keyword-detector/hyperplan/default.ts 导入该常量作为HYPERPLAN_MESSAGE与HYPERPLAN_PATTERN一并导出。constants.ts 把 hyperplan 检测器注册进KEYWORD_DETECTORS列表。hook.ts 的chat.messagehook 调用detectKeywordsWithType见 detector.ts命中后把消息追加到用户文本之后并弹出 Hyperplan Mode Activated 的 toast。提示文本要求模型立即加载 hyperplan skillskill(namehyperplan)而 skill 的完整编排指令5 名成员的系统提示、7 阶段工作流、反模式位于 packages/omo-senpi/skills/hyperplan/SKILL.md。也就是说模式提示是薄入口skill 才是重逻辑二者通过 skill 加载机制衔接。对于通过/hyperplan命令触发的情形templates/hyperplan.ts 生成的模板同样先要求加载 skill再以user-request携带用户参数。相关的组合模式hyperplan ultrawork触发测试与关键词检测测试分布在 keyword-detector 目录 下的hyperplan.test.ts、hyperplan-ultrawork.test.ts等文件中可作为验证行为边界的参考。使用前提与注意事项必须启用 team-modeteam_*工具缺失时 Hyperplan 无法运行。在 opencode 插件场景下配置team_mode.enabled: true并重启在 senpi 场景下确认 task 组件未被--no-omo-task关闭。必须是顶层会话子 Agent / 团队成员无法领导团队Hyperplan skill 只在顶层 lead 会话中有效。deep是可选成员仅在对应 category 解析成功时加入被拒绝时按契约降级为 4 人名册重试。计划由规划器产出Lead 的角色是编排与蒸馏交付物是规划器任务的输出附带来源声明逐字呈现。及时清理团队Phase 7 的team_delete({ team_run_id, force: true })不可省略否则会泄漏运行时状态。通过以上机制Hyperplan 将规划从一次性的单模型思考升级为一场由 5 个对抗立场驱动的、经过攻击-辩护-精化筛选的、并由专职规划器正式化的严谨流程——这正是它在 OmO 中承担最高严谨度规划任务时的核心价值。【免费下载链接】oh-my-openagentOmO: Just type mass ulw keyword with your prompt. Now you are the master of graph engineering.项目地址: https://gitcode.com/gh_mirrors/oh/oh-my-openagent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考