deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
dsh 运行时装载器的最小原型:让 dsh 直接发现并加载 Claude 式组合体插件(目录含 .claude-plugin/plugin.json)。
完整使用说明见 GUIDE.md:安装、扫描目录、配置、验证、常见问题。
当前已实现:
~/.claude/plugins/cache(Claude 插件缓存),可用 pluginRoots 配置额外根目录。enabledPlugins 配置:只暴露本机 [plugins.dsh].enabled 且 manifest 声明 dsh 的插件 skill。skills/ 注册成 dsh skill provider,模型可以用 dsh 原生 skill / skill_search 按名发现和加载插件里的 SKILL.md。claude_plugin_status:只读列出已发现插件及通道(skills/hooks/mcp/commands/agents)。hooks.json 里的 SessionStart command hook,在 agent/session-start 时执行并把 stdout 注入会话上下文。需要在配置里显式开 sessionStartHooks: true,避免自动执行有副作用的 hook。commands/*.md 注册成 dsh 斜杠命令(ctx.commands.register),执行时把命令模板注入 agent。已通过 claude_plugin_commands 确认命令进入 ctx.commands,并用 claude_plugin_run_command 程序化执行 /hello Alice 成功。Web 侧已验证:loader 已装进 web profile,命令列表 commands/list 能看到 hello,commands/execute /hello Alice 返回 kind=success。交互式 TUI 斜杠命令:loader 已装进 cc-tui profile,本机 cache 里有 tmp-loader-test 测试插件;自动化 PTY 输入尚未稳定复现,请人工在 dsh --profile cc-tui 敲 /hello Alice 做最终确认。reloadIntervalMs 调),插件命令被新增/修改/移除时自动注册/更新/注销;插件从磁盘删除或从 enabledPlugins 消失后,对应斜杠命令也会被清理。尚未实现(下一迭代):
mcpServers → @deepseek-ai/dsh-mcp-client 配置行)。node --test dsh-claude-plugin-loader/test.mjs
覆盖:插件命令注册、插件移除后命令注销、命令模板变更后热更新。
# 装进 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"
- "projx-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." CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。