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.

Bundle 已验证 MIT TypeScript 未知
Bundle 已验证

已收录

2

Ui

Bundle 已验证

版本未知
语言TypeScript
许可证MIT
在 GitHub 查看

预览

第 1 个预览,共 2 个:Physicolor/harness-widgets
第 2 个预览,共 2 个:Physicolor/harness-widgets

功能介绍

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.

Latest release Total downloads GitHub stars MIT License Supported: DeepSeek Harness 0.1.x

Harness Widgets 预览

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.dock slot,该 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 元数据,并保持插件与本页展示的目录身份一致。