Native interactive Git diff review for DeepSeek Harness with structured annotations sent back to the current Agent session.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:BrambleXu/dsh-revdiff
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README

Native interactive diff review for DeepSeek Harness. The plugin reads a Git unified diff, parses it into files, hunks, and line locations, presents its own terminal review interface, and queues submitted annotations as the Agent's next durable follow-up turn.
Why this exists 💡
Reviewing a diff in a separate tool breaks the connection between the change, the review context, and the Agent that will act on the feedback. dsh-revdiff keeps review inside Harness, so annotations are created against the actual Git diff and returned to the same durable session.
Features ✨
- Review tracked working-tree, staged, unstaged, or base-revision changes with optional path filters.
- Navigate between files, hunks, and diff lines from an interactive terminal.
- Add, edit, and delete issue, suggestion, question, or praise annotations.
- Submit structured annotations to the current Agent through
agent.followup()with message provenance. - Configure Git execution, diff context, size and time limits, terminal grace period, and comment length.
Install 📦
Add this checkout to a Harness profile:
dsh plugin --profile demo add ./dsh-revdiff
The only external runtime requirement is Git in the same execution world as Harness.
Use 🚀
/revdiff
/revdiff --staged
/revdiff --unstaged
/revdiff main
/revdiff --base main -- src/index.ts README.md
The default reviews all tracked working-tree changes against HEAD, including staged and unstaged changes. --staged reviews the index, --unstaged reviews only worktree changes relative to the index, and a base revision reviews the working tree against that revision. Put path filters after --.
The Harness process must own an interactive terminal. The review interface supports:
↑/↓ork/j: move between diff linesn/p: move between hunks]/[or→/←: move between filesa: add an issue, suggestion, question, or praise annotatione: edit the selected line's annotationd: delete the selected line's annotations: submit annotations to the current Agentq, Escape, or Ctrl-C: cancel without sending a message
Annotations retain the file, old/new side, line number, selected code, kind, and comment. They are sent through agent.followup() with dsh-revdiff message provenance, so the review enters the same Harness session rather than an external side channel.
Configure ⚙️
Override the inserted row in a later Harness patch layer:
- id: dsh-revdiff
name: dsh-revdiff
config:
gitBinary: git
contextLines: 3
maxDiffBytes: 2097152
diffTimeoutMs: 30000
graceMs: 2000
maxCommentLength: 4000
Develop 🧑💻
pnpm install
pnpm run check
Scope 🎯
Version 0.1 reviews textual changes already represented by git diff. Untracked files, binary patches, side-by-side rendering, mouse input, and a browser-hosted review surface are not included yet. The review engine and annotation model are owned by this project so those capabilities can evolve for Harness without following another review tool's interface.
License 📄
MIT
Credits 🙏
The product idea is informed by pi-diff-review and revdiff, but this is an independent implementation built specifically around Harness commands, managed subprocesses, Agent lifecycle, and message provenance. It does not install, execute, wrap, or parse output from revdiff.
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-git-graph★ 8076
Git branch selector and Git graph for the dsh web GUI: switch branches and explore branch-lane and commit history from the conversation header.
Akimiya-z/codex-guard#dsh★ 139
Pre-submit pull-request hygiene checks inside DeepSeek Harness: scans the current diff for TODO leftovers, hardcoded secrets, and non-conventional commit subjects.
Cerbur/clutch-dsh#clutch-dsh-worktree★ 28
Adds a Worktree view to DSH Web UI that groups Sessions by Git worktree while keeping DSH as the source of truth.
lehhair/dsh-diff-viewer★ 27
PiUI-style diff viewer replacing the stock DiffBlock for write/edit tool calls.
DietCokewithSugar/dsh-user-experience★ 20
Finds potential UX issues in your project: automatically reviews React/TypeScript code, pinpoints each problem, and gives concrete suggestions.
DamonKoy/dsh-web-ui#dsh-git-graph★ 19
Git branch selector and Git graph in the conversation header of the dsh web GUI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.