dsh-claude-plugin-loader
No description
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 26, 2026
- Updated
- Aug 26, 2026
Introduction
dsh-claude-plugin-loader
dsh 运行时装载器的最小原型:让 dsh 直接发现并加载 Claude 式组合体插件(目录含 .claude-plugin/plugin.json)。
完整使用说明见 GUIDE.md:安装、扫描目录、配置、验证、常见问题。
当前已实现:
- 扫描插件源:默认扫
~/.claude/plugins/cache(Claude 插件缓存),可用pluginRoots配置额外根目录。 - 按插件名去重,活源优先,缓存内保留最高版本。
- 支持
enabledPlugins配置:只暴露本机[plugins.dsh].enabled且 manifest 声明dsh的插件 skill。 - skills 通道:把每个插件的
skills/注册成 dsh skill provider,模型可以用 dsh 原生skill/skill_search按名发现和加载插件里的 SKILL.md。 - 状态工具
claude_plugin_status:只读列出已发现插件及通道(skills/hooks/mcp/commands/agents)。 - SessionStart hook 桥(最小,默认关闭):解析
hooks.json里的SessionStartcommand hook,在agent/session-start时执行并把 stdout 注入会话上下文。需要在配置里显式开sessionStartHooks: true,避免自动执行有副作用的 hook。 - commands 通道(注册 + 程序化执行已验证):把 Claude plugin
commands/*.md注册成 dsh 斜杠命令(ctx.commands.register),执行时把命令模板注入 agent。已通过claude_plugin_commands确认命令进入ctx.commands,并用claude_plugin_run_command程序化执行/hello Alice成功。Web 侧已验证:loader 已装进webprofile,命令列表commands/list能看到hello,commands/execute /hello Alice返回kind=success。交互式 TUI 斜杠命令:loader 已装进cc-tuiprofile,本机 cache 里有tmp-loader-test测试插件;自动化 PTY 输入尚未稳定复现,请人工在dsh --profile cc-tui敲/hello Alice做最终确认。 - commands 热更新 + 卸载清理:loader 定时重扫插件根目录(默认 1500ms,可用
reloadIntervalMs调),插件命令被新增/修改/移除时自动注册/更新/注销;插件从磁盘删除或从enabledPlugins消失后,对应斜杠命令也会被清理。
尚未实现(下一迭代):
- PreToolUse 拒绝 / tool-rewrite 等其它 hook 意图,以及外部脚本协议桥的完整形态。
- MCP 配置生成(
mcpServers→@deepseek-ai/dsh-mcp-client配置行)。 - agents 通道。
- 第三方插件兼容边界记录。
测试
node --test dsh-claude-plugin-loader/test.mjs
覆盖:插件命令注册、插件移除后命令注销、命令模板变更后热更新。
安装(推荐:npm / dsh plugin)
# 装进 web 界面
dsh plugin --profile web add dsh-claude-plugin-loader
# 或装进 CLI/TUI profile
dsh plugin --profile cc-tui add dsh-claude-plugin-loader
# 或装进一次性 headless profile
dsh plugin --profile headless add dsh-claude-plugin-loader
重启对应 dsh 后生效。也可在 dshmarket 的 Settings → Plugin Market 里搜索安装(需要先收录到 awesome-dsh-plugin 仓库)。
默认扫描:
~/.claude/plugins/cache
也就是 Claude Code 自己的插件缓存。没有配置 pluginRoots 时自动使用它;要额外扫别的目录,在 profile 的 cordis.patch.yml 里加配置即可:
- id: claude-plugin-loader
name: dsh-claude-plugin-loader
config:
pluginRoots:
- "C:/path/to/shared/plugins"
- "C:/Users/<you>/.claude/plugins/cache"
# enabledPlugins:
# - "cjt"
# - "note-workflow"
# reloadIntervalMs: 1500 # optional; 0 disables the background reload loop
手动安装(开发调试用)
把 dsh-claude-plugin-loader.mjs 放进目标 profile 目录(例如 ~/.dsh/profiles/headless/),
然后在 cordis.patch.yml 插入:
- insert:
- id: claude-plugin-loader
name: ./dsh-claude-plugin-loader.mjs
config:
pluginRoots:
- "C:/path/to/shared/plugins"
- "C:/Users/<you>/.claude/plugins/cache"
enabledPlugins:
- "cjt"
- "note-workflow"
- "repo-keeper"
- "superpowers-manual"
- "vibe-flow"
- "xinao-csb-skills"
- "xu-skills"
# reloadIntervalMs: 1500 # optional; 0 disables the background reload loop
验证:
dsh --profile headless --dump-config
dsh --profile headless "Call claude_plugin_status and repeat its output."
dsh --profile headless "Load the cjt skill."