DSH Hub
dsh-diff-stat cover

HaoyueQin/dsh-diff-stat

dsh-diff-stat

UIWeb UI1 GitHub stars· updated 2026-08-27

DeepSeek Harness web plugin: inline +N −M diff badges on edit/write tool rows and a per-turn file change summary card. Scroll-windowed diffs, PTC/code-dispatch fallback, undo — no git required.

Install

npx @deepseek-ai/dsh plugin --profile web add dsh-diff-stat

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-diff-stat DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-diff-stat.svg)](https://dshhub.dev/plugins/dsh-diff-stat)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from HaoyueQin/dsh-diff-stat, cleaned of badges and images.

DSH Diff Stat

English | 中文

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 minimal preset's str_replace_editor, and Code Dispatch (PTC) sub-calls end to end. No git dependency, no third-party plugin dependencies.

Features

  • Inline +N −M badges — takes over the stock mutation rows for edit, write and str_replace_editor (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 from the result view once settled
  • 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
  • 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
  • Code Dispatch (PTC), 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 Code-Mode turn still gets its card. subCallId 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, created files deleted, drifted files rejected before any write, atomic commits
  • 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 dependencies
  • zh / en — copy follows the Web UI language (locale service)

Screenshots

Turn summary cardTaken-over row & 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

Related plugins