dsh-change-review:在 DSH 會話內追蹤 write/edit 並以 diff 審查

前言

在 DeepSeek Harness(DSH)裏跑智能體會話時,模型會通過 writeedit 工具改文件。一輪對話下來,改動往往分散在多個路徑,單靠終端日誌或事後 git diff 很難按「這一輪改了什麼」來覈對。

下面介紹的 dsh-change-review(維護者 cirelir)是 DSH 社區目錄中的一款客戶端插件,在 Web 界面裏自動記錄會話內的文件寫入與編輯,用行級 diff 展示變更,並支持按會話隔離、子代理聚合和 SSE 即時推送。當前版本 v0.3.0GitHub 上約 9 stars、2 forks,許可證爲 MIT。

這是什麼

一句話定位:會話級修改審查插件——監聽 write / edit 工具調用,保存前後內容與時間戳,在瀏覽器裏渲染可自定義顏色的行級 diff。

一個 npm 包同時攜帶 Host 邏輯與瀏覽器 UI(dsh.bundle + dsh.client manifest),面向 dsh --profile web 的 Web 配置,不適用於純 CLI 場景。

核心功能

自動追蹤與 diff 展示

插件監聽會話中的 writeedit 調用,記錄每次操作的前後快照。展示層用 LCS 行級 diff:新增行(綠)、刪除行(紅)、上下文行(灰),兩側帶行號。

會話隔離與子代理聚合

每個會話只審查自己的變更;切換會話即切換審查範圍。子代理(subagent)產生的改動會沿 owner 鏈彙總到根父會話,避免在子會話裏漏看文件修改。

SSE 即時推送

Host 通過 SSE(/diff-review/events)推送事件,客戶端只處理當前會話的更新。「審查」標籤上的待審文件數會隨改動即時遞增,無需輪詢。

會話級與單輪審查

「審查」標籤(位於「對話」與「軌跡」之間)提供會話範圍的文件列表與 diff 預覽。左側按目錄分組列出文件(含 write/edit 次數與約增刪行數),右側展示選中文件的 diff;兩側滾動獨立。頂部切換可限定爲此會話最新一輪

每輪對話結束後,該輪尾部會出現本輪變更審查卡片,列出本輪改動的文件,可展開 diff 並對單次操作撤回。會話累計變更仍在「審查」標籤中,兩處視圖互不替代。

撤回修改

所有撤回操作需確認,並直接寫回磁盤:

  • 撤回此項:針對某次 write/edit,恢復到該次操作前的內容;後續不重疊的改動保留,重疊時拒絕並提示。
  • 撤回全部修改:將文件恢復到本會話首次記錄前的狀態;若文件是會話內新建的,則刪除該文件。

升級前創建、未保存內容快照的記錄無法撤回(界面不顯示撤回按鈕)。

顏色自定義

Settings → 修改審查 下可配置 12 項顏色(含增刪行背景/文字、上下文、行號、徽章、單輪卡片等),每項帶 rgba 透明度滑塊,支持淺色/深色預設與恢復默認。配置保存在 localStorage(鍵名 dsh.diff-review.colors)。

其他界面行爲

插件會隱藏左側邊欄中的 Cordis 插件運行指示器(cordis-panel),減少視覺干擾。

安裝與啓用

通過 dsh 命令安裝(推薦)

插件發佈到 npm 後,在 Web 配置下執行:

dsh plugin --profile web add dsh-change-review

安裝完成後重啓 dsh web

手動部署

  1. 將包放到 harness 可解析的位置(例如 node_modules),在 profile 的 cordis.patch.yml 中註冊:
- insert:
    - id: diff-review
      name: 'dsh-change-review'
    - id: ui-diff-review
      name: 'dsh-change-review'
  1. 重啓 dsh web

社區目錄頁:SkillHub — dsh-change-review。SkillHub 是獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

典型用法

  1. 打開一個會話,點擊 「審查」 視圖標籤。
  2. 在文件列表中選中目標文件,右側查看 diff;用頂部開關在「此會話」與「最新一輪」之間切換範圍。
  3. 文件被修改時,標籤徽章會即時更新;可用 刷新、清空 清除當前會話記錄。
  4. 需要回滾時,在 diff 區塊頭點擊 撤回此項,或在詳情頂部點擊 撤回全部修改
  5. 每輪對話結束後,在對話尾部查看 本輪變更審查 卡片,點擊文件名展開 diff 並逐項撤回。
  6. 調整 diff 配色:進入 Settings → 修改審查,改完後自動保存,刷新頁面仍生效。

審查記錄會持久化到 ~/.dsh/profiles/web/diff-review-state.json(防抖自動保存,退出時同步刷盤),重啓 dsh web 後自動恢復;刪除該文件可清空全部歷史。

行爲邊界與注意事項

容量限制(來自 README 行爲說明):

  • 每個文件最多記錄 100 次操作
  • 單次操作內容超過 120KB 會截斷
  • diff 展示每側最多 1500 行
  • 單次撤回使用的三路合併每側最多 2000 行

升級注意:Host 側改動需重啓 dsh web;僅瀏覽器側改動刷新頁面即可。舊版無 turn 信息的記錄不會出現在單輪卡片中,但仍可在「審查」標籤查看。

權限與安全:插件以當前 dsh 進程權限運行,撤回操作會直接寫磁盤。安裝前建議閱讀 源碼 並確認 MIT 許可證;勿在未審閱的情況下在生產環境盲目啓用。

適用人羣:需要在 DSH Web 會話中即時看清 AI 改了哪些文件、按輪次或按操作撤回、並與子代理改動統一審查的開發者。若只關心最終 git 狀態、不需要會話內可視化審查,可不必安裝。

小結

dsh-change-review 把 DSH 會話裏的 write/edit 變成可瀏覽、可 diff、可撤回的審查流,並靠會話隔離、子代理聚合和 SSE 推送適配多輪、多代理的複雜會話。在 Web profile 下一條命令即可安裝。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜