前言¶
在 DeepSeek Harness(DSH)裏,各插件通過 Loader 條目掛載,生效配置往往疊在 profile 的 cordis.patch.yml 上。內置設置頁走 settings.mutate,只接受插件在 Config schema 裏標成 .volatile() 的字段;改其它鍵會直接報錯 Config field "<path>" is not volatile,於是超時、功能開關、Provider 表、插件列表等大塊配置只能手改 YAML。
下面介紹社區客戶端插件 dsh-config-studio(維護者 MaxHan0102):它走 ctx.configEditor,與 DSH 自帶設置同一套寫入路徑,但不侷限於 volatile,把「當前 profile 裏每個可尋址 Loader 條目」做成可瀏覽、可編輯、可保存的界面。
這是什麼¶
dsh-config-studio 是 DSH 的 客戶端(Web GUI) 插件:列出 configEditor.entries() 返回的條目,按各插件自己的 Config schema 渲染表單,把你修改的非 volatile 字段寫回 profile 的 patch。入口在 設置 → 插件配置(Settings → Plugin configuration),界面語言跟隨 Harness(English / 簡體中文)。
- 倉庫:MaxHan0102/dsh-config-studio
- 社區目錄:skillhub.cn 插件頁
- 許可證:MIT(見倉庫
LICENSE) - 當前包版本:
0.1.0(見package.json與 release 安裝地址) - 環境要求:DSH
0.2.1-rc.5及以上(README 標明在0.2.1-rc.5上測試);需 Web 組合自帶的ctx.configEditor與ctx.connection.fetch;Node 20+
社區插件目錄由 skillhub.cn 等站點維護,與 DeepSeek / 幻方無官方從屬關係;安裝前請自行審閱源碼與許可證。插件在 當前 DSH 進程權限 下運行,寫入的是你所用 profile 的配置 patch。
核心功能¶
瀏覽條目¶
- 展示每個可編輯 Loader 條目的包名、字段數、是否已有 patch 覆蓋、當前狀態。
- 按 id 或包名搜索;默認只看「可編輯」條目,可切換到「全部」以只讀方式查看不可寫字段。
- 按 function(models、agents、tools、web、accounts、runtime、sessions、interface、platform、other)或 origin(內置 / 第三方)分組;支持摺疊;進入某條目再返回時保留瀏覽狀態。
編輯與保存¶
- 每個頂層 config 鍵一行:文本、數字、開關、枚舉下拉、對象/數組用 JSON 編輯器。
- 行上顯示當前生效值、是否來自 profile patch,以及一鍵 Reset 回到繼承層默認值。
- Save to profile 前先展示將要寫入的 patch 形態 diff;帶 revision 校驗,避免覆蓋併發編輯;保存後結果行說明 override 已應用或已移除。
- Host 對完整 config 做 schema 校驗,原子寫入 patch 並經 Loader 重載條目;校驗失敗會指出字段名,衝突時可選擇 reload。
只讀邊界(由 Host 決定)¶
以下情況在界面中只讀,瀏覽器無法繞過:
| 條件 | 原因 |
|---|---|
role('secret') |
密鑰不出 Host,頁面僅知是否已設置 |
role('credential-ref') |
引用不可當普通值編輯 |
| 對象子樹含 secret | JSON 編輯可能泄露 |
未求值的 !!js |
僅 YAML 能安全表達 |
| schema 類型表單不支持 | 無安全控件 |
字段 meta.disabled |
插件禁用 |
| 條目大於 64 KiB | 不適合單表單編輯 |
| 條目 disabled / failed / inactive / group | 當前不可尋址 |
憑證、!!js、過大條目等也不會在這裏可寫(README 有完整表格,此處爲常用項摘要)。
兩個行爲需要心裏有數¶
Patch 替換整段 config,不是按鍵 merge。 保存單個字段時,會寫入「當前條目完整 config + 你的改動」,其它鍵若與繼承層相同則一併 pin 在 patch 裏;若所有字段最終都等於繼承層,該條目的 patch 記錄會被整段移除——整條目 Reset 即此意。
保存會走 Loader 生命週期。 多數插件會隨保存重載;少數需重啓 Host 才生效,結果行會提示。
安裝與啓用¶
包爲 dsh.bundle,無依賴、無構建步驟;下列來源等價,按你的 Host 選一種。
DSH Desktop(推薦)¶
Desktop 的 profile 由應用管理,不能用 CLI 裝進 Desktop profile:
- 打開 設置 → 插件。
- 在安裝框粘貼其一:
https://github.com/MaxHan0102/dsh-config-studio/releases/download/v0.1.0/dsh-config-studio-0.1.0.tgz
或:
github:MaxHan0102/dsh-config-studio
- 在列表中啓用 dsh-config-studio,然後
Cmd/Ctrl+R刷新頁面。
dsh web 或自定義 profile¶
將 web 換成你的 profile 名;若 Host 未加載插件,重啓後再刷新頁面。
# 固定 tag 的 release 包(URL 隨 tag 不變)
dsh plugin --profile web add https://github.com/MaxHan0102/dsh-config-studio/releases/download/v0.1.0/dsh-config-studio-0.1.0.tgz
# 或直接從倉庫安裝
dsh plugin --profile web add github:MaxHan0102/dsh-config-studio
更新與移除¶
更新時使用較新 tag 的安裝命令,例如 README 中的:
dsh plugin --profile web add https://github.com/MaxHan0102/dsh-config-studio/releases/download/v0.1.1/dsh-config-studio-0.1.1.tgz
Desktop 可在插件卡片上使用更新控件;github: 安裝無自動更新檢查,需先移除再添加。
移除插件:
dsh plugin --profile web remove dsh-config-studio
已寫入 cordis.patch.yml 的 override 不會因卸載插件而刪除。
典型用法¶
- 打開 設置 → 插件配置。首屏列出「有東西可改」的條目;需要審計只讀項時,將篩選改爲 All entries。
- 點選一條 Loader 條目。右側按該插件 schema 生成字段;條目或字段標 Overridden 表示值來自 profile patch,其餘爲繼承層。
- 修改字段:變更行高亮;數字、枚舉、JSON 在保存前會標無效;行上 Reset 表示恢復繼承值(待保存態會在輸入框體現)。
- 點 Save to profile 查看即將寫入的 diff。
- 確認後 Host 校驗並寫入;失敗則看字段名或衝突提示。
徽章含義(摘自 README):
| 徽章 | 含義 |
|---|---|
| Overridden(條目) | patch 裏已有該條目的 config: |
| Overridden(字段) | 該鍵寫在上述 record 中 |
| Read-only | 見只讀規則 |
| Third-party | 包不在 @deepseek-ai/ 作用域下 |
適用場景與注意¶
適合: 已在用 DSH profile 調插件組合,需要可視化改非 volatile 配置(超時、開關、列表型 config 等),又不想每次手改 YAML 或只改 volatile 偏好項的場景。
注意:
- 與內置設置互補:volatile 偏好仍適合走原生設置頁;大塊 struct 配置適合本插件。
- 祕密、憑證引用、
!!js等必須繼續用 Host 認可的方式配置,不要指望在此編輯。 - 卸載插件不清理 patch;若不再需要 override,需在界面 Reset 或手改 YAML。
- 安裝前閱讀 GitHub 倉庫 與 MIT 許可證;第三方插件請自行評估信任邊界。
結尾¶
DSH 生態強調「一切皆插件」;dsh-config-studio 補的是內置設置頁夠不着的 profile 配置層:瀏覽可尋址條目、按 schema 表單編輯、經 configEditor 寫回 cordis.patch.yml。若你的 profile 裏插件多、YAML 改得勤,可以按上文安裝後在 設置 → 插件配置 試一輪 diff 再保存。
- 目錄頁:https://www.skillhub.cn/plugins/MaxHan0102/dsh-config-studio
- GitHub:https://github.com/MaxHan0102/dsh-config-studio