Amouren7 / dsh-model-switch

Listed

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

masterModel View source

Installation

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

This command is generated from the GitHub repository address. Inspect the upstream README and source before running it; pin a release or commit when reproducibility matters.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 5937d6cSynced Aug 18, 2026

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

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
DocumentationDetected

Repository information

Language
JavaScript
License
Not reported
Last updated
Aug 14, 2026, 7:56 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.