前言¶
在 DeepSeek Harness(DSH)裏,Profile 級別的 disabledTools、disabledSkills 會作用於所有會話。若你在同一臺機器上同時維護多個代碼倉庫——有的項目需要關掉天氣類工具,有的又要單獨啓用某技能——只改全局列表會影響其它項目,也不適合把偏好寫進每個倉庫的 Git 歷史。
下面介紹的 工具/技能管理(@local/tool-skill-manager)在保留 Profile 默認策略的前提下,爲每個項目根目錄單獨配置工具的強制開/關與技能的繼承或覆蓋。需要說明的是:第三方插件仍由 DSH 在啓動時一次性組合,本插件不按項目卸載插件;按項目擴展能力時,應把工具/技能註冊到項目自身的技能目錄或 Agent 預設中。
這是什麼¶
維護者 ZeaoZhang 在 GitHub 開源的 DSH bundle(倉庫 ZeaoZhang/dsh-tool-skill-manager),社區目錄分類爲 admin-security。它解決的是:在同一 Profile 下,不同 Git 項目邊界內對工具名、技能名做獨立開關,且覆蓋項保存在本機 Profile patch 中,不進入項目倉庫。
項目邊界與 dsh-skill-filesystem 一致:從會話工作目錄向上找最近的含 .git 的祖先目錄;找不到則退回工作目錄本身。
核心功能¶
Profile 默認與項目覆蓋¶
disabledTools/disabledSkills:全局禁用列表,作爲各項目的默認基線。projects.<絕對路徑>.tools.<名稱>/projects.<絕對路徑>.skills.<名稱>:省略表示繼承;true強制啓用;false強制禁用。
設置頁¶
路徑:設置 → 插件 → 工具/技能管理(英文界面爲 Tools & Skills)。
- Scope selector:在
Profile defaults與已登記的項目路徑之間切換;Add project…登記絕對路徑,Remove project刪除該項目的覆蓋。 - Tools / Skills 分 tab:搜索、逐行開關、批量啓用/禁用;在項目 scope 下還有三態:繼承 / 強制開 / 強制關。
- Skills 額外展示來源與調用策略,項目 scope 下提供 Keep only this 等操作。
會話在每次 working-directory/change 時重新計算策略:把工作目錄切到另一個 checkout,工具限制與技能 overlay 會隨之切換。
enforcement 機制¶
- 工具:有效策略落實爲 per-agent 的
tools.restrict({ deny });插件註冊工具後,被禁用的名稱不會進入模型可見工具集。 - 技能:per-agent provider 將禁用項 overlay 爲不可調用(目錄仍穩定),
skill工具 guard 拒絕加載這些技能。
明確不在範圍內的能力¶
- 僅管理全局註冊的工具列表;由 preset 或其它插件註冊的 agent-scoped 工具由各自組合邏輯管理。
- 技能來源包括 Harness 工作區目錄以及項目下的
<project>/.dsh/skills、<project>/.agents/skills。 - Profile 插件在啓動時組合, intentionally 不在本插件管理範圍內。
安裝與啓用¶
在活躍 Profile 的配置中增加條目(id 須唯一且可被 Settings 的 configEditor 唯一定址,否則無法持久化寫入):
- id: tool-skill-manager
name: '@local/tool-skill-manager'
config:
disabledTools: [] # profile default
disabledSkills: []
projects: {} # per-project overrides
package.json 中聲明的 DSH 引擎範圍爲 >=0.1.2-rc.1 <0.3.0;當前 bundle 版本爲 0.3.0,許可證 MIT。安裝前請自行覈對倉庫源碼與許可證;插件以當前 DSH 進程權限運行。
典型配置示例¶
全局禁用 weather,並在某一項目路徑下對工具和技能做覆蓋:
- id: tool-skill-manager
name: '@local/tool-skill-manager'
config:
disabledTools: [weather]
disabledSkills: []
projects:
/Users/me/code/my-app:
tools:
weather: true # force this tool on for this project
code_interpreter: false
skills:
deploy: false
覆蓋項是本機 Profile patch 的一部分,不會隨項目 Git 倉庫分發;換機器或換 Profile 需單獨配置。
適用場景與注意¶
適合:在同一 DSH Profile 下多倉庫並行開發,需要對敏感工具(如聯網、解釋器)或部署類技能做項目級白名單/黑名單,又不想改全局 Profile 或污染倉庫。
注意:
- 插件不能替代「設置 → 插件」裏的插件安裝/卸載;按項目加能力請用項目技能目錄或 Agent 預設。
- 項目路徑在配置裏寫絕對路徑;在設置頁用
Add project…登記,避免手寫錯誤。 - 社區目錄 skillhub.cn 上的插件頁 與 GitHub 爲獨立信息源;目錄站點與 DeepSeek / 幻方無官方從屬關係,安裝與配置以倉庫 README 爲準。
結尾¶
經過上面的步驟,你可以在 Profile 默認策略之上,爲每個 Git 項目單獨繼承或強制開關工具與技能,並在切換工作目錄時自動切換生效範圍。進一步字段說明與限制見 GitHub README;社區索引見 SkillHub 目錄頁。