dsh-orchestrator:在 DSH 裏統一編排多智能體與會話外任務

前言

在 DeepSeek Harness(DSH)裏做複雜自動化時,常見做法是:在單個會話裏靠模型自己記狀態,或手工開多個聊天窗口、另起終端跑命令。前者難以並行、也難以追蹤「哪條聊天在跑、哪條命令在哪臺機器上執行」;後者缺少統一視圖,也不方便讓當前會話通過工具去 spawn、prompt、取消其它 agent。

下面介紹社區插件 dsh-orchestrator(npm 包名 @lucagiftzek/dsh-orchestrator)。它在依賴 dsh-better-sidebar 的前提下增加 Orchestrate 側欄頁,並提供 14 個 orch_* 工具、四類可追蹤任務、可配置的 runner 與 provider 卡片,以及帶密鑰保護的 machine API,把「多 agent 聊天」和「命令 / 抓取 / HTTP / agent 型任務」收攏到同一套設置驅動的工作流裏。

這是什麼

dsh-orchestrator 由維護者 lucagiftzek 發佈,分類屬於 DSH 社區目錄中的「工作流」。一句話定位:爲 DSH 提供 Agent swarm + task orchestration——在 Orchestrate 頁裏創建、列表、prompt、fork(拆分會話)、fan-out 與取消 agent 聊天;創建並跟蹤 command、scrape、http、agent 四類任務;在 local、ssh 或遠程 tool server 上執行命令;展示外部集成狀態卡片;並通過 machine API 供其它主機把本機當作 runner。

插件聲明依賴 DSH >= 0.1.1-rc.1、Node >= 22.5、web profile,且需 dsh-better-sidebar 作爲 Tab 宿主。當前 npm 版本爲 0.1.1(以 package.json 爲準)。runners、providers、預設、併發上限與 API secret 等均寫在 Settings → Orchestrator(或 cordis 配置行),代碼中不硬編碼主機、命令或憑據。

核心功能

Orchestrate 側欄頁

安裝並重啓 dsh-web 後,在側欄 + 菜單中打開 Orchestrate。頁內分爲五塊:

區塊 作用
agents 列出 live / cold 聊天,支持 quick prompt、stop、帶 transcript 的 chat 抽屜(含 fork、cancel),以及帶 fan-out 的 + new agent
tasks 列出任務狀態、runner、運行中任務的 live output(自動輪詢),可取消;+ new task 覆蓋四種類型
runners 執行目標及健康探測
providers 集成狀態卡片(例如可選 HPC allocation 的 headline、隊列、collector 健康等)
api machine API 密鑰管理、curl 示例與 tool-server 契約說明

Tab 上的 badge 統計當前活躍工作(運行中的 agent + 運行中的 task)。

會話工具(orch_*)

通過標準 ctx.tools 註冊,與會話內其它核心工具行爲一致。README 列出的工具包括:

工具 用途
orch_status 一屏總覽:agents、按狀態分的 tasks、runners、providers
orch_agents_list 列出聊天(含搜索)
orch_agent_status 單個聊天運行狀態與最近 user/assistant 文本
orch_agent_prompt 向指定聊天投遞消息(id、唯一前綴或精確標題);cold 聊天可恢復
orch_agent_spawn 創建聊天,可選首條 prompt;count 配合 {i} 做 fan-out
orch_agent_fork 將會話已完成輪次 fork 到新 session 再 prompt
orch_agent_cancel 取消當前輪(隊列中工作保留)
orch_task_create 創建並運行任務
orch_task_list / orch_task_status / orch_task_output 列表 / 查看 / 讀輸出
orch_task_cancel 取消任務(殺 runner 進程或取消 agent 輪次)
orch_runners runner 清單與健康探測
orch_providers provider 狀態卡片

任務類型

type 主要 spec 輸出
command command, cwd, runner, timeoutMs stdout + stderr(有上限)
scrape urls[], extract, selector, attribute, pattern 等 每 URL 狀態與提取數據的 JSON 行
http url, method, body, headers, expectStatus, timeoutMs 響應體(有上限)
agent prompt, count, forkOf, promptExisting, preset, cwd 等 聊天本身; settled 後爲 assistant 答案

全局併發上限與排隊、取消、可修剪的持久歷史與審計事件日誌均適用。任務會 best-effort 鏡像到 ctx.jobs,以便出現在內置 Background Tasks 視圖。command 任務可流式寫入 stdout/stderr;scrape 在 settle 前會記錄 per-URL 進度行。

Runners 與 Providers

Runners(在 Settings 中聲明):

  • local:本機 bash -lc <command>,環境做了 scrub(例如無 SSH_AUTH_SOCK、不繼承密鑰類 secret)
  • ssh:ssh <target> -- <command>,target、二進制、超時等爲運維配置
  • http:遠程 tool server,契約爲 POST {url} {kind, spec, timeoutMs} → {ok, status, output, detail};任意運行本插件的主機在 /dsh-orchestrator/api/remote/run 提供該接口;鑑權 token 通過調用時讀取的 env(secretEnv),不寫入存儲

選擇順序:顯式 runner id → 配置的 default → 在已啓用 runner 間 round-robin。

Providers:

  • hpc(可選):自建的 HPC allocation 狀態服務,讀 {url}/health 與 {url}/state
  • http:任意 JSON 狀態端點,常見鍵如 ok / health / status / headline 會高亮展示

Machine API

提供 secret 保護的 machine API:可 prompt 聊天、spawn agent、創建任務,並對外提供 tool-server 契約,使其它主機能把本機當作執行面。Orchestrate 頁的 api 區塊負責密鑰管理與示例 curl。

安裝與啓用

環境要求:DSH >= 0.1.1-rc.1、Node >= 22.5、web profile、dsh-better-sidebar(若尚未安裝 Tab 宿主,需先裝)。

若尚未安裝側欄宿主,可先執行(README 原文):

dsh plugin --profile web add dsh-better-sidebar   # the tab host, skip if installed

再安裝 orchestrator(npm 或 GitHub 二選一):

dsh plugin --profile web add @lucagiftzek/dsh-orchestrator
# or from GitHub: dsh plugin --profile web add github:lucagiftzek/dsh-orchestrator

包聲明瞭 dsh.bundle,dsh plugin add 後會出現在 dsh.profile.bundles。倉庫中 lib/ 已提交,無需本地 build。

重啓 dsh-web:客戶端部分刷新瀏覽器即可掛載;宿主側(tools、settings namespace、API route)需要重啓。README 說明完整步驟見 cordis.patch.yml。

掛載後可用倉庫腳本做宿主側校驗(可選 port、secret):

bash scripts/verify-host.sh [port] [secret]

會檢查 health、dashboard 形狀、trust fence、CSRF gate,以及在提供 secret 時的 machine probe 往返。

典型用法

  1. 從 Tab 管理 swarm:在 agents 區 spawn 多個 agent,用 fan-out 把同質工作拆到 {i} 插值的多個聊天;在抽屜裏看 transcript、fork 分支會話或 cancel 當前輪。
  2. 從 Tab 或工具跑任務:在 tasks 新建 command(指定 runner 與 cwd)、scrape(多 URL 確定性提取,無模型參與 loop)、http 或 agent 任務;運行中在 Tab 或 orch_task_output 看 live output。
  3. 在會話裏編排:對當前 DSH 會話說明目標,讓模型調用 orch_agent_spawn / orch_task_create / orch_status 等,無需離開聊天即可完成跨 agent、跨 runner 的編排。
  4. 多機協作:在一臺機器配置 http runner 指向另一臺已安裝本插件且暴露 /dsh-orchestrator/api/remote/run 的 tool server,用 env 中的 secret 鑑權,把命令或任務 fan-out 到遠程 box。

以上步驟均來自 README 描述的能力組合;具體 Settings 字段與安全模型(trust fence、kill switches 等)以 README 的 Settings reference、Security model、Kill switches 章節爲準。

適用場景與注意

適合誰:需要在 DSH web 側統一管理多個 agent 會話、並在 local / ssh / 遠程 plugin 實例上跑命令或結構化抓取/HTTP 的開發者;希望會話內工具與側欄 UI 共用同一套狀態與審計日誌的團隊。

權限與安全:任務與 runner 以 當前 dsh 進程權限 執行;local runner 仍會 scrub 部分環境,但 ssh 與遠程調用取決於你的 target 與 secret 配置。安裝前應閱讀倉庫 LICENSE、Security model 與源碼,確認 machine API secret、CSRF 與 kill switch 是否符合你的部署邊界。插件來自社區目錄 SkillHub 插件頁,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本文僅介紹該插件在 README 中聲明的行爲。

結尾

dsh-orchestrator 把 Orchestrate 頁、orch_* 工具、四類任務、三類 runner、provider 卡片與 machine API 連成一條設置驅動的工作流線,適合在 DSH 裏做 agent swarm 與會話外自動化。進一步瞭解安裝細節與配置項,見 GitHub 倉庫 lucagiftzek/dsh-orchestrator 與目錄頁 https://www.skillhub.cn/plugins/lucagiftzek/dsh-orchestrator。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜