dsh 配置文件在哪?DeepSeek Harness 的 settings.yaml 与 $DSH_HOME
DeepSeek Harness 的用户级配置都收敛在 $DSH_HOME(默认 ~/.dsh)下:全局设置是 settings.yaml、凭据是 .credentials.yaml,每个 profile 有 package.json 与 cordis.patch.yml。 三层 patch 从这里依次叠加,--dump-config 能在不启动的情况下看合成结果——这篇就把「在哪 → 谁覆盖谁 → 怎么检查」讲完。
DeepSeek Harness 的配置文件在哪:$DSH_HOME、settings.yaml 与 profile 目录
DeepSeek Harness 的用户级配置根目录是 $DSH_HOME,取不到该环境变量时默认 ~/.dsh;全局设置、凭据、profile 目录与 skills/ 都在它下面(来源)。 五步把目录看全:
- 定位
$DSH_HOME— 在终端执行echo $DSH_HOME。预期:有输出就用它,没有输出说明落在默认的~/.dsh。 - 看全局设置 —
$DSH_HOME/settings.yaml,模型路由、图片模态、网关兼容性都写在这。预期:文件可能还不存在,等对应功能写过一次才生成。 - 看凭据文件 —
$DSH_HOME/.credentials.yaml,API 密钥与浏览器会话签名密钥都在这里。预期:明文敏感文件,别提交进任何仓库。 - 看 profile 目录 —
$DSH_HOME/profiles/<name>/,里面是package.json(树外插件依赖,以及dsh.profilemanifest、按顺序排列的bundles与patchReload生命周期)和cordis.patch.yml(你自己的 patch 层)。预期:插件由 pnpm 装进该 profile 的node_modules,不同 profile 互不影响。 - 看 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 指定的覆盖层,越靠后的层越靠外(来源)。 按顺序认一遍:
- 最里层是组合包的 patch —
dsh.profile.bundles里列出的组合包(如@deepseek-ai/dsh-base、@deepseek-ai/dsh-web-app)先被解析并叠加。预期:这一层是官方给的默认组合,不用你维护。 - 第二层是 profile 级 patch —
$DSH_HOME/profiles/<name>/cordis.patch.yml。预期:只影响这一个 profile,适合给某个 profile 单独开或关插件。 - 第三层是 home 级 patch —
$DSH_HOME/cordis.patch.yml。预期:同一个 home 下所有 profile 都吃到,适合放全局偏好。 - 最外是
--patch覆盖层 — 启动时用--patch指定。预期:一次性覆盖,优先级最高,适合临时试验。 - 看
patchReload决定生效方式 —live会监视 profile 与 home 级 patch 文件,startup只在启动时应用一次。预期:写成startup时改完要重启进程才会生效。 - 判断该写哪一层 — 只影响单个 profile → 第 2 层;影响全部 profile → 第 3 层;临时试验 → 第 4 层。预期:写错层就是「改了不生效」的头号原因。
DeepSeek Harness 找不到配置文件:生成时机与 --dump-config 检查
settings.yaml 这类文件本来就可能不存在——它们在对应功能第一次写入时才生成;而 --dump-default-config 与 --dump-config 可以在不启动的情况下检查组合后的配置树(来源)。 按下面顺序排:
- 文件不存在 — 先启动一次 dsh,并在界面里保存一次对应设置。预期:
$DSH_HOME/settings.yaml被生成出来,而不是一直空着等你手写。 - 连目录都不存在 — 回头确认
$DSH_HOME是不是被环境变量指到了别处。预期:echo $DSH_HOME的输出与你去翻的目录一致。 - 改了不生效 — 先看
patchReload是live还是startup,再检查是不是写在了会被外层覆盖的层。预期:排除这两条基本就能定位。 - 用 dump 检查合成结果 —
dsh --dump-config打印实际合成后的配置树,dsh --dump-default-config打印默认值。预期:对比两份输出就能分清「默认长这样」与「你改成了这样」。 - 确认插件真的装进 profile — 看
$DSH_HOME/profiles/<name>/package.json的依赖与node_modules。预期:依赖缺失说明这次安装没落盘,回到插件安装流程排查。
DeepSeek Harness 配置文件的注意事项与局限
.credentials.yaml是敏感的:里面有 API 密钥与浏览器会话签名密钥,不要提交、不要截图外发;删掉里面的会话记录并重启会撤销全部浏览器会话。- 层越外影响越大:home 级 patch 影响该 home 下所有 profile,只动一个 profile 就写 profile 级。
patchReload: startup要重启:不是所有 patch 改动都会热生效,改完先确认生命周期设置。settings.yaml里存的是凭据引用:密钥真身在.credentials.yaml,别把明文密钥硬写进 settings。- 默认值不等于生效值:拿不准就跑一次 dump,按输出判断,而不是凭记忆猜层序。
插件相关的开关、日志路径、镜像源都收敛在 DSH Plugin Hub(dsh-plugin.org)的设置页里,与其手改 yaml 去调这些,不如用图形界面。
常见问题
DeepSeek Harness 的用户级配置默认在 $DSH_HOME(取不到该环境变量时是 ~/.dsh):全局设置是其中的 settings.yaml,凭据是同目录的 .credentials.yaml。文件本来就不存在时很正常——它们要等对应功能写过一次才生成,先启动一次 dsh、在设置里保存一次就会出现。
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,然后 profile 的 cordis.patch.yml,再是 home 级 $DSH_HOME/cordis.patch.yml,最后是 --patch 指定的覆盖层。越靠后的层越靠外,所以「改了不生效」通常是写在了会被外层覆盖的那一层。
DeepSeek Harness 提供 --dump-default-config 与 --dump-config 两个参数,可以在不启动的情况下检查配置树:前者看默认值,后者看实际合成结果。改完 patch 不放心就先跑一次,比启动起来试错快得多。
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
来源
- dsh CLI README· deepseek-ai
- DeepSeek Harness 官方文档 - 配置模型· deepseek-ai
- dshplugin/dsh-plugin-hub GitHub 仓库· GitHub