安装
dsh plugin --profile web add @dotdance/dsh-skill-scope
--profile web 换成你自己的 profile 名即可。
它解决什么问题
你在 DSH 里装得越多,Agent 每一轮要读的清单就越长。
- 用户级 Skill 目录里堆了 N+ Skill,其中能帮到当前这个任务的只有几个。
- 每个 MCP server 都会把它的全部工具塞进模型的工具表,哪怕这一轮一个都用不上。
- 写代码的工程和写文章的工作区,需要的 Skill 和 MCP 根本不是同一套。
- 你想「这个项目就用这几个能力」,但官方没有给任何开关——Skill 装上就是全局可见。
后果不是"不好看",而是实打实的成本:
| 代价 | 说明 |
|---|---|
| 烧 Token | Skill 目录与 MCP 工具表每一轮都要重新进上下文,装的越多,每一轮固定开销越大 |
| 注意力被稀释 | 候选太多,模型更容易选错工具、漏掉真正相关的那个 |
| 上下文不干净 | 无关能力混进提示词,结果更难预测,调试更难 |
| 工程之间互相污染 | A 项目的专用能力,在 B 项目里也一直占着位置 |
dsh-skill-scope 就是为这件事做的:把「模型能调用哪些 Skill 与 MCP」变成一组 看得见、点得动的开关,并按全局和本工作区两个粒度分别管理。
它能做什么
1. 全局面板——一次收掉所有工程都不需要的能力
点左侧栏的「全局 Skills」,打开一个原生主界面页面,列出全局层的全部 Skill 与 MCP server。 在这里关掉的名字默认对所有工作区生效;某个工程确实需要时,可以在本工程里单独把它打开(见下文第 3 条)。

上图红圈标出两个入口:左侧栏的 Global Skills,和输入框右下角的 Workspace Skills。
- 顶部一排是视图切换(全部 / 已启用 / 已禁用)——它只筛列表,不改任何开关。
- 搜索框同时筛 Skill 与 MCP 两段,输入即过滤。
- 列表按来源分组折叠,长清单也能快速定位。
官方 Skill 默认不列:@deepseek-ai 官方包自带的 Skill(cordis-* 预设、office-* 等)
默认不出现在面板上,模型仍可自动调用它们。想看见、想关掉它们时,打开视图条右端的
「显示官方 Skill」开关:这些行会回到清单,与普通行一样可以逐项关闭。
这个开关是单机级的(存在 $DSH_HOME/skill-scope/global.json),全局与本工程两个面板
都展示它、值永远一致;在工作区面板里打开它,效果同样对所有工程生效。
2. 本工程面板——只给这一个项目留要用的能力
在新会话的输入框右下角点「工作区 Skills」,打开本工程弹层(浮动在当前界面之上):

图中列表标题写明「只影响 default-workspace」,下半部分按来源分组:本例里 .agents 目录贡献 35 项。
- 列表与全局面板同一份清单:全局关掉的项也在里面(开关是关的),你可以直接在这里把它打开。
- 与全局设置不同的行带一个红色标记「与全局不同」,一眼看出这个工程动过什么。
- 视图条除「全部 / 已启用 / 已禁用」外多一个「与全局不同」:点它只剩本工程改过的项(清单长时好用)。
- 改动只对本工程的新会话生效,不影响别的项目。
3. 关键规则:全局给默认值,工程可以逐项改
磁盘上的全部 Skill 与 MCP
│
▼
┌─────────────────────┐
│ 全局层(默认值) │ 关掉 = 默认任何工程都用不了
└─────────────────────┘
│ 逐项:跟随 / 打开 / 关闭
▼
┌─────────────────────┐
│ 工程层(可覆盖) │ 全局关的能打开,全局开的也能关掉
└─────────────────────┘
│
▼
这一轮模型真正看得见的集合
每一项在本工程里有三种状态。界面上只有开关一种动作,因为「跟随全局」用不记这条来表达:
| 状态 | 含义 | 界面上怎么看出来 |
|---|---|---|
| 跟随全局 | 本工程对这项没有主张 | 开关位置与全局一致,没有红标 |
| 本工程打开 | 全局关着,这个工程要用 | 开关是开的 + 红标「与全局不同」 |
| 本工程关闭 | 全局开着,这个工程不要 | 开关是关的 + 红标「与全局不同」 |
想改回「跟随全局」:把开关拨回全局的样子即可,红标消失,这条决定也随之删除。
关掉 ≠ 删掉:手动调用永远还在
关掉一个 Skill 只把它的模型自动调用关掉。你仍然可以在会话里手敲 /名字 调用它。
No comments yet. Be the first to write one.