前言¶
用 DeepSeek Harness(DSH)跑长任务时,常见情况是:工具命令已经跑了两三分钟,页面没有新日志,也不确定进程是还在跑还是已经挂住。DSH 自带的 composer 底栏会给出轮次、步数、tok/s、总 token、缓存命中等会话级指标,但不会单独标出「当前这一步在干什么、这一步已经多久、这一步用了多少 token、多久没有新输出」。
dsh-status-turbo 是社区维护的 DSH 客户端插件,由 dgy970516 发布在 SkillHub 目录 与 GitHub。它把宿主会话日志投影成一条极窄状态展示,并进 DSH 自带的 composer 底部状态行右侧,不额外占一行,也不通过轮询宿主或注入 DOM 来更新;本阶段耗时用客户端本地时钟每秒刷新,日志静止时数字仍会跳。
这是什么¶
一句话:dsh-status-turbo 在对话输入区域底部的原生状态行上,补全「阶段、本阶段耗时、本步 token、无进展告警」等逐步信息,并支持点开详情面板查看活动流与用量摘要。
实现方式上,宿主把状态投影成名为 turbo 的 wire 视图(当前文档约定版本 v: 13、共 37 键)。客户端将 EXPECTED_V 固定在 13;若宿主与客户端版本不一致,状态条位置会显示红字「投影版本错配(宿主 vN ≠ 客户端 vM)」,而不是静默消失。
插件当前版本为 0.21.2(见仓库 package.json),许可证 MIT,运行环境要求 Node ^22.19.0 || >=24.0.0。
状态条显示什么¶
状态条示例形态如下(摘自 README):
● 执行工具(bash) 2:14 3.1K tok
各字段含义如下。
| 字段 | 含义 |
|---|---|
| 阶段 | 如 组装提示词、请求模型、接收流、执行工具(<名字>)、等待批准、压缩上下文 |
| 本阶段已耗时 | 每秒刷新,不依赖推送 |
| 本步 token | 当前 step 累计输入+输出(0.19.2 起条上只显示数量,完整说明在 title) |
| 无进展 | 超过 noProgressMs(默认 90000 ms)没有任何新产出时,该格变黄并标注卡了多久(0.19.2 起条上保留四字摘要,判据全文在 title) |
刻意不重复原生底栏已有的:会话轮/步、tok/s、总 token、会话级缓存命中、上下文占比。每步缓存命中率仍在投影数据 hitRate 中,但不再单独占一格。
0.19.2 起,推理档位(B1 实际发出的档位,取自会话日志 request/header)不再占状态条,因原生推理档选择器已显示同一值;档位信息留在详情面板。
空闲时状态格不会消失,会保留「上回合摘要」,例如 ● 请求模型 · 上回合 42.3s,数据来自宿主下发的 idleLine / lastTurnMs。
详情面板与活动流¶
点击状态条对应区域,会在输入框下方展开详情面板(槽位 conversation.input.dock,id dsh-status-turbo.detail);再点一次收起。收起状态或第一份快照未到之前,面板不渲染。
面板常驻分区包括:现在、活动流、本回合 / 上回合 / 缓存与用量 / 前缀 / 最慢的工具(maxMs 前 5)、等待占用 / 会话轮换 / 工具增强 / 交接文档;最近瘦身(lastSpill)与最近的故障(hookFaults)仅在确有内容时出现。
活动流只保存在内存环缓冲中,不落盘、不新增依赖、不改发出去的请求。它会根据日志记录:assistant/message 的思考摘要(截断到 reasoningChars)、tool/call 的工具名与脱敏参数、tool/result 的结果或报错前几行、turn/end 的结束原因。工具参数里命中 redactKeys(大小写不敏感、子串匹配)的键值会替换为 ***,循环引用记为 [Circular]。
宿主侧能力(与状态条同一插件包)¶
除客户端投影外,同一包还在宿主侧提供若干与长会话、成本相关的逻辑(README 中与状态条并列说明)。
按步降推理档(B1)¶
在连续若干步只调用只读工具且无报错时,可将当前步推理档降一档;一旦出现写入类工具或任何报错,立即回到原档。插件只降不升,不改默认模型或提供方。相关配置包括 downgrade(默认 true)、downgradeFloor(默认 low)、minQuietSteps(默认 2)及 readOnlyTools 白名单。判据不确定时按原档执行,不因插件导致请求失败。
超大工具结果瘦身(B3)¶
单条工具结果过大时,先经宿主 toolResultPruner.pruneContent,仍达到 spillThresholdBytes(默认 32768)时由宿主 spill 后端落盘,正文中附带绝对路径提示,可用 read(offset/limit)或 grep 继续查看。
缓存前缀失效(B4)¶
前缀作废时在状态条显示 前缀已失效 胶囊(最近 5 分钟内)。触发源包括 compaction 事件,以及单条 tool/result 载荷达到 bulkInjectionBytes(默认 32768)的 bulk-injection。
工具返回内提示(C1 / C2 / C3)¶
在不增加往返的前提下,向当前工具返回追加简短校正:无证据行(evidenceWhitelist 三条正则)、read 截断未读完、乱码或噪声输出等情形,README 中有具体文案与阈值(如 mojibakeMinRuns)。
交接文档自动导出¶
默认开启(handoffExport: true)。当本步输入 token 达到 handoffExportTokens(默认 240000)且距上次导出又增长 handoffExportMinDeltaTokens(默认 60000)时,通过 bili export 将会话导出为工作区下 handoffExportDir(默认 handoff)中的 Markdown。找不到 bili 时面板显示灰色「未找到 bili」,不记入故障列表。
安装与启用¶
推荐通过 DSH 插件管理器安装,或将包放入 profile 的 node_modules 后,在 profile 的 cordis.patch.yml 中 insert。README 中的说明如下:
# 装进 profile(推荐)
# 用 DSH 的插件管理器安装,或在 profile 的 cordis.patch.yml 里 insert 本包
手工拼装示例(节选常用 12 键,完整 46 键默认值以 lib/state.js · DEFAULT_CONFIG 及根目录 cordis.patch.yml 为准):
- insert:
- id: dsh-status-turbo
name: 'dsh-status-turbo'
config:
statusBar: true
noProgressMs: 90000
downgrade: true
downgradeFloor: low
minQuietSteps: 2
spillThresholdBytes: 32768
bulkInjectionBytes: 32768
evidenceWhitelist:
- '/exit code:?\s*0\b/mi'
- '/(^|\n)\s*(#\s*(pass|tests|suites)\s+\d+|\d+\s+passing|Tests:\s+\d+\s+passed|Test Suites:\s+\d+\s+passed|ok\s+\d+\s+-)/m'
- '/(^|\n)\s*(Successfully compiled|Compiled successfully|Found 0 errors|\d+\s+files?\s+checked,?\s*0\s+errors|Build succeeded|Done in \d)/mi'
stuckAction: warn
stuckRounds: 3
stuckRepeats: 3
mojibakeMinRuns: 2
注意:不要把同一包同时列进 dsh.profile.bundles 和 profile 的 cordis.patch.yml,否则会被加载两次。
典型用法¶
1、安装并启用插件后,打开 DSH Web 客户端,在 composer 底栏原生状态行右侧观察阶段与耗时是否在工具执行、等模型流式输出时更新。
2、长命令无日志时,看本阶段耗时是否继续增加,以及是否出现无进展告警(默认 90 s 无新产出)。
3、需要看最近工具调用与思考摘要时,点击状态条展开详情面板,在活动流中查看最新条目。
4、若需关闭按步降档或调整无进展阈值,在 cordis.patch.yml 的 config 中设置 downgrade: false 或修改 noProgressMs 等键(各键均可省略,省略则用默认值)。
适用场景与注意¶
适合经常在 DSH 里跑多步工具链、需要一眼判断「当前阶段与是否卡住」的开发者。客户端分类插件,依赖 @deepseek-ai/dsh-client-modules 与 @deepseek-ai/dsh-client-ui-settings 注入(见 package.json 的 dsh.client 段)。
DSH 生态采用「一切皆插件」思路;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。插件在 DSH 进程权限下运行,安装前请自行审阅 源码与许可证,并按组织策略评估 B1 降档、工具结果 spill、交接导出等宿主侧行为是否符合预期。
结尾¶
dsh-status-turbo 用纯日志投影在 composer 底栏补全逐步状态与无进展提示,并可选展开详情面板,减轻长任务时「不知道卡在哪」的不确定性。进一步了解可访问目录页 https://www.skillhub.cn/plugins/dgy970516/dsh-status-turbo 与仓库 https://github.com/dgy970516/dsh-status-turbo 。