dsh-preset-switcher-fork:在 DSH Web 中随时切换会话代理预设

前言

在 DeepSeek Harness(DSH)里,代理预设(agent preset)决定工具集、人设与运行模式。原生 Web UI 在对话开始后会把当前会话的预设视为固定,无法中途改模式;若自定义预设被删掉,会话日志里仍引用旧 ID,恢复会话也可能直接失败。对需要「同一条对话里从标准模式切到 PTC」或要批量救回失效引用的开发者,这类限制会打断日常工作流。

下面介绍社区插件 neutronslime/dsh-preset-switcher-fork:在 DSH 0.2.1 一代宿主上恢复「随时切换 + 失效预设修复」能力。它 fork 自 jeffcwj/dsh-preset-switcher;上游最后提交为 2026-08-17,因 DSH 0.2.1 移除宿主 webRuntime(改为 webApp),上游 inject: ['webServer', 'webRuntime'] 无法挂载,导致 /preset-switch/api 404、标题栏下拉失效。本仓库仅做兼容修复,功能与上游一致,维护者为 neutronslime,分类为工作流,许可证 MIT(package 版本 0.1.3)。

这是什么

dsh-preset-switcher 是一条 DSH Web 插件(纯 JavaScript,无构建步骤):在任何时候切换当前会话的代理预设,包括对话已经开始之后;并提供扫描会话日志、把失效预设引用改回默认预设的修复路径。

插件通过 cordis.patch.yml 打入 profile 的 cordis 树,服务端提供受控路由,浏览器端在会话标题操作栏注入「当前模式 ▾」下拉菜单。

核心功能

标题栏下拉切换

会话标题操作栏会出现「当前模式 ▾」按钮,列出全部预设(例如 standard 标准模式、code PTC 模式、minimal 极简模式、cordis 创造模式),当前项以 ✓ 标记,点击即切换。

失效预设修复

若会话记录的预设已被删除,恢复可能失败、会话不可用。下拉中的「修复失效模式会话」会扫描所有会话日志,将失效引用(优先最后一个 agent-preset/selected 事件,否则改标题中的引用)重置为默认预设;操作前备份日志并跳过活跃会话。切换未加载且引用已失效的会话时也会自动修复。

HTTP API

受控路由(回环 / 可信主机限制,与 dsh-sounds 同类):

POST /preset-switch/api

请求体字段:

{
  "method": "list | switch | repair",
  "sessionId": "...",
  "presetId": "...",
  "target": "..."
}

对应 list、switch、repair 三种操作。

工作原理与限制

原生 agentPresets.select 用空白会话检查保护切换;本插件底层调用同一原子原语 agentPresets.recompose(agent.ctx, presetId),在链接移动前确保新组合完成,避免损坏预设拖垮会话;成功后追加与代理记录一致的 agent-preset/selected 事件,便于投影与标题标签同步。

需注意:

  1. 仅已加载的活跃会话可切换;子代理拥有的会话会被拒绝。
  2. 新的工具集 / 人设从下一个模型步骤起生效。

上游 fork 说明中写明:已在 DSH 0.2.1-rc.2 上验证插件正常挂载,list / switch / repair 均按预期返回。

安装与启用

需要 DSH 0.2.1-rc.2 或同代 0.2.x。安装或升级后需重启 dsh web(profile 启动时会合并 cordis.patch.yml),再刷新页面。

推荐从 GitHub 仓库安装:

dsh plugin --profile web add github:neutronslime/dsh-preset-switcher-fork

也可克隆到本地目录后从路径安装(README 中的方式二);dsh plugin 会转交 profile 目录内的 pnpm,不依赖全局 npm。

典型用法

  1. 完成安装并重启 dsh web,打开 Web 界面,进入任意已加载会话。
  2. 在标题栏右侧点击「当前模式 ▾」,选择目标预设;界面应显示 ✓ 落在新模式上,后续模型轮次按新预设的工具与人设运行。
  3. 若因删除自定义预设导致旧会话无法打开,使用下拉中的「修复失效模式会话」,或调用 repair 方法;需要脚本化时向 /preset-switch/api 发送上述 JSON(须满足宿主对回环 / 可信主机的限制)。

仓库 scripts/ 下另有 inspect-session.mjs、repair-session.mjs 等独立日志工具,以及 restart-web.ps1 用于重启 Web 并探测;按需查阅 README。

适用场景与注意

适合:经常在单条长对话中切换标准 / 代码 / 极简等模式;维护多套自定义预设并需要批量修复历史会话;希望在受控环境下用 API 列出或切换预设的自动化场景。

注意:

  • 插件以当前 dsh 进程权限运行,安装前请阅读 GitHub 仓库 源码与 MIT 许可证。
  • 社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本介绍事实均来自仓库 README 与 package 元数据。
  • 未加载会话不能通过下拉切换;子代理会话会被拒绝,行为与 README 限制一致。

结尾

neutronslime/dsh-preset-switcher-fork 解决的是 DSH 0.2.1 上「对话中途不能改预设」以及「预设删除导致会话损坏」两类问题:标题下拉负责日常切换,repair 与 API 负责救回与集成。若你正在 0.2.x Web profile 上工作,一条 dsh plugin --profile web add 即可启用。

  • 目录页:https://www.skillhub.cn/plugins/neutronslime/dsh-preset-switcher-fork
  • 源码与文档:https://github.com/neutronslime/dsh-preset-switcher-fork
羽毛球分组比赛记分
小程序二维码

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

小夜