deepseek-harness-setup

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

DeepSeek Harness Setup

DeepSeek Harness 设置

Run ECC on the DeepSeek Harness. Full guide:
docs/DEEPSEEK-HARNESS-GUIDE.md
.
在 DeepSeek Harness 上运行 ECC。完整指南:
docs/DEEPSEEK-HARNESS-GUIDE.md
。

When to Use

何时使用

  • Installing ECC skills or hooks on a DeepSeek Harness install.
  • Deciding which ECC surfaces work on DSH and which do not.
  • Debugging a DSH session that does not show ECC skills or does not fire ECC hooks.
  • 为 DeepSeek Harness 安装 ECC skills 或 hooks。
  • 判断 DSH 支持和不支持哪些 ECC 功能。
  • 排查 DSH session 未显示 ECC skills 或未触发 ECC hooks 的问题。

How It Works

工作原理

  1. Skills need no conversion. DSH reads
    SKILL.md
    frontmatter (name/description) from native skill roots. Link the ECC catalog once:
    bash
    ln -s /path/to/ECC/skills/<skill-name> ~/.dsh/skills/<skill-name>
    Root priority (project
    .dsh
    and
    .agents
    roots beat
    ~/.dsh
    ): skip linking skills whose names already exist in a higher-priority root. Substitute real skill names for the placeholders; the angle brackets are not shell syntax.
  2. Hooks go through the first-party bridge. Generate a DSH-format config from the canonical ECC hooks file:
    bash
    node scripts/dsh/generate-hooks-config.js --ecc-root /path/to/ECC --out ~/.dsh/ecc/hooks-dsh.json
    The generator lower-cases tool-name matchers, prefixes
    CLAUDE_PLUGIN_ROOT
    /
    ECC_PLUGIN_ROOT
    inline (the bridge does not export the plugin root), preserves timeouts, and skips events DSH cannot bridge:
    PreCompact
    ,
    PostToolUseFailure
    ,
    SessionEnd
    .
  3. Mount with a bare insert in
    ~/.dsh/profiles/<profile>/cordis.patch.yml
    :
    yaml
    - insert:
        - id: ecc-hooks-claude-code
          name: "@deepseek-ai/dsh-hooks-claude-code"
          config:
            configPath: /absolute/path/to/hooks-dsh.json
    Loader rules that cost debugging time when learned the hard way: a plain
    - id:
    top-level entry is silently dropped;
    insert
    under an existing non-group id is rejected as "not a group"; first-party plugin packages need no profile
    package.json
    entry.
  4. Validate by composing, then verify live.
    bash
    cd ~/.dsh && dsh --profile web --dump-config > /tmp/dump.yml
    grep ecc-hooks /tmp/dump.yml
    Compose exit status stays 0 even when the loader drops or rejects an entry — those problems are only reported on stderr. Confirm the entry id appears in the dump and stderr is empty. A live GateGuard denial on the session's first edit/write/bash is the visible signal the bridge is active.
  1. Skills 无需转换。 DSH 会从原生 skill 根目录读取
    SKILL.md
    frontmatter(name/description)。只需链接一次 ECC 目录:
    bash
    ln -s /path/to/ECC/skills/<skill-name> ~/.dsh/skills/<skill-name>
    根目录优先级(项目级
    .dsh
    和
    .agents
    根目录优先于
    ~/.dsh
    ):如果某个 skill 名称已存在于更高优先级的根目录中,则跳过链接。请将占位符替换为真实的 skill 名称;尖括号不是 shell 语法。
  2. Hooks 通过第一方 bridge 接入。 从标准 ECC hooks 文件生成 DSH 格式配置:
    bash
    node scripts/dsh/generate-hooks-config.js --ecc-root /path/to/ECC --out ~/.dsh/ecc/hooks-dsh.json
    生成器会将工具名称 matchers 转为小写,在命令中内联添加
    CLAUDE_PLUGIN_ROOT
    /
    ECC_PLUGIN_ROOT
    前缀(bridge 不会导出 plugin root),保留超时设置,并跳过 DSH 无法通过 bridge 桥接的事件:
    PreCompact
    、
    PostToolUseFailure
    、
    SessionEnd
    。
  3. 使用裸 insert 进行挂载,写入
    ~/.dsh/profiles/<profile>/cordis.patch.yml
    :
    yaml
    - insert:
        - id: ecc-hooks-claude-code
          name: "@deepseek-ai/dsh-hooks-claude-code"
          config:
            configPath: /absolute/path/to/hooks-dsh.json
    以下 loader 规则很容易在排查问题时浪费时间:普通的顶层
    - id:
    条目会被静默丢弃;在已有的非 group id 下使用
    insert
    会被拒绝并提示“not a group”;第一方 plugin packages 无需在 profile 的
    package.json
    中添加条目。
  4. 先通过 Compose 验证,再进行实时验证。
    bash
    cd ~/.dsh && dsh --profile web --dump-config > /tmp/dump.yml
    grep ecc-hooks /tmp/dump.yml
    即使 loader 丢弃或拒绝某个条目,Compose 的退出状态仍会保持为 0——这些问题只会报告到 stderr。确认 dump 中出现该条目 id,并且 stderr 为空。Session 首次执行 edit/write/bash 时出现 GateGuard 拒绝,是 bridge 已生效的可见信号。

Updating

更新

git pull
reflects into linked skills immediately; regenerate the hooks config with the same generator command. If the ECC checkout moves, regenerate (the path is embedded in every hook command) and relink skills.
执行
git pull
后,更新会立即反映到已链接的 skills 中;使用相同的生成器命令重新生成 hooks 配置。如果 ECC checkout 路径发生变化,请重新生成配置(每条 hook 命令中都嵌入了该路径),并重新链接 skills。

Limits

限制

SurfaceStatus on DSH
SkillsNative discovery; workflows may require host adaptation
Hooks23 command hooks on 5 of 7 bridge events
Slash commandsNot available (Claude Code mechanism); workflows covered by skills
AgentsNative dispatch unverified; use canonical prompt guidance only after review
The validated setup here targets the CLI/web profile. Desktop profiles have a separate installation-owned runtime and skill discovery must be verified there independently. Generate hooks only from a reviewed ECC checkout; the linked checkout supplies their runtime.
功能DSH 上的状态
Skills原生 discovery;workflows 可能需要适配 host
Hooks23 个 command hooks,覆盖 7 个 bridge events 中的 5 个
Slash commands不可用(Claude Code 机制);workflows 由 skills 覆盖
Agents原生 dispatch 尚未验证;仅应在 review 后使用标准 prompt guidance
此处验证过的设置面向 CLI/web profile。Desktop profiles 配有独立的、由 installation 管理的 runtime,必须单独验证其 skill discovery。仅从经过 review 的 ECC checkout 生成 hooks;所链接的 checkout 将提供其 runtime。