DeepSeek Harness 插件:apply-patch

前言

DeepSeek Harness (DSH) 提供了字符串級別的 edit 和 write 工具,但缺乏將結構化統一差異(unified diff)寫入磁盤的工具。apply-patch 插件填補了這一空白:它解析統一差異,應用每個補丁塊,保證原子性(全部或全無),並記錄反向補丁以實現精確的撤銷。

核心功能

插件支持完整的 git diff 覆蓋,包括多文件、多塊、重命名、複製、權限變更、二進制文件標籤以及帶有空格的引用路徑。

它使用自實現的解析器,該解析器不依賴重型庫,並嚴格驗證補丁塊頭部的實際行數,對格式錯誤的輸入報錯。

在定位補丁塊時,它支持精確匹配、行偏移修正和模糊匹配(GNU-patch 風格),並保證刪除操作絕不會在模糊匹配中被錯誤應用。

操作採用原子性:在寫入任何內容之前,每個文件都在內存中解析和驗證。任何補丁衝突或結構違規都會導致零寫入。

它包含版本控制,使用與官方 DSH 文件系統相同的標識符配方(dev:ino:size:mtimeNs:ctimeNs),並在發佈時重新檢查標識符,在發生漂移時中止。

它在修改之前計算反向補丁,並在寫入前寫入撤銷日誌。undo 恢復字節完全相同的狀態。這適用於創建、刪除、重命名、複製和模式變更。

它支持幹運行模式,靜態驗證適用性並報告衝突,而無需接觸磁盤。

它維護 CRLF/LF 保真度,按行建模文件及其終止符,確保未觸及的區域按字節往返傳輸。

它提供二進制安全,跳過標記爲二進制的文件,檢測針對二進制目標的文本補丁(NUL 字節 / 無效 UTF-8)並跳過它們,而不會損壞文件。

安裝與啓用

插件通過以下命令安裝:

dsh plugin --profile <name> add github:JohnXu22786/apply-patch

安裝後,四個工具立即在 Harness 工具註冊表中可用。

典型用法

插件提供三種主要使用方式:DSH 工具、CLI 和庫。

DSH 工具

在 DSH 配置或提示詞中使用以下工具:
* patch_apply:應用統一差異,帶有原子性和撤銷日誌記錄。
* patch_dry_run:驗證適用性,報告衝突,不寫入磁盤。
* patch_reverse:生成反向補丁(驗證後)而不應用。
* patch_stat:總結補丁(文件、塊、+/-/上下文計數)而不接觸文件系統。

CLI

作爲獨立命令行工具使用:

dsh-patch apply changes.patch --root /workspace
dsh-patch dry-run changes.patch
dsh-patch reverse changes.patch > revert.patch
dsh-patch undo .dsh-patch-undo.json

庫

在代碼中導入以進行編程使用:

import { applyPatchText, applyUndo, parsePatch, statPatch } from 'dsh-patch-apply'

適用場景與注意

該插件零運行時依賴,使用 TypeScript 源碼和 Node.js 內置測試運行器。

文件按行建模,帶有各自的終止符;未觸及的區域按字節往返傳輸。

二進制安全:標記爲二進制的文件被跳過;針對二進制目標的文本補丁被檢測並跳過。

請注意,該插件在當前 DSH 進程的權限下運行。安裝前應檢查源代碼和許可證。

結尾

apply-patch 爲 DSH 生態系統中的差異應用提供了可靠、原子和可撤銷的解決方案。

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

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

小夜