dsh-smarter-edit: DSH 更可靠的文件編輯方案

前言

DeepSeek Harness(DSH)原生的 edit 工具要求模型重構精確的源代碼字符串,並將舊的和新的一起通過結構化的 JSON 參數發送。這往往導致編輯失敗——因爲模型選中的代碼變更是正確的,但 old_string 在空白符或字符上與文件不匹配。此外,這種機制需要模型重複輸出大部分源代碼,造成不必要的 token 消耗。

dsh-smarter-edit 插件通過用 Codex 兼容的 apply_patch 替換原生的 edit,解決了上述問題。它允許模型直接以補丁的形式表達代碼變更,而不是重構整個字符串。這讓模型可以將 token 花在改變代碼上,而不是滿足編輯協議的格式要求。

功能特性

該插件提供了以下核心能力:

  • Codex 兼容的補丁機制:用 apply_patch 替換原生 edit,支持自由格式的補丁描述。
  • 多補丁塊支持:支持在一個調用中處理多個有序的 hunks。
  • 完整操作類型:支持 Add(添加文件)、Update(更新文件)、Move(移動文件)和 Delete(刪除文件)操作。
  • 上下文匹配:採用 Codex 兼容的上下文匹配方式,降低匹配失敗率。
  • 原子性保障:支持 failure-atomic 的預檢和回滾機制,在處理失敗時保護文件狀態。
  • 原生渲染:使用 DSH 原生的 diff 渲染來展示變更結果。

安裝與啓用

在桌面端 Profile 上安裝該插件:

dsh plugin --profile desktop add @anionex/dsh-smarter-edit

對於 Web 或 Headless Profile,請將 --profile desktop 替換爲 --profile web 或 --profile headless。安裝後需要重啓對應的 Profile 並創建一個新的 Session。

安裝完成後,可以通過以下命令驗證插件是否已掛載:

dsh --profile desktop --dump-config | grep tool-apply-patch

典型用法

模型發送的內容需要包含在 *** Begin Patch 和 *** End Patch 之間。支持以下操作語法:

*** Begin Patch
*** Add File: relative/path.ts
*** Update File: relative/current.ts
*** Move to: relative/renamed.ts
*** End of File

使用標準的 diff 語法描述變更:- 表示刪除的行,+ 表示添加的行。相對路徑解析自 Session 的工作目錄。Move to 操作是可選的,End of File 用於將 hunk 錨定到文件末尾。純增量的更新 hunk 會直接追加到文件中。

兼容性與限制

  • DSH 版本:>=0.1.1-rc.1 <0.2.0。
  • Node.js 版本:^22.19.0 || >=24.0.0。
  • 支持 Profile:desktop、web 和 headless。
  • 權限要求:需要活動 DSH sandbox 的寫入權限。workspace-write 保留配置的邊界,danger-full-access 允許絕對路徑和父級相對路徑。
  • 回滾機制:插件在處理失敗時會回滾已發佈的變更。如果一個大補丁中的一個 hunk 失敗,整個補丁會被拒絕,模型必須重新提交完整的補丁。

生態背景

DeepSeek Harness 的理念是「一切皆插件」。社區目錄(如 SkillHub)提供了插件的索引與分發,這些目錄與 DeepSeek 或幻方無關,是獨立的社區資源。在使用第三方插件時,建議在安裝前檢查源碼與許可證。

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

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

小夜