dsh-engine-switch: 按预设路由 DSH 会话到可插拔引擎

在 DeepSeek Harness(DSH)中,顶层会话通常固定使用 DeepSeek 的循环驱动。如果想在同一个客户端中,针对不同会话使用不同的 AI 引擎(例如 Claude Code),通常需要全局替换配置或重启应用。dsh-engine-switch 插件通过代理模式,允许在运行时根据预设动态切换会话的驱动引擎。

这是什么

dsh-engine-switch 是一个 DSH 工作流插件。它不提供具体的引擎实现,而是定义了引擎接入的规范。插件负责在会话创建、续聊和预设切换时,根据当前会话的预设决定使用哪个引擎驱动,默认退回 DeepSeek。它由 Yuki-takuya-kun 维护,开源协议为 MIT。

核心功能

  • 按预设选引擎:引擎的选择由预设决定。优先级为:预设内声明 → 配置点名 → 预设名等于引擎名 → 默认 DeepSeek。
  • 发消息前可切换:在会话发送第一条消息之前切换预设,会立即应用对应的引擎,无需重开会话或重启应用。
  • 预设自动装好:引擎插件安装后,其自带的预设会被自动复制到 DSH 的预设目录中,无需手动维护。
  • 引擎和会话互不打扰:引擎不感知“预设”的概念,会话也不感知“被更换了引擎”,两者逻辑独立。
  • 子代理始终用 DeepSeek:无论顶层会话使用何种引擎,子代理始终走 DeepSeek 的原有循环。
  • 续聊自动还原:会话续聊时,会根据日志记录的预设自动找回对应的引擎。

安装与启用

1. 安装插件

使用官方命令安装:

dsh plugin --profile web add github:Yuki-takuya-kun/dsh-engine-switch

2. 启用插件

编辑配置文件 ~/.dsh/profiles/web/cordis.patch.yml,添加以下内容:

- id: dsh-engine-switch
  config:
    enabled: true

保存后重启 web 应用。

3. 配置引擎

要在预设中指定引擎,有两种方式(优先级从高到低):

方式一:在预设中写

编辑预设目录下的 agent.cordis.yml:

# ~/.dsh/.agent-presets/<预设名>/agent.cordis.yml
- name: dsh-engine-switch
  config:
    engine: claude-code   # 指定使用 claude-code 引擎

方式二:在配置中点名

在 cordis.patch.yml 的 config 中添加映射表:

config:
  engineByPreset:
    research: claude-code

如果以上配置均未指定,将使用默认引擎 deepseek。

4. 注册引擎(供引擎插件开发者)

如果需要开发自己的引擎插件,需在插件代码中调用 ctx.engineSwitch.register() 注册引擎:

export const inject = ["engineSwitch"];
export function apply(ctx) {
  ctx.engineSwitch.register({
    id: "claude-code",              // 引擎名,需与预设目录名一致
    name: "Claude Code",
    description: "…",
    presetDir: fileURLToPath(new URL("./presets/claude-code/", import.meta.url)),
    makeAgent(loopCtx, id, options, session, engineConfig) {
      return new ClaudeCodeAgent(loopCtx, id, options, session, engineConfig);
    },
  });
}

注意事项与限制

  • 插件独立性:本插件本身不带任何引擎,也不带任何预设。真正的引擎由下游插件注册提供。
  • 特殊引擎名:deepseek 是一个特殊名字,表示退回 DeepSeek 原来的循环。
  • 依赖要求:需要满足以下 Node.js 版本:^22.19.0 || >=24.0.0。
  • Peer Dependencies:安装时需确保已安装以下依赖:
    • @deepseek-ai/cordis
    • @deepseek-ai/schemastery
    • @deepseek-ai/dsh-agent
    • @deepseek-ai/dsh-agent-presets
    • @deepseek-ai/dsh-session
    • js-yaml
  • 预设目录结构:引擎注册时指定的 presetDir 目录需包含 agent.cordis.yml 和 preset.yml 两个文件。

总结

dsh-engine-switch 提供了一个基于预设的路由机制,让 DSH 能够在不修改核心逻辑的情况下,灵活支持多种 AI 循环引擎。它通过解耦引擎选择与会话逻辑,实现了“子代理始终走 DeepSeek,顶层会话可按需切换”的目标。

  • GitHub 仓库: https://github.com/Yuki-takuya-kun/dsh-engine-switch
  • 插件目录: https://www.skillhub.cn/plugins/Yuki-takuya-kun/dsh-engine-switch
羽毛球分组比赛记分
小程序二维码

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

小夜