Preface

When running a task with DeepSeek Harness (dsh), an agent often modifies multiple files consecutively in the workspace. You can see the tool calls in the chat, but to confirm exactly what was changed in this round, you have to dig into the workspace, compare diffs manually, or pull the changes into an editor to review them. The more changes you make, the higher the risk of missing a line or accidentally overwriting a section.

dsh-file-review brings this workflow into the web interface: files that the agent has just modified will appear at the end of the current turn. You can click to view the line-numbered unified diff, and even undo the text changes from this round if needed. It is a community-maintained UI enhancement plugin, not a built-in official DeepSeek feature. This article is compiled after cross-checking the community directory page, GitHub repository, npm package, and source code: explaining what it is, what it can do, how to install it, and how to use it.

What it is

dsh-file-review is a file review plugin for the DeepSeek Harness web interface, maintained by GitHub user left0ver, licensed under MIT, and primarily written in TypeScript. The community directory categorizes it under “UI Enhancements”, with a one-sentence description: Review files the agent just modified, see diffs at a glance.

The repository README provides more details: You can review every file the Agent just modified without leaving the DeepSeek Harness web interface. The npm package description states: View the files generated in each round of Harness in a line-numbered unified diff drawer. The current npm version is 0.3.1 (released 2026-08-15). As of the time of this article’s verification, the GitHub repository has 16 stars; the community directory page previously listed 11, so refer to the repository page for the latest count.

The official positioning of DeepSeek Harness is “everything is a plugin”: models, tools, sessions, sandboxes, and UIs can all be replaced as plugins. dsh-file-review attaches to the end of a web chat turn, adding a review panel for the question “Which files were written in this round”. The DeepSeek Harness Plugin Repository that hosts it is an independent community site, not officially affiliated with DeepSeek / HyperMind, and should not be treated as an official app store.

It solves very specific problems:
- Which files did the agent create or modify in this round
- Which lines were changed relative to the original version of each file
- If you made a mistake, can you undo the text changes from this round

Core Features

The repository README lists two capabilities, which align with the source code and UI copy.

1. Output file list and diff panel for the current turn

The plugin listens for successful file changes in the current turn, rather than looking for filenames mentioned in the model’s closing remarks. The judgment basis in the source code is the display form of the tool result: a diff card, or a generic card with kind set to edit (such as insertions from str_replace_editor). Read, delete, and failed calls will not appear in the list — reading a file does not “produce” a file, and there is no openable object after deletion.

If a path is written and then modified in the same turn, only the final entry will be retained, ordered by its first appearance. An “Edited Files” card will appear at the end of the chat turn, where you can click on a specific file to review it, or review all output files. When clicked, a resizable review panel will open (double-click to restore default size), displaying a unified diff with old/new line numbers: added lines, deleted lines, and context lines are displayed separately, and large unchanged sections can be collapsed. The panel also shows “Added / Deleted lines”, copy diff, and open the current file in the editor.

The host side will also add a note to the system prompt: After the model successfully creates or modifies a file, it should write the exact path (or the only filename in the current turn) using Markdown inline code in the final reply. This way, filenames in the closing text can also be clicked. If two files have the same basename, the inline code will not guess incorrectly, avoiding clicking on the wrong file.

2. Undo / reapply the text changes from this round

The review panel provides “Undo” and “Reapply”. Undo targets the text hunks that have been written to disk in the current turn, not the entire Git history, nor workspace snapshots across turns.

The host service will perform maintenance writes when the agent is idle (agent.runMaintenance), and there are several hard limits, all documented in the source code:
- The path must fall within the current session workspace, and cannot escape the workspace after parsing
- Symbolic links are not supported, only regular files are processed
- Files must be valid UTF-8 text; binary files will be rejected outright
- There must be a complete, bidirectionally restorable diff; mismatches, simultaneous matches for both undo and redo directions, or files modified externally during the write process will be marked as conflicts or unsupported, and will not be overwritten forcibly

If a file cannot be restored safely, the interface will prompt “No safely restorable files in this change” and skip that part, rather than pretending the entire operation succeeded.

Installation and Activation

The installation command given on the directory page is as follows, run it in the DeepSeek Harness terminal:

dsh plugin add github:left0ver/dsh-file-review

This is a web-only plugin. The author’s README requires explicitly specifying the web profile, and also provides the npm package name for installation:

dsh plugin --profile web add dsh-file-review

The equivalent installation method from GitHub:

dsh plugin --profile web add github:left0ver/dsh-file-review

After installation, start the web interface:

dsh web

The README badge indicates compatibility with DeepSeek Harness 0.1.x. The peerDependencies in package.json restrict the host package to >=0.1.0-rc.5 <0.2.0, with dsh.client.platform set to web. Do not expect it to appear in pure terminal TUI sessions.

pnpm Cool-down Period

Newer versions of pnpm will block newly published packages. To install the latest version from npm, the README requires first editing ~/.dsh/profiles/web/pnpm-workspace.yaml and adding the package name to the exclusion list:

minimumReleaseAgeExclude:
  - dsh-file-review

Pin Commit Hash

The directory page reminds: For reproducible installations, pin the commit hash. The syntax is to add #commit after the repository specifier. As of the time of this article’s verification, the latest commit on the repository’s main branch is 4e4e17ce8e1b1811ba280dcd3c50ad7f1ff07532 (2026-08-15), which can be written as:

dsh plugin add github:left0ver/dsh-file-review#4e4e17ce8e1b1811ba280dcd3c50ad7f1ff07532

When using the web profile, add the same #commit to the end of the --profile web command from the README. After pinning the hash, subsequent pushes to the repository will not silently replace your installed code the next time you update.

Install from Source, Update, and Uninstall

Install from source (author documentation):

git clone https://github.com/left0ver/dsh-file-review.git
cd dsh-file-review
pnpm install
pnpm run build
dsh plugin --profile web add ${PWD}

Update and uninstall:

dsh plugin --profile web update dsh-file-review
dsh plugin --profile web remove dsh-file-review

Both the directory page and README state that the plugin runs with the permissions of the current dsh process, and may execute code during installation. You should inspect the source code repository and license before installing.

Typical Usage

The author outlines the workflow in four steps: Chat → Generate → Click a changed file → Review. You can walk through this process as described in the repository documentation.

  1. Open the web interface with dsh web, send a task in a session with a workspace, and ask the agent to create or modify files, such as editing a source file or adding a configuration snippet.
  2. Wait for the turn to finish. If successful writes/edits occurred, an “Edited Files” card will appear at the end of that chat turn, listing the output paths from this round.
  3. Click “Review” on a specific filename, or click “Review all output files”. A review drawer will open on the right (or bottom, depending on the panel layout), displaying the line-numbered unified diff and added/deleted line statistics. Unchanged context is collapsed by default, and can be expanded.
  4. Use “Open in Editor” when you need to reference the full file, or “Copy Diff” when you need to save the diff for later.
  5. If you confirm that you made a mistake in this round and the file is still restorable UTF-8 text, click “Undo”. After a successful undo, you can use “Reapply” to restore the changes. Do not expect immediate writes while the agent is still running; the host will wait for the maintenance window.

If the model writes a path (or the only filename in the current turn) using inline code in its closing remarks, that text itself will be clickable, with the same effect as clicking the open action on the card.

Applicable Scenarios and Notes

It is suitable for these situations:
- You regularly use DeepSeek Harness web to have agents edit code, configurations, or documents, and want to verify the diff of this round on the spot
- Changes are concentrated in text files, and you need to view additions and deletions line by line, rather than just looking at a tool call summary
- You want to immediately undo the text changes from this round after making a mistake, without switching to an external Git tool

Please note the following points, all from the directory page, README, or source code, not additional speculation:
1. Only supports the web profile. package.json declares platform: web, and even if installed on terminal TUI or other profiles, this set of cards and drawers will not appear.
2. Review scope is limited to successful changes in the current turn. Read, delete, and failed calls will not appear in the list; dirty workspace states across turns or changes not included in the tool’s locations will not be automatically added by the plugin.
3. Undo is not Git revert. It restores text to the disk based on recorded hunks, and must strictly match the current content. Binary files, symbolic links, paths outside the workspace, incomplete diffs, or files modified externally will all fail or be skipped.
4. Host version compatibility required. The README specifies DeepSeek Harness 0.1.x; peer dependencies are locked below 0.2.0. Before upgrading to an incompatible host version, check if the plugin has been updated synchronously.
5. Permissions and supply chain. The plugin runs with the permissions of the current dsh process, and may execute code during installation. The community directory is not an official store. Read the repository source code and MIT license before installing; for reproducible environments, pin the commit hash, do not rely solely on the package name.
6. Do not confuse with similar plugins. There are other review-style plugins in the community such as dsh-change-review, dsh-review-loop, and dsh-revdiff, which have different tracking scopes, entry points (web / terminal / command), and whether they can feed back opinions to the agent. This article only covers left0ver/dsh-file-review.

Summary

dsh-file-review adds a very narrow UI feature to DeepSeek Harness web: showing which files the agent modified in this round, what the diff looks like, and whether you can undo the text changes from this round. It does not replace Git, nor does it build cross-session code review pipelines. It only keeps the “just finished modifying, check right now” workflow right next to the chat.

Repository and resource links:
- Community Directory: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-file-review/
- GitHub: https://github.com/left0ver/dsh-file-review
- npm: https://www.npmjs.com/package/dsh-file-review
- DeepSeek Harness: https://github.com/deepseek-ai/deepseek-harness