前言¶
在 DeepSeek Harness (DSH) 中開發插件時,目標 Plugin 的 Host 代碼、配置或依賴出現錯誤可能導致開發實例重啓失敗,甚至影響穩定運行的 DSH 實例。爲了隔離這種風險,需要一種機制來管理獨立的開發環境。
dsh-plugin-dev-manager 提供了一個穩定的控制面,用於管理隔離的 Plugin 開發實例。它通過爲每個開發 Workspace 創建獨立的 DSH_HOME、Web profile 和端口,確保開發過程中的故障不會波及穩定的 DSH。
核心功能¶
該插件主要提供以下能力:
- 隔離的開發環境:爲每個開發 Workspace 創建獨立的
DSH_HOME、Web profile 和端口,設置獨立的DSH_AGENTS_HOME和 bundled-skill 目錄,避免掃描穩定實例的 Skills。 - 多 Plugin 組合:一個 Workspace 可以組合多個本地 Plugin、固定版本依賴和團隊 Preset。通過
link:<absolute-plugin-path>安裝本地成員,並支持在倉庫內使用.dsh-dev.yml、.dsh-dev.yaml或.dsh-dev.json聲明配置。 - 生命週期管理:支持對開發 DSH 進行啓動、停止、重啓、檢查操作。自動啓動每個本地成員的
dev:clientwatcher,並在啓動前運行dsh --profile web --dump-config。 - 構建與驗證:執行依賴安裝與初始構建,支持執行目標包的
check、test或指定 package script。將 pnpm tarball 安裝到全新環境,通過乾淨環境門禁後計算 SHA-256 並寫入晉級元數據。 - 管理與日誌:在 DSH 設置頁提供 Plugin Dev 管理面板,讀取 Host、watcher、check、clean validation 和 supervisor 日誌。支持安全註銷單個實例,並可選擇清理受管開發數據,同時保留已晉級 Release 和 Plugin 源碼。
- 進程安全: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 插件涉及預覽、排隊、移除和驗證四個步驟:
- 預覽:查看安裝來源、版本和阻塞原因。
dsh_plugin_uninstall_preview({ packageName: "dsh-example-plugin" })
- 排隊:確認影響範圍並排隊卸載。
dsh_plugin_queue_uninstall({
packageName,
expectedGeneration: preview.profileGeneration,
confirm: true
})
- 移除:執行實際的移除操作。
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 內,確保了開發環境的穩定性。