dsh-config-studio: Form-based editing of non-volatile plugin configurations in Profiles

前言

在 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:

  1. 打开 设置 → 插件。
  2. 在安装框粘贴其一:
https://github.com/MaxHan0102/dsh-config-studio/releases/download/v0.1.0/dsh-config-studio-0.1.0.tgz

或:

github:MaxHan0102/dsh-config-studio
  1. 在列表中启用 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 不会因卸载插件而删除。

典型用法

  1. 打开 设置 → 插件配置。首屏列出「有东西可改」的条目;需要审计只读项时,将筛选改为 All entries。
  2. 点选一条 Loader 条目。右侧按该插件 schema 生成字段;条目或字段标 Overridden 表示值来自 profile patch,其余为继承层。
  3. 修改字段:变更行高亮;数字、枚举、JSON 在保存前会标无效;行上 Reset 表示恢复继承值(待保存态会在输入框体现)。
  4. 点 Save to profile 查看即将写入的 diff。
  5. 确认后 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye