dsh-settings-hub:把第三方插件設置收攏到「插件設置」入口

前言

DeepSeek Harness(DSH)採用「一切皆插件」的擴展方式:每裝一個帶設置頁的插件,設置面板左欄往往就多一行。插件一多,賬號、通用、模型、內置插件與各類第三方配置混在一起,找某一插件的設置頁要反覆掃左欄。

dsh-settings-hub 是維護者 MrXiongBear 發佈的客戶端類 DSH 插件,目標是把除產品自身頁面以外的第三方設置頁摺疊進統一的「插件設置 / Plugins」入口,左欄只保留核心分區,具體插件配置在同一頁內列表、搜索並展開。下面介紹它的定位、行爲、安裝方式與使用注意。

這是什麼

dsh-settings-hub(npm 包名 dsh-settings-hub,當前資料中版本爲 1.0.4,MIT 許可證)面向在 DSH 裏安裝多個第三方插件、且這些插件各自注冊了設置頁的用戶。它不替代各插件的設置邏輯,只改設置外殼的導航與聚合方式:產品內置頁面仍在原位置,其餘 settings.section 條目收進新頁面。

倉庫說明標明本包爲實驗性、自用性質,緊貼 DSH 宿主接縫(apply / inject / client bundle / 配置解析),僅在編寫時對應的 DSH 版本上驗證過;未發佈到 npm,社區目錄頁位於 SkillHub,源碼在 GitHub。SkillHub 爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

核心功能

統一的「插件設置」頁

插件會新增一個 settings.section 頁面:id 爲 plugin-settings,標籤爲「插件設置 / Plugins」,排序 order 5(位於 General 之後、Models 之前)。

在該頁中:

  • 列出所有被摺疊的、由插件提供的設置頁;
  • 支持搜索;
  • 點擊後在當前頁內展開;展開的是插件原本的頁面組件(組件、locale、store、inject 全部複用),功能與外觀與原生頁面一致。

左欄摺疊規則

以下內置頁面保持原位,不會被收進「插件設置」:

  • account
  • general
  • models
  • plugins
  • agent-presets
  • archived-sessions
  • session-log

其餘 settings.section 條目(含以後新裝的插件)默認摺疊。左欄不再「一個插件一行」。

鏡像與跳轉

摺疊頁的組件通過本插件聲明的子槽 plugin-settings.detail 做鏡像註冊(槽渲染器只允許渲染自己聲明過的子槽)。鏡像保留原條目頂層的 locale、store、inject——這三項在槽條目上是頂層字段,不在 options 裏。

若某個頁面自己聲明瞭子槽、無法安全鏡像,列表中該行會改爲調用設置外殼的 actions.openSection(id),跳轉到該插件自己的獨立設置頁。

動態增刪與停用還原

新裝或卸載插件時,settings.section 的訂閱會觸發,「插件設置」內的列表會自動增刪。

停用本插件時會還原導航過濾並移除所有鏡像,設置面板恢復爲安裝前的左欄佈局。

導航過濾與降級

實現上對 slots 服務的 entries 方法做局部包裝:僅當 key === "settings.section" 時過濾被摺疊的行,其它 slot 原樣返回;停用時按 descriptor 校驗還原。若包裝失效,會退化爲「多一個插件設置頁」並顯示提示,不會導致設置面板崩潰。

客戶端加載後會將自檢結果 POST 到 Host 半邊的 /api/settings-hub/status,寫入包目錄下的 .diagnostics.json,便於觀測導航可見/隱藏的 section id、已鏡像頁面、過濾是否安裝成功等信息。

安裝與啓用

DSH 的 profile 加載爲全有或全無:任一插件 import 失敗可能連坐整個 profile。安裝前請先備份 profile 中的 package.json 與 cordis.patch.yml。

README 給出的 bundle 安裝方式爲:

plugin_manager action:"install_bundle" target:"<repo>"

將 <repo> 換爲實際倉庫標識(與你在 DSH 環境中安裝其它 bundle 時使用的 target 一致)。安裝後無需重啓;打開「設置」(賬號菜單 → 設置,或 Ctrl+,)即可看到「插件設置」。

若不用 bundle 管理器,也可按倉庫說明手動操作:把本目錄放進 profile 的 node_modules,或在 package.json 中用 "<包名>": "link:<本目錄絕對路徑>",並在 package.json 的 dsh.profile.bundles 裏登記,然後重啓 DSH。

改插件代碼後需要 remove_bundle 再 install_bundle,並且 bump version,客戶端 bundle 纔會在頁面內重新加載。

卸載時:從 dsh.profile.bundles 移除登記 → pnpm remove <包名> 或刪掉 junction → 重啓;若異常,用備份的 package.json 與 cordis.patch.yml 還原。

典型用法

  1. 按上文命令安裝 dsh-settings-hub。
  2. 打開設置,在左欄找到 General 與 Models 之間的「插件設置 / Plugins」。
  3. 在列表中搜索或瀏覽第三方插件名稱,點擊條目;可在當前頁內展開該插件的原生設置 UI。
  4. 若某條目因子槽限制無法鏡像,點擊後會跳轉到該插件在左欄對應的獨立 section(若過濾仍隱藏左欄項,則通過列表入口進入)。

無需額外配置文件;行爲隨已安裝的 settings.section 插件自動變化。

適用場景與注意

適合:本地或團隊環境中已安裝多個帶設置頁的 DSH 插件,希望左欄只保留賬號、通用、模型等核心項,把第三方配置集中在一頁管理。

務必注意:

  • 插件以當前 DSH 進程的權限運行;安裝前應閱讀 源碼 與 MIT 許可證,自行評估風險。
  • 倉庫頂部標明代碼 100% 由 AI 生成,實驗性、非商業;宿主升級後可能直接失效。
  • 沒有 npm 發佈;依賴 profile / bundle 方式接入,與官方應用商店無關。

Host 側主要文件:index.js 註冊診斷 API;client.js 承擔 UI、鏡像與導航過濾;cordis.patch.yml 插入 loader 條目 settings-hub。

結尾

dsh-settings-hub 解決的是「設置左欄隨插件變長」的導航問題:內置分區不動,第三方設置集中到可搜索的「插件設置」頁,並儘量複用各插件原有設置組件。需要進一步瞭解說明與 issue 時,可查看 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜