Physicolor/harness-widgets
Right-hand widget rail for DeepSeek Harness Web UI: live session stats (turns, LLM/tool time, TTFT, speed, cache, tokens) plus OpenCode Go quota via a same-origin host proxy; extensible widget registry.
已收录
2
Ui
Bundle 已验证
预览
功能介绍
DSH Web UI 右侧部件栏:实时会话统计(轮次/LLM 与工具耗时/首 token 延迟/速率/缓存/tokens)与 OpenCode Go 套餐用量(同源代理);可扩展部件注册表,为更多平台用量部件、视觉表现、实用工具与外部接口集成打基础。
适合
- 希望在对话旁实时查看会话性能、token、缓存与上下文指标的 DSH Web 用户。
- 希望在同一界面查看额度窗口与重置时间的 OpenCode Go 用户。
- 需要可配置多列、尺寸、排序及可扩展注册机制的部件栏用户。
不适合
- CLI 或无头工作流,因为这些部件面向 Web UI。
- 不需要常驻屏幕指标或快捷工具控件的用户。
- 未配置 `OPENCODE_GO_API_KEY` 时不适合监控 OpenCode Go 额度;其他会话部件仍可使用。
README
Harness Widgets
为 DeepSeek Harness 打造的美观、可扩展的右侧组件系统。
多列网格布局 · 2×4 长方形组件 · 连续波峰悬浮放大 · 组件市场与实例管理
A beautiful, extensible widget system for DeepSeek Harness — multi-column grids, 2×4 tiles, continuous magnification, and a built-in component marketplace.
Harness Widgets 是一个基于 Cordis 的 DeepSeek Harness 持久 bundle 插件。它在会话页右侧提供一套可定制的多列组件面板,实时展示对话洞察、用量监控与快捷工具,并通过声明式注册表支持无限扩展。
Harness Widgets is a persistent DSH bundle plugin built on the Cordis composition model. It provides a customizable multi-column widget rail on the right side of the conversation page — real-time session insights, usage monitoring, and quick actions — with an extensible declarative registry.
当前功能 · Features
多列网格布局 · Multi-Column Grid
| 项目 | 说明 |
|---|---|
| 列数 | 1 / 2 / 4 列可选(设置中下拉,默认 2 列) |
| 2×4 长方形组件 | 宽度为两个 2×2 加一个间距,与 2×2 同高;同一组件可同时以两种尺寸独立安装 |
| 无空隙排列 | 组件按格自动打包(best-fit),2×4 造成的空格由后续 2×2 回填,拖动排序始终无空洞 |
| 悬浮放大 | 多列网格同样支持,放大时行/列均按平面距离让位,间距恒定 |
连续波峰悬浮放大 · Continuous Magnification
macOS Dock 式悬浮放大,由离散阶梯升级为连续指数衰减:指针在 X/Y 平面运动时,波峰跟随平滑响应,四周所有组件(含上行下行)均参与,间距恒定,右侧不溢出。放大倍数可在设置中调节(1.0–1.4)。
内置部件 · Built-in Widgets
| 部件 | 说明 |
|---|---|
| 轮次·步数 | 会话轮次与步骤计数 |
| LLM / 工具时长 | 推理与调用累计耗时 |
| 首 token 延迟 | 平均 TTFT |
| 速率 | 解码吞吐(tok/s) |
| 缓存命中 | 输入缓存命中比例 |
| Tokens | 输入 / 输出 token 计数 |
| 上下文水位 | 系统/工具/消息三段占比条 + 明细;支持 2×2 与 2×4 两种尺寸 |
| 一键压缩 | 上下文占用百分比 + 右下角圆钮(双击执行 compact) |
| 任务 | 进行中 / 已完成 / 待办计数 |
| 用量热度图 | GitHub 式日历热力图,自记账每日用量 |
| 今日寄语 | 随机鼓励语录,可自定义文字/对齐/换行 |
组件市场 · Component Marketplace
- 展示全部组件(系统 + 外部),支持搜索、尺寸切换预览、按
组件@尺寸独立安装; - 已安装列表支持拖拽排序、配置编辑、
2×2 ↔ 2×4一键切换(自动去重,同组件同尺寸只保留一个); - 组件配置 tab 支持卡片级自定义(今日寄语、热度图窗口对齐等)。
OpenCode Go 用量 · Usage Monitor
滚动 / 每周 / 每月三个用量窗口 + 百分比 + 重置时间。Host 半注册同源路由代理 opencode.ai,浏览器不发跨域请求,密钥走 DSH credentials。
工作原理 · Architecture
-
部件注册表:
WIDGETS声明式描述符(id / 名称 / 尺寸 / 分组 / render),部件栏与设置页共用同一注册表,新增部件只需追加一条描述符; -
数据收集器:挂载在
conversation.composer.dockslot,该 slot 仅在活跃会话存在时渲染,天然充当「会话存在」信号; -
Host 半:
webServer+credentials两个服务,注册/api/opencode-usage同源代理路由; - 可逆清理:所有注册通过 fiber 的 effect 生命周期管理,卸载即恢复;
-
Slot 接入:
shell.overlay(面板)、conversation.session.header.utilities(胶囊开关)、settings.section(设置页)。
安装 · Installation
# 通过 npm(插件市场)
dsh plugin --profile web add harness-widgets
# 本地开发(link 方式)
dsh plugin --profile web add link:D:/dsh-home/plugins/harness-widgets
安装后硬刷新浏览器(Ctrl+Shift+R),在会话页头部点击「组件」胶囊即可展开右侧部件栏。OpenCode Go 部件需先在 Models 设置中配置 OPENCODE_GO_API_KEY。
开发 · Development
pnpm install
pnpm run build # tsdown 构建 lib/
pnpm run check # 类型检查 + 测试 + 构建
-
peerDependencies:@deepseek-ai/dsh-client-ui-slots、dsh-client-runtime(由 DSH web profile 提供); -
cordis.patch.yml插入一行widgets行,host 半与浏览器半分别由 loader 与 client-modules 加载。
兼容性 · Compatibility
- DeepSeek Harness
0.1.0-rc.6及兼容的后续0.1.x; - 通过
shell.overlay/conversation.session.header.utilities/conversation.composer.dock/settings.section等官方 slot 接入; - 与
dsh-better-sidebar右栏显式协调(共用--dsh-sidebar-width),卸载后无残留。
变更日志 · Changelog
常见问题常见问题
在启用了 DSH 的终端中执行已验证命令 dsh plugin --profile default add github:Physicolor/harness-widgets。命令会解析公开 package 元数据,并保持插件与本页展示的目录身份一致。
兼容性以页面上展示的 bundle 与 profile 状态为准。如果某个 profile 尚未检测到,请先保持禁用,并在生产启用前阅读仓库文档。
GitHub 链接和 activity 元数据是 release 与维护状态的来源。新版本发布后重新查看本页,确认目录已经观察到最新版本。