DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Review Float — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@calltelemetry/dsh-review-float

Review Float

用于 DeepSeek Harness 的浮动 PR/审查状态栏:一个带有停靠式详情窗格的 shell.overlay 栏,以及一个展开式审查看板。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @calltelemetry/dsh-review-float@0.16.0
README兼容性版本

兼容性与来源证明

Review Float 以 @calltelemetry/dsh-review-float 发布,当前版本为 0.16.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/10/16

版本

0.16.0stable
2026/9/28
0.15.0stable
2026/9/28
0.14.0stable
2026/9/28
查看其余 20 个版本收起版本
0.13.0stable
2026/9/28
0.12.0stable
2026/9/28
0.11.0stable
2026/9/28
0.10.0stable
2026/9/28
0.9.0stable
2026/9/28
0.8.0stable
2026/9/28
0.7.0stable
2026/9/28
0.5.0stable
2026/9/28
0.4.0stable
2026/9/28
0.3.2stable
2026/9/25
0.3.1stable
2026/9/25
0.3.0stable
2026/9/25
0.2.1stable
2026/9/25
0.2.0stable
2026/9/24
0.1.5stable
2026/9/24
0.1.4stable
2026/9/24
0.1.3stable
2026/9/23
0.1.2stable
2026/9/23

相关插件

正在加载相关插件…

最新版
0.16.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
344.9 kB
文件数
15
Surface
web
许可证
MIT
发布源
npm
周下载
55
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
0.1.1
stable
2026/9/23
0.1.0stable
2026/9/23

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Experimental Inspector@deepseek-ai/dsh-experimental-inspector用于 Host 调试和 Client Runtime 检查的实验性跨 realm CDP hubExperimental Inspector Profile@deepseek-ai/dsh-experimental-inspector-profile用于原始 Session 日志和 Chat 节点检查的可选 Web 捆绑包

README

dsh-review-float

A frame-wide floating PR / review status bar for DeepSeek Harness (dsh).

dsh plugin --profile ctweb add @calltelemetry/dsh-review-float

Published to npm under the @calltelemetry scope, so it installs by version. No git credential is required to consume it.

Listing the package in dsh.profile.bundles is the entire mount, because it ships its own cordis.patch.yml (dsh.bundle.patch):

"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "@calltelemetry/dsh-review-float"]

No hand-edited profile patch is ever required — a - id: review-float row would duplicate the loader entry and crash boot. In the Call Telemetry workspace this mount is owned by DSH_THIRD_PARTY_PLUGIN_PINS in scripts/ct-meta/sync.py, which renders the pin and installs it in one change (ADR 0656). Restart the profile afterwards.

What it does

It registers one additive entry into the shell.overlay list slot — the seat the layout package documents as "a badge, a toast stack or a status pill … the layer itself is click-through — entries opt back into pointer events."

StateSurface
BarAlways-on pill above the composer: N running · M need you, then per-PR chips
Docked paneClick a chip → 460px panel with exact head SHA, verdict, CI, progress, findings
Exploded boardClick Board → four columns: Running / Ready to merge / Needs you / Queued

The live bar over a real session

Live, not mocked: 14 real open PRs with the Review Yeti verdict read from each head's check run. docs/shots/ also has the docked pane and the exploded board; docs/prototype.html is the standalone design prototype.

Development

npm install          # TypeScript only; no bundler required
npm run build        # tsc -> src/ transpile -> module-loader bundle in lib/
npm run check        # exits 1 if the committed lib/ has drifted from src/

src/ is the source of truth. lib/ is committed on purpose: a link: or git install consumes the built bundle directly, and dsh-client-modules requires lib/client.js to exist before launch. npm run check is what keeps that trustworthy.

Layout

src/client.ts          browser half — the bar, pane, and board
src/index.ts           host half — empty apply, so the package owns a Loader row
src/types/platform.d.ts  ambient `react` (a PLATFORM_MODULES baseline module)
src/types/harness.d.ts   ambient client context (slots + effect)
scripts/build.mjs      real build: tsc transpile + module-loader envelope
cordis.patch.yml       dsh.bundle.patch — the self-mounting loader row

No bundler. tsc transpiles src/ and scripts/build.mjs wraps the output in the window.__ModuleLoader__.load({id, factory}) envelope that every shipped @deepseek-ai/dsh-client-ui-* package uses (they use tsdown for the same job). The plugin requires only react, which the shell provides from its frozen PLATFORM_MODULES baseline — so there is no second React copy and no dsh.client.external entry.

Design constraints honoured

  • Additive, not a takeover. shell.overlay is a list slot; the entry carries a plugin-owned id (review-float), never a core row id.
  • Click-through. The root stays pointer-events: none; only the bar, the pane and the board opt back in, so the app underneath is never blocked.
  • Theme-native. Every colour is a --dsw-alias-* token with a literal fallback, so it follows light/dark automatically.
  • Read-only viewer. It renders review status and never dispatches review work, opens a second reviewer, or posts to GitHub. The detail pane carries a visible policy note saying so, and it deliberately does not compete with the official Review Yeti action.

Data sources

The bar is fed by the host half, which serves one read-only snapshot on the shared /api channel (/api/review-float.snapshot). The browser half polls it every 20s through connection.rpc. The browser never holds a credential and never talks to GitHub directly.

Two independent sources, deliberately:

SourceSuppliesRequired?
GitHub GraphQLPR identity, exact head, CI ratio, and the Review Yeti verdictyes
Review Yeti MCPThe live phase of in-flight reviews, and per-finding severity (P0/P1/P2) for the detail paneoptional

Where live progress actually comes from

get_review_status reads review_runs.stage from Postgres and returns a live phase — queued, evaluating_personas, arbitration, completed. In-flight rows are enriched from it, so the bar shows real state while a review is running (observed live: #5149queued, #3414queued).

This is deliberately not an event stream. The bot's LiveStreamBus is a process-local singleton fed only by the worker execution path, and review workers run as separate pods, so no SSE route can deliver their progress across a process boundary. The phase above is durable Postgres state, which is why it works without any event plane.

The query is bounded: running rows only (typically 1–6, not the full list), fanned out in parallel. If the MCP is unreachable the row keeps the phase parsed from the check-run summary rather than losing the field.

The Review Yeti verdict is a GitHub check run named Review Yeti on the exact head, so verdict and CI arrive in one call — no extra dependency. That is why the surface still renders fully when the MCP token is absent: rows simply carry no finding severities, and the snapshot says so.

EnvEffect
CT_AGENT_GH_TOKEN / GH_TOKEN / GITHUB_TOKENGitHub credential, most explicit first
(none set)falls back to gh auth token — the operator's existing login
REVIEW_YETI_MCP_AUTH_TOKENoverrides the Doppler-resolved finding-severity token; never required

An absent GitHub credential renders review feed unavailable with the reason, never fabricated rows. An org with zero open PRs renders no open PRs — a distinct state from an unreachable feed.

No token setup required

REVIEW_YETI_MCP_AUTH_TOKEN is a first-class entry in ct-meta's MCP catalog (ct-meta/mcp-servers.json), whose canonical source is the Doppler project review-yeti / config prd. Agents get it through that catalog; this plugin resolves it directly from the same source, so nothing has to be exported.

Order: an explicit REVIEW_YETI_MCP_AUTH_TOKEN in the environment (a caller override), then doppler secrets get … --project review-yeti --config prd. Memoised on success only, so a doppler login performed after the page opened starts working without a restart.

If neither resolves, the bar still renders every verdict and CI ratio (those come from the GitHub check run); only finding severities go away, and the detail pane names both sources it tried rather than showing an empty list.

Verified

Built and checked against dsh@0.1.5-rc.2 / cordis@4.0.2 / Node 24.21.0 / tsc 5.

  • Live phase verified end-to-end: with no credential in the environment, the bar rendered #5149queued, #706queued, #3416queued, #3414queued and #786queued while those reviews were running, matching get_review_status.

  • Published artifact verified: 0.1.2 was extracted from the registry and a clean unauthenticated consumer install was confirmed to carry the live-phase code — the check is a symbol grep, not a version string.

  • dsh-plugin-check (strict): 19/20 pass, 0 checks failed. The single non-pass is not-in-hub, an external catalog-intake check that a private repository cannot satisfy.

  • Live data verified against GitHub truth: cisco-cdr#5144 reads BLOCKED where its Review Yeti check is fail; ct-meta#3384 reads SHIP where it is pass. 14 open PRs across the org render with real head SHAs and CI ratios.

  • Booted a full ctweb clone: bundle served HTTP 200, plugin self-mounted from dsh.profile.bundles with no manual patch row.

  • Rendered in a real browser (headless Chrome over CDP, DOM assertions not screenshots): bar mounted, 14 chips, lead 3 running · 2 need you; clicking a chip opened the pane with the real head SHA (cisco-cdr#5144 → b9e6cc6); Board opened all four columns. Zero console errors.

  • Load: snapshot steady at ~2.5-3s over 5 sequential calls; 5 concurrent calls did not serialize destructively (3.4-3.9s each). A 30-poll soak run back-to-back returned 200 on every call with zero RSS growth, and GitHub's GraphQL limit was still 5000/5000 afterwards — one call per poll is ~180/hour against a 5000/hour ceiling, so a single tab has ~28x headroom.

  • Degradation is honest: with the MCP token absent, sources.yeti reads false and the findings endpoint returns finding detail off — set REVIEW_YETI_MCP_AUTH_TOKEN rather than an empty list. With it present, ct-release#1718 and ct-infrastructure#657 both returned real ["P2"] severities.

Headless-browser verified: bar mounts (pointer-events: auto over a none layer), chip click opens the pane at 462px with the head SHA shown, Board explodes to 4 columns, zero console errors.