Skip to main content
S

dsh-ha-orchestrator

saktawdi/dsh-ha-orchestrator

Model high-availability failover (quarantine, circuit breaking, probe recovery) and subagent orchestration (fanout/pipeline/supervisor) with bilingual settings UI.

Install

dsh plugin --profile web add github:saktawdi/dsh-ha-orchestrator

README

HA Orchestrator —— 模型故障恢复与多智能体编排

版本 平台 许可证 MIT 测试 编排模式 Awesome DSH Plugin

HA Orchestrator

HA Orchestrator 是 DeepSeek Harness(dsh)的插件:

  • 模型调用中途出错时,自动改用备用模型重试,任务继续跑下去。
  • 提供一个 orchestrate 工具,模型遇到适合的任务会自己调用它,把工作拆给多个子智能体并行执行(fanout)、分阶段执行(pipeline),或进行评审/归约(supervisormap-reducerouter)。

配置页里还能定义自己的子智能体(也可以一句话让 AI 生成);界面和提示词文案支持中英文,跟随 DSH 语言。

English

扛住模型故障,并行推进复杂工作,把结果交付得更可靠。

HA Orchestrator 让 DSH 长任务在模型出错时继续运行,再把复杂工作拆成可观测、可恢复、可评审的并行子智能体流程。

🛡️ 模型故障不终止长任务复杂工作横向并行结果可检查、可交付
备用轮换、冷却、Provider 熔断和恢复探测,避免单个模型故障拖垮任务。五种编排模式覆盖并行调研、分阶段计划、路由、归约和监督评审。预算、运行历史、resume、结构化输出和多评审者,让最终结果更可追踪。

特别适合: 深度调研、大型代码库阅读、批量审查、多方案对比和实现计划编排。

功能

模型失败自动回退

  • 模型请求出错时,自动改用下一个备用模型重试,备用模型按顺序轮换。
  • 出错的模型被暂时跳过(进入冷却),冷却结束后自动恢复使用。
  • 支持突发窗口失败计数、Provider 级熔断、低成本恢复探测,以及可选的上下文超长降级。
  • 每次故障有重试上限,用尽后停止重试,不会无限循环。
  • 模型错误中断任务时,插件会把任务重新拉起一次,工作不丢失。

备用模型、冷却时间、失败阈值、错误码过滤都可以在 设置 →「HA 与编排」里调整。

编排工具(自动触发)

orchestrate 工具在所有会话中可用;工具说明和系统提示词里的引导会让模型在任务可并行、分阶段或需要评审时自己调用:

  • fanout — 拆成子任务并行执行,再汇总结果。
  • pipeline — 各阶段依次执行,上一阶段的输出作为下一阶段的输入。
  • supervisor — 并行执行子任务后,由监督子智能体审查合并。
  • map-reduce — 并行执行 map 任务,再由归约子智能体合并结果。
  • router — 把候选任务交给一个路由子智能体,由它选择或安排后续工作。

工具还支持保存配方、按 runId 恢复中断任务、监督评审轮次、多评审者、单次子智能体调用预算、结构化输出 Schema,以及自定义子智能体的工具白名单/黑名单。子智能体默认不能再次发起嵌套编排。

如果某次没有自动编排,直接说"用编排"即可。

注意:如果当前会话使用 minimal / minimal-v3 这类 complete: true 人设预设,平台会按设计丢弃插件注入的系统提示词段落;此时自动触发仅靠 orchestrate 工具描述承载。插件已把“阅读大型项目”等触发条件写进工具描述,但若仍不触发,请直接说“用编排”。

不想让模型自动调用的话,可以在 设置 →「HA 与编排」→「系统」卡片里关掉上下文注入;之后在提示词里写"使用 dsh-ha-orchestrator 插件进行调用"即可手动触发。

子智能体默认不会获得这段上下文注入,避免子代理被引导再次发起编排形成层层外包;如需让子智能体也看到同一段上下文,可在「系统」卡片打开同时注入子智能体

自定义子智能体

在配置页定义可复用的子智能体:名称、provider/模型、模型 effort、描述、系统提示词,以及可选的工具白名单/黑名单。每个角色还可以单独配置按顺序执行的 fallbacks 模型链,并为每个回退项写 provider/model@effort;启动失败或子智能体返回模型错误时,只切换该角色自己的回退链,不读取全局 HA 备用模型。任务按名称调用,模型随时可以查询清单;单个任务还可以指定输出要求或 object 根 JSON Schema(前提是 provider 支持)。「智能新增」按钮:一句话描述需求,由当前模型生成完整定义。

中英双语

配置界面和提示词文案支持中文、英文,自动跟随 DSH 语言设置;语言包加载失败时回退中文。也可以在「系统」卡片手动固定语言。

安装

需要:DeepSeek Harness(web profile)。发布包无需本地构建,运行时 peer 服务由 DSH 提供。

方法一:npm 一条命令安装(推荐)

本包已发布到 npm(包名 dsh-ha-orchestrator):

  1. 执行一条命令:

    dsh plugin --profile web add dsh-ha-orchestrator
    
  2. 因为本包声明了 dsh.bundle.patchdsh plugin add 会自动把 dsh-ha-orchestrator 加进 dsh.profile.bundles 并应用 cordis.patch.yml,无需手写组合行。

  3. 无需重启:bundle patch 层会被热加载(Cordis HMR),插件在运行中的进程里直接生效。刷新浏览器页面即可看到配置页。插件同样随进程启动自动加载,重启后依然生效。

方法二:本地仓库安装(开发用)

用于开发或测试未发布版本。需要 PATH 里有 pnpm:

  1. 执行一条命令:

    dsh plugin --profile web add "file:<本仓库绝对路径>"
    
  2. 因为本包声明了 dsh.bundle.patchdsh plugin add 会自动把 dsh-ha-orchestrator 加进 dsh.profile.bundles 并应用 cordis.patch.yml,无需手写组合行。

  3. 无需重启:bundle patch 层会被热加载(Cordis HMR),插件在运行中的进程里直接生效。刷新浏览器页面即可看到配置页。插件同样随进程启动自动加载,重启后依然生效。

方法三:手动安装(无需 pnpm)

  1. 把本仓库复制到 DSH profile 的 node_modules 下:~/.dsh/profiles/web/node_modules/dsh-ha-orchestrator

  2. 在组合文件 ~/.dsh/profiles/web/cordis.patch.yml 中加入:

    - insert:
        - id: dsh-ha-orchestrator
          name: dsh-ha-orchestrator
    
  3. 无需重启:profile 的 patch 层会被热加载(Cordis HMR),插件在运行中的进程里直接生效。刷新浏览器页面即可看到配置页。插件同样随进程启动自动加载,重启后依然生效。

版本说明: v0.1.0 是上一代动态版(经 cordis_define 按会话加载),仅作功能预览;从 v0.2.0 起为静态插件,随 DSH 启动自动加载。从引入 bundle patch 的版本起,推荐使用方法一(一条命令安装)安装。

用法

日常使用无需特殊指令,模型自己决定何时编排:

你:    帮我调研这三个开源项目,比较许可证和社区活跃度,给出选型建议。
模型:  识别出 3 个独立子任务 → 自动调用 orchestrate(fanout)→ 并行调研 → 汇总对比 → 给出建议

你:    阅读下这个大型项目,梳理整体架构和当前进度。
模型:  按模块/文档/代码拆成多个独立阅读子任务 → 自动调用 orchestrate(fanout)→ 并行阅读 → 汇总架构与进度

你:    先做需求分析,再写设计文档,最后写实现计划。
模型:  自动调用 orchestrate(pipeline)→ 每阶段输出自动成为下一阶段输入

你:    生成一份竞品分析报告,找个资深评审把关。
模型:  自动调用 orchestrate(supervisor)→ 并行分析 → 评审合并 → 输出报告

展示

HA Orchestrator 设置展示:模型高可用、子智能体编排、自定义子智能体与编辑页

HA Orchestrator 已完成运行与预算耗尽异常状态

注:上述展示来源版本:v0.12.x

已注册命令

插件还会注册两个可选的斜杠命令,用于查看和管理运行状态/记录:

命令说明
/ha查看当前 HA 状态(等同 /ha status)。
/ha status查看隔离、失败计数、轮换游标、切换历史与探测记录。
/ha diag查看插件诊断:服务可用性、持久化、语言、注入状态。
/ha reset清空隔离、失败计数、游标与历史。
/ha probe <provider> <model>手动探测指定模型,验证恢复。
/orchestrate列出最近编排运行(等同 /orchestrate runs)。
/orchestrate runs列出最近 24 次编排运行(每条附一行结果摘要)。
/orchestrate show <runId>查看某次编排运行的详情。
/orchestrate presets列出已配置的编排配方。
/ha-orch-resume <runId>按 runId 恢复未完成的编排运行:复用历史已完成子任务,只跑剩余部分。

这些命令通过 DSH 的 commands 服务注册。如果部署环境没有该服务,插件仍可正常使用,只是这些斜杠命令不可用。

如果宿主提供 skills 服务,插件还会注册一个可由用户主动调用的随包 dsh-ha-orchestrator skill,内容是使用与排障指南;它不会进入模型自动可调用的 skill 目录。

配置页

设置 →「HA 与编排」:

页面顶部有一张概览横幅,一眼可见 HA 启用状态、当前默认模型、备用模型数、编排状态与活动运行数。

卡片作用
模型高可用开关、备用模型列表(结构化行 + 行内编辑下拉;含「推荐备份」与空状态引导)、「高级设置」:冷却时间、失败阈值、突发窗口、Provider 熔断阈值、探测恢复、上下文超长降级、错误码过滤、持久化选择、停止后引导
子智能体编排开关、子智能体提供方、默认并发数(6)、单次任务子智能体上限(16)、全局并发上限、流水线阶段重试、合并/渲染截断、委托深度上限、子智能体输出 token 上限(按「基本 / 并发与预算 / 高级」分组)
自定义子智能体增删改、排序(首字母头像 + 模型/effort 徽章);内置 reviewer/researcher/research-merger;「智能新增」用 AI 生成;支持工具白名单/黑名单、每角色输出 token 上限与独立回退链
诊断HA 运行态(当前默认模型、隔离含层级与冷却倒计时、失败计数、游标、探测、切换历史、清除隔离与历史)与可展开的最近运行(模式徽章、耗时、子任务状态表、lastKey 与结果摘要;重启后仍可见历史)
系统插件语言(跟随系统 / 中文 / English)、编排引导开关、注入状态、一键导出/导入配置、调试卡片开关

对话过程中还有两处可见状态:

  • orchestrate 运行卡片(对话流内):实时进度条 + 百分比、子任务状态点、每个子代理实际使用的模型(lastKey);完成后显示 runId 与输出摘要。
  • HA 状态胶囊(工具区):折叠为单行(启用 / 备份数 / 隔离数 / 最近切换),点击展开冷却倒计时、最近切换记录与活动运行。

文档

注意事项

  • 配置和 HA 状态按「会话 workspace / DSH_HOME → 沙箱 workspace-write 可写根」查找;没有候选目录时,配置写入会在诊断里报告失败。运行记录和 Markdown 工件在没有候选目录时还会尝试写入 fs 服务默认 cwd。
  • HA 运行态(隔离、失败计数、轮换游标、切换历史)以 500ms 防抖持久化到 dsh-ha-orchestrator.ha.json,重启自动恢复;编排运行记录写入 dsh-ha-orchestrator.runs.jsonl(磁盘最多 200 条、内存最多 50 条),并额外生成 dsh-ha-orchestrator.run-<runId>.md,包含完整子任务输出。
  • 运行记录和工件可能包含任务 prompt 与模型输出,请确保 workspace 只对可信用户/进程可读。
  • /ha/orchestrate 的所有斜杠命令见上方「已注册命令」。

License

MIT © Saktawdi

Related plugins