dsh-skills
Global skill hub for dsh: aggregates Claude Code, project, and .skill-package skills into ~/.dsh/skills with reference/copy import and slash-menu usage
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:CocoSgt/dsh-skills说明文档
阅读完整 README ↗dsh-skills
简体中文 | English
npm 包名:dsh-skills · GitHub 仓库:
CocoSgt/dsh-skills
DeepSeek Harness(dsh)的第三方技能中枢:把散落各处的技能汇成全局库。
Claude Code 的 ~/.claude/skills、项目目录、.skill 包……统一入库到
~/.dsh/skills(官方 skill-filesystem 的默认扫描根,watcher 实时),入库即
出现在输入框的「/」斜杠菜单。设置页里的「技能」导航页。
两种入库身份
| 引用(推荐) | 副本 | |
|---|---|---|
| 实现 | skills/ → 来源的符号链接 | 整树拷贝 |
| 同步 | 不存在同步问题:只有一份文件,编辑即编辑来源 | 与来源独立演化(state 记录来源备查) |
| 来源删了 | 面板标注「引用失效」,一键移除(不动来源) | 无影响 |
| 适用 | 来源长期存在且归你维护 | 来源临时(.skill 包、要删的仓库),或想改全局版不动来源 |
harness 的技能扫描、fs 提供者与 watcher 都原生跟随符号链接(实测
skill-filesystem 的 nodeEntryKind 显式处理),引用无需任何补丁,且在
全部加载形态(含 SDK/ACP,插件装不进去的那些)下生效。
概念对齐 harness 现实
- 没有「安装」这回事:技能放进扫描根即生效。本页管理的是全局库
(
~/.dsh/skills,rank 400,对所有会话生效);项目目录里的技能 (.dsh/skills、.agents/skills,rank 100/200)由 harness 直接扫描, 不经过本页——它们「一直可调用」正是这个原因,同名时项目技能优先。 - 技能是文件树,不是一个 MD:编辑器只编辑
SKILL.md并明示还有几个 资源文件;资源用「打开目录」管理。导出 .skill 整树打包(引用则解引用 打包真实文件)。 - 编辑引用 = 编辑来源:编辑器头部黄字明示,保存直接写入来源文件。
页签
- 全局技能:页首动作行「+ 新建技能」(内联展开,不用滚动)与
「上传 .skill」(选完文件即入库,无中间确认步);技能多时有筛选框。
每张卡:身份徽标(
引用 → 来源/副本/本地创建/引用失效)、 资源文件数、非默认调用策略;描述默认 3 行折叠(点击展开);主操作 「编辑 SKILL.md」,导出/打开目录/复制名收进 ⋯ 菜单,删除行内两步确认 (引用只删链接)。 - 发现:页首「扫描目录」chips 内联管理(每个 chip 标注技能数或 「不存在」,✕ 即时移除,+ 就地添加——不再有独立的「来源」页签); 扫描结果每项「引用」(主)/「复制」,「全部引用」走单次批量 RPC; 结果多时有筛选框。
架构
- 宿主端(
lib/index.mjs):SkillHubGateway继承TypertRemoteService, 暴露skillHub/getState|runCommand|browseDirs三个 RPC(browseDirs 供 来源选择器逐级浏览目录;runCommand 负载为命令联合,src-json 过 wire)。 此前的 3180–3189 端口探测 sidecar HTTP 服务已移除。第三方双副本场景下 SRC 发现失明,同时注册弱清单进宿主 typert registry。 - ():$mount identity 编解码描述符 → ;面板注册 槽,「打开目录」走官方 。