Workflow & Automation

dsh-orchestrator

zibo2025/dsh-orchestrator · ★ 8

zibo2025

Defines orchestrator as a coordinator and provides its American and British pronunciations.

README body is shown in Chinese.

License
MIT
Added
2026-08-23
Maintenance
active
Install kind
github
npm
dsh-orchestrator

No manifest check is available; listing does not imply compatibility or security review.

安装

dsh plugin --profile web add github:zibo2025/dsh-orchestrator

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: zh · Read Chinese README

Table of contents
  1. 功能总览
  2. 网格通信与运行控制
  3. Continual Harness(可自我改进的持久状态)
  4. 定时唤醒
  5. 可观测性与持久恢复
  6. 一键安装
  7. 手动安装
  8. 工具
  9. 使用示例
  10. 插件配置
  11. Web 面板(「网格」选项卡)
  12. 注意
  13. 许可证

orchestrator 意为「编排器 / 协调者」;读音:美 /ˈɔːrkəstreɪtər/ · 英 /ˈɔːkɪstreɪtə(r)/,重音在第三音节,近似「奥克斯特雷特尔」。

面向 DeepSeek Harness 的原生全互联智能体编排插件: 一个主智能体负责任务分解与分派,多个 worker 负责实际执行,任意智能体之间都能原生互发消息 (主 → 子、子 → 主、子 ↔ 子),并支持为每个 worker 单独指定模型与思考强度。 没有文件信箱、没有提示词约定、没有轮询——消息直接走 harness 自带的智能体收件箱, 并以 harness 的 coordinator relay 归因持久化到轨迹。

flowchart LR
    U([用户需求]) --> M[主智能体<br/>任务分解与分派]
    subgraph G[worker 网格 · 任意智能体之间互通]
        W1[worker A<br/>独立模型与思考强度]
        W2[worker B<br/>独立模型与思考强度]
        W3[worker …]
    end
    M -- agent_spawn --> G
    G -- 回报 --> M
    M --> R([汇总结果给用户])
    W1 <--> W2
    W2 <--> W3

功能总览

网格通信与运行控制

  • 派生:agent_spawn 创建常驻后台、可持续对话的 worker;可按 worker 指定 provider / model / maxTokens / effort,或用 harness worker 模板一键派生。 spawn 时对显式指定的路由做严格校验——拼错立即报错并列出该 provider 的可用模型,绝不静默降级。
  • 消息:agent_send 给网格内任意智能体发消息(排队为目标的下一回合); agent_broadcast 一条消息广播到所有在线成员。
  • 插话:agent_send 带 steer: true 时,运行中的目标在其最近的步骤边界(模型步骤之间, 不打断进行中的工具调用)消费消息——典型用法是「先汇报当前进度,再继续执行」;空闲目标立即开新回合。
  • 停止:agent_interrupt 取消某个在线智能体的当前回合(中途停下跑偏的任务), 排队中的消息保留不丢;取消原因持久记录在目标轨迹。停下后接一条 agent_send 即可改道。
  • 收尾纪律内置:worker 提示词自动附带「大产物写文件、汇报只发指针」「最终汇报保持精炼」等约定。

Continual Harness(可自我改进的持久状态)

  • 三类条目:memory(网格教训)、worker(可复用派生模板)、prompt(提示注记)。
  • 证据约束:每次修改必须带 summary + rationale(出自真实轨迹证据);乐观并发 (base_version 不匹配即拒绝);保留 id 黑名单——基座提示词不可被自我改写。
  • 审计与回滚:每条 edit 存 before/after 快照、append-only 修改历史;rollback 逆向重放为一个带 rollbackOf 标记的新记录(回滚本身也进审计链)。
  • 双作用域:默认 session-local(经会话日志持久,随会话恢复);显式 global (跨会话 JSON 存储 + 审计文件)。
  • 渐进披露:系统提示只注入每类至多 6 条 × 180 字符的概览({{mesh_harness}} 变量), 完整条目按需用 agent_harness list 读取。

定时唤醒

  • agent_schedule 给自己或任意成员安排一次性(delay_ms / at_ms)或重复(every_ms)唤醒消息; 链式投递——错过的 tick 合并不堆积、目标离线跳过并续排。进程内实现,重启即失 (跨重启的持久调度属宿主能力,见上游建议)。

可观测性与持久恢复

  • agent_list:网格花名册——标签、父级、spawn 时路由、主智能体标记,以及每个成员的 token 用量(inputTokens / outputTokens);已结束 worker 以 settled 状态保留在册。
  • agent_trace:只读穿透任意成员的轨迹(轮次、消息、工具调用与结果),在线读内存快照、 已结束 worker 读持久化日志;读取永不唤醒目标。
  • 冷复活:向你自己派生的已结束 worker 发送 agent_send 会从持久化会话恢复并继续对话。
  • 跨重启恢复:花名册、标签、路由与思考强度从持久化日志自动恢复,宿主重启后依然有效。

一键安装

把下面这句话发给你的 DSH 智能体,它会全自动完成安装:

请自动安装 dsh-orchestrator 插件:运行 ls $DSH_HOME/profiles 找到我的 profile 名,然后执行 dsh plugin --profile <该名字> add dsh-orchestrator;若失败,加 --registry=https://registry.npmjs.org 重试一次;完成后提醒我重启 dsh。

装完重启 dsh 生效(运行中的进程不会热加载新安装的包)。

手动安装

方式 命令
npm(推荐) dsh plugin --profile <name> add dsh-orchestrator
GitHub 源码 dsh plugin --profile <name> add github:zibo2025/dsh-orchestrator#v0.3.0
  • <name> 是你的 profile 名,即 $DSH_HOME/profiles/ 下的目录名(例如 web)。
  • 国内镜像未同步时用官方源:dsh plugin --profile <name> add dsh-orchestrator --registry=https://registry.npmjs.org。
  • GitHub 方式需 pnpm ≥ 10 一次性 allowBuilds 授权:第一次 add 失败后,把它打印的包键加进 profile 的 pnpm-workspace.yaml 的 allowBuilds,再重跑命令。

生效范围两种:组合包(该 profile 的所有会话都获得网格工具)或仅预设(在预设的 agent.cordis.yml 加一行 - id: orchestrator + name: dsh-orchestrator,并 pnpm add dsh-orchestrator, 推荐——协议只在你需要的地方生效)。

工具

工具 作用
agent_spawn 派生一个常驻后台、可持续对话的 worker;可单独指定 provider / model / maxTokens / effort;template 参数按 harness worker 模板派生(显式参数优先于模板);显式路由严格校验,失败报错并列可用模型
agent_send 给网格内任意智能体发消息(子 → 主、子 ↔ 子都行),不返回对方的答复;对你自己派生的已结束 worker 冷复活后继续投递;steer: true 改为插话(见上);返回 mode 标明实际是 steered 还是 queued
agent_interrupt 取消某个在线智能体的当前回合(排队消息保留);父级取消记为 parent、其他成员记为带归因的 hook,均持久化
agent_broadcast 一条消息发给网格内所有在线智能体(不冷复活已结束 worker)
agent_list 网格花名册:标签、父级、路由、主智能体标记、每成员 token 用量;已结束 worker 以 settled 保留在册
agent_trace 只读读取任意成员轨迹(轮次、消息、工具调用与结果);支持 before_seq 向前翻页;读取不唤醒目标
agent_harness 管理 continual-harness 条目(memory / worker / prompt),list / create / update / delete / rollback;修改必须带 summary + rationale;local(默认,随会话日志)或 global(跨会话)
agent_schedule 定时唤醒(schedule / cancel / list),一次性或重复;链式投递不堆积;进程内实现

effort(思考强度)取值:off(关闭)/ high(高)/ max(最高)。

使用示例

开一个会话,直接提需求即可——网格协议会自动注入提示词。

多 worker 协作:

用 agent_spawn 创建两个 worker:
- 一个 label 为 researcher,effort 设为 high,调研「A 主题」并写结论;
- 一个 label 为 checker,用便宜的模型,独立复核 researcher 的结论;
让它们通过 agent_send 互发消息交换意见,最后把结论汇总给我。

运行中要进度 / 停止跑偏任务:

给 researcher 发:agent_send(agent_id: …, message: "先汇报当前进度,然后继续执行", steer: true)
checker 方向错了:agent_interrupt(agent_id: …, reason: "方向偏了,停下")
                 然后 agent_send(…, message: "改查 B 方向") 下发新指令

把复用模式固化为模板:

agent_harness(action: "create", kind: "worker", id: "researcher",
  title: "调研 worker", content: "<完整调研任务提示词>",
  route_model: "<便宜模型>", summary: "…", rationale: "重复使用的调研角色")
之后一行派生:agent_spawn(label: "r2", template: "researcher")

插件配置

配置键 默认值 含义
provider spawn 建立 worker 的 ctx.subagents continuable 后端提供者
maxDepth 2 agent_spawn 派生的绝对委派深度上限(≥ 0)
orientation 内置协议 覆盖网格协议提示词段(可引用 {{mesh_self}} / {{mesh_master}});注意会整体替换内置协议,包括 {{mesh_harness}} 概览行
traceMaxEvents 80 agent_trace 每次读取渲染的事件窗口上限(1 – 1000)
traceMaxCharsPerBlock 2000 agent_trace 每个内容块 / 工具参数的文字裁剪上限(100 – 20000)
traceMaxTotalChars 20000 agent_trace 整段渲染输出的文字上限,保留最新尾部(1000 – 100000)
harnessDir $DSH_HOME/orchestrator(未设时 ~/.dsh/orchestrator) global harness 状态目录

Web 面板(「网格」选项卡)

Web 组合下,插件自动成为双面包(宿主半 + 浏览器半):

  • 「对话」「轨迹」之后出现**「网格」选项卡**(conversation.view 开放槽位,order 20,标签 zh 网格 / en Mesh,跟随界面语言),承载插件全貌:
    • 功能说明:8 个网格工具的一句话简介 + 协议要点(回合制、steer/interrupt 例外、worker 回报守则);
    • 网格成员:从当前会话事件折叠 agent_spawn 记录——label、childId 缩写、派生次序、路由徽章(同 id 重派取最新;实时状态以 agent_list 为准);
    • 模板:会话模板(前端实时折叠 local 条目)与全局模板(经宿主只读路由 /plugins/orchestrator/harness.json)两区,条目卡含 id/标题/版本/路由徽章/摘要,一键复制 id 便于贴给智能体执行 agent_spawn(template: …);
    • UI 全部走应用设计令牌(--dsh-alias-*,深浅色自适应);
  • CLI/TUI 组合不受影响(webServer 缺席时不注册路由,浏览器半不加载);
  • 开发热更:重写 lib/client.js(npm run build:client)即被宿主 client-hmr 捕获并热替换;宿主半(src/index.ts)改动需重启 dsh web。

注意

  • 回合制:默认消息成为目标智能体的下一回合。两个例外:agent_send 带 steer: true 时, 运行中的目标在最近的步骤边界(模型步骤之间,不打断进行中的工具调用)消费消息; agent_interrupt 取消目标的当前回合(排队消息保留)。
  • 插话的边界:steering 只对在线智能体生效——已结束(settled)的 worker 没有可插话的 运行中回合,steer: true 自动回退为排队投递(直接子走冷复活路径)。
  • 冷复活仅限直接子:向你自己派生的已结束 worker 发送 agent_send 会冷复活并继续对话; 已结束的兄弟节点或非直接后代返回 not online,需要时重新派生。agent_trace 读取已结束 worker 的持久化轨迹需挂载 session-persistence 后端。
  • 跨重启恢复:花名册、标签、路由与思考强度从持久化日志(parentSession 派生链 + agent_spawn 结果记录)自动恢复;未挂载 session-persistence 时回退为仅本进程的内存视图。
  • 消息归因:网格消息以 harness 的 coordinator relay 来源投递并持久化,transcript 中不会 把编排中转误记为用户输入。
  • 网格 = 你的派生树:其他会话的智能体对你的网格不可见。
  • agent_schedule 进程内:重启 dsh 后调度即消失;跨重启持久调度参见 docs/agents/host-upstream-recommendations.md。
  • harness 作用域:local 跟随会话日志;global 跨会话且每次修改带审计与回滚。
  • 路由授权清单:当设置页「允许 Agent 为 Subagent 选择模型」开启时,agent_spawn 的显式路由(含模板路由)也必须在该授权清单内(与内置委派工具同一道闸门);未开启时仅做严格校验。继承路由(不显式指定)不受限。
  • 装完工具没出现:重启 dsh(组合包方式)或在新会话选择该预设(仅预设方式)。

许可证

MIT