dsh-daily-chat-config:在插件页编辑 daily preset 子条目(内存生效)

前言

DSH 里日常对话能力往往挂在 daily agent preset 上,persona 与工具组合写在 preset 子条目列表(config.plugins 的 entry-list YAML)里。上游包 dsh-daily-chat 提供默认结构;若只想改 persona 或工具组合、又不想手改 profile patch 或动 node_modules,缺少一个只针对「子列表」、且不落盘到上游文件的入口。下面介绍社区插件 dsh-daily-chat-config(维护者 Shiro-Design-16,分类:工作流):在 DSH「插件」页提供「日常配置」卡片,编辑当前生效的子条目 YAML,保存后走官方设置服务写入 profile patch 层本插件那一行,运行期通过内存挂载应用到 preset-daily 行,不修改任何已发布文件。

这是什么

dsh-daily-chat-config 是 DeepSeek Harness(DSH)的 profile bundle 插件,包名 dsh-daily-chat-config,版本 0.2.0,许可证 MIT。它解决的是:在 UI 里查看并编辑 daily preset 的子条目列表(persona 与工具组合都在这一层),而不是整份 daily.patch.yml 的行级元数据(id / name / description / order 仍留在 loader 行里)。

目录页:SkillHub 插件条目。源码与说明:GitHub — Shiro-Design-16/dsh-daily-chat-config。

环境要求

安装前请确认:

  1. DSH 0.2.0-rc.2 或更高。本插件依赖该版本的 volatile 设置字段、插件页 keyed 根槽 plugins.bundle.config,以及 loader/volatile-update 事件;0.1.x 契约不同,装上不会生效。
  2. 已安装上游插件 dsh-daily-chat(本插件编辑的是它声明的 daily preset)。
  3. Node 引擎:^22.19.0 或 >=24(见 package.json 的 engines)。

核心功能

编辑入口与数据范围

路径固定为:「插件」页 → 本插件那一栏 →「日常配置」。

卡片展示的是当前生效子条目列表的 YAML 文本,对应 preset-daily 行的 config.plugins(entry-list),不是整份 patch 文件。操作含义如下:

  • 保存:把 textarea 内容写入本插件设置字段 yaml(命名空间 loader entry id 为 daily-chat-config),经官方设置服务落在 profile 的 cordis.patch.yml 覆盖记录里本插件那一行;宿主侧校验通过后,用 entry.fiber.update(config, true) 把新子列表挂到 preset-daily 行,仅内存生效(noSave),不改上游包、node_modules 与 DSH 安装目录里的任何文件。
  • 恢复默认:把 yaml 写空;宿主会把挂载时捕获的基线 config 原样挂回运行中的 preset。

字段无文本时等价于使用上游默认;卡片初始显示逻辑为:有保存文本则用该文本,否则为空(表示默认)。

宿主与客户端分工

半边 作用
宿主 index.js 声明 volatile 字段 yaml,监听设置变更与 loader/volatile-update,应用到 preset-daily
客户端 client.js 注册插件页槽位 plugins.bundle.config(key 为包名 dsh-daily-chat-config),提供 textarea、保存 / 恢复默认与状态行;通过内置 remote.settings 读写,宿主未就绪时降级为只读提示

可观测性:应用、等待、跳过、还原会在日志中打 [daily-chat-config] …(含子条目行数与来源,不含用户 YAML 全文);功能信号同时镜像到 process.stderr,便于在无 exporter 的环境里排查。

保存时的校验

任一不通过则拒绝写入,运行中的 preset 保持不变;拒因以可读中文显示在卡片状态行。规则包括:文本可解析为 YAML;顶层为行列表;每行是映射且有非空 name(或 !!js 表达式);group: true(或 name: cordis:group)行的 config 须为嵌套子列表;非 group 行的 config 须为映射。

安装与启用

profile 位于 $DSH_HOME/profiles/<name>(桌面默认一般为 ~/.dsh/profiles/desktop)。

推荐在「插件」页操作:

  1. 「插件」页添加插件,填写 github:Shiro-Design-16/dsh-daily-chat-config(也可填本地克隆目录,会写成 link: 依赖);
  2. 重启 DSH;
  3. 打开「插件」页 → 本插件 →「日常配置」。

命令行等价做法(资料原文):

dsh plugin --profile desktop add github:Shiro-Design-16/dsh-daily-chat-config

该命令会安装依赖,并把包名同步进 $DSH_HOME/profiles/<name>/package.json 的 dsh.profile.bundles。若手动改 manifest,需同时维护 dependencies 与 dsh.profile.bundles;只改依赖未进 bundle 清单时,启动日志可能出现 skipping profile bundle …,插件不生效但不影响启动(stderr 可查)。

装完后插件会出现在 profile 的 node_modules 中;@deepseek-ai/schemastery 与 @deepseek-ai/cordis 由 DSH 宿主运行时提供,本包故意不把它们声明为 npm 依赖,否则会从公共 registry 装到普通包,volatile 字段无法按 DSH 契约工作。

典型用法

  1. 确认已安装 dsh-daily-chat 与本插件,且 DSH 版本 ≥ 0.2.0-rc.2。
  2. 重启后进入「插件」页 → dsh-daily-chat-config →「日常配置」。
  3. 在 textarea 中编辑子条目列表 YAML(persona、工具组合等均在子列表层),点击「保存」。
  4. 若需回到上游默认,点击「恢复默认」(清空 yaml 字段)。

保存失败时看卡片状态行原文;需要确认是否已应用时,可在启动或操作后的 stderr / 日志中检索 [daily-chat-config] 相关行(注意:等待 preset-daily 行就绪的常规过程不一定刷 stderr,只有长时间等不到的收尾会 warn)。

适用场景与注意

适合谁:已在用 dsh-daily-chat 的 daily preset,希望频繁调整 persona 与工具组合,又希望改动集中在 profile 设置层、且不手改上游包或整份 patch 结构的开发者。

权限与安全:插件以当前 DSH 进程的权限运行;安装前请自行审阅 源码仓库 与 MIT 许可证。社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。

契约注意:客户端故意不把 remote 写进模块级 inject,避免宿主半未装配时渲染器因 pending 条目整体无法启动;设置读写走内置 remote.settings。若自行 fork,改动 inject 前应先理解 README 中宿主侧与渲染器侧对「未激活条目」处置差异的说明。

与手改 patch 的区别:官方配置编辑器写入前会 resolveConfig;本插件生效路径是 volatile 更新后的内存 fiber.update,不会调用会重写整份 profile patch 的 loader.update / Include.write() 路径,因此更适合「只换子列表、保持行元数据不动」的迭代。

结尾

dsh-daily-chat-config 把 daily agent preset 的子条目列表编辑收口到「插件」页的「日常配置」,保存走官方设置与 profile patch,运行期内存挂载到 preset-daily,上游文件保持原样。需要安装命令与契约细节时,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/Shiro-Design-16/dsh-daily-chat-config
  • GitHub:https://github.com/Shiro-Design-16/dsh-daily-chat-config
羽毛球分组比赛记分
小程序二维码

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

Xiaoye