When debugging agents in the Web interface of DeepSeek Harness (DSH), the agent modifies files using the edit or write tool. As conversations become lengthy, it becomes difficult to track specific code changes in the chat stream, and the risk of accidental actions increases. dsh-changes-panel is a plugin designed to solve this problem. It provides a real-time panel inside the conversation interface for displaying file changes.

Core Features

Entry and Layout
The panel entry is the diff tab in the conversation tab bar, with a badge showing the number of changes. The panel is located inside the conversation interface, directly to the right of the header. When opened, the chat area shifts left as a whole (by adding margin-right to [data-conversation-scroll]), while the header and tab bar remain in place. The panel does not form a separate framework-level column and does not cover the header.

Width Adjustment
The left edge of the panel supports dragging to adjust the width, ranging from 220–640px. It always reserves ≥320px of width for the chat area. The width is preserved across session switches.

Auto-Expand Logic
The panel is collapsed by default. It automatically expands only when the session workset changes from empty to non-empty (when actual changes appear), and automatically collapses after the changes are cleared. Creating a new session, switching sessions, refreshing the page, or a user query does not trigger expansion. After manual close, it stays closed until the changes are cleared. The In-workspace and Out-of-workspace sections automatically expand/collapse based on changes.

File List and Diff
Each file row lists the A/M status, path (relative/absolute), and +N -M statistics by default. A indicates a file added in this session, and M indicates an existing file has been modified. Clicking a file expands the diff details, with support for scrolling context lines. Diff rendering uses the official code font, with + in green and - in red. Individual files support “Full Screen” viewing.

Actions and Baseline Updates
The bottom action bar supports selecting files and then performing “Accept” (removes only from the panel) or “Revert” (writes the baseline content back to disk). The label rows of the two sections include select-all checkboxes (clicking deselects when already selected, and the checkbox is disabled when the section is empty). After an item is accepted or reverted, the next change to that file will be displayed as a diff using the current state as the new baseline.

Workset Isolation
Worksets correspond one-to-one with top-level sessions. Changes from sub-agents are attributed to their parent session. They are cleaned up when the session is deleted.

Theme Adaptation
The dark theme uses official --dsw-alias-* tokens and automatically follows the light/dark theme.

Installation and Activation

  1. Enter the plugin directory, install dependencies, and build:
    pnpm install
    pnpm build
  1. Add the dependency to the current DSH Profile’s package.json:
    "@dsh-external/dsh-client-changes-panel": "link:<本目录的绝对路径>"
  1. Reinstall dependencies and restart dsh web to take effect.

Typical Usage

  • Click the diff tab in the conversation tab bar to open the panel.
  • Click a file entry to expand the diff details.
  • Select files and use the bottom action bar to “Accept” or “Revert”.
  • Worksets correspond to top-level sessions, and sub-agent changes are attributed to the parent session.

Notes

  • Deleted Status: The first version of this plugin does not track deletions (D); it only supports additions (A) and modifications (M).
  • Persistence: The workset is currently kept in host memory. It is not lost after a page refresh, but it is cleared when dsh web is restarted.
  • Reverting Additions: Reverting an added file currently only writes back the baseline (empty content), leaving an empty file instead of deleting the file.
  • Width Persistence: Drag-adjusted width is currently preserved only within the page lifecycle.

Brief Summary

This plugin helps developers clearly manage agents’ file modifications through git-style diff display and in-session actions, reducing the risk of accidental changes. Plugin repository: GitHub