deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
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 即可改道。summary + rationale(出自真实轨迹证据);乐观并发
(base_version 不匹配即拒绝);保留 id 黑名单——基座提示词不可被自我改写。rollback
逆向重放为一个带 rollbackOf 标记的新记录(回滚本身也进审计链)。{{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 读持久化日志;读取永不唤醒目标。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。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 组合下,插件自动成为双面包(宿主半 + 浏览器半):
conversation.view 开放槽位,order 20,标签 zh 网格 / en Mesh,跟随界面语言),承载插件全貌:agent_spawn 记录——label、childId 缩写、派生次序、路由徽章(同 id 重派取最新;实时状态以 agent_list 为准);/plugins/orchestrator/harness.json)两区,条目卡含 id/标题/版本/路由徽章/摘要,一键复制 id 便于贴给智能体执行 agent_spawn(template: …);--dsh-alias-*,深浅色自适应);webServer 缺席时不注册路由,浏览器半不加载);lib/client.js(npm run build:client)即被宿主 client-hmr 捕获并热替换;宿主半(src/index.ts)改动需重启 dsh web。agent_send 带 steer: true 时,
运行中的目标在最近的步骤边界(模型步骤之间,不打断进行中的工具调用)消费消息;
agent_interrupt 取消目标的当前回合(排队消息保留)。steer: true 自动回退为排队投递(直接子走冷复活路径)。agent_send 会冷复活并继续对话;
已结束的兄弟节点或非直接后代返回 not online,需要时重新派生。agent_trace 读取已结束
worker 的持久化轨迹需挂载 session-persistence 后端。parentSession 派生链 +
agent_spawn 结果记录)自动恢复;未挂载 session-persistence 时回退为仅本进程的内存视图。dsh 后调度即消失;跨重启持久调度参见
docs/agents/host-upstream-recommendations.md。agent_spawn 的显式路由(含模板路由)也必须在该授权清单内(与内置委派工具同一道闸门);未开启时仅做严格校验。继承路由(不显式指定)不受限。dsh(组合包方式)或在新会话选择该预设(仅预设方式)。MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。