前言¶
在 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 目录页。