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
羽毛球分组比赛记分
小程序二维码

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

小夜