前言¶
在 DeepSeek Harness(DSH)里,各插件通过 Loader 条目挂载,生效配置往往叠在 profile 的 cordis.patch.yml 上。内置设置页走 settings.mutate,只接受插件在 Config schema 里标成 .volatile() 的字段;改其它键会直接报错 Config field "<path>" is not volatile,于是超时、功能开关、Provider 表、插件列表等大块配置只能手改 YAML。
下面介绍社区客户端插件 dsh-config-studio(维护者 MaxHan0102):它走 ctx.configEditor,与 DSH 自带设置同一套写入路径,但不局限于 volatile,把「当前 profile 里每个可寻址 Loader 条目」做成可浏览、可编辑、可保存的界面。
这是什么¶
dsh-config-studio 是 DSH 的 客户端(Web GUI) 插件:列出 configEditor.entries() 返回的条目,按各插件自己的 Config schema 渲染表单,把你修改的非 volatile 字段写回 profile 的 patch。入口在 设置 → 插件配置(Settings → Plugin configuration),界面语言跟随 Harness(English / 简体中文)。
- 仓库:MaxHan0102/dsh-config-studio
- 社区目录:skillhub.cn 插件页
- 许可证:MIT(见仓库
LICENSE) - 当前包版本:
0.1.0(见package.json与 release 安装地址) - 环境要求:DSH
0.2.1-rc.5及以上(README 标明在0.2.1-rc.5上测试);需 Web 组合自带的ctx.configEditor与ctx.connection.fetch;Node 20+
社区插件目录由 skillhub.cn 等站点维护,与 DeepSeek / 幻方无官方从属关系;安装前请自行审阅源码与许可证。插件在 当前 DSH 进程权限 下运行,写入的是你所用 profile 的配置 patch。
核心功能¶
浏览条目¶
- 展示每个可编辑 Loader 条目的包名、字段数、是否已有 patch 覆盖、当前状态。
- 按 id 或包名搜索;默认只看「可编辑」条目,可切换到「全部」以只读方式查看不可写字段。
- 按 function(models、agents、tools、web、accounts、runtime、sessions、interface、platform、other)或 origin(内置 / 第三方)分组;支持折叠;进入某条目再返回时保留浏览状态。
编辑与保存¶
- 每个顶层 config 键一行:文本、数字、开关、枚举下拉、对象/数组用 JSON 编辑器。
- 行上显示当前生效值、是否来自 profile patch,以及一键 Reset 回到继承层默认值。
- Save to profile 前先展示将要写入的 patch 形态 diff;带 revision 校验,避免覆盖并发编辑;保存后结果行说明 override 已应用或已移除。
- Host 对完整 config 做 schema 校验,原子写入 patch 并经 Loader 重载条目;校验失败会指出字段名,冲突时可选择 reload。
只读边界(由 Host 决定)¶
以下情况在界面中只读,浏览器无法绕过:
| 条件 | 原因 |
|---|---|
role('secret') |
密钥不出 Host,页面仅知是否已设置 |
role('credential-ref') |
引用不可当普通值编辑 |
| 对象子树含 secret | JSON 编辑可能泄露 |
未求值的 !!js |
仅 YAML 能安全表达 |
| schema 类型表单不支持 | 无安全控件 |
字段 meta.disabled |
插件禁用 |
| 条目大于 64 KiB | 不适合单表单编辑 |
| 条目 disabled / failed / inactive / group | 当前不可寻址 |
凭证、!!js、过大条目等也不会在这里可写(README 有完整表格,此处为常用项摘要)。
两个行为需要心里有数¶
Patch 替换整段 config,不是按键 merge。 保存单个字段时,会写入「当前条目完整 config + 你的改动」,其它键若与继承层相同则一并 pin 在 patch 里;若所有字段最终都等于继承层,该条目的 patch 记录会被整段移除——整条目 Reset 即此意。
保存会走 Loader 生命周期。 多数插件会随保存重载;少数需重启 Host 才生效,结果行会提示。
安装与启用¶
包为 dsh.bundle,无依赖、无构建步骤;下列来源等价,按你的 Host 选一种。
DSH Desktop(推荐)¶
Desktop 的 profile 由应用管理,不能用 CLI 装进 Desktop profile:
- 打开 设置 → 插件。
- 在安装框粘贴其一:
https://github.com/MaxHan0102/dsh-config-studio/releases/download/v0.1.0/dsh-config-studio-0.1.0.tgz
或:
github:MaxHan0102/dsh-config-studio
- 在列表中启用 dsh-config-studio,然后
Cmd/Ctrl+R刷新页面。
dsh web 或自定义 profile¶
将 web 换成你的 profile 名;若 Host 未加载插件,重启后再刷新页面。
# 固定 tag 的 release 包(URL 随 tag 不变)
dsh plugin --profile web add https://github.com/MaxHan0102/dsh-config-studio/releases/download/v0.1.0/dsh-config-studio-0.1.0.tgz
# 或直接从仓库安装
dsh plugin --profile web add github:MaxHan0102/dsh-config-studio
更新与移除¶
更新时使用较新 tag 的安装命令,例如 README 中的:
dsh plugin --profile web add https://github.com/MaxHan0102/dsh-config-studio/releases/download/v0.1.1/dsh-config-studio-0.1.1.tgz
Desktop 可在插件卡片上使用更新控件;github: 安装无自动更新检查,需先移除再添加。
移除插件:
dsh plugin --profile web remove dsh-config-studio
已写入 cordis.patch.yml 的 override 不会因卸载插件而删除。
典型用法¶
- 打开 设置 → 插件配置。首屏列出「有东西可改」的条目;需要审计只读项时,将筛选改为 All entries。
- 点选一条 Loader 条目。右侧按该插件 schema 生成字段;条目或字段标 Overridden 表示值来自 profile patch,其余为继承层。
- 修改字段:变更行高亮;数字、枚举、JSON 在保存前会标无效;行上 Reset 表示恢复继承值(待保存态会在输入框体现)。
- 点 Save to profile 查看即将写入的 diff。
- 确认后 Host 校验并写入;失败则看字段名或冲突提示。
徽章含义(摘自 README):
| 徽章 | 含义 |
|---|---|
| Overridden(条目) | patch 里已有该条目的 config: |
| Overridden(字段) | 该键写在上述 record 中 |
| Read-only | 见只读规则 |
| Third-party | 包不在 @deepseek-ai/ 作用域下 |
适用场景与注意¶
适合: 已在用 DSH profile 调插件组合,需要可视化改非 volatile 配置(超时、开关、列表型 config 等),又不想每次手改 YAML 或只改 volatile 偏好项的场景。
注意:
- 与内置设置互补:volatile 偏好仍适合走原生设置页;大块 struct 配置适合本插件。
- 秘密、凭证引用、
!!js等必须继续用 Host 认可的方式配置,不要指望在此编辑。 - 卸载插件不清理 patch;若不再需要 override,需在界面 Reset 或手改 YAML。
- 安装前阅读 GitHub 仓库 与 MIT 许可证;第三方插件请自行评估信任边界。
结尾¶
DSH 生态强调「一切皆插件」;dsh-config-studio 补的是内置设置页够不着的 profile 配置层:浏览可寻址条目、按 schema 表单编辑、经 configEditor 写回 cordis.patch.yml。若你的 profile 里插件多、YAML 改得勤,可以按上文安装后在 设置 → 插件配置 试一轮 diff 再保存。
- 目录页:https://www.skillhub.cn/plugins/MaxHan0102/dsh-config-studio
- GitHub:https://github.com/MaxHan0102/dsh-config-studio