前言¶
在 DSH 中,agent 會調用 edit、write 與 str_replace_editor 修改文件。若沒有統一的審查入口,開發者需要在多個文件之間手動確認哪些改動保留、哪些改動回退。
dsh-diff-approval 提供一個側欄審查面板:它把成功的文件變更彙總成待處理列表,用整體文件 diff 展示差異,並支持按塊、按範圍、按文件或全部執行 Keep / Revert。
這是什麼¶
dsh-diff-approval 是一個 DeepSeek Harness(DSH)插件,定位爲 pending-edit review:它自動記錄成功的 edit、write 與 str_replace_editor 變更,並在側欄彙總爲待處理列表。
倉庫所有者是 9087,許可證爲 MIT。
核心功能¶
下面介紹已覈實的能力。
自動跟蹤與待處理列表¶
正常使用 agent 時,成功的 edit、write 與 str_replace_editor 變更會被自動記錄,並彙總到側欄的待處理列表。
整體文件 diff 視圖¶
面板提供整體文件 diff 視圖,包含語法高亮、+/− 計數、滾動條概覽、文件內搜索和虛擬化行。
Keep / Revert¶
支持在變更塊之間跳轉,並對單個塊執行 Keep 或 Revert。
也支持拖選行範圍後,對選中範圍執行 Keep 或 Revert。
支持按文件 Keep/Revert,以及 Keep all / Revert all。
撤銷、重做與快捷鍵¶
提供 Ctrl+Z / Ctrl+Y 的撤銷/重做。
支持以下快捷鍵:
Ctrl+D 快速打開審查面板
Esc 關閉面板
Ctrl+Tab 切換待處理文件
Ctrl+Shift+Tab 切換待處理文件
行引用與 composer¶
支持從 diff 選擇文本獲得 (file:line) 或 (file:start-end) 行引用,並可複製/按設置自動粘貼到 composer。
語言高亮與換行¶
支持自動檢測高亮語言、按語言覆蓋和按語言記憶自動換行。
對比視圖¶
支持可選的 side-by-side split view 對比視圖。
導入工作區版本控制變更¶
支持導入工作區 Git/SVN/Perforce 本地修改、刪除和可選 untracked 文件。
持久化¶
支持將 pending 狀態持久化到工作區文件並在重啓後保留。
安裝與啓用¶
先確認 DSH 環境中可以使用 dsh 命令。下面命令用於將插件添加到 web profile:
dsh plugin --profile web add dsh-diff-approval
安裝後,可以通過側欄底部的 Pending changes 操作進入審查面板。
典型用法¶
1、正常使用 agent 時,成功的 edit / write / editor(str_replace_editor) 調用會被自動記錄。
2、點擊側欄底部的 Pending changes 操作,查看每個文件的 diff 並執行 Keep / Revert。
3、當待處理列表爲空時,使用 Import workspace changes 導入工作區的 Git/SVN/Perforce 本地變更。
適用場景與注意¶
適合在 DSH 中審查 agent 產生的文件變更,尤其是需要逐個確認改動、保留部分修改或回退部分修改的場景。若工作區使用 Git、SVN 或 Perforce,也可以在待處理列表爲空時導入本地版本控制變更。
需要注意:
- 僅自動跟蹤成功的
edit、write與str_replace_editor變更;工具外刪除只會在已跟蹤文件中顯示File is gone,Revert 可恢復文件。 - VCS 導入通過 shell executor 運行只讀 Git/SVN/Perforce 命令,相關 CLI 必須位於 PATH。
- 導入 untracked 文件默認關閉,且會掃描整個工作區,大型目錄可能較慢。
- Reverting 一個創建的文件會刪除該文件,因爲 fs seam 沒有 delete API。
- Reverting 文件時會按當前行尾(LF/CRLF)保留並寫回。
- 無工作區會話的條目僅保存在內存;損壞的持久化文件會被拒絕,可刪除以重置。
- 側欄底部入口會與其他插件垂直堆疊,並在存在
dsh-footer-order插件時讓位。 - 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
結尾¶
經過上面的步驟,dsh-diff-approval 能把 DSH 中的文件變更集中到可審查、可撤銷、可批量處理的列表中。倉庫地址如下:
https://github.com/9087/dsh-diff-approval