dsh-mesh:用共享目錄賬本把局域網裏的 DSH 連成可掉線的任務網格

前言

在 DeepSeek Harness(DSH)裏跑長任務,常見做法是單機串行:一章小說、一集分鏡、一整塊代碼改完才停。機器一掛,要麼從頭排,要麼人工盯進度。多臺電腦各自開 DSH,又缺少統一的計劃、派單和失敗接管,很難當成一條流水線用。

dsh-mesh 是社區插件,走「共享文件夾 + 租約 + 冪等提交」的路線:不搭數據庫、不綁中心服務,把協調、派單、進度和產物都寫在局域網可達的目錄裏(SMB 或本機盤均可)。任務在一處提交,按節點負載拆給多機並行;某臺中途宕機,步驟在租約過期後由其他節點接手,已完成的步驟不會重跑。

這是什麼

一句話:把多臺 DSH 組成局域網內的分佈式任務 DAG 執行網格,依賴共享目錄賬本、租約選主與崩潰恢復。

核心功能

任務模型

鏈路爲 Task → Plan(DAG)→ Step → Artifact → Ledger。每一步設計成大約 5–20 分鐘、可重試的單元;產物按 sha256 內容尋址落盤。

協調與容錯

  • 租約:worker 搶到 lease.json 才執行,默認每 10s 續期;45s 不續期視爲節點死亡,協調器回收並改派(優先避開上次失敗的節點)。
  • 冪等:commit.json 以獨佔創建(wx)方式寫入,同一步重複執行只保留一份 commit。
  • 賬本:各節點追加寫 ledger/<node>/events.jsonl;協調器合併讀取。
  • 重試:單步默認最多 3 次,超限標記 blocked 並在賬本留證據。

能力與調度(M3)

  • 步驟可聲明 caps(如 image),只派給心跳裏報告了對應能力的節點。
  • capSlots 限制每通道併發;maxConcurrent 爲本機總併發閘。
  • priority 數字越小越先派;未完成步驟超過 maxQueuedSteps 時暫停新派單(背壓)。

內置工具

工具 作用
mesh_plan 用模板(research / novel / drama / code)生成計劃;submit=true 才真正提交
mesh_submit 提交 DAG:{ goal, steps:[{id,title,instruction,dependsOn?,caps?,serial?,priority?}] }
mesh_tasks 列任務或查單任務分步狀態、執行節點、重試次數
mesh_status 集羣視角:協調器、存活節點、隊列與背壓、本機通道佔用
mesh_cancel 取消任務(已跑步驟跑完,不再派新步驟)

指令裏可寫 {{step:s1}},依賴步驟產物會自動內聯;過長時落到 inputs/s1.md 供執行端讀取。

工作原理(簡圖)

提交端 (任意 DSH)            共享目錄 (\\host\dsh-mesh)                執行端 (每臺 DSH)
  mesh_submit  ──寫 plan──►  tasks/<id>/plan.json
                                   │
                          協調器 (租約選主) ──派單──► tasks/<id>/steps/<s>/assign.json
                                                              │
                                                       worker 搶租約 lease.json
                                                              │
                                                       dsh --profile mesh-worker headless
                                                              │
                                                       寫 commit.json (wx 獨佔創建)

安裝與啓用

插件以當前 DSH 進程權限運行;安裝前請自行查看倉庫源碼與 MIT 許可證。安裝命令須以 README 爲準,勿憑包名拼湊 github:owner/repo。

源碼目錄位置自定,用 link: 指向本地路徑:

dsh plugin --profile desktop add "link:D:\99-DP-D\01-代碼項目\dsh-mesh"

若目標機器的 Electron 獨佔 profile(報錯 profile "desktop" is managed exclusively by the Electron application),需手工安裝:

  1. 將倉庫複製到 C:\Users\<you>\dsh-plugins\dsh-mesh,並再複製一份到 <profile>\node_modules\dsh-mesh(實目錄,非符號鏈接);
  2. 在 profile 的 package.json 中設置 dependencies["dsh-mesh"] = "file:C:/Users/<you>/dsh-plugins/dsh-mesh",並把 "dsh-mesh" 加入 dsh.profile.bundles;
  3. 在 profile 的 cordis.patch.yml 末尾加入插件配置(見下);
  4. 重啓桌面應用(僅新建 bundle 時必須重啓;之後改 config 可熱重載)。

每臺機器的兩步準備

先建一個純執行用 profile(不帶桌面 UI 插件):

dsh --profile mesh-worker --from-default-profile headless headless "只回復 ok"

在 profile 的 cordis.patch.yml 末尾追加:

- id: dsh-mesh
  config:
    root: '\\<mesh-host>\dsh-mesh'      # 共享目錄;本機示例 D:\dsh-mesh
    node: LMM-1                        # 唯一節點名(默認主機名)
    role: auto                         # auto | coordinator | worker | client
    workerProfile: mesh-worker
    apiKeyFile: 'C:/Users/Administrator/.dsh/.credentials.yaml'
    maxConcurrent: 2
    pollMs: 2000

節點名必須唯一:兩臺機器同名會互相搶租約。root 爲空時插件不啓動,只記日誌。

主要配置項(完整表見 README)包括:leaseMs / leaseRenewMs(默認 45000 / 10000)、maxAttempts(3)、stepTimeoutMs(900000)、caps(默認 ['text'])、maxQueuedSteps(200)等。

典型用法

用模板生成並提交調研類任務

mesh_plan 可把「提綱 → 並行分節 → 覈驗」等套路固化,無需手寫幾十步 DAG:

{ "template": "research", "goal": "國際制裁的反制", "sections": ["問題的提出", "規範基礎", "比較法"], "target": "30000 字", "submit": true }

觀察集羣與任務

用 mesh_status 看協調器與存活節點;用 mesh_tasks 查某任務各步狀態與重試。本機運行日誌在 ~/.dsh/mesh/mesh.log。

無桌面宿主時單獨跑節點

node bin/mesh-node.mjs --root "\\<mesh-host>\dsh-mesh" --node LMM-3 `
  --exe "D:\99-DP\DeepSeek Harness.exe" `
  --cli "D:\99-DP\resources\app.asar\dsh\node_modules\@deepseek-ai\dsh-desktop-host\lib\cli.js"

倉庫內可用 node test/mesh-core.test.mjs、node test/mesh-m3.test.mjs 做核心與 M3 行爲驗證(假執行器)。

適用場景與注意

README 中的對比表概括了典型收益:長篇寫作、分鏡級短劇、按文件所有權並行改代碼、分段深度調研等,多機並行且單機宕機不拖垮已完成步驟。

適合:已有局域網共享盤(或本機統一路徑)、多臺 DSH、願意用 DAG + 模板描述工作流的團隊。

限制(以 README 爲準):

  • 僅面向局域網 / 同源可達共享目錄;跨公網需配合 dsh-wan-peers 等做發現與隧道。
  • 協調器爲租約選主:協調器所在機掛掉後,約 coordLeaseMs(默認 15s)內重選,期間不派新單,已跑步驟不受影響。
  • 步驟產物目前以純文本爲主;二進制建議寫共享盤後在 commit 裏記路徑。
  • 大產物走共享盤,受 SMB 帶寬約束,無跨節點帶寬優化。

DeepSeek Harness 生態強調「一切皆插件」;SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-mesh 把多機 DSH 收成一條可掉線的任務流水線:共享目錄即賬本,租約保證單寫與故障接管,適合在局域網內做長週期、可並行的 agent 工作流。進一步瞭解請查閱 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜