前言¶
DeepSeek Harness(简称 dsh)是 DeepSeek AI 开源的智能体运行时,官方仓库把它概括成一句话:Everything is a Plugin(一切皆插件)。框架本身还在 developer preview,文档写明会有破坏性变更;日常使用时,会话、工具、子 Agent、模型路由,大多也是靠插件拼出来的。
长任务一跑起来,真正折磨人的往往不是「Agent 够不够聪明」,而是更朴素的几件事:它还在跑吗?这一轮走的是哪个模型、哪个 Provider?上下文还剩多少?时间花在模型推理上,还是花在工具调用上?后台还有几个 Job、几个子 Agent?Claude Code 用 /statusline、/context、/usage、/tasks 回答这些问题;Codex 也强调长任务和多 Agent 协同时,不必离开当前会话就能掌握运行状态。DeepSeek Harness 的 Web UI 里,这些数据其实已经在 session snapshot 和 projection 里了,只是默认不会一直摊在眼前。
dsh-hud 做的就是把这层运行态可见性接到会话标题栏。本文依据社区插件目录页、GitHub 仓库 README、package.json 与客户端源码交叉核实,介绍它是什么、装完能看到什么、以及使用时要注意的边界。社区插件目录(https://deepseek-harness-plugin.com)是独立站点,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。
这是什么¶
dsh-hud 是一个面向 DeepSeek Harness Web UI 的只读 Agent 运行态观测插件,由 GitHub 用户 zexuanw958-svg 维护,仓库地址是 https://github.com/zexuanw958-svg/dsh-hud 。社区目录把它归在「会话与消息」分类,许可证为 MIT,主要语言是 TypeScript,当前版本号为 0.1.0。本文写作时 GitHub 仓库星标为 12。
它解决的不是「让 Agent 更聪明」,而是长任务里那组操作问题:不用离开当前会话,就能知道 Agent 做到哪了、消耗了什么、上下文还能撑多久。实现方式是向官方 slot conversation.session.header.actions 注入一条紧凑状态条:默认显示最近一次 Assistant 请求使用的模型、上下文压力百分比和累计步数;点击后展开 Token、耗时、Jobs、子 Agent、Provider、工作区名称和 Session ID。
数据直接消费 Harness 已有的 snapshot / projection,没有定时轮询,也不会额外请求 Host、额外调用模型,更不会把统计信息写进提示词。仓库 README 写得很明确:它不是 Codex / Claude Code 的 1:1 复刻,也不是控制台——不会切换模型、不会停止任务、也不会估算美元费用。
GitHub 上还有另一个同名仓库 a903067276-rgb/dsh-hud,做的是输入栏按钮加浮动侧栏(Git / MCP / Skills 等),和本文介绍的顶栏 HUD 不是同一个项目。安装时请核对维护者为 zexuanw958-svg,命令里的仓库路径也必须是 github:zexuanw958-svg/dsh-hud。
核心功能¶
根据 README 与 src/client/index.tsx 对照,当前版本会把下面这些信息留在会话顶栏。
- 运行状态。会话
snapshot.running为真时显示动态状态点,空闲时归静;展开面板时,运行中会带Live标记。屏幕阅读器用的 ARIA 文案是Agent running/Agent idle。 - 模型路由。Host 侧把已有的
request/context事件折叠成只读 projectiondshHudModelRoute(见src/projection.ts),展示最近一次主会话请求使用的 Model 和 Provider。尚未发生模型调用时,紧凑条显示No model yet。 - 上下文压力。读取 Harness 的
contextPressureprojection,优先用projectedTokens,否则退回pressureTokens,再除以contextWindow得到占用百分比,并用进度条显示「已用 Token / 窗口大小」。百分比会夹在 0–100 之间,只用于展示,不参与策略判断。 - Token 统计。展开后显示 Input 与 Output。其中 Input 按仓库实现把未缓存输入、缓存读、缓存写三类加在一起(
uncachedInputTokens + cacheReadTokens + cacheWriteTokens),对应 README 所说的「含缓存读写的输入 Token」。 - 会话进度与耗时。
sessionStats提供 Turns / Steps,以及模型耗时(llmMs)和工具耗时(toolMs)。紧凑条上的步数来自stats.steps。 - 并行任务。Jobs 统计当前会话里状态为
running或stopping的后台任务数;Agents 统计挂在该父会话下的子 Agent 数量。 - 会话定位。详情区给出 Workspace(从会话
cwd取最后一段路径名)和完整 Session ID。 - 原生观感与无障碍。样式复用 Harness 主题变量,README 说明支持明暗主题、窄屏和减少动态效果偏好;详情面板可用鼠标点击外部关闭,也可用
Esc关闭并把焦点还回触发按钮。
工作原理可以概括成两条线:Host 插件(src/index.ts)只注册一条只读 projection,不拦截、不改写 Agent 流程;Client 插件订阅 session snapshot 以及 dshHudModelRoute、contextPressure、tokenUsage、sessionStats 等已有投影,数据变化由 Harness 推送触发渲染。
安装与启用¶
社区目录页给出的安装命令原文如下,在 DeepSeek Harness 终端中运行即可:
dsh plugin add github:zexuanw958-svg/dsh-hud
如需可复现安装,目录页建议固定 commit 哈希:
dsh plugin add github:zexuanw958-svg/dsh-hud#commit
把上面的 commit 换成仓库里实际的提交哈希。目录页同时提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码,安装前请检查源代码仓库和许可证。
这个插件在 package.json 里把客户端平台标成 web,README 推荐的安装方式因此更具体——钉到已验证的 Harness 版本,并显式写入 web profile:
环境要求(来自 README):
- DeepSeek Harness 0.1.0-rc.6
- Node.js 22.19+ 或 24+
- pnpm 11.x
一行安装:
npx --yes @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add github:zexuanw958-svg/dsh-hud
从源码安装(适合要改代码或本地调试时):
git clone https://github.com/zexuanw958-svg/dsh-hud.git
cd dsh-hud
pnpm install
pnpm build
npx --yes @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add "$(pwd)"
然后重启 Web UI:
npx --yes @deepseek-ai/dsh@0.1.0-rc.6 web
Harness 官方仓库的默认启动命令是 npx @deepseek-ai/dsh web,本地默认地址为 http://127.0.0.1:3080。插件 README 使用带版本号的 npx,是为了和当前已验证的 0.1.0-rc.6 对齐。
源码安装走的是本地 link: 方式。README 说明:移动或删除仓库目录会让链接失效;卸载命令为:
npx --yes @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web remove dsh-hud
兼容性表目前只有一行:dsh-hud 0.1.x 对 DeepSeek Harness 0.1.0-rc.6 标记为已验证。Harness 仍处于 RC / developer preview,官方 slot 或 projection API 变化时,这个插件也可能需要跟随升级。
典型用法¶
安装并重启 Web UI 之后,按 README 的步骤即可看到 HUD。
- 打开或新建一个会话。HUD 挂在会话标题栏的
conversation.session.header.actions槽位上,首页没有会话时不会出现。 - 看紧凑状态条。从左到右大致是:运行/空闲状态点、最近一次模型名、
ctx N%(尚无数据时为ctx —)、以及N steps。 - 点击状态条展开详情。面板标题为
DeepSeek Harness Session HUD,上方是上下文压力进度条,中间是六格指标:
- Input / Output
- Turns / steps
- Model time / Tool time
- Jobs / agents
下方四行明细:Model、Provider、Workspace、Session。 - 再点一次,或点击面板外部,或按
Esc,即可收起。 - 新会话在第一次模型调用之前,模型名、上下文和 Token 都可能是空的。这是预期行为:还没有可折叠的
request/context事件,也没有 token meter 数据。发送第一条消息后会自动更新。
仓库提供 pnpm check,会依次跑严格类型检查、Host/Client 构建和 Vitest。README 徽章写测试为 8 passing,tests/ 目录里目前能看到 format.test.ts、projection.test.ts 和 artifact.test.ts,分别覆盖 Token/耗时格式化、模型路由 projection 以及构建产物契约。日常使用不需要跑这些命令。
适用场景与注意事项¶
比较适合下面这些情况:
- 在 DeepSeek Harness Web UI 里跑长任务,需要随时确认 Agent 是否还在跑、上下文是否接近窗口上限。
- 同时开了后台 Job 或子 Agent,想在当前会话里看到并行数量,而不是去翻别的面板。
- 关心这一轮时间花在模型还是工具上,以及输入(含缓存读写)和输出 Token 的累计。
- 需要快速核对「当前到底走了哪个模型 / Provider」,以及自己身在哪个 Workspace、哪条 Session。
使用前建议把这几条限制看清楚:
- 只读、只管展示。它不能改模型、不能停任务、不能估费用,也不能当调试控制台。
- 当前只承诺 Web profile。
package.json的dsh.client.platform为web,README 写明其他平台尚未承诺兼容性。 - 不增加模型开销。没有额外模型调用,统计也不会写入提示词上下文;代价是它完全依赖 Harness 已有投影,Host 侧若还没产出对应事件,界面就只能显示占位。
- 权限与供应链。插件以当前 dsh 进程权限运行,安装时可能执行构建脚本。安装前请阅读仓库源码和 MIT 许可证;生产或可复现环境请固定 commit,而不是始终追踪默认分支。
- 同名仓库。不要把
github:a903067276-rgb/dsh-hud当成本文这个插件。 - 版本绑定。当前公开验证范围是 DeepSeek Harness 0.1.0-rc.6。官方仓库仍在快速迭代,升级 Harness 后如果顶栏空白或投影对不上,应先核对该插件是否已跟进。
README 的 Roadmap 里还列了可配置 segment、Git/CI 状态、上下文阈值告警、第三方 segment 协议等,那些是规划项,不是当前版本已交付的能力。
小结¶
dsh-hud 把 Codex / Claude Code 里那类「Agent 还在做什么、还剩多少上下文」的运行态,接到了 DeepSeek Harness 的会话标题栏。它不改 Agent 行为,只把 Harness 已经维护的 snapshot 和 projection 持续露出来:模型路由、上下文压力、Token、耗时、后台任务和子 Agent,点一下就能看全。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-hud/
GitHub:https://github.com/zexuanw958-svg/dsh-hud