前言¶
在 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 往返。
典型用法¶
- 從 Tab 管理 swarm:在 agents 區 spawn 多個 agent,用 fan-out 把同質工作拆到
{i}插值的多個聊天;在抽屜裏看 transcript、fork 分支會話或 cancel 當前輪。 - 從 Tab 或工具跑任務:在 tasks 新建
command(指定 runner 與 cwd)、scrape(多 URL 確定性提取,無模型參與 loop)、http或agent任務;運行中在 Tab 或orch_task_output看 live output。 - 在會話裏編排:對當前 DSH 會話說明目標,讓模型調用
orch_agent_spawn/orch_task_create/orch_status等,無需離開聊天即可完成跨 agent、跨 runner 的編排。 - 多機協作:在一臺機器配置 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。