前言¶
在 DeepSeek Harness(DSH)里跑 agent,常见开销来自几类重复劳动:改完文件还要再开一轮让模型跑校验命令;工具返回一大段日志把上下文撑满;构建输出只能整段塞进对话;计划步骤做完却迟迟不压缩历史。NVlabs 的 SoL-Pi 针对这类问题设计了四种效率机制。社区维护者 jackiehank 的 SoL-dsh(包名 @jackiehank/sol-dsh)把它们适配成 DSH 的 Cordis 插件包,在插件页按需开关,不替换 DSH 原有界面。
下面介绍它是什么、四个机制分别做什么,以及如何在桌面端或其它 profile 安装与配置。
这是什么¶
SoL-dsh 一句话定位:把 SoL-Pi 的四种效率机制移植到 DSH,以插件 bundle 形式挂载在 Host 与 Client 两侧。仓库 github.com/jackiehank/SoL-dsh,MIT 许可证;维护者在 README 中写明在 DSH 0.2.1-rc.3 上实测。四个机制默认全部关闭,安装后要在插件详情里的 机制开关 逐个打开才会生效。
| 机制 | 英文全名 | 短名 | 作用概要 |
|---|---|---|---|
| 动作融合 | Action Fusion | 融合 | edit/write 后在同一调用里跑校验/构建命令,省一次模型往返 |
| 长输出寄存 | ObservationPack | 寄存 | 超大工具结果存本地,上下文只留句柄,需要时用 obs_recall 分页召回 |
| 诊断日志回执 | Evidence-Preserving Reducer | 回执 | 构建/测试日志压成逐字可核验的回执,对不上就退回原文 |
| 在线上下文压缩 | Online Context Compact | 压缩 | 计划步骤完成点触发原生 compaction,压缩后同一 turn 继续 |
SkillHub 目录页:https://www.skillhub.cn/plugins/jackiehank/SoL-dsh(社区插件目录,与 DeepSeek / 幻方无官方从属关系)。
核心功能¶
界面与统计¶
启用后有两处加法式 UI,不覆盖 DSH 原界面:
- 每轮尾行:一轮结束时显示类似
本轮:融合 1 · 寄存 1 · 回执 0 · 压缩 0;四项全零时不显示。 - 输入框下方:
已省 12.3k tok · 16.8%,点击可展开本会话节省明细(寄存 / 回执 / 压缩 / 融合及百分比)。数字来自 Host 侧按整条会话日志折叠的投影;分页、重启、关掉机制不会清零历史统计。
工作方式(摘要)¶
- 动作融合:在各 agent scope 注册遮蔽版
edit/write,schema 继承内建定义并增加可选then_run;命令仍走pwsh/bash的审批、沙箱与输出截断。 - 长输出寄存:在
tools/post-execute阶段、结果写入日志前替换content(value不变);原文按内容寻址归档,通过obs_recall {id, offset}按字节分页读回。仅处理超过 10 KiB 的纯文本工具结果。 - 诊断日志回执:只处理
pwsh/bash的构建/测试类命令输出(≥ 4 KiB、无疑似密钥);先归档再用ctx.llm做受限调用,回执中每条引文须逐字出现在原文,否则整体退回原文。 - 在线上下文压缩:观察
todo_write,在旧步骤变为 completed 的边界用ctx.tokenMeter选区间;仅当经济性成立才调用ctx.compaction.compactRegion,且不注入「继续工作」类消息。
阈值(如 10 KiB 寄存、16 KiB/400 行召回等)未对用户开放;细节见仓库 docs/plugin.md 与 docs/issues/。
环境与排障¶
DSH_SOL_DSH_HOME:归档根目录,默认<DSH_HOME>/sol-pi;归档为本地明文,可能含日志敏感内容,不要指向共享目录。DSH_SOL_DSH_DIAGNOSTICS=1:启动时注册sol_dsh_status排障工具,可报告动作融合在各 agent 上的安装情况。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前应自行查看仓库源码与 MIT 许可证,确认符合你的安全策略。
桌面端(DSH Desktop,0.2.1-rc.3 实测)¶
- 侧栏打开 插件;
- 点 添加插件(或箭头 → 安装第三方插件);
- 填写 Git 地址
github:jackiehank/SoL-dsh并安装; - 装完后刷新页面——否则 Client 半不会加载尾行、节省面板和机制开关。
桌面 profile 由 Electron 持有,CLI 会拒绝其插件管理请求;请在应用内安装,不要手改 profile 目录。
其他 profile(web / headless)¶
在 PowerShell 或其它 shell 中执行(命令来自仓库 README):
dsh plugin --profile web add github:jackiehank/SoL-dsh
将 web 换成你实际使用的 profile 名。
装完后四个机制仍为关;在插件页 SoL-dsh 效率包 → 机制开关 里打开需要的项。开关即时生效并写回 profile 配置。
升级与卸载¶
桌面端无「更新」按钮:包已声明时重复安装会被 already-installed 拒绝。先移除,再用同一入口安装新版本,然后刷新页面。Host 半改动需重载插件或重启 DSH;Client 半改动必须刷新页面。
配置¶
推荐用插件页图形开关;等价于在 profile 的 cordis.patch.yml 中写入如下结构(默认值与 README 一致):
- id: sol-dsh
name: '@jackiehank/sol-dsh'
config:
version: 1
actionFusion: false
observationPack: false
evidencePreservingReducer: false
evidencePreservingReducerProvider: ''
evidencePreservingReducerModel: ''
onlineContextCompact: false
cacheWriteReadRatio: 12.5
| 键 | 默认 | 说明 |
|---|---|---|
actionFusion |
false |
动作融合 |
observationPack |
false |
长输出寄存 |
evidencePreservingReducer |
false |
诊断日志回执 |
evidencePreservingReducerProvider |
空 | 回执 provider;留空为默认路由 |
evidencePreservingReducerModel |
空 | 回执模型;留空为默认路由 |
onlineContextCompact |
false |
在线上下文压缩 |
cacheWriteReadRatio |
12.5 |
与上游同名;当前保留并校验,暂未参与决策 |
典型用法与边界¶
典型用法不是单独再写一套 CLI,而是在 agent 会话里按需打开机制:
- 安装并刷新页面后,在插件页打开 融合 或 寄存 等开关;
- 正常对话:用带
then_run的edit/write触发融合;大工具输出触发寄存后,模型可通过obs_recall分页读回; - 跑
pwsh/bash构建/测试且输出足够大时,回执 可能替换上下文中的冗长日志; - 用
todo_write推进计划时,步骤完成边界可能触发 压缩(仅当 token 经济性成立)。
README 明确的部分边界:只针对 DSH 0.2.1-rc.3 验证;更老版本无 sessionProjections 时历史统计会退回扫当前快照;then_run 的输出在 post-execute 之后追加,回执机制看不到它;回执在逐字校验失败、疑似密钥、或回执体积不小于原文时会回退,不硬压。
本地开发时:仓库根 pnpm install,用 plugin_manager 的 install_bundle 指向仓库根(link 模式);Host 半改动重载插件,Client 半改动刷新页面。
适用谁、注意什么¶
适合已经在 DSH 上跑 coding agent、希望减少 token 与往返次数、又愿意逐项理解机制取舍的开发者。四个机制可以只开其中几项;默认全关,避免未读文档就改变 agent 行为。
兼容性以 README 为准:Host 半与 Client 半更新方式不同;插件页若没有 机制开关,先确认包已启用并刷新页面。更完整的 FAQ(尾行不显示、寄存未触发、压缩未发生等)见仓库 README 常见问题 一节。
结尾¶
SoL-dsh 把 SoL-Pi 的动作融合、长输出寄存、诊断日志回执与在线上下文压缩接到 DSH 插件体系里,用开关控制、用会话级统计反馈效果。需要机制说明与安装细节时,可直接查阅 GitHub README 与目录页: