Repository navigation
Releases: mrzturn/dsh-switchman
Release list
v1.8.1
Fixed
-
Dispatch pool annotations no longer leak into dispatched model ids. A model id copied verbatim off the
[SWITCHMAN:POOLS]table (e.g.glm-5.3-flash(A)@high) embedded the display-only(TIER)grade and@effortpin; DSH's exact-match child-route whitelist then rejected the call and the caller fell back to implicit dispatch, losing the lane's route.- The pools guidance now spells out the full
provider/model(TIER)@effortgrammar with an explicit decomposition rule (both suffixes are display-only annotations, never parts of the model id). - A sanitation pass on
subagent/subagent_fork(every enforce mode) denies calls whose model argument embeds trailing(TIER)/@effort/⚠not-authorizedannotations when the stripped id matches a configured route, returning the exact corrected arguments (including a reasoning_effort hint) instead of the generic whitelist error. Unknown ids still pass through untouched; enforce-gate semantics are unchanged.
- The pools guidance now spells out the full
v1.8.0 · 意图路由 / Intent routing
v1.8.0
中文
意图路由(Auto 模型)
模型选择器里多了一个「Auto」。选它之后,每条消息先交给一个分类器小模型判断该用哪条泳道的模型,再在请求层静默切换——你只管发消息,脏活累活自动分给对的模型。决策按回合钉住,不会在同一段任务里来回跳;面板显示当前决策和置信度,还有五分钟的缓存窗口避免重复分类。
分类器可以自己带:Ollama 跑个 tev1:4b-mxfp8,端点填 http://127.0.0.1:11434/v1/systemone,就是一个现成的本地决策端点。不想折腾本地,云端小模型或不带思考的本地模型也行。
上下文水位与自动交接
会话上下文分三档水位,默认 80k / 120k / 150k tokens:80k 起提醒多委派少亲读,120k 开始收紧读取预算,150k 触发一次平滑交接——先备份会话、写交接文档,再压缩,尽量不丢细节地继续干活。这里有一条刻意设计的顺序:核心自带的 0.8×窗口压缩线(200k 窗口即 160k)永远排在插件的交接线后面,粗糙的单发压缩不会抢在平滑交接前面。
其他改动
- 关掉意图识别不再甩下烂摊子:已选 Auto 的会话自动落到兜底链,选择器里 Auto 也会隐藏,不会卡在一个不能用的小模型上
- 某个候选模型的真实上下文窗口小于交接线时,面板会直接提示溢出风险,免得聊到一半爆窗
- 默认值整体调优:读取预算 3000、分类超时 60 秒,长会话的默认体验更省心
English
Intent routing (the Auto model)
The model picker now has an "Auto" entry. Pick it, and each message first goes through a small classifier that decides which lane's model should handle it, then switches silently at the request layer. Decisions are pinned per turn so a running task doesn't bounce between models, and the dock shows the current decision, its confidence, and a five-minute cache window.
Bring your own classifier: run tev1:4b-mxfp8 on Ollama and point the endpoint at http://127.0.0.1:11434/v1/systemone. Prefer not to run anything local? A cloud small model, or a local one without thinking, works too.
Context watermarks and smooth handover
Session context now has three watermark tiers, 80k / 120k / 150k tokens by default: at 80k you get nudged to delegate, at 120k the read budget tightens, and at 150k a smooth handover kicks in — back up the session, write a handover document, then compact, keeping as much detail as possible. The ordering here is deliberate: the core's own 0.8×window compaction line (160k on a 200k window) always fires after switchman's handover line, so the blunt one-shot compaction never preempts the smooth path.
Other changes
- Turning intent routing off no longer strands sessions: conversations already on Auto fall back to the fallback chain, and Auto hides from the picker instead of sitting there unusable
- The dock warns when a candidate model's real context window is narrower than the handover line, before you find out by overflowing mid-conversation
- Defaults retuned across the board: 3000 read budget, 60s classifier timeout — long sessions need less fiddling out of the box
v1.7.1 — 修复与 dshmarket 的依赖冲突 / Fix dependency conflict with dshmarket
v1.7.1 — 修复与 dshmarket 的依赖冲突 / Fix dependency conflict with dshmarket
中文
修复:安装本插件会导致 dshmarket 插件市场崩溃(1.7.0 回归,强烈建议升级)
- 根因:1.7.0 把
@deepseek-ai/schemastery声明为普通dependencies,安装时被 pnpm 提升到<profile>/node_modules/;DSH 的模块解析会让这份物理副本遮蔽宿主副本,dshmarket 及所有 profile 常驻包静默拿到第二份 schemastery 实例 → 市场崩溃。 - 修复:schemastery 改为
peerDependencies: "^3.18.1"(与 dshmarket / dsh-mcp-connector 相同的生态约定),运行时由宿主副本满足;本插件回归零运行时依赖,安装/升级/卸载不再向 profile 写入任何共享依赖,与 dshmarket 互不影响。 - 防回归:
scripts/validate.mjs新增检查——再次出现普通dependencies直接失败,把"零运行时依赖"固化为发布门禁。 - 两份 README 增补事故机理与维护注意。
升级方式:plugin_manager: remove_bundle 后重新 install_bundle,或 dsh plugin --profile desktop add dsh-switchman。若市场曾把本插件自动置为 OFF,升级后重新启用即可。
English
Fix: installing this plugin crashed the dshmarket plugin market (1.7.0 regression, upgrade strongly recommended)
- Root cause: 1.7.0 declared
@deepseek-ai/schemasteryas a plaindependency; pnpm hoisted it into<profile>/node_modules/, where DSH's module resolver lets the physical copy shadow the host copy — dshmarket (and every profile-resident package) silently received a second schemastery instance and crashed. - Fix: schemastery is now a
peerDependency(^3.18.1, the same ecosystem convention as dshmarket / dsh-mcp-connector), resolved from the host copy at runtime. The package returns to zero runtime dependencies — installing, upgrading, or removing it no longer writes any shared dependency into the profile, so it can never affect dshmarket (or vice versa). - Regression guard:
scripts/validate.mjsnow fails if plaindependenciesever reappear, hardening the zero-dependency invariant as a release gate. - Both READMEs document the incident mechanics and the maintenance note.
Upgrade: plugin_manager: remove_bundle then install_bundle again, or dsh plugin --profile desktop add dsh-switchman. If the market had auto-disabled this plugin, just re-enable it after upgrading.
v1.7.0 — 适配 DSH 0.2.1 / Adapt to DSH 0.2.1
v1.7.0 — 适配 DSH 0.2.1 / Adapt to DSH 0.2.1
中文
适配 DSH 0.2.1(升级 DSH 前必装)
- 移除 persona 规程中已废弃的
{{cwd}}提示词变量行:DSH 0.2.1 删除了cwd变量(仅注册provider/model),严格插值下旧版会让所有会话报unknown prompt variable "{{cwd}}"而失败;工作目录现由必需运行时上下文注入,语义不变。 - 四份出厂预设(standard / ptc / minimal / cordis)的插件列表按装机 0.2.1-rc.2 出厂文件逐字段重新同步:新增
time-context、tool-schedule、tool-plugin-market,移除上游已删的 ralph/codex/claude-code 行,minimal 预设补齐 image-only 文件工具与 compaction 组,plan-mode 文案对齐 rc.2。 - 子代理工具结果适配统一激活生命周期:接受新
{kind:"activation"}形状({kind:"continuable"}旧形状保留回退),对应backgroundMode配置键的移除。 engines.dsh提升至>=0.2.1-rc.1;在 DSH 0.1.x 上本版本会拒绝安装,请留在 1.6.x。
升级方式:plugin_manager: remove_bundle 后重新 install_bundle,或 dsh plugin --profile desktop add dsh-switchman。
English
DSH 0.2.1 compatibility (install before upgrading DSH)
- Dropped the deprecated
{{cwd}}persona line: DSH 0.2.1 removed thecwdprompt variable (onlyprovider/modelstay registered), so with 1.6.x every conversation fails withunknown prompt variable "{{cwd}}"once the plugin is enabled. The working directory now arrives via the required runtime context — same semantics, no variable. - Re-synced all four shipped preset plugin lists (standard / ptc / minimal / cordis) field-by-field against the installed 0.2.1-rc.2 presets: added
time-context,tool-schedule,tool-plugin-market; dropped the removed ralph/codex/claude-code rows; minimal gained the image-only fs tools and the compaction group; plan-mode copy aligned with rc.2. - Subagent tool-result shapes adapted to the unified activation lifecycle: the new
{kind:"activation"}shape is accepted (the old{kind:"continuable"}shape stays as fallback), matching thebackgroundModeconfig removal. engines.dshraised to>=0.2.1-rc.1; on DSH 0.1.x this version refuses to install — stay on 1.6.x there.
Upgrade: plugin_manager: remove_bundle then install_bundle again, or dsh plugin --profile desktop add dsh-switchman.
v1.6.0 — 全球化与交接可靠性 / Globalization & handover reliability
v1.6.0 — 全球化与交接可靠性 / Globalization & handover reliability
中文
全球化
- 插件界面语言手动覆盖(
uiLocale):徽章、启动面板、设置页共 12 个语种,选中即预览、保存记忆、启动恢复、失败回退;只改插件自身 UI,不动 DSH 应用语言。 - 内容语言补齐 Italiano、Português:会话 / 代码注释 / 文档三选项各 12 种,作用域全局或按项目(
.switchman/lang.json)。 - 11 个语种 README 全部按中文模板重写,各嵌本语种真实渲染的设置页整页截图;截图清单更正,旧分节图清理。
- 全语种补手动干预介绍:
/ctx-pause暂停水位干预、/ctx-resume随时恢复(重启后自动恢复)、/ctx-handover手动立即交接。 - 仓库内中文代码注释与开发文档全部英文化。
修复
- 设置页 Interface 区条件钩子导致的面板崩溃(useId 移到早退之前)。
- 交接后看不见晚物化的后台子智能体、进而重复派发:交接文档改为每次压缩尝试前刷新(写完即压、中间无动作),压缩落地后差分点名,唤醒后 20s/75s 双复查主动通报;派发枚举重写为 catalog 驱动——已派发未终局即视为在途。
- Agent-Teams 模式下子智能体无法寻址:新增
child_message桥接工具;交接文档附精确判活路径与单行命令。
升级:plugin_manager: remove_bundle 后重新 install_bundle,或 dsh plugin --profile web/desktop add dsh-switchman。
English
Globalization
- Manual interface-language override (
uiLocale) for the plugin's own UI — badge, startup panel, settings page — across 12 locales: instant preview on select, remembered per profile, restored at startup, falls back to the app language on any failure. Does not touch the DSH app language. - Content-language options completed with Italiano and Português: 12 choices each for conversation / code comments / documents, global or per-project (
.switchman/lang.json). - All 11 locale READMEs rebuilt from the zh template, each embedding its own genuinely rendered full-page settings screenshot; the manifest corrected, superseded partial shots removed.
- Manual-control trio documented in every locale:
/ctx-pausesuspends watermark enforcement,/ctx-resumerestores it anytime (a restart restores it too — a temporary let-go, not a permanent off),/ctx-handovertriggers the backup/compact/wake handover on demand. - In-repo Chinese code comments and dev docs translated to English.
Fixes
- Settings-page crash in the Interface section (useId hooks moved above the early returns).
- Handovers losing late-materializing background subagents and re-dispatching them: the handover document is refreshed as the last action before every compaction attempt, diffed after compaction lands, and re-checked twice after the wake; dispatch enumeration is catalog-driven — dispatched-but-unfinished counts as in flight.
- Subagent children unaddressable in Agent-Teams mode: new
child_messagebridge tool; handover docs carry exact liveness paths and a paste-ready one-liner.
Upgrade: plugin_manager: remove_bundle then install_bundle again, or dsh plugin --profile web/desktop add dsh-switchman.
v1.5.0 — Agent Teams · /vision · 自动交接 / Auto handover
v1.5.0
新内容 / What's new
中文
- Agent Teams 模式(默认关闭,两个独立开关):
- 「智能体团队模式」开启后注入团队调度规程(默认委派 + 分级验证 + 共享任务板纪律)并自动启用 DSH 的 Agent Teams——主模型可拉常驻队友、往共享任务板派活、队友间互传消息;关闭零残留,且不撤走运行中会话的工具
- 「同步子智能体模型白名单」把六池并集整体写入 DSH「允许 Agent 为子智能体选择模型」授权列表(fork 派发路径一并纳入),switchman 成为唯一事实源;仅对之后新建的会话生效
- /vision 图像解锁:纯文本模型也能处理图——贴图后
/vision <问题>,图片解析为宿主文件路径交给多模态池读取;带图直发被拒时自动改写为 /vision 重发;输入框常驻提示;多模态池未配置时给出配置指引 - 全自动四步交接:上下文到 force 水位(默认 130k)自动 fork 备份 → 压缩 → 写交接文档(含仍在运行的后台子智能体快照,续跑会话据此收报告、不重复派活)→ 唤醒续跑;会话头部实时显示「交接进行中 · 备份会话 / 压缩上下文 / 唤醒续接」
- 设置页与调度中心:设置 → dsh-switchman,或首页侧边栏「Switchman 调度中心」——语言偏好(全局或按项目
.switchman/lang.json)、六派发池(手动排序、按模型真实支持列表钉思考强度、S/A/B/C 能力锚定)、执行模式(建议 / 强制)、水位区、团队开关 - 会话头部徽标:⚡ 自主团队徽标、◇ 当前会话实际模型 chip
- 授权漂移提示:DSH 未授权的子智能体模型路线在推荐表与设置页标 ⚠ 并指引授权
- 语言偏好系统:对话 / 注释 / 文档三种语言,未设置时以 DSH 界面语言问一次、永久记住
English
- Agent Teams mode (off by default, two independent toggles):
- "Agent teams mode" injects the team doctrine (delegate by default + tiered verification + shared-task-board discipline) and auto-enables DSH's Agent Teams — durable teammates, a shared task board, teammate messaging; turning it off leaves zero residue and never strips tools from running sessions
- "Sync the subagent model whitelist" writes the six-pool union wholesale into DSH's authorized child-model list (fork path included) — switchman becomes the single source of truth; takes effect for newly created sessions only
/visionimage unlock: text-only models can work with images — attach, then/vision <question>; the image is resolved to a host file path and read by a vision-pool model; refused image sends are auto-rewritten to/visionand resubmitted; a composer hint appears for text-only models, and an empty vision pool gets setup guidance- Fully automatic four-step handover: at the force watermark (default 130k) the session forks a backup → compacts → writes a handover document (snapshots of still-running background subagents included, so the continuation collects their reports instead of duplicating work) → wakes the continuation, with a live progress chip in the session header
- Settings page & control center: Settings → dsh-switchman, or the "Switchman Control Center" home-sidebar panel — language preferences (global or per-project
.switchman/lang.json), six dispatch pools (manual ordering, per-model effort pinning from actually supported levels, S/A/B/C tier anchoring), execution mode (advice / enforce), watermark section, teams toggles - Session-header chips: ⚡ autonomous-team badge and a ◇ chip showing the session's actual model
- Authorization-drift surfacing: routes DSH hasn't authorized for explicit subagent selection are flagged ⚠ in the pools table and the settings page
- Language preferences: replies / code comments / docs — asked once in your DSH UI language and remembered forever
修复 / Fixes
- 会话头部徽标消失:dynamic-ctx guard 对
ctx.sessions抛错被错误边界吞掉——改用投影 hooks 并优雅降级 / session-header badge vanished (dynamic-ctx guard threw onctx.sessions, swallowed by the error boundary) — rewritten with projection hooks and graceful degradation - 视觉提示 chip 在子会话误报:改按会话模型判定 / vision-hint false positives on subagent sessions — now resolved per session model
- /vision 图片物化为带扩展名的 PNG 副本 / vision images materialized as extension-named PNG copies
- 自动交接健壮性:真实 AbortSignal、压缩 error 结果按可重试处理、跨轮次重试 / handover robustness: real AbortSignal, retryable compaction errors, retry across the turn boundary
说明 / Notes
- npm 包形态:50 文件 / ~205 kB(docs/ 截图不进包)/ package shape: 50 files / ~205 kB (
docs/screenshots never ship) - 经 OIDC trusted-publishing 流水线发布,
release-publish环境人工审批后自动 npm publish / published through the OIDC trusted-publishing pipeline; npm publish runs after therelease-publishenvironment approval - 全部 11 个语言 README 已随本版重写并配新截图 / all 11 language READMEs were reworked for this release with new screenshots
v1.3.1
What's new
- Nine new README translations: 繁體中文, 日本語, 한국어, Español, Français, Deutsch, Italiano, Português, Русский — every README now carries an 11-language nav row
screenshots.jsondeclared in-repo for storefront galleries (hero + three settings views)
Notes
- First release through the OIDC trusted-publishing pipeline (approval-gated
release-publishenvironment)