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 标明尚未逐项端到端验证。

链接

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

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

小夜