DSH SMOOTH · DSH 顺滑包
一站式解决 DSH「跑任务就卡、切会话弹重新连接、启动慢」。
纯配置 bundle + 排障 skill:不改核心、不改插件源码、可一键回滚。
它解决什么 / What it fixes
| 现象 Symptom | 处理 Fix |
|---|
| 跑任务整体卡顿、切工作区无响应 | UI 渲染 compact、字号 16、jobs 轮询 200ms |
| 上下文越跑越长、首字越来越慢 | 压缩阈值:必须改 preset 里那份,见 optional/compaction-preset.md |
| 每步都要付工具 schema 的 token | 可选关闭 5 组用不到的工具,见 optional/tool-slimming.yml |
| 账号区反复显示「重新连接」 | 可选层禁用 Agents-Anywhere 桥接并清理设备绑定(optional/reconnect.yml) |
| 启动慢、内存高 | 可选移除加载即报不兼容的 codex / claude-code 子代理(省约 595 MB SDK) |
实测数据 / Measured
| 指标 Metric | 之前 Before | 之后 After |
|---|
| 冷启动 starting→ready | 3.69 s(均值) | 2.61 s(近 8 次均值,-29%) |
| 启动 ValidationError | 2 条/次 | 0 |
| 渲染进程错误(slot crash / feed) | 244 条累计 | 0 |
| 5 次独立命令 vs 1 次批量 | 191 ms | 41 ms(-79%) |
| bundle 数 | 23 | 21(移除不兼容子代理后) |
⚠️ v1.2.0 重要修正(2026-11-04 实测)
v1.1.0 及更早版本里"压缩阈值 0.25→0.35"这一条在 desktop profile 上是无效配置。原因:
@deepseek-ai/dsh-web-app 会把顶层 compaction-basic、command-compact、tool-result-pruner 置为 disabled: true;
- 真正运行的是 agent preset(
standard / ptc / cordis)内部的另一份 compaction-basic 实例,且不带 config → 走默认 0.8;
- 因此改顶层那条 config 不会影响任何正在跑的会话。
本版本的处理:
| 项 | 做法 |
|---|
| 核心层第 5 项 | 保留但不再声称有效,注释写明原因 |
| 真正生效的做法 | 覆盖 preset-<id> 声明,见 optional/compaction-preset.md(含验证与回滚) |
| 验证手段 | 复制 profile 后 dsh --profile <副本> --dump-config,看 thresholdRatio 是否出现在 preset-* 之后 |
另一个坑写进了 optional/compaction-preset.md:覆盖 preset 时 persona 不得含 {{cwd}},
否则 unknown prompt variable "{{cwd}}" 会让整轮对话在提示词组装阶段直接失败。
安装 / Install
// %USERPROFILE%\.dsh\profiles\desktop\package.json
"dependencies": {
"dsh-smooth": "link:E:/path/to/dsh-smooth"
},
"dsh": { "profile": { "bundles": [ ... , "dsh-smooth" ] } }
或 npm:
dsh plugin --profile desktop add dsh-smooth
也可直接从 GitHub tag 安装:
git clone --branch v1.2.0 https://github.com/ayuanxx-max/dsh-smooth.git E:\dsh-smooth
# 然后在 profile 的 package.json 里加 "dsh-smooth": "link:E:/dsh-smooth",并加入 bundles
完全退出 DSH 再启动才生效。
可选层 / Optional
| 文件 | 作用 |
|---|
optional/compaction-preset.md | 压缩阈值真正生效的做法 + 验证 + 两个必踩的坑 |
optional/tool-slimming.yml | 关闭 5 组用不到的工具,缩短工具表 |
optional/reconnect.yml | 禁用 Agents-Anywhere 桥接,消除「重新连接」按钮 |
optional/legacy-subagents.md | 移除不兼容的 codex / claude-code 子代理 |
回滚 / Rollback
- 从
bundles 移除 dsh-smooth → 全部恢复;
- 单项回滚:在自己的
cordis.patch.yml 里覆盖同一个 id(用户层优先级更高)。
兼容性 / Compatibility
- 只用基础 bundle 的稳定 id:
ui-chat、ui-settings-account、ui-theme、jobs、compaction-basic;
- 只用合法枚举(
compact / standard / detailed)与已验证的键名(pumpPollMs),避免 ValidationError;
- Windows 11 实测;Linux/macOS 未验证,但配置层与平台无关。
License
MIT