
kezboardpj/dsh-skill-loader
31最近提交 2026年8月15日
dsh-skill-loader DSH 插件
该插件在开始页新增一个技能清单选择 chip,让你勾选哪些技能(名称+描述)载入当前对话。未勾选的技能在该对话中不可用。选择状态通过 dsh settings 持久化,重启后依然准确。
如何安装 dsh-skill-loader DSH 插件
dsh plugin --profile web add https://github.com/kezboardpj/dsh-skill-loader.git复制不会执行命令。安装 dsh-skill-loader DSH 插件前请核对仓库和版本。
dsh-skill-loader DSH 插件数据来源
dsh-skill-loader DSH 插件快照日期:2026年8月16日
discovered
dsh-skill-loader DSH 插件能做什么
- 在新建对话开始页的工作目录和 agent 预设 chip 旁新增技能清单 chip
- 仅将勾选的技能包含在模型看到的 available_skills 目录中
- 未勾选的技能被 skill 工具、手势和目录命令拒绝
- 选择状态存储在 $DSH_HOME/settings.yaml 中,重启后保留
- 提供 /skill-select 命令按名称设置技能,以及 /skill-unarchive 命令恢复归档的会话
dsh-skill-loader DSH 插件适合哪些场景
- 管理大型技能库,只加载当前对话需要的技能
- 防止模型看到或使用不需要的技能,保持对话简洁
- 为不同项目创建专注环境,分别选择不同技能集
- 使用 skill-unarchive 命令恢复误归档的会话
dsh-skill-loader DSH 插件适合谁
- 拥有大量技能并希望按对话控制技能加载的 DSH 用户
- 需要限制模型技能访问范围以提高安全性或清晰度的进阶用户
dsh-skill-loader DSH 插件的限制
- 仅对已安装并配置该插件的 dsh profile 生效
- 安装后需要重启 dsh(不支持热加载)
- 技能选择 chip 仅在新会话空白页显示,对话开始后自动消失
- 从 v0.1 升级时需要运行修复脚本恢复被损坏的会话日志
dsh-skill-loader DSH 插件的仓库 README 摘录
以下文字摘自 dsh-skill-loader DSH 插件的上游仓库 kezboardpj/dsh-skill-loader 的 README,版权归原作者,仅作引用。
- 新建对话的开始页,「工作目录」「agent 预设」chip 旁新增「技能清单」chip;对话开始后自动消失。 - 勾选的 skill 会把其清单条目载入本对话:模型看到的技能目录(`<available_skills>`)只包含勾选的技能。 - 未勾选的 skill 在本对话**不可用**(模型目录、`/名称` 手势与 `skill` 工具都会拒绝)。 - 没有做过选择的对话保持 dsh 默认行为(全部载入)。 - 选择状态存储在 dsh settings(`skill-loader` 命名空间,`$DSH_HOME/settings.yaml`),刷新/重启后依然准确。 > 位置说明:开始页那一行是内置 UI 里硬编码的 JSX,只声明了两个 single 槽位(均被内置选择器占用),插件无法在其中声明第三个槽位。本插件因此在该行内**追加自己的 chip 节点**并用 react-dom 渲染(锚点:`[data-phase="hero"]` 内的 `button[aria-haspopup="menu"]`,由 MutationObserver 在 React 重挂载后自动恢复),仅当当前会话处于 blank(未开始对话)时出现。 ## 命令 | 命令 | 说明 | |---|---| | `/skill-select <name1,name2,...>` | 将本对话的技能清单设为这些技能(逗号分隔;无参数=清空) | | `/skill-unarchive <sessionId1,...>` | 取消归档指定会话,使其重新出现在侧边栏(dsh 界面本身没有取消归档入口) | ## 实现要点 - 目录接管:宿主 `agent/pre-step` 监听器在 dsh-tool-skill 之后运行,丢弃其未过滤目录并发布自己的过滤目录(沿用 `skill-catalog` 来源与 `source.entries` 格式,保证 dsh 自带的历史/摘要逻辑一致,避免每轮重发)。 - 拦截:`tools/pre-execute` 瀑布拒绝未选技能的 `skill` 调用;手势注入按选择过滤。 - 选择状态写入 dsh settings(`$DSH_HOME/settings.yaml`),不写自定义会话事件类型——该 dsh 版本会因未知事件类型拒绝加载会话日志(`SessionFormatUnsupportedError`)。 ## 安装 > `<profile>` 是占位符:换成你的 profile 名(Web 界面默认是 `web`;可用 `dsh --profile <name>` 启动指定 profile)。 从 GitHub 安装(推荐): ```sh dsh plugin --profile web add https:/
阅读完整 README仓库许可: MIT
dsh-skill-loader DSH 插件常见问题
如何安装 dsh skill loader 插件?
运行命令:`dsh plugin --profile <profile> add https://github.com/kezboardpj/dsh-skill-loader.git`,将 `<profile>` 替换成你的 profile 名称(默认为 `web`)。安装后重启该 profile 的 dsh。注意插件不支持热加载,必须重启才能生效。
为什么有些技能在我的对话中不显示?
该插件按对话控制技能加载。如果你在开始页没有做任何选择,对话默认加载所有技能(DSH 默认行为)。一旦你做过选择,只有勾选的技能可用。你可以使用 `/skill-select` 命令更改选择,或者新建一个对话重新选择。
从 v0.1 升级后打开旧对话报错 'SessionFormatUnsupportedError',怎么办?
这是因为 v0.1 将技能选择状态写成了自定义会话事件,当前 DSH 版本无法解析。需要在 dsh 停止状态下运行仓库提供的修复脚本。脚本会给这些事件添加 'ignorable' 标记,使会话可以正常加载。原文件会备份为 `.bak`。修复后旧会话会恢复为默认加载全部技能,你可以重新勾选。
可以在多个 DSH profile 之间共享技能选择吗?
每个 profile 的选择状态独立存储在 `$DSH_HOME/settings.yaml` 的 `skill-loader` 命名空间下。你需要为每个 profile 单独安装插件(使用 `--profile` 参数),然后分别配置技能选择。
如何恢复误关闭的会话(取消归档)?
使用 `/skill-unarchive` 命令,后面跟上要恢复的会话 ID,多个 ID 用逗号分隔。例如:`/skill-unarchive session1,session2`。该命令由插件提供,即使会话不是通过 skill loader 归档的也能恢复。注意 DSH 本身没有取消归档的入口。