Skip to content

Releases: qinyre/dsh-plugin-capabilities

v0.4.1

Choose a tag to compare

@qinyre qinyre released this 16 Oct 08:30

修复内容

MCP 配置变更改为在线生效(官方机制)

此前「模型与能力 → MCP」中的每一次新增、修改、停用、删除、导入或市场安装,都会提示「重启 dsh 后生效」。该重启并非官方机制:官方插件管理器通过 app-boot 的 reconcileProfilePatches 对补丁层变更执行在线重组(带 hmr 服务的宿主在文件写入后自动重组);而桌面端的重启由应用托盘菜单承担,官方 dshDesktop 桥并未提供任何重启接口——本插件客户端此前调用的重启桥方法在官方桥面上并不存在,桌面端的「重启服务」按钮实际是无效操作。

本版本将 MCP 变更接入官方在线重组链路:

  • 每次变更写入补丁层后,即以运行时锚定的 app-boot 执行与官方一致的 reconcileProfilePatches;
  • 重组成功时返回 applied: true,界面显示「已生效,无需重启」,变更即时进入运行中的会话;
  • 宿主缺少该能力时(0.1.x 等旧运行时)保持原有「需重启」提示,独立 dsh web 的自重启通道不变;
  • 桌面端不再调用不存在的重启接口:需重启时仅按官方方式提示使用托盘菜单「重启服务」,页首的重启按钮仅保留在独立运行模式。

已通过真实宿主端到端验证:新增、停用、删除均在线生效,无需任何重启。

其他

  • 桌面桥类型声明修正为官方实际暴露的表面(此前声明了并不存在的接口成员)。

v0.4.0

Choose a tag to compare

@qinyre qinyre released this 15 Oct 08:22

新功能

  • 扫描来源扩容:本机其他 agent 的技能目录自动纳入扫描——新增 Gemini CLI、Cursor、GitHub Copilot、Windsurf、OpenCode、Trae(含 CN)、Roo Code、Qoder(含 CN)、CodeBuddy、WorkBuddy、OpenClaw(含旧目录)与 CC Switch,目录存在才扫,零拷贝、原地同步;技能嵌在 marketplace 之类的子目录时,插件会定位嵌套技能文件夹并挂载其父目录,marketplace 式布局不再漏扫;「技能」页来源标签按 agent 名标注,可按来源筛选。
  • 项目级技能:「技能」页新增工作区下拉(读取 dsh 已登记的工作区),选定后列表针对该工作区——项目里的 .dsh/skills 与 .agents/skills 进入目录(「项目」标签),可查看、开关,.dsh/skills 里的技能还能就地编辑;未提供工作区服务的旧宿主自动隐藏下拉,行为不变。
  • 技能导入:新增「导入技能」,支持文件夹(单技能或集合,含散装 .md)、单个 .md 文件与 ZIP 压缩包(≤32 MiB,自动穿透 GitHub 式包装目录);目的地可选用户目录或某个工作区的 .dsh/skills;同名冲突可跳过或覆盖,逐条结果当场列出。导入按 frontmatter name 落盘(缺省按文件夹/文件名归一为 kebab-case),装完即被目录发现。

安全与健壮性

  • ZIP 导入解包前逐条校验条目名(拒绝绝对路径、..、Windows 保留设备名),解包在插件状态目录内的暂存区完成并必定清理;含符号链接的技能来源拒绝导入。
  • 引用不存在的工作区返回明确错误,绝不静默回落全局目录。

说明

  • 新增依赖 fflate(构建时内联进产物)。
  • 已在 dsh 0.2.0-rc.2 与 0.2.1-alpha.3 两个运行时上完成安装、工作区枚举、项目技能开关与三种导入路径的实机验证;128 项测试全绿。
  • 已知边界:新建技能仍只写入用户目录(工作区写入请走「导入技能」);新装 agent 的目录在下一次重启后纳入扫描。

v0.3.15

Choose a tag to compare

@qinyre qinyre released this 15 Oct 06:30

适配

  • 适配 dsh 0.2 线运行时的插件兼容性审计:将内置的 @deepseek-ai/dsh-skill-filesystem 依赖范围由 ^0.1.1-rc.1 提升至 ^0.2.0-rc.1(安装时解析至 0.2.0-rc.2)。此前该依赖在 0.2.x 运行时上因 peer 依赖不满足而被启动审计停用,并伴随三条启动告警;更新后即解析至 0.2 线,dsh 0.2.0-rc.2 下的启动日志不再出现相关告警。
  • 插件功能、页面与路由无任何变化。已在 dsh 0.2.0-rc.2 与 0.2.1-alpha.3 两个运行时上完成安装、挂载与路由验证。

说明

  • dsh 0.2.1-alpha 线运行时下,该依赖行仍会因上游 peer 精确钉版而被停用(仅表现为启动告警,技能与 MCP 功能不受影响);待桌面端实际滚动至 0.2.1 线后,将随下个版本再次调整依赖范围。

dsh-plugin-capabilities 0.3.14

Choose a tag to compare

@qinyre qinyre released this 11 Oct 07:26

本版本修复桌面端 profile 寻址错误的问题,与 dsh-plugin-install 0.4.3 同源。

桌面宿主从不把 --profile 放进命令行参数,插件据此回退的默认 profile 是 web:在桌面端,profile 作用域的 MCP 读取与写入会落在 web profile 上。现改为从模块自身的物理安装位置识别激活的 profile——pnpm 安装的包必然解析到 <home>/profiles/<名称>/node_modules 之下——显式 cordis 配置仍然最优先;经 file: 安装的开发检出位于任何 profile 之外,继续沿用原有的命令行回退。

v0.3.13

Choose a tag to compare

@qinyre qinyre released this 01 Oct 00:55

v0.3.13

修复官方桌面端中写操作全部失败的问题(issue #4)

  • 官方 DeepSeek Harness Desktop 壳将页面请求转发给本地 Host 时会删除 Origin 头,此前的同源栅栏因此把桌面端内所有保存、停用、删除、导入、重启等写操作一律拒绝(403 untrusted origin),GET 请求不受影响。
  • 现在,无 Origin 的请求仅在同时满足以下全部条件时放行:Host 为回环字面量、连接对端为回环、无任何代理转发痕迹头、无跨站 Sec-Fetch-Site 标记。浏览器发起的 POST 始终携带 Origin,跨站页面、Origin: null 沙箱与 DNS 重绑定请求依旧被拒。
  • /restart 的信任判定同步放宽:桌面端转发而来的重启请求现在能到达路由,并得到由桌面壳接管重启的应答,而不是 403。
  • 同源栅栏的判定与拒绝矩阵已补入单元测试。

v0.3.12

Choose a tag to compare

@qinyre qinyre released this 29 Sep 13:49

v0.3.12

插件页显示名与简介

  • 新增包内多语言文件(locale/en.json、locale/zh.json),向宿主声明插件显示元数据。
  • 设置 → 插件页中,本插件现显示为「Skills与MCP」(英文界面显示 Skills & MCP),简介随界面语言显示,不再回退到去前缀的包名 capabilities。
  • package.json 同步声明 ./locale/*.json 子路径导出,并将 locale 目录纳入发布清单。

v0.3.11

Choose a tag to compare

@qinyre qinyre released this 27 Sep 07:24

修复 dsh 0.1.5 及以上运行时(含 0.1.7-rc.2)中「技能与 MCP」分区打开后内容区一片空白的问题,并使新版本在旧运行时上同样可用。

根因与修复

宿主客户端组件库 @deepseek-ai/dsh-client-ui-primitives 自 0.1.5 起将全部图标导出从像素尺寸后缀(如 IconRefreshOutline14、IconSkillOutline16)更名为描边规格后缀(Regular/Medium)。插件的客户端产物经宿主 ModuleLoader 的 CJS require 解析该包,缺失的命名导出在 CJS 语义下是 undefined 而非导入失败——于是插件照常激活、设置分区照常注册,直到渲染第一个图标时调用 undefined 抛错,整个分区子树被卸载:导航项还在、内容区空白、控制台无任何输出。服务端路由一切正常,这也是此前路由级探针未能发现它的原因。

本版为图标引入双命名适配层:按运行宿主实际提供的命名代际择一取用(0.1.2 代的 14/16 后缀或 0.1.5+ 的 Regular/Medium),两者都取不到时降级为空渲染而非抛错——今后再有图标更名,最坏也只是少一个图标,不会再白屏整个分区。

验证

  • 在 dsh 0.1.7-rc.2 上以真实浏览器驱动设置页验证:技能(15 项清单、开关、来源过滤)、MCP、市场三个标签页完整渲染;全部内容完整渲染、控制台零错误;
  • 类型检查与全量单元测试通过(capabilities 82 项)。

v0.3.10

Choose a tag to compare

@qinyre qinyre released this 29 Aug 14:12

与 npm 上的 dsh-plugin-capabilities@0.3.10 同步。

0.3.10 「MCP」页服务器卡片的操作按钮重排:动作行改为右对齐、整体换行,修复五个按钮放不下时第二行从左侧顶格的错位;「停用/启用」随行状态只显示当前可执行的动作词,「复制到另一层」收拢为「复制」(悬停提示保留完整含义)。常规宽度下五个动作单行放下,窄卡片下换行也保持整齐。

v0.3.9

Choose a tag to compare

@qinyre qinyre released this 29 Aug 11:13

技能与 MCP 管理插件的首次 GitHub Release,与 npm 上的 dsh-plugin-capabilities@0.3.9 同步。

近期版本的主要变更:

0.3.9 「MCP」页每行新增连通性检查:stdio 服务器在 PATH 中确认命令真实存在(纯文件系统查找,不启动进程),streamable-http 服务器以短超时 GET 探测,任何 HTTP 状态均视为可达(MCP 端点对普通 GET 回 405 属正常)。行支持一键复制到另一层补丁文件,换层不必删除重配。「从其他 Agent 导入」的来源在 Claude Code 与 Codex 之外新增 Cursor(/.cursor/mcp.json)与 Gemini CLI(/.gemini/settings.json),Gemini 的 httpUrl 映射为 streamable-http,SSE 条目跳过。

0.3.8 「MCP」页合并展示全局层与 profile 层:全局层(DSH_HOME/cordis.patch.yml)对本机所有 profile 生效,dsh 组合补丁时排在 profile 层之后,两层出现同名 id 时以全局为准并加以标注。添加、市场安装与导入均可选择写入层,编辑、停用、移除落在该行所在的层。全局文件存在语法错误时,页面单独报出文件路径与出错行列,不影响 profile 行的展示。

0.3.7 cordis.patch.yml 存在语法错误时,页面直接给出文件完整路径与出错行列,并且不写入任何内容;此前保存时只会抛出内部的 "Document with errors cannot be stringified",无从定位。

安装:npm 包名 dsh-plugin-capabilities;DSH Desktop 用户随桌面版本预装,或经插件市场更新。