Repository navigation
Releases
v0.3.1
0.3.1 声明修正版
本版只改兼容性声明,不改插件行为:engines.dsh 从没有上界的 >=0.2.0-rc.2 改成 ^0.2.0-rc.2 || ^0.2.1-0,5 个 @deepseek-ai/dsh-* peer 与 2 个 @deepseek-ai/dsh-* dependency 同步到同一区间。源码与界面没有变化。
修正一:补上上界
旧区间 >=0.2.0-rc.2 没有上界,DSH 连 1.0.0 都判为兼容。本插件的职责是限制工具:若未来的大版本改了 tools.restrict 的语义,插件会「照常加载但限制没生效」——这比直接被禁用更危险。新区间盘掉 0.3.0、0.3.0-alpha.* 与 1.0.0。
修正二:0.2.0-rc.2 上的放宽从来没有生效
engines.dsh 这个判定机制是 DSH 0.2.1-alpha.4 才引入的。更早的宿主(包括 0.2.0-rc.2)根本不读 engines.dsh,只看 peerDependencies;而之前的 peer 区间是 ^0.2.1-alpha.2,在 0.2.0-rc.2 上不满足 —— 插件会被判为不兼容并被禁用。
所以「支持 0.2.0-rc.2」这条放宽,在真正能用到它的宿主上其实一次都没生效。现在 engines.dsh 与 peer 使用同一区间,两条判定路径结论一致。
为什么区间写成这样
^0.2.0-rc.2 || ^0.2.1-0 不够直观,但它是唯一能同时满足两个消费者的写法:
| 消费者 | 判定语义 |
|---|---|
DSH(evaluatePluginCompatibility) |
semver.satisfies(range, { includePrerelease: true }) |
| npm / pnpm | 默认模式:预发布版本只有在同一 主.次.修 三元组也带预发布号时才匹配 |
更直观的 >=0.2.0-rc.2 <0.3.0-0 在 npm 模式下会拒掉 0.2.1-alpha.* 与 0.2.1-rc.*(实测:pnpm install --frozen-lockfile 直接报错),在 DSH 模式下却放行。^0.2.1-0 里的 -0 把 0.2.1 三元组的预发布纳入匹配,两个模式的结论由此一致。
验证
- 用 DSH
0.2.1-rc.2的官方evaluatePluginCompatibility跑本 manifest:0.2.0-rc.1、0.3.0-alpha.1、0.3.0、1.0.0均不兼容;0.2.0-rc.2起至0.2.2全部兼容。 pnpm install --frozen-lockfile通过,pnpm peers check无问题。pnpm run typecheck/build/test(19 个文件、300 个测试)全过。
升级提示
- 已在 DSH
0.2.1.x上的用户:无感知,照常安装即可。 - 想留在
0.2.0-rc.2的用户:现在会被判为兼容,但本插件没有在0.2.0-rc.2实机上跑过(只在0.2.1-alpha.2与0.2.1-rc.2上验证过 API 与装配)。若装配后界面异常,请提 issue,并可用dsh plugin add @dotdance/dsh-skill-scope@0.3.0回退。
v0.3.0
0.3.0 正式版
0.3.0 把 0.2.1 之后的三轮预发布收拢成一个正式版:0.3.0-alpha.1 引入工作区层的新语义,alpha.2 修复了桌面上全局面板看不到用户级 Skill 的问题,alpha.3 修复了 Windows 上的分组与来源显示。latest 标签从 0.2.1 移到本版本,普通安装会直接升到 0.3.0。
破坏性变更:工作区层改为逐项三态
旧语义是「全局是硬上限」:全局关掉的项,工作区不能打开。新语义下全局层只是默认值:
.dsh-scope.json 里的值 |
含义 |
|---|---|
| 键不存在 | 跟随全局 |
true |
明令打开 |
false |
明令关闭 |
- 旧格式(只有
disabled黑名单)仍可读入,不会报错;下次在面板里改动时,文件会按新格式重新写出,黑名单条目会明显减少。 - 用
^0.2.1升级到本版本的用户会感受到这个语义变化,请在升级说明里留意。
新增:@deepseek-ai 官方 Skill 默认不列
官方基础设施 Skill(office 系列与 diagnose-windows-sandbox-acl 等)默认不出现在清单里,但模型仍然可以调用它们——隐藏只影响清单与开关视图。要显示它们,打开清单视图条右端的「显示官方 Skill」开关;显示后与普通行一样可以逐项关闭。
修复
- 桌面上全局面板看不到用户级 Skill(issue #1 的主症状)。stock
dsh-web-app关闭了宿主skill-filesystem行、改由每个 preset 各自挂一份,于是用户根($DSH_HOME/skills、$AGENTS_HOME/skills)落进 preset 层,而全局面板只读 GLOBAL 层。本插件自带的 bundle patch 现在重新打开宿主那一行:如果你在自己的 profile patch 里显式把这一行设成- id: skill-filesystem name: "@deepseek-ai/dsh-skill-filesystem" disabled: false
disabled: true,profile 的 patch 在 bundle 之后生效,可以覆盖本默认值。 - Windows 上磁盘 Skill 被归入「运行时注入」、来源空白。分组函数按
/切分路径,而 Windows 的path是反斜杠形态,切不开就得到空分组名,前端兜底成本地化文案「运行时注入」。现在在分组入口统一把反斜杠归一化,路径的大小写、盘符与 UNC 前导//保持不变。
已知代价与限制
- 目录会被扫描两遍:宿主与 preset 各持一个 provider,watcher 与清单失效次数相应翻倍。这是修复全局面板所付出的代价。
- Windows 修复未经真机验证:手边没有 Windows 环境,只跑了反斜杠路径的模拟用例;issue #1 仍在等对方的真机回归。如有不一致,请在该 issue 反馈。
校验
pnpm run check(typecheck + build + 测试):19 个测试文件、300 项测试全部通过。
安装
# 普通安装(取 latest,即本版本)
dsh plugin --profile web add @dotdance/dsh-skill-scope
# 桌面端
dsh plugin --profile desktop add @dotdance/dsh-skill-scope@0.3.0锁定旧行为可装 @dotdance/dsh-skill-scope@0.2.1;若想留在预发布线,@alpha 仍指向 0.3.0-alpha.3。
v0.3.0-alpha.3
v0.3.0-alpha.3(预发布)
请勿用于生产。 要装正式版仍然用 @latest。
本版新增「官方 Skill 默认隐藏」的显示开关,并修复 Windows 上的 Skill 来源分组。
官方 Skill 默认不列
@deepseek-ai 官方包自带的 Skill(cordis-* 预设、office-* 等)不再出现在面板清单里。模型仍然可以自动调用它们。
要看、要关这些行时,打开视图条右端的「显示官方 Skill」开关:这些行回到清单,与普通行一样可以逐项关闭。
这个开关是单机级的(存在 $DSH_HOME/skill-scope/global.json)。全局面板与工程面板都展示它,两个面板永远读到同一个值;在工程面板里打开,同样对所有工程生效。
Windows 路径分组修复
宿生在 Windows 上给出的 Skill path 是反斜杠原生形态。此前本插件按 / 切分,结果所有磁盘 Skill 落进同一个空 key 分组,来源一栏显示为空白。现在在入口处统一转成 / 再切分(与 DSH 前端 sessionFileAddress 同一口径),因此「来源」里的路径与 DSH 自身的显示一致。
校验
pnpm run check(typecheck + build + 300 项测试)全部通过。
安装
dsh plugin --profile web add @dotdance/dsh-skill-scope@0.3.0-alpha.3v0.3.0-alpha.2
本版本让插件在 bundle patch 层启用宿主的 skill-filesystem 行,使 profile 里的 customSkillDirs 生效。
v0.3.0-alpha.1(预发布)
v0.3.0-alpha.1(预发布)
工作区层语义变更后的第一个预发布版本。请勿用于生产,要装正式版仍然用 @latest(0.2.1)。
破坏性变更:全局层不再是硬上限
旧行为:工作区只能在全局黑名单上「再关一批」。全局关掉的项,工作区里看不到,也打不开。
新行为:工作区逐项保存「明令开 / 明令关」,没有记录的项跟随全局。因此工作区可以打开全局关着的项,也可以关掉全局开着的项。全局层从「上限」降级为「默认值」。
.dsh-scope.json 的新格式:
{ "workspace": { "skills": { "某个技能": false }, "mcps": { "某个MCP": true } } }三类语义由「键在不在」区分:
- 键不存在 = 跟随全局(全局变了它跟着变)
true= 明令开false= 明令关
旧格式 {"default": {"skills": [...]}} 仍然可读,并在下一次保存时改写为新格式。改写会删除与全局当前状态一致的条目,因此文件可能明显瘦身(设计文档记录的一个真实工程为 72 条降到 9 条)。这是预期行为,不是丢数据。
面板
- 工作区弹层不再过滤掉「全局已关」的项,直接列出与全局层相同的清单
- 与全局当前状态不同的行标红(只看差异,不看开关方向)
- 新增第四个视图按钮「与全局不同」
其他
- 精简重构:
src/**6295 → 6124 行,CapabilityPanel.tsx657 → 238 行,拆出panel-model.ts(纯函数)与panel-state.ts(React hook),测试文件零改动 - 发布流水线修正:npm 11 起预发布版本必须显式带
--tag,否则发布直接报错。本版发布到alpha标签
安装
dsh plugin --profile web add @dotdance/dsh-skill-scope@0.3.0-alpha.1Release v0.2.1
0.2.1
自动化发布
- 新增 GitHub Release → npm 自动发布流水线(
.github/workflows/publish.yml) - 采用 npm Trusted Publishing (OIDC),无需长期 NPM_TOKEN
- 发布前自动校验 tag 与
package.json版本一致
变更
- client 端与构建配置调整
- 补充测试覆盖(bundle 相关用例)
Release v0.1.0
Initial release of dsh-skill-scope: Skill and MCP control panel for DSH (global + project scope toggles).