dsh 配置文件在哪?DeepSeek Harness 的 settings.yaml 与 $DSH_HOME

配置与使用发布于 2026-09-10作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH plugin配置文件settings.yamlDSH_HOME
dsh 配置文件在哪?DeepSeek Harness 的用户级配置都在 $DSH_HOME:全局设置是 settings.yaml,凭据是 .credentials.yaml,每个 profile 有 package.json 与 cordis.patch.yml,外加三层 patch 叠加顺序。

DeepSeek Harness 的用户级配置都收敛在 $DSH_HOME(默认 ~/.dsh)下:全局设置是 settings.yaml、凭据是 .credentials.yaml,每个 profile 有 package.jsoncordis.patch.yml 三层 patch 从这里依次叠加,--dump-config 能在不启动的情况下看合成结果——这篇就把「在哪 → 谁覆盖谁 → 怎么检查」讲完。

DeepSeek Harness 的配置文件在哪:$DSH_HOME、settings.yaml 与 profile 目录

DeepSeek Harness 的用户级配置根目录是 $DSH_HOME,取不到该环境变量时默认 ~/.dsh;全局设置、凭据、profile 目录与 skills/ 都在它下面(来源)。 五步把目录看全:

  1. 定位 $DSH_HOME — 在终端执行 echo $DSH_HOME预期:有输出就用它,没有输出说明落在默认的 ~/.dsh
  2. 看全局设置$DSH_HOME/settings.yaml,模型路由、图片模态、网关兼容性都写在这。预期:文件可能还不存在,等对应功能写过一次才生成。
  3. 看凭据文件$DSH_HOME/.credentials.yaml,API 密钥与浏览器会话签名密钥都在这里。预期:明文敏感文件,别提交进任何仓库。
  4. 看 profile 目录$DSH_HOME/profiles/<name>/,里面是 package.json(树外插件依赖,以及 dsh.profile manifest、按顺序排列的 bundlespatchReload 生命周期)和 cordis.patch.yml(你自己的 patch 层)。预期:插件由 pnpm 装进该 profile 的 node_modules,不同 profile 互不影响。
  5. 看 skill 根目录$DSH_HOME/skills 是本地 skill 的六个根之一(rank 400)。预期:放进去就被本地提供方发现,细节见《DSH skill 怎么安装》。

想不起来哪一层管什么,先看总览《DeepSeek Harness 怎么配置》;工作区相关的目录选择见《配置工作区》。图形化的改动基本都在设置页:插件开关、日志路径、镜像源这些在 DSH Plugin Hub 的设置里,不必手改 yaml。

设置

DeepSeek Harness 三层配置的叠加顺序:组合包、profile、home 与 --patch

配置树以空根为起点依次叠加:各组合包自己的 patch → profile 的 cordis.patch.yml → home 级 $DSH_HOME/cordis.patch.yml--patch 指定的覆盖层,越靠后的层越靠外(来源)。 按顺序认一遍:

  1. 最里层是组合包的 patchdsh.profile.bundles 里列出的组合包(如 @deepseek-ai/dsh-base@deepseek-ai/dsh-web-app)先被解析并叠加。预期:这一层是官方给的默认组合,不用你维护。
  2. 第二层是 profile 级 patch$DSH_HOME/profiles/<name>/cordis.patch.yml预期:只影响这一个 profile,适合给某个 profile 单独开或关插件。
  3. 第三层是 home 级 patch$DSH_HOME/cordis.patch.yml预期:同一个 home 下所有 profile 都吃到,适合放全局偏好。
  4. 最外是 --patch 覆盖层 — 启动时用 --patch 指定。预期:一次性覆盖,优先级最高,适合临时试验。
  5. patchReload 决定生效方式live 会监视 profile 与 home 级 patch 文件,startup 只在启动时应用一次。预期:写成 startup 时改完要重启进程才会生效。
  6. 判断该写哪一层 — 只影响单个 profile → 第 2 层;影响全部 profile → 第 3 层;临时试验 → 第 4 层。预期:写错层就是「改了不生效」的头号原因。

DeepSeek Harness 找不到配置文件:生成时机与 --dump-config 检查

settings.yaml 这类文件本来就可能不存在——它们在对应功能第一次写入时才生成;而 --dump-default-config--dump-config 可以在不启动的情况下检查组合后的配置树(来源)。 按下面顺序排:

  1. 文件不存在 — 先启动一次 dsh,并在界面里保存一次对应设置。预期$DSH_HOME/settings.yaml 被生成出来,而不是一直空着等你手写。
  2. 连目录都不存在 — 回头确认 $DSH_HOME 是不是被环境变量指到了别处。预期echo $DSH_HOME 的输出与你去翻的目录一致。
  3. 改了不生效 — 先看 patchReloadlive 还是 startup,再检查是不是写在了会被外层覆盖的层。预期:排除这两条基本就能定位。
  4. 用 dump 检查合成结果dsh --dump-config 打印实际合成后的配置树,dsh --dump-default-config 打印默认值。预期:对比两份输出就能分清「默认长这样」与「你改成了这样」。
  5. 确认插件真的装进 profile — 看 $DSH_HOME/profiles/<name>/package.json 的依赖与 node_modules预期:依赖缺失说明这次安装没落盘,回到插件安装流程排查。

DeepSeek Harness 配置文件的注意事项与局限

  1. .credentials.yaml 是敏感的:里面有 API 密钥与浏览器会话签名密钥,不要提交、不要截图外发;删掉里面的会话记录并重启会撤销全部浏览器会话。
  2. 层越外影响越大:home 级 patch 影响该 home 下所有 profile,只动一个 profile 就写 profile 级。
  3. patchReload: startup 要重启:不是所有 patch 改动都会热生效,改完先确认生命周期设置。
  4. settings.yaml 里存的是凭据引用:密钥真身在 .credentials.yaml,别把明文密钥硬写进 settings。
  5. 默认值不等于生效值:拿不准就跑一次 dump,按输出判断,而不是凭记忆猜层序。

插件相关的开关、日志路径、镜像源都收敛在 DSH Plugin Hubdsh-plugin.org)的设置页里,与其手改 yaml 去调这些,不如用图形界面。

来源:dsh CLI README(官方仓库)配置模型(官方文档)dshplugin/dsh-plugin-hub

常见问题

DeepSeek Harness 的 dsh 配置文件在哪、为什么本地找不到 settings.yaml 这个文件?

DeepSeek Harness 的用户级配置默认在 $DSH_HOME(取不到该环境变量时是 ~/.dsh):全局设置是其中的 settings.yaml,凭据是同目录的 .credentials.yaml。文件本来就不存在时很正常——它们要等对应功能写过一次才生成,先启动一次 dsh、在设置里保存一次就会出现。

DeepSeek Harness 的 cordis.patch.yml 在哪?每个 profile 都要改吗?

DeepSeek Harness 的 profile 级 patch 在 $DSH_HOME/profiles/<name>/cordis.patch.yml,和该 profile 的 package.json 放在一起;home 级 patch 则是 $DSH_HOME/cordis.patch.yml。只想改一个 profile 就动前者,想让这个 home 下所有 profile 都生效才动后者。

DeepSeek Harness 配置的三层 patch 谁覆盖谁?改了没生效是层写错了吗?

DeepSeek Harness 以空根为起点依次叠加:各组合包自己的 patch,然后 profile 的 cordis.patch.yml,再是 home 级 $DSH_HOME/cordis.patch.yml,最后是 --patch 指定的覆盖层。越靠后的层越靠外,所以「改了不生效」通常是写在了会被外层覆盖的那一层。

怎么在不启动 DeepSeek Harness 的情况下检查配置合成结果、看哪层生效了?

DeepSeek Harness 提供 --dump-default-config 与 --dump-config 两个参数,可以在不启动的情况下检查配置树:前者看默认值,后者看实际合成结果。改完 patch 不放心就先跑一次,比启动起来试错快得多。

DeepSeek Harness 的 profile 目录里都有什么?插件最终装到了哪个目录?

DeepSeek Harness 的每个 profile 目录里有 package.json(记录树外插件依赖,以及 dsh.profile manifest、bundles 顺序与 patchReload 生命周期)和 cordis.patch.yml(用户自己的 patch 层),插件由 pnpm 装进该 profile 的 node_modules。因此同一个 home 下不同 profile 的插件互不影响。

相关术语

$DSH_HOME
$DSH_HOME 是 DeepSeek Harness 的用户级根目录,取不到该环境变量时默认是 ~/.dsh。全局设置 settings.yaml、凭据 .credentials.yaml、各 profile 目录与 skills/ 都位于它下面,所有用户级产物都收敛在这一个目录里。dsh CLI README
settings.yaml
settings.yaml 是 DeepSeek Harness 的全局设置文件,位于 $DSH_HOME 下,模型路由、输入模态与网关兼容性这类配置都写在这里,改动在下一次请求生效、不需要重启。DeepSeek Harness 官方文档 - 配置模型
cordis.patch.yml
cordis.patch.yml 是 DeepSeek Harness 的用户 patch 层文件,分 profile 级($DSH_HOME/profiles/<name>/cordis.patch.yml)与 home 级($DSH_HOME/cordis.patch.yml),用来覆盖组合包与默认配置。dsh CLI README
--dump-config
--dump-config 是 dsh 命令行的排查参数,用于在不启动服务的情况下打印组合后的配置树;配套的 --dump-default-config 打印默认配置,两者一起用可以分清「默认值」与「你实际生效的值」。dsh CLI README

来源