DeepSeek Harness 插件開發管理器

前言

在 DeepSeek Harness (DSH) 中開發插件時,目標 Plugin 的 Host 代碼、配置或依賴出現錯誤可能導致開發實例重啓失敗,甚至影響穩定運行的 DSH 實例。爲了隔離這種風險,需要一種機制來管理獨立的開發環境。

dsh-plugin-dev-manager 提供了一個穩定的控制面,用於管理隔離的 Plugin 開發實例。它通過爲每個開發 Workspace 創建獨立的 DSH_HOME、Web profile 和端口,確保開發過程中的故障不會波及穩定的 DSH。

核心功能

該插件主要提供以下能力:

  1. 隔離的開發環境:爲每個開發 Workspace 創建獨立的 DSH_HOME、Web profile 和端口,設置獨立的 DSH_AGENTS_HOME 和 bundled-skill 目錄,避免掃描穩定實例的 Skills。
  2. 多 Plugin 組合:一個 Workspace 可以組合多個本地 Plugin、固定版本依賴和團隊 Preset。通過 link:<absolute-plugin-path> 安裝本地成員,並支持在倉庫內使用 .dsh-dev.yml、.dsh-dev.yaml 或 .dsh-dev.json 聲明配置。
  3. 生命週期管理:支持對開發 DSH 進行啓動、停止、重啓、檢查操作。自動啓動每個本地成員的 dev:client watcher,並在啓動前運行 dsh --profile web --dump-config。
  4. 構建與驗證:執行依賴安裝與初始構建,支持執行目標包的 check、test 或指定 package script。將 pnpm tarball 安裝到全新環境,通過乾淨環境門禁後計算 SHA-256 並寫入晉級元數據。
  5. 管理與日誌:在 DSH 設置頁提供 Plugin Dev 管理面板,讀取 Host、watcher、check、clean validation 和 supervisor 日誌。支持安全註銷單個實例,並可選擇清理受管開發數據,同時保留已晉級 Release 和 Plugin 源碼。
  6. 進程安全:localhost supervisor RPC 使用原生 HTTP。supervisor 啓動失敗或競爭失敗時主動回收剛創建的進程。拒絕停止 supervisor 沒有持有進程句柄的端口占用者。

安裝與啓用

安裝該插件時,必須指定一個獨立的、未承載共享工作的 DSH Home 路徑,不能指向 Stable。

DSH_HOME=/absolute/path/to/isolated-dsh-home \
  dsh plugin --profile web add "github:QuanQQQ/dsh-plugin-dev-manager#v0.4.3"

安裝完成後,在 DSH 的設置頁面中即可找到 Plugin Dev 管理面板。

典型用法

創建開發 Workspace

通過 RPC 調用創建一個開發 Workspace,插件會自動讀取開發清單、安裝依賴、初始構建並分配獨立端口。

dsh_dev_workspace_create({ workspacePath: "/work/campaign-plugin" })

配置多 Plugin Workspace

在 Workspace 根目錄創建 .dsh-dev.yml 文件,定義 Workspace 的組成:

version: 1
name: campaign-dev
preset: team-web

plugins:
  - path: .
    role: primary
    watch: dev:client

  - path: ../dsh-plugin-common
    role: member

  - source: github:example/dsh-plugin-storage#v1.3.0
    role: dependency

卸載 Stable 插件

卸載 Stable 插件涉及預覽、排隊、移除和驗證四個步驟:

  1. 預覽:查看安裝來源、版本和阻塞原因。
    dsh_plugin_uninstall_preview({ packageName: "dsh-example-plugin" })
  1. 排隊:確認影響範圍並排隊卸載。
    dsh_plugin_queue_uninstall({ 
      packageName, 
      expectedGeneration: preview.profileGeneration, 
      confirm: true 
    })
  1. 移除:執行實際的移除操作。
    dsh plugin --profile web remove --config.ignore-scripts=true <packageName>

適用場景與注意事項

  • 適用場景:需要在一個穩定 DSH 中進行插件開發,且希望開發環境的故障不影響其他實例或 Stable 環境的場景。
  • 權限與路徑:插件以當前 dsh 進程權限運行。安裝示例中指定的 DSH_HOME 必須是絕對路徑,且僅用於獨立環境,不能指向共享 Stable 的目錄。
  • 更新機制:共享 Stable 的 Plugin 更新必須使用 dsh_dev_queue_update,Runtime 更新需進入隔離兼容性驗證流程的同一隊列。

總結

dsh-plugin-dev-manager 通過爲插件開發提供獨立的控制面、嚴格的構建驗證流程和安全的進程管理機制,幫助開發者隔離開發風險。它將開發實例的故障域限制在單個 Workspace 內,確保了開發環境的穩定性。

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

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

小夜