用 dsh-hud 把 Agent 运行态钉在 DeepSeek Harness 会话顶栏

前言

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 对照,当前版本会把下面这些信息留在会话顶栏。

  1. 运行状态。会话 snapshot.running 为真时显示动态状态点,空闲时归静;展开面板时,运行中会带 Live 标记。屏幕阅读器用的 ARIA 文案是 Agent running / Agent idle
  2. 模型路由。Host 侧把已有的 request/context 事件折叠成只读 projection dshHudModelRoute(见 src/projection.ts),展示最近一次主会话请求使用的 ModelProvider。尚未发生模型调用时,紧凑条显示 No model yet
  3. 上下文压力。读取 Harness 的 contextPressure projection,优先用 projectedTokens,否则退回 pressureTokens,再除以 contextWindow 得到占用百分比,并用进度条显示「已用 Token / 窗口大小」。百分比会夹在 0–100 之间,只用于展示,不参与策略判断。
  4. Token 统计。展开后显示 Input 与 Output。其中 Input 按仓库实现把未缓存输入、缓存读、缓存写三类加在一起(uncachedInputTokens + cacheReadTokens + cacheWriteTokens),对应 README 所说的「含缓存读写的输入 Token」。
  5. 会话进度与耗时sessionStats 提供 Turns / Steps,以及模型耗时(llmMs)和工具耗时(toolMs)。紧凑条上的步数来自 stats.steps
  6. 并行任务。Jobs 统计当前会话里状态为 runningstopping 的后台任务数;Agents 统计挂在该父会话下的子 Agent 数量。
  7. 会话定位。详情区给出 Workspace(从会话 cwd 取最后一段路径名)和完整 Session ID。
  8. 原生观感与无障碍。样式复用 Harness 主题变量,README 说明支持明暗主题、窄屏和减少动态效果偏好;详情面板可用鼠标点击外部关闭,也可用 Esc 关闭并把焦点还回触发按钮。

工作原理可以概括成两条线:Host 插件(src/index.ts)只注册一条只读 projection,不拦截、不改写 Agent 流程;Client 插件订阅 session snapshot 以及 dshHudModelRoutecontextPressuretokenUsagesessionStats 等已有投影,数据变化由 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。

  1. 打开或新建一个会话。HUD 挂在会话标题栏的 conversation.session.header.actions 槽位上,首页没有会话时不会出现。
  2. 看紧凑状态条。从左到右大致是:运行/空闲状态点、最近一次模型名、ctx N%(尚无数据时为 ctx —)、以及 N steps
  3. 点击状态条展开详情。面板标题为 DeepSeek Harness Session HUD,上方是上下文压力进度条,中间是六格指标:
    - Input / Output
    - Turns / steps
    - Model time / Tool time
    - Jobs / agents
    下方四行明细:Model、Provider、Workspace、Session。
  4. 再点一次,或点击面板外部,或按 Esc,即可收起。
  5. 新会话在第一次模型调用之前,模型名、上下文和 Token 都可能是空的。这是预期行为:还没有可折叠的 request/context 事件,也没有 token meter 数据。发送第一条消息后会自动更新。

仓库提供 pnpm check,会依次跑严格类型检查、Host/Client 构建和 Vitest。README 徽章写测试为 8 passing,tests/ 目录里目前能看到 format.test.tsprojection.test.tsartifact.test.ts,分别覆盖 Token/耗时格式化、模型路由 projection 以及构建产物契约。日常使用不需要跑这些命令。

适用场景与注意事项

比较适合下面这些情况:

  • 在 DeepSeek Harness Web UI 里跑长任务,需要随时确认 Agent 是否还在跑、上下文是否接近窗口上限。
  • 同时开了后台 Job 或子 Agent,想在当前会话里看到并行数量,而不是去翻别的面板。
  • 关心这一轮时间花在模型还是工具上,以及输入(含缓存读写)和输出 Token 的累计。
  • 需要快速核对「当前到底走了哪个模型 / Provider」,以及自己身在哪个 Workspace、哪条 Session。

使用前建议把这几条限制看清楚:

  • 只读、只管展示。它不能改模型、不能停任务、不能估费用,也不能当调试控制台。
  • 当前只承诺 Web profilepackage.jsondsh.client.platformweb,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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜