DeepSeek Harness Setup 用于在 DeepSeek Harness(DSH)上安装和运行 Everything Claude Code(ECC)。完整指南见 docs/DEEPSEEK-HARNESS-GUIDE.md。
适用场景
- 在 DeepSeek Harness 安装环境中安装 ECC 技能或 hooks。
- 判断哪些 ECC 能力在 DSH 上可用、哪些不可用。
- 排查 DSH 会话中不显示 ECC 技能或不触发 ECC hooks 的问题。
工作方式
技能无需转换。DSH 会从原生技能根目录读取 SKILL.md 的 frontmatter(name/description)。只需将 ECC 目录链接一次:
ln -s /path/to/ECC/skills/<skill-name> ~/.dsh/skills/<skill-name>
根目录优先级(项目级 .dsh 与 .agents 根目录优先于 ~/.dsh):对于名称已存在于更高优先级根目录中的技能,跳过链接。请将占位符替换为真实技能名;尖括号不是 shell 语法。
Hooks 通过一等方桥接处理。从规范的 ECC hooks 文件生成 DSH 格式的配置:
node scripts/dsh/generate-hooks-config.js --ecc-root /path/to/ECC --out ~/.dsh/ecc/hooks-dsh.json
该生成器会将工具名匹配器转为小写,以内联方式为 CLAUDE_PLUGIN_ROOT/ECC_PLUGIN_ROOT 添加前缀(桥接不会导出插件根路径),保留超时设置,并跳过 DSH 无法桥接的事件:PreCompact、PostToolUseFailure、SessionEnd。
在 ~/.dsh/profiles/<profile>/cordis.patch.yml 中使用裸 insert 挂载:
- insert:
- id: ecc-hooks-claude-code name: "@deepseek-ai/dsh-hooks-claude-code" config: configPath: /absolute/path/to/hooks-dsh.json
一些加载器规则会耗费调试时间:纯顶层 - id: 条目会被静默丢弃;在已存在的非 group id 下 insert 会被拒绝并提示 "not a group";一等方插件包无需在 profile package.json 中登记。
先通过组合配置验证,再进行实时验证。
cd ~/.dsh && dsh --profile web --dump-config > /tmp/dump.yml grep ecc-hooks /tmp/dump.yml
即使加载器丢弃或拒绝某条目,组合退出状态仍为 0——这类问题仅在 stderr 中报告。请确认条目 id 出现在 dump 中且 stderr 为空。会话中首次 edit/write/bash 出现实时 GateGuard 拒绝,是桥接已激活的可见信号。
更新
git pull 会立即反映到已链接的技能;用同一生成器命令重新生成 hooks 配置。如果 ECC 检出位置变动,需重新生成(路径会嵌入每条 hook 命令)并重新链接技能。
限制
能力 / DSH 上的状态
- 技能:原生发现;工作流可能需要宿主适配
- Hooks:7 个桥接事件中的 5 个,支持 23 个命令式 hook
- 斜杠命令:不可用(属 Claude Code 机制);相关工作流由技能覆盖
- Agents:原生分发未经验证;仅在审查后使用规范提示指引
此处验证过的配置面向 CLI/web profile。桌面 profile 有独立的安装运行时,其技能发现需单独验证。仅从已审查的 ECC 检出生成 hooks;已链接的检出会提供其运行时。