Amouren7 / dsh-model-switch

已收录

DSH Cordis 插件 — 按任务类型自动切换模型(设计/复查→deepseek-v4-pro,日常执行→deepseek-v4-flash)

master模型 查看源代码

安装

pnpm add "file:/path/to/dsh-model-switch/plugins/auto-model-switch"

此命令根据 GitHub 仓库地址生成。运行前请检查上游 README 与源代码;需要可复现安装时,请固定 release 或 commit。

README

维护者编写的文档快照。

在 GitHub 查看 ↗
提交版本 5937d6c同步于 2026年8月18日

dsh-model-switch

DSH 自动模型切换插件 —— 像 Claude Code 的 Auto Model Switching 一样,让 DSH 根据任务类型自动选择模型:关键思考用 pro,日常执行用 flash,省钱、省延迟、还不用手动切。

DSH Cordis License Tests

在 DSH(DeepSeek Harness,Cordis 插件架构)会话中,模型不再固定一个:插件监听每次请求前的路由点,按任务类型在 DeepSeek 官方双模型之间自动切换——

任务类型路由到原因
设计文档、方案评审、复查测试、检查验证deepseek-v4-pro根本性决策需要强推理
写代码、改代码、实现、跑测试、日常问答deepseek-v4-flash快、省、够用

效果

你:请输出用户登录模块的设计方案          → deepseek-v4-pro    (设计 → 强推理)
你:按上面的设计写代码                    → deepseek-v4-flash  (执行 → 快而省)
你:复查测试,检查边界条件                → deepseek-v4-pro    (复查 → 强推理)
你:继续                                  → deepseek-v4-flash  (日常 → 不抖动)

真实会话中的模型切换被记录在 DSH 的 request/header 事件里,全程可见可追溯。

特性

  • 零额外成本:任务类型判定是纯规则引擎(关键词 + 阶段信号),不调用任何额外 LLM 打分
  • 阶段化切换:模式 sticky,同一任务内不抖动——对 KV cache 友好,不浪费输入 token
  • 手动优先:你用 /model 手动选择后,插件自动让位,绝不覆盖你的显式选择
  • 按 agent 隔离:多会话并行互不干扰;subagent/workflow 独立判定
  • 全局生效:注册在 host 层,装一次,所有会话自动可用(无需在 cordis 会话里手动激活)
  • 健壮性:动态插件沙箱兼容(安全日志)、模型目录缺失自动降级、异常永不泄漏

工作原理

用户消息 → agent/pre-step(门控:仅新用户消息边界判定)
        → 判定器 decideMode(按优先级决策任务模式)
        → agent/request(路由器三分支 → 替换本次请求的 provider/model)
        → 模型请求 → request/header 事件(切换落日志)

判定优先级(先命中者胜出):

plan 模式激活        → design(最高)
复查/审查/检查/验证  → review
写代码/实现/修改/运行 → implement(实现词优先于设计词)
设计/方案/规划/文档   → design
其余                 → implement(默认)

路由器三分支

分支条件行为
显式指定会话入口/workflow 固定了模型永久让位
默认或自写基线 == 默认选择 或 == 插件上次写入接管,应用映射
UI 手动选择用户 /model 选了模型让位,尊重用户

设计细节与 DSH 源码依据:见 docs/superpowers/specs/2026-08-14-dsh-auto-model-switch-design.md

安装

方式一:全局固化(推荐)

  1. plugins/auto-model-switch 目录链接进你的 DSH profile(例如 web):
    cd ~/.dsh/profiles/web
    pnpm add "file:/path/to/dsh-model-switch/plugins/auto-model-switch"
    
  2. ~/.dsh/profiles/web/cordis.patch.yml 注册插件实例:
    - insert:
        - id: auto-model-switch
          name: dsh-auto-model-switch
          config: {}
    
  3. 重启 DSH(或等待 HMR 热应用),新会话即自动生效。

方式二:动态插件(调试用)

在 cordis preset 会话中,把 plugins/auto-model-switch/dist/code.host.js 作为 code.host 提交: cordis_definekind:"new")→ cordis_run。会话级生效,重启失效。

配置

当前模型映射与关键词表为代码常量,按需修改:

想改什么改哪里
模型映射(design/review → pro、implement → flash)src/router.jsMODEL_BY_MODE
判定关键词(评审/实现/设计词表)src/decider.jsKEYWORDS
决策优先级src/decider.jsdecideMode

改完跑 npm test(44 个单元测试)确认,然后重新 pnpm add file: 更新 profile 链接。

测试与验证

  • 单元测试:44/44 通过(cd plugins/auto-model-switch && npm test
  • 集成验证:真实 DSH 环境实测通过(实现→flash、复查→pro、连续消息不抖动、工具结果不误判、目录降级与恢复)——见 verification/verification-record-final.md
  • plan 模式进出、/model 手动选择、会话恢复等交互用例已由单测覆盖,真机待补验

项目结构

├── plugins/auto-model-switch/
│   ├── src/          # 源码:decider(判定器)/ router(路由器)/ plugin(Cordis 组装)
│   ├── test/         # 44 个单元测试(node:test,零依赖)
│   ├── lib/          # 固化安装包入口
│   ├── dist/         # 动态插件产物(code.host.js)
│   ├── observer/     # 观测插件(集成验证用)
│   └── verification/ # 验证手册、记录与驱动脚本
├── docs/superpowers/ # 设计文档(spec)与实现计划
└── AGENTS.md         # 项目规则

相关

MIT License

项目文件与信号

以下项目是目录快照中检测到的公开仓库信号。

测试已检测
文档已检测

仓库信息

开发语言
JavaScript
许可证
未提供
最后更新
2026年8月14日 07:56

谨慎安装

请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。