DeepSeek Harness 插件 dsh-diffstream:對話流中直接展示代碼改動

前言

DeepSeek Harness(DSH)採用插件化架構,允許通過配置注入自定義邏輯。在智能體開發或調試過程中,當 Agent 調用 edit 或 write 等工具修改代碼時,改動內容通常散落在文件系統中,難以在對話流中實時追蹤。dsh-diffstream 插件直接在 DSH web GUI 的對話流中展示這些代碼改動,將文件層面的變更轉化爲可視化的行級 Diff。

插件簡介

dsh-diffstream 是一個由 F-Light 維護的 DSH Web 插件。它通過接管工具卡片渲染和回合尾部處理,將代碼變更直接嵌入到對話流中,無需修改 DSH 源碼即可使用。

核心功能

插件主要提供以下能力:

  1. 工具卡片內嵌行級 Diff
    每次 edit 或 write 工具執行完成後,改動內容會直接渲染在對應的工具卡片內部。使用綠色 + 標記新增行,紅色 − 標記刪除行,並附帶行號與上下文。

  2. 流式動畫展示
    Diff 以流式逐行動畫展開,支持 1x、2x 或立即展示的速度控制。動畫視覺效果與 assistant 消息的流式輸出同步,展開到哪一行即代表執行到了什麼位置。

  3. 回合尾部改動彙總
    每個已完成的回合尾部會追加「📋 本回合改動彙總」卡片。卡片包含文件級列表,顯示路徑、增刪狀態標籤及 +N −M 統計。點擊文件行可展開該文件的完整行級 Diff。同一文件的多次編輯會自動合併統計。

  4. Git 優先與回退機制
    彙總卡片優先使用真實的 git diff(含上下文 hunk,通過 Host RPC 獲取)。若非 git 項目或 git 命令失敗,會靜默回退爲工具參數 diff,確保功能不中斷。

  5. 性能與交互優化

    • 純客戶端計算:使用純客戶端 LCS 行級對比算法,零依賴、零延遲、不讀磁盤。
    • 大文件截斷:文件超過 200 行時自動截斷,支持點擊展開全部。
    • 自動滾動:動畫播放期間自動跟隨最新行滾動到底部(手動上滾時暫停跟隨)。
    • 去重處理:動畫按工具調用 callId 去重。歷史回合(刷新後)直接完整顯示,不會重播動畫。

安裝與啓用

插件以獨立 npm 包形式提供,通過 profile 的 cordis.patch.yml 注入。

# 1. 進入 web profile 目錄
cd ~/.dsh/profiles/web

# 2. 安裝插件包
pnpm add @f-light/dsh-diffstream
# 3. 編輯 cordis.patch.yml,追加插件配置
- insert:
    - id: diffstream
      name: '@f-light/dsh-diffstream'
# 4. 重啓 dsh web 使配置生效
dsh --profile web

使用說明

安裝並重啓後,插件會在對話流中自動生效。

  • 查看改動:每次工具執行後,工具卡片內會立即出現內嵌的 Diff 視圖。
  • 交互操作:點擊回合尾部的彙總卡片中的文件行,可展開該文件的完整 Diff。
  • 非 Git 項目:即使當前目錄不是 git 倉庫,只要工具參數提供了 old_string 或 content,插件依然能通過參數對比展示 Diff。
  • 文件產出衝突:對於沒有文件產出的回合,插件展示讓位給官方的 ProducedFiles,兩者互不干擾。

注意事項

  • 插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
  • 插件不產生新的文件輸出,僅改變 Web GUI 的展示層邏輯。
  • 由於是基於純客戶端計算,性能開銷極低,不會影響對話生成的整體速度。

參考鏈接

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

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

小夜