DSH Harness Switch:在原生會話裏切換模型與 Harness

前言

在 DSH 裏做智能體開發時,常見做法是固定一套提示詞和工具循環,再掛接不同 API。若要在同一條原生會話裏改用 Kimi Code 的執行方式(提示詞、工具、Skills、權限與壓縮),又不想單獨起 Kimi CLI 子進程,就需要在 DSH 側做模型與 harness 的顯式綁定。下面介紹社區插件 dsh-harness-switch(維護者 AlyceStocking)如何在這一場景下工作。

這是什麼

dsh-harness-switch 是在 DSH 原生會話中選擇模型與 harness 的插件。自 v0.3 起,它將開源 Kimi Code 的實際執行核心嵌入插件:提示詞、工具定義與執行、Skills、權限規則、MCP 和上下文壓縮由 Kimi 核心提供,不啓動 Kimi CLI 聊天子進程。npm 包名 dsh-harness-switch,當前公開版本 0.3.3,許可證 MIT。

核心功能

三種 Harness 模式

每個模型綁定可在設置裏選擇一種 harness:

Harness 行爲
Kimi Code · embedded core 完整嵌入式 Kimi 執行核心,默認選項
Kimi prompt · legacy v0.2 的適配提示詞,工具、Skills、壓縮使用 DSH
DSH native Kimi API + DSH 原生提示詞、工具與執行循環

比較同一模型在不同 harness 下的表現時,添加兩個綁定並選擇相同模型別名即可。README 說明尚未實現其他廠商 harness。

原生 UI 與執行投影

DSH 的 session 列表、輸入框和最終回答保持原生。一次 Kimi 執行在界面上顯示爲 kimi_harness_turn 工具卡片,卡片內展示 Kimi 工具調用/結果、思考、Skill 與壓縮事件;真實工具只在 Kimi 內執行一次,DSH 外層模型適配器僅編排本地入口,不再對同一輪調用模型執行第二遍。

權限與橋接命令

Kimi 核心採用 manual 權限模式:需審批的動作、工作區信任和提問映射到 DSH 原生審批/問題界面;拒絕、取消或不可用均不自動放行。DSH 需配置可用的審批 UI 與允許詢問的策略(policy: ask);never 策略會拒絕需要審批的動作。插件不修改全局審批設置。

輸入框可直接發送:

  • /kimi-skill <名稱> [任務]:通過上游 SDK 顯式激活 Skill
  • /kimi-compact [保留內容要求]:調用 Kimi 自身壓縮

同會話內切換 DeepSeek 與 Kimi

當前生成結束或停止後,可在同一原生 session 選擇已有 DeepSeek 模型,恢復其 DSH 提示詞與工具;再切回 Kimi 時,其他模型的歷史會作爲參考歷史導入 Kimi(跨模型歷史導入時會移除其他模型的思考字段)。

圖片輸入(embedded core)

v0.3.1 起,embedded core 支持文字、單圖和多圖混合輸入:讀取 DSH 已驗證的附件,通過 Kimi SDK 原生 image_url 內容塊提交。模型配置須包含 capabilities = ["image_in", "thinking"](可保留其他能力);legacy 與 DSH native 路徑仍僅支持文字。

安裝與啓用

從 npm 安裝(推薦)

資料給出的桌面 profile 安裝命令爲:

dsh plugin --profile desktop add dsh-harness-switch@0.3.3

0.3.3 包含 0.3.2 的 profile 內不可變安裝包修復,以及 DSH 0.2 RPC / tool-result 兼容修復。若本機曾用 @local/dsh-harness-switch,遷移前請備份 profile、完全退出 DSH 並移除舊包後再裝新包,避免重複註冊;不要刪除 $DSH_HOME/storages/harness-switch 或 Kimi home。README 註明包名遷移尚未做真實桌面端到端驗證,既有本機安裝不強制立即遷移。

環境與驗證範圍

README 已驗證 Windows、DSH Desktop 0.2.0-rc.2;最低 Node 24.15。桌面安裝使用應用自帶的 CLI 和 pnpm。

從源碼安裝到桌面 profile 時(資料示例,非 git clone 替代 npm 市場安裝的唯一路徑):

cd dsh-harness-switch
npm ci
npm run install:desktop
# 完全退出 Desktop 後執行
npm run install:desktop -- --apply

默認 DSH 目錄爲 %USERPROFILE%\.dsh(或環境變量 DSH_HOME)。自定義 home 或桌面目錄時:

node scripts/install-profile.mjs --home <DSH_HOME> --desktop-dir <桌面安裝目錄> --profile desktop --apply

Kimi 配置

無需安裝 Kimi CLI,但需要有效 Kimi 配置及授權。示例 config.toml 片段:

[providers.kimi]
type = "kimi"
base_url = "https://api.kimi.com/coding/v1"
api_key_env = "KIMI_API_KEY"

[models."kimi-code/k3"]
provider = "kimi"
model = "k3"
max_context_size = 262144
capabilities = ["image_in", "thinking"]

模型 ID、端點與上下文上限以賬戶權限及 Kimi 官方配置文檔爲準;啓動 DSH 的進程須能讀取對應環境變量。

典型用法

重啓 DSH 後,進入 設置 →「模型 Harness」:

  1. 確認 Kimi 配置目錄,點擊「讀取已配置模型」。複用 config.toml 的端點、模型與 API key / 環境變量 / 文件 OAuth;憑據不復制進插件配置或前端。
  2. 爲 kimi-code/k3 等模型別名選擇 Kimi Code · embedded core,保存。舊版配置不會靜默遷移,需手動改選 embedded core。
  3. 在原生模型選擇器的 Kimi · Harness Switch 中選擇該綁定,選定工作區後正常聊天。
  4. 需要對比 harness 或切回 DeepSeek 時,在同一 session 內按上文切換綁定或模型即可。

插件設置文件默認位於 $DSH_HOME/storages/harness-switch/<DSH_PROFILE 或 default>.json;多 profile 時可在插件配置中指定獨立絕對路徑 settingsFile。

適用場景與注意

適合誰:已在 DSH Desktop 上做原生會話開發、需要 Kimi Code API 且希望在同一 session 裏對比 embedded / legacy / DSH native 三種執行路徑的開發者。

一致性與邊界:插件固定複用 Kimi Code 指定 commit 的 Node SDK、agent core 等模塊,構建產物與 MIT 許可保留在 vendor/。同一核心版本和配置能儘量保持行爲一致,但不承諾與 Kimi CLI 逐字節相同;宿主身份、工作區、會話狀態與跨模型導入歷史均會影響請求。

存儲與恢復:原始 Kimi 日誌與執行狀態在 Kimi home;DSH 側存執行投影與最終回答。完整恢復需同時保留 DSH 存儲、設置旁的 engine/ 目錄與 Kimi home。更改同一 session 的 Kimi home、工作區或固定核心版本會拒絕複用舊狀態,需新建 session;不要與 CLI 同時操作插件正在使用的同一 Kimi session。

安全與權限:這是插件執行橋接,不是操作系統沙箱;嵌入模式使用 Kimi 的策略,DSH 全局系統提示詞擴展不會自動注入 Kimi 核心。安裝前請閱讀倉庫源碼與 MIT 許可證;插件以當前 DSH 進程權限運行,涉及 Bash、MCP 與文件訪問時與宿主環境同等敏感。

未覆蓋能力:視頻、Kimi CLI 專屬面板、終端快捷鍵及全部 slash 命令未移植;Kimi 原生 token 用量尚未映射到 DSH 外層統計;後臺任務、MCP 與全部平臺工具 README 標明尚未逐項端到端驗證。

鏈接

羽毛球分组比赛记分
小程序二维码

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

小夜