DeepSeek Harness 怎么建独立 profile 装 DSH plugin?隔离与切换
DeepSeek Harness 的 profile 是一套独立运行配置,目录在 $DSH_HOME/profiles/<name>,含 package.json(dsh.profile manifest 与有序 bundles)和 cordis.patch.yml;用 dsh --profile <name> --from-default-profile <template> 新建,插件按 profile 隔离安装。 这篇讲清 profile 是什么、怎么建、插件怎么装进去。
DeepSeek Harness profile 是什么:目录结构与 bundles 顺序
DeepSeek Harness 的 profile 目录含 package.json(记录树外插件依赖、dsh.profile manifest 与有序 bundles)与 cordis.patch.yml,插件装在它的 node_modules 里,各 profile 之间默认互不可见(来源)。 四步看懂结构:
- 看目录位置 — 每个 profile 在
$DSH_HOME/profiles/<name>。预期:<name>就是启动时--profile或dsh <name>用的名字。 - 读
package.json— 里面除了普通依赖,还有dsh.profilemanifest 与bundles。预期:bundles是有序列表,决定组合包叠加顺序。 - 认常见 bundle — 如
@deepseek-ai/dsh-base、dsh-web-app、dsh-headless、dsh-sdk-app、dsh-sdk-minimal、dsh-acp-app。预期:不同形态用不同组合,Web 版与 headless 版各用各的。 - 看
cordis.patch.yml— 这是该 profile 的用户 patch 层,用来覆盖组合包默认值。预期:只影响本 profile。
叠加顺序为:各 bundle 的 patch(按 bundles 顺序)→ profile 的 cordis.patch.yml → home 级 $DSH_HOME/cordis.patch.yml → --patch。越靠后越优先。
DeepSeek Harness 怎么建自定义 profile:--from-default-profile 与模板
用 dsh --profile <name> --from-default-profile <template> 从默认模板新建 profile,模板决定这个 profile 的形态;启动时用 dsh <name> 或 dsh --profile <name>(来源)。 按步骤建:
- 选模板 — 按用途选:交互 Web 用
dsh-web-app,无人值守任务用dsh-headless,二次开发用dsh-sdk-app。预期:模板直接决定默认 bundles 组成。 - 建 profile — 执行
dsh --profile <name> --from-default-profile <template>。预期:在$DSH_HOME/profiles/<name>下生成package.json与 patch 文件。 - 给个好记的名字 — 别用保留名
desktop。预期:名字不合法时创建会失败或与桌面版冲突。 - 启动验证 — 用
dsh <name>或dsh --profile <name>启动。预期:能进入该 profile 的形态。 - 查默认配置 — 需要时用
--dump-default-config看该 profile 的组合默认值。预期:确认模板带进来的默认项。
DeepSeek Harness 怎么把插件装到指定 profile:dsh plugin --profile
用 dsh plugin --profile <name> <pnpm 参数> 把插件装进指定 profile 的 node_modules;profile 之间默认互不可见,装到 A 的插件在 B 里不生效(来源)。 操作顺序:
- 确认目标 profile — 先想清楚这个插件要服务哪个 profile。预期:
headless用的插件不必装进web。 - 按 profile 安装 — 执行
dsh plugin --profile <name> <pnpm 参数>。预期:依赖写进该 profile 的package.json的node_modules。 - 验证已装 — 启动该 profile,在插件列表里确认。预期:能在该 profile 看到、在别的 profile 看不到,即隔离正确。
- 需要共享时写 home 级 — 想所有 profile 都吃到,用 home 级
cordis.patch.yml统一配置。预期:配置共享,但依赖仍按 profile 各自安装。
想在 profile 里试装社区 DSH插件,可先在 DSH Plugin Hub 找到插件名,再按 profile 装。

DeepSeek Harness profile 配置的注意事项与局限
desktop是保留名:由桌面端独占,CLI 拒绝用它 boot 与 dump,自定义 profile 另取名字。- 隔离是默认行为:装插件、配权限、配模型都按 profile 生效,跨 profile 不会自动同步。
bundles顺序有语义:顺序决定默认配置谁盖谁,不要随意调换。- 模板决定起点:选错模板会带进不合适的默认组合,重来比补配置省事。
- profile 目录可备份:整个
$DSH_HOME/profiles/<name>一起备份,就能带走该 profile 的插件与配置。
跨 profile 的安装差异见《dsh plugin 多 profile 安装》;配置文件位置见《dsh 配置文件在哪》。
常见问题
DeepSeek Harness 的 profile 是一套独立的运行配置,目录在 $DSH_HOME/profiles/<name>。里面 package.json 记录树外插件依赖、dsh.profile manifest 与有序的 bundles,cordis.patch.yml 是该 profile 的用户 patch 层,插件由 pnpm 装进它的 node_modules。
用 dsh --profile <name> --from-default-profile <template> 从默认模板新建。模板对应不同形态,如 @deepseek-ai/dsh-web-app、dsh-headless、dsh-sdk-app,选一个与你用途最接近的作起点。
bundles 决定组合包的叠加顺序,各 bundle 的 patch 按 dsh.profile.bundles 里的先后依次应用,之后才是 profile 的 cordis.patch.yml、home 级 patch 与 --patch。顺序决定了默认配置谁盖谁。
用 dsh plugin --profile <name> <pnpm 参数>,把插件装进该 profile 的 node_modules。profile 之间默认互不可见,装到 A 的插件在 B 里不会生效。
desktop 是 DeepSeek Harness 的保留 profile 名,由桌面端独占,CLI 会拒绝用它 boot 与 dump 配置。自定义 profile 要另取名字,避免与桌面版冲突。
相关术语
- profile
- profile 是 DeepSeek Harness 中一套独立的运行配置单位,位于 $DSH_HOME/profiles/<name>,拥有自己的 package.json、bundles、cordis.patch.yml 与 node_modules,彼此默认互不可见。— dsh CLI README
- bundles
- bundles 是 DeepSeek Harness profile 的 package.json 中 dsh.profile 下声明的有序组合包列表,决定各组合包 patch 的叠加顺序,示例包含 @deepseek-ai/dsh-base 与 dsh-web-app。— dsh CLI README
- --from-default-profile
- --from-default-profile 是 dsh 命令行参数,用于在创建新 profile 时从指定默认模板起步,避免从零手写 package.json 与 bundles。— dsh CLI README
- dsh plugin --profile
- dsh plugin --profile 是 dsh 的子命令用法,用于把插件安装操作限定到指定 profile,把 pnpm 参数透传给该 profile 的依赖安装流程。— dsh CLI README
来源
- dsh CLI README· deepseek-ai