DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Diff Approval — DeepSeek Harness 插件(DSH Plugin)
← Plugins

dsh-diff-approval

Diff Approval

DeepSeek Harness 插件:待处理编辑审查,支持整文件差异对比以及“保留/还原”

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-diff-approval@0.26.0
README兼容性版本
Markdown preview

兼容性与来源证明

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

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

版本

0.26.0
stable
2026/9/18
0.25.0stable
2026/9/18
0.24.1stable
2026/9/15
查看其余 33 个版本收起版本
0.24.0stable
2026/9/15
0.23.2stable
2026/9/15
0.23.1stable
2026/9/14
0.23.0stable
2026/9/14
0.22.2stable
2026/9/13
0.22.1stable
2026/9/13
0.22.0stable
2026/9/13
0.21.0stable
2026/9/12
0.20.1stable
2026/9/12
0.20.0stable
2026/9/11
0.19.3stable
2026/9/11
0.19.2stable
2026/9/10
0.19.1stable
2026/9/9
0.19.0stable
2026/9/8
0.18.0stable
2026/9/7
0.17.0stable
2026/9/6
0.16.0stable
2026/9/3
0.15.0stable
2026/9/2
0.14.1stable
2026/9/1
0.14.0stable
2026/8/31
0.13.1stable
2026/8/31
0.13.0stable
2026/8/30
0.12.0stable
2026/8/28
0.11.0stable
2026/8/27
0.10.0stable
2026/8/25
0.9.0stable
2026/8/24
0.8.0stable
2026/8/24
0.7.0stable
2026/8/20
0.6.0stable
2026/8/19
0.5.0stable
2026/8/18
0.4.0stable
2026/8/17
0.3.0stable
2026/8/16
0.2.0stable
2026/8/16

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 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-approval

English | 中文

A DeepSeek Harness (DSH) plugin for pending-change review: it automatically tracks every successful edit, write, and editor (str_replace_editor) mutation, folds them into a single pending list in the sidebar where each file's diff can be reviewed and kept/reverted — and it can also import the workspace's version-control repository's local changes (Git / SVN / Perforce) in one click.

Pending changes panel

The panel also collapses its file list into a floating card; while floating, each of its four edges — the left sidebar, the header above, the right sidebar, the composer below — can be chosen to be covered (all four is what used to be fullscreen, and covering nothing is a plain floating card), and it can dock as a tab in the right sidebar:

Two entries open it: the row at the sidebar foot, and a button in the Session header's right-hand controls — the cluster the app keeps its own per-session actions in (where "Download session log" lives) — so the review stays one click away with the sidebar collapsed or hidden.

Collapsed file listCovering everything
Collapsed file listCovering everything

For Markdown files, the source-line diff can also be shown as a rendered before/after preview:

Markdown preview

✨ Features

  • Diff view: syntax-highlighted whole-file diff with +/− counts, an overview ruler on the scrollbar showing where changes sit, and an in-file search (Ctrl+F, step with F3 / Shift+F3) that highlights matched words. Rows are virtualized, so huge files stay smooth.
  • Block navigation & decisions: jump between change blocks with Ctrl+↑/↓ (or the previous/next buttons) — the focused block flashes, navigation is anchored to the scroll position and wraps at the top/bottom. Hover a block to Keep or Revert just that block from a small actions frame that also shows its position (e.g. "2/5"); after a single-block decision, focus advances to the next block. The lead rows left above the jumped-to block are configurable in settings.
  • Selection frame: drag to select a range of lines and a frame appears to Keep / Revert exactly that range.
  • Per-file and bulk decisions: the files in the file list can be kept / reverted one at a time, or Keep all / Revert all from its footer.
  • Resolved files stay listed: once every change in a file has been kept/reverted, the entry remains in the list and the panel asks whether to remove it or keep it for later.
  • Undo / Redo: every keep, revert, and import is undoable with Ctrl+Z / Ctrl+Shift+Z (rebindable in Shortcuts; Ctrl+Y remains an alias), active while the panel is open — text inputs keep their own editing.
  • Quick summon & file cycling: Ctrl+D (configurable in settings) toggles the review panel from anywhere and Esc closes it; the panel is also one click away from the sidebar-foot row and from a button in the Session header beside the app's own controls; Ctrl+Tab / Ctrl+Shift+Tab cycle through the pending files.
  • Line references: select text in the diff — the status bar shows its (file:line) / (file:start-end) reference; click it (or press Ctrl+L) to copy, and with the setting on it auto-pastes into the composer and focuses it. References in the composer and queued messages are auto-aligned when the referenced file changes: surviving lines re-map to their new range, and a fully-removed line becomes (file:LINE_MISSING).
  • Highlight language: auto-detected from the file extension, or overridden from a dropdown.
  • Auto-wrap: a "Wrap lines" toggle beside the language selector wraps long lines for that language (CJK breaks between characters, Latin words stay whole), remembered per language.
  • Side-by-side split view: an opt-in two-column diff (left "before" | right "current"), line-aligned with per-side horizontal scrolling and a shared vertical scrollbar. Toggle it from the toolbar or in settings (default: single-column unified view). In split view, changed blocks are aligned by content similarity and changed lines show intra-line word diffs — whole words for Latin text, per-character for CJK.
  • Markdown preview: for Markdown files, toggle between the source-line diff and a rendered before/after preview (Preview / Source). The preview content max width is configurable.
  • Customizable appearance: from the "Diff view" settings group, adjust the diff's code font size (%), line height (px), and the added / removed line colors, with a live preview.
  • External changes: files already in the pending list are monitored — if one is later modified outside the reviewed edits (another tool, an editor), the panel adopts the new content and flags the divergence.
  • Open / Reveal: while reviewing a file's diff, open it in its default app or reveal it in the system file manager with one click.
  • Import workspace changes: when the list is empty, click the button to import the workspace's local changes from Git / SVN / Perforce — modified, deleted, and (opt-in) untracked files. The VCS root is found by walking up from the workspace, so a workspace inside a subdirectory works too.
  • Settings: a "Diff Approval" section in DeepSeek Harness settings, grouped into Diff view (code font size, line height, added / removed colors), Shortcuts (rebind the panel's keyboard chords), and Floating coverage (the same four edge switches the panel's own popover offers) plus preferences for auto-paste on copy, whether untracked files are included when importing, the diff's tab width (2 / 4 / 8 spaces), the side-by-side split view, the block-jump lead rows, the Markdown preview default and width, and the quick-summon chord.
  • Persistence: pending state is stored per workspace at <dshHome>/diff-approval/workspaces/<workspaceId>.json and survives restarts — unhandled changes are still there when you come back, even in a fresh session.

📦 Install

If dsh is on your PATH:

dsh plugin --profile web add dsh-diff-approval

Or, if you run the harness through npx (e.g. npx @deepseek-ai/dsh web):

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

or manually: add the package to your profile's package.json dependencies and insert this row into the profile's cordis.patch.yml:

- insert:
    - id: diff-approval
      name: dsh-diff-approval
      # Optional: relocate durable pending state (defaults to
      # <dshHome>/diff-approval/workspaces).
      # config:
      #   storageDir: ~/dsh-pending

Then restart dsh web.

🚀 Usage

  1. Work with the agent as usual — successful edit / write / editor (str_replace_editor) calls are recorded automatically.
  2. Click the Pending changes action at the sidebar footer, review each file's diff, and Keep / Revert.
  3. When the list is empty, Import workspace changes pulls in the workspace's local Git/SVN/Perforce changes.

📝 Notes

  • Only tracked mutations (edit, write, and str_replace_editor editor calls) are recorded automatically. Deletions made outside these tools (e.g. shell rm) are sensed only for tracked files: the entry turns "File is gone" and its Revert restores the file.
  • The VCS import runs read-only Git/SVN/Perforce commands through the deployment's shell executor, so the respective CLI must be on PATH. Importing untracked files (default off) scans the whole workspace, which can be slow on large trees.
  • For a newly-created file, the whole-file revert action reads Delete and removes the file.
  • Reverting a file writes it back with its current line endings (LF / CRLF) preserved.
  • Sessions with no workspace keep their entries memory-only; corrupt persistence files are rejected and can be deleted to reset.
  • The sidebar footer entry stacks vertically with other plugins' footer actions and defers to the dedicated dsh-footer-order plugin when it is present.

🛠 Development

corepack pnpm install
pnpm run typecheck   # tsc over both faces
pnpm run build       # emits lib/index.js and lib/client.js
pnpm test