前言¶
DeepSeek Harness(DSH)裏裝了很多插件時,模型每次請求都會帶上各插件註冊的工具、提示詞段和技能。若想在某一次對話裏臨時收窄能力——例如去掉網頁搜索工具、或不讓 Superpowers 技能進目錄——全局「設置 → 插件」會把影響擴到所有會話,往往過重。
dsh-session-plugin-manager(會話插件管理器)在右側欄增加「插件」頁籤,只對當前 session 關閉插件面向模型的那一層貢獻;其它會話和全局插件開關不變。下面按定位、能力邊界、安裝、用法與配置說明。
這是什麼¶
- 倉庫 / npm 包名:
dsh-session-plugin-manager(維護者 kiluahh,GitHub,SkillHub 目錄頁) - 分類:客戶端插件(注入
@deepseek-ai/dsh-client-ui-sidebar-right) - 許可:MIT;README 寫明在 DSH
0.2.2-rc.1上做過測試;package.json 當前版本爲0.2.1 - 一句話:在右側欄按當前會話開關各 bundle 的工具、prompt sections 和 skills,不卸載插件、不改全局設置
列表數據與「設置 → 插件」同源,來自 pluginManager.listBundles()。
核心功能¶
安裝並在右欄打開 Plugins / 插件 後,可對每個已安裝的 bundle 撥動開關。
關閉(僅本會話)時插件側會:
- 通過
agent.ctx.tools.restrict({ deny })從下一輪請求的工具定義中移除該插件工具,模型無法看到或調用它們。 - 對該插件註冊的 prompt section / context 做同名空段遮蔽(scoped system-prompt shadowing)。
- 對在
skillProviders中登記的 provider(默認映射含@local/dsh-superpowers→superpowers),將 provider 下各技能註冊爲同名 runtime skill,並設modelInvocable: false, userInvocable: false:技能目錄不再列出,skill工具加載會返回不可用。
狀態持久化:按 sessionId 寫入 $DSH_HOME/session-plugin-manager/state.json;重開會話或重啓 DSH 後恢復本會話的開關狀態。開始頁會顯示與右欄對應的卡片。
界面語言:跟隨 DSH 語言;zh* 顯示中文,其它 locale 顯示英文;切換語言後面板會重渲染。行標題來自各包 package.json 的 dsh.meta。
邊界說明:它不做什麼¶
README 明確區分邊界,避免誤用:
- 不卸載插件:後臺服務、UI 面板仍可運行,只是去掉模型可見的工具 / 段落 / 技能。
- 不是全局開關:全局仍以「設置 → 插件」爲準;在設置裏全局關掉的行會在面板裏標爲 Globally off,需先在設置裏啓用才能做會話級控制。
- 技能按 provider 整組遮蔽,不能勾選單個技能。
- 不貢獻工具或技能的插件(音效、聊天橋、模型供應商等)在列表中置灰。
環境與依賴¶
- 需要帶
sidebarRightTabs客戶端服務與pluginManager主機服務的 DSH(文檔測試版本0.2.2-rc.1)。 - 運行時除 DSH 外無額外 npm 依賴,實現僅用 Node 內置模塊。
安裝與啓用¶
任選一種 install_bundle 目標(須以 host 返回 application: applied 爲準):
從 npm 公共 registry:
plugin_manager({ action: 'install_bundle', target: 'dsh-session-plugin-manager' })
從 GitHub:
plugin_manager({ action: 'install_bundle', target: 'https://github.com/kiluahh/dsh-session-plugin-manager' })
從本地目錄:
plugin_manager({ action: 'install_bundle', target: 'D:\\path\\to\\dsh-session-plugin-manager' })
安裝後:重啓 DSH(host 半需要重啓),並刷新頁面(client bundle 需重新加載)。
插件與 DSH 同進程權限運行;安裝前建議瀏覽倉庫源碼與 MIT 許可證。SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。
典型用法¶
- 打開右側欄,進入 Plugins / 插件。
- 將某個 bundle 的開關撥到 off;行上會顯示被隱藏的工具 / 技能數量。
- 需要一次性撤銷本會話全部覆蓋時,使用 Restore all / 全部恢復。
README 中文說明中的可復現檢查項包括:
- 關閉「網頁工具集」後,本會話工具列表中不再出現
web_search_bing、web_fetch_markdown;新會話仍可用。 - 關閉 Superpowers 後,技能目錄不再列出
brainstorming、test-driven-development等;skill工具返回not available for model invocation。 - 重開會話或重啓 DSH 後開關狀態保持;點「全部恢復」後工具與技能恢復。
配置(cordis.patch.yml 行 config)¶
可在插件 bundle 的 cordis.patch.yml 中調整下表字段(均爲資料原文默認值與含義):
| 字段 | 默認 | 說明 |
|---|---|---|
stateFile |
$DSH_HOME/session-plugin-manager/state.json |
按會話狀態文件 |
includeOfficial |
false |
是否同時列出可選官方 bundle |
toolMap |
{} |
模塊 → { tools, sections, contexts },覆蓋自動掃描 |
skillProviders |
{ "@local/dsh-superpowers": ["superpowers"] } |
bundle → skill provider 名;關閉時整組遮蔽 |
scan |
true |
是否掃描包源碼補全 tool 映射 |
scanMaxFiles |
120 |
單包最多讀取文件數 |
scanMaxBytes |
2097152 |
單文件讀取上限(字節) |
cacheTtlMs |
30000 |
目錄緩存 TTL(毫秒) |
若某行提示 Tools not mapped,需在 toolMap 中補充該模塊及工具名。
適用場景與注意¶
適合誰:經常開多會話、且希望某些對話「輕裝上陣」(少工具、少技能、少 prompt 注入)的 DSH 用戶;與全局插件設置互補,而不是替代。
注意:
- 隻影響模型側可見面,不能代替在安全或合規場景下對插件本身的審計。
- 技能遮蔽粒度是 provider,不能細到單個 skill。
- 自定義翻譯可在
client.js的DICTS中增加詞典並擴展normalizeLocale(見 README Development / Languages)。
維護者在倉庫提供無外部依賴的 Node 測試,例如:
node test/smoke-test.mjs
node test/client-locale.mjs
結尾¶
DSH 生態強調「一切皆插件」;dsh-session-plugin-manager 解決的是會話級收窄插件模型面的需求:右欄開關、狀態按 session 落盤、與設置頁列表一致。需要安裝說明與驗證清單時,以 GitHub README 爲準;社區索引見 SkillHub 目錄頁。