DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

dsh-diff-stat

Diff Stat

在编辑/写入工具行内显示 +N −M 差异徽章,并为 DeepSeek Harness 提供每轮文件变更摘要卡片。PTC/code-dispatch 回退方案,无需 git。

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-diff-stat@0.1.9
README兼容性版本
turn summary card with per-file rows and inline preview

兼容性与来源证明

Diff Stat 以 dsh-diff-stat 发布,当前版本为 0.1.9。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.9stable
2026/9/10
0.1.8stable
2026/9/9
0.1.7stable
2026/9/3
查看其余 8 个版本收起版本
0.1.6stable
2026/9/2
0.1.5stable
2026/9/1
0.1.4stable
2026/8/31
0.1.3stable
2026/8/28
0.1.2stable
2026/8/26
0.1.1stable
2026/8/26
0.1.0stable
2026/8/25
0.0.1stable
2026/8/24

相关插件

正在加载相关插件…

最新版
0.1.9
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 7
周下载
233
安全扫描
✓ v0.1.9 扫描通过
最近提交
2026/9/15
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

DSH Diff Stat

English | 中文

DSH Diff Stat

A DeepSeek Harness Web plugin that visualizes agent file changes: inline +N −M badges on mutation tool rows, a per-turn file-change summary card, and full aligned diffs on click. Covers native edit/write calls, the opt-in str_replace_editor, and PTC dispatch sub-calls end to end. No git dependency, no third-party plugin dependencies.

demo

Features

  • Kernel target: harness ≥ 0.1.5-rc.1 — one build for that line only: the uiConversation event registry, tool.call.toolview keyed slot and conversation.chat.turnTail chain carry their 0.1.5-rc.1 shapes, and diff hunks are read from the tools' persisted wire meta. PTC dispatch arrives as tool/ptc-dispatch(-start); the retired tool/code-dispatch(-start) spelling is still matched so a session recorded before that rename keeps its card. Older kernels are NOT supported by this version — install dsh-diff-stat@0.1.8 (or an older release that covers them) on those kernels
  • Inline +N −M badges — takes over the stock mutation rows for edit, write and str_replace_editor (str_replace_editor is opt-in, off by default; keyed lower-priority shadow; uninstall restores stock). Counts are the real changed lines — the same LCS walk the diff renders — estimated from the arguments while running, exact once the result settles
  • Aligned diff window — expanding a row opens a height-capped scrollable unified view. Both sides are LCS-aligned first: shared lines render as up to ±3 lines of context around each change, untouched runs collapse into ⋯, and the footer counts exactly the rendered rows
  • Line-number gutters — the file view numbers its lines 1..N and the diff window pins each hunk to its real position in the current file (one cached fenced read, uniqueness-checked): deleted rows read the old side, context/added rows the new side, with the changed rows' accent bars. A hunk that cannot be located (host absent, drifted file, over budget) numbers window-relatively 1..N, so the gutter always renders
  • Per-turn summary card — a collapsible "N files changed +X −Y" bar at each turn's tail; per-file rows with type icons, directory, ±lines, review, open ▾ and undo. Same-file edits merge and accumulate in settlement order
  • PTC dispatch, end to end — dispatch sub-calls carry no wire diff view: rows fall back to the argument-derived diff, and the summary card joins their files from the stock chat tool tree, so a pure PTC turn still gets its card. callId dedup keeps replays from double-counting
  • File-context boost — bare argument fragments gain up to ±3 lines of real file context when expanded: the booster reads the file through the host's fenced API, locates the fragment's post-image and rebuilds the hunk (best-effort; unlocatable fragments keep their bare form)
  • Undo — reverts the turn's files to their pre-turn state: reverse uniqueness-checked hunk peeling, turn-start snapshots prove a file was CREATED (not overwritten) before its deletion, drifted files rejected before any write, atomic commits. Insert-only and pure-deletion hunks are safely refused per file (no content to peel back to)
  • Inline view & open-with — "open" expands a height-capped file preview below the row; the ▾ menu keeps system open, Explorer reveal, VS Code, and absolute/relative path copy
  • Frosted glass (optional) — with deepseek-harness-background installed, every plugin surface joins its shared glass recipe; without it the stock opaque look stays untouched — graceful degradation, zero third-party runtime additions (peer modules come from the harness)
  • zh / en — copy follows the Web UI language (locale service)

Screenshots

Turn summary cardTaken-over row & aligned diff
turn summary card with per-file rows and inline previewtaken-over edit row with badge and aligned diff

Per-turn card with review / open / undo per file (left); an inline badge with its aligned diff window (right), both under the optional background glass.

How it works

  • Badges & diffs: registers the edit/write/str_replace_editor keys of the tool.call.toolview keyed slot at priority −1 (shadows the shipped rows; str_replace_editor is opt-in). Row diffs follow the applied wire meta (oldText/newText with ±3 file context) with the call-time argument fallback for PTC sub-calls, so a truncated window that dropped the call head still renders from the result meta. The turn accumulator counts the same way, including meta-only settlements
  • Turn summary card: a ConversationNodeDefinition accumulator (turn/start, tool/call, tool/result(append), tool/ptc-dispatch — and the retired tool/code-dispatch spelling — plus -start evidence) publishes Turn data; the conversation.chat.turnTail chain claims rendering — modeled on the official ui-deliverables plugin. Dispatch files join from the stock chat tool tree, whose tool-call nodes already fold every dispatch into its root call's subCalls. A pure-compute run_code turn with no file mutations still claims (first-wins) and renders null — accepted, the select cannot see the join result. Cold-opened pure-PTC turns may miss the card (dispatch records carry no turn coordinate; best-effort)
  • Context boost: argument-derived hunks are marked by object identity at construction; on expand the booster reads the file through the fenced API (LRU-cached), locates the fragment's post-image and rebuilds the hunk with shared lines. Anything unlocatable renders as-is
  • Host half (optional): a same-origin prefix route serves a fenced API (files.read, capture-snapshot per turn, undo, open-with) — realpath containment checked before and after resolution, symlink rejection, UTF-8 round-trip validation, display reads capped at 512 KiB with a truncation flag, a 32 MiB undo gate, and atomic writes. The fence is checked before either opener runs: file-manager reveal then hands the resolved path to the harness's own sessionController remote (action: 'reveal'), while VS Code — which the harness exposes no equivalent for — stays a local spawn. When the host half is absent the dependent actions hide themselves
  • Frosted glass bridge (optional): a zero-dependency consumer of the background plugin's window.__DSH_BACKGROUND_GLASS__ registry — subscribing to its ready event (both arrival orders + hot reload); the bridge never appearing leaves the ordinary UI untouched

Install

# from npm
dsh plugin --profile web add dsh-diff-stat

# or from GitHub
dsh plugin --profile web add github:HaoyueQin/dsh-diff-stat

# restart dsh web to take effect
dsh web

Uninstall:

dsh plugin --profile web remove dsh-diff-stat

Development

pnpm install        # devDependencies; prepare builds lib/ automatically (runtime needs Node >= 22.18)
pnpm build          # host half → lib/index.js + browser half → lib/client.js (one tsdown run)
pnpm typecheck      # both halves via tsc
pnpm check:align    # diff aligner & data-model assertions (needs Node >= 23.6)
pnpm check:join     # tool-tree join fingerprint assertions (needs Node >= 23.6)

Kernel compatibility: this build targets harness >= 0.1.5-rc.1 only. Older kernels need an older plugin release — install dsh-diff-stat@0.1.8 there.

Activity

HaoyueQin/dsh-diff-stat GitStock K-Line Chart

License

MIT