Passer au contenu principal
S

dsh-skills-hub

sunqing975/dsh-skills-hub

Manage local skills across AI agents with version comparison, shared-directory consolidation, and recoverable migration and deletion.

Installer

dsh plugin --profile web add github:sunqing975/dsh-skills-hub

README

Skills 管理 / Skills Hub

DSH 原生左侧栏插件。无额外依赖、无安装脚本;通过当前 DSH 的认证连接提供操作,不启动其他服务器。

使用

  1. 在 DSH 左侧栏打开 Skills 管理。
  2. 在「目录」检查默认 Agent 路径、启用状态与公用目录,也可增加项目级或自定义目录。路径支持 DSH 原生文件夹选择,取消不改变字段,选中后仍需保存配置。候选路径不代表该软件一定原生支持此目录;缺失路径不会自动创建。
  3. 各页顶层分组卡片统一采用「技能」页的边框、背景、圆角、标题、间距与折叠箭头样式,保留各自操作与展开状态。「技能」页只展示技能信息与详情、迁移、删除入口,按 Agent 分组,公用组优先。支持全部展开/全部折叠和单组切换;组内不重复显示 Agent 或“独立副本”,只有链接显示“链接”。
  4. 「技能分布」以技能为单位折叠展示,标题突出覆盖 Agent 数、实体/链接数量,比较与合并入口集中在该技能的操作组。展开后查看各 Agent 的来源路径与链接目标。同时展示同名、同内容技能在各 Agent 中的真实副本与链接,包括只有一份实体而其他 Agent 都是链接的情况。单实体多链接表示已经共享,无需重复合并。多份实体可统一到公用目录;仅不同内容显示比较按钮,差异弹窗以旧/新行号展示增删行,相同行不展示;超限或非文本内容明确提示。相同内容点击合并即执行内部计划校验与备份,无独立预览步骤。不同版本必须人工选定保留版并确认影响,再备份其他实体并建立链接。
  5. 点击迁移,在一个弹窗选择目标 Agent 或公用目录并确认。内部仍生成与复核安全计划,不再另设预览步骤;目标有不同内容时拒绝覆盖。
  6. 「失效链接」独立维护启用的 Agent 技能目录中已发现、经核验可清理的失效符号链接,按 Agent 分组,支持单条、当前 Agent 或本页全部条目清理。显示链接路径和原目标;确认弹窗列出全部范围与备份。只移除仍然失效的链接本身,不删除目标、不重新关联,可从操作记录恢复。此页显示全部已核验可清理条目,不受历史忽略标记影响。权限错误、循环链接、普通缺失目录和经符号链接父目录访问的条目不会自动清理;不会扫描任意系统目录。 「扫描异常」按 Agent 显示默认收起的可折叠卡片,标题展示名称和数量,展开后逐条显示原始报错和对应「询问 AI」;无法归属的放在「其他异常」,不按错误类型归类或展示处理建议。结构化已确认失效链接只在「失效链接」页展示和处理,避免重复;权限错误、普通路径缺失等仍保留。不提供忽略/取消忽略,也不隐藏过去标记过的普通错误。
  7. 删除先展示来源、原路径和备份路径,勾选并确认才执行可恢复移除。链接只移除当前引用,不删除指向的技能。公用实体不再一律禁止删除:存在引用时必须查看影响范围,并显式选择连同已发现的链接引用一起移除,避免留下失效引用;无法安全确定范围时仍拒绝执行。
  8. 每条扫描异常提供「询问 AI」:打开 DSH 会话并仅把这条错误的上下文、路径与限长原始信息放入输入框,不自动发送。若新会话入口复用已有空白会话,诊断草稿追加到现有未发送内容之后,不覆盖草稿。错误作为不可信诊断数据,要求 AI 先只读排查,任何修改另行确认。
  9. 操作记录使用默认折叠卡片,只显示操作、状态、时间与涉及数量;展开后查看路径、目标、备份与恢复入口。恢复遇到路径被占用、备份被修改等情况时拒绝覆盖,需要人工检查,不会强行丢弃新内容。

默认公用目录是 ~/.agents/skills。Claude Code、Codex(ChatGPT 编码客户端)、DSH、WorkBuddy、Cursor、Trae、Gemini CLI、Windsurf、Cline、Roo、OpenCode、Copilot、Kiro 提供预设或候选目录;网页 ChatGPT 无统一的本地 Skills 目录协议。用户可以修改路径,不承诺所有软件自动读取公用目录。

判重规则

  • 完整 SHA-256 指纹覆盖相对文件路径、原始文件字节、可执行位,包含脚本和资源,而非只看技能名或主说明。
  • 同名但不同指纹是冲突,不自动决定保留版;用户审查差异并明确选版后,才允许备份并统一。
  • 不同技能名但完整文件内容相同可以是重复。
  • 相同 realpath 的现有共享链接不是独立重复副本,但仍会在技能分布中列出它属于哪些 Agent。
  • 引用范围仅包含启用配置目录中扫描到的技能;不能证明系统其他位置、禁用目录或外部程序不存在额外引用。
  • 相同内容合并保持原路径与内容,不再因无关目录扫描异常阻断;相关技能内容不完整、路径或引用发生变化仍拒绝操作。改变内容的合并和删除仍要求完整引用范围,忽略扫描异常不会绕过检查。
  • 不完整扫描、内部符号链接、超出扫描限制等会提示,不作为可安全迁移的完全一致结果。
  • 文本对比是辅助审查;不宣称能自动判定语义等价。即使指纹不同的技能可能语义近似,也不会自动合并。

迁移与备份

迁移计划不修改源技能。执行时重新核对源内容,拒绝覆盖不同内容的目标,复制并校验目标 Agent 或公用副本,备份原目录,然后保留原路径的符号链接。已有链接通常仅显示为共享引用,不再迁移。执行状态写入持久 journal,失败后保留线索和备份;若异常退出留下未完成操作,应先检查记录与源/目标,勿手工删除备份。

统一选版会将所选版本放在公用目录,其他独立原版本各自备份,原路径改为链接。已有链接尽量保持原样;替换已有公用版本时,必须在确认中核对其备份和受影响引用,因为这些引用之后会读取新选版本。恢复会核对备份和当前内容,不强行覆盖后来修改。

删除不是永久清除:原目录或链接改名为同父目录的隔离备份,操作记录保留恢复入口。备份不会再次计入技能清单或重复组。对于继承符号链接的父目录、不完整内容扫描或计划后内容变化,拒绝删除。不要手工清理备份,除非已确认不再需要恢复。

配置和操作记录保存在本插件目录的 .state/,不提交、不打包个人数据。请保留安装所链接的工作区插件目录,移动或删除目录会影响已安装插件。技能目录里的内容不作为代码执行。

安全边界: 使用 DSH Connection 的认证路由;页面调用与 agent tool 共用引擎。skills_hub tool 允许列举、详情、比较、目录配置及准备计划,不允许代替用户确认迁移、删除或恢复。插件不是沙箱隔离器,拥有本机进程权限的其他程序仍能直接修改本机文件。

开发验证

node --test plugins/skills-hub/*.test.js
node --check plugins/skills-hub/index.js
node --check plugins/skills-hub/host.js
node --check plugins/skills-hub/engine.js
node --check plugins/skills-hub/client.js

测试只使用独有临时目录,不用真实用户技能做迁移实验。无浏览器控制时仅能验证注册、接口、脚本及文件资源,不能据此声称已验证页面视觉效果。

原创 SVG 图标由此插件随源码发布,可随插件自由使用与修改。

Plugins associés