dsh-hashline-edittool: DeepSeek Harness 的 Hash 錨點編輯工具

前言

DeepSeek Harness (DSH) 採用了插件化架構。在處理代碼編輯任務時,傳統的行號 (line number) 編輯方式存在兩個問題:一是模型經常需要回顯舊代碼以確認上下文,造成 token 浪費;二是多步編輯中,文件內容變動會導致後續編輯指令失效。

dsh-hashline-edittool 爲 DSH 提供了一套基於內容哈希錨點的工具集。它爲文件中的每一行分配一個變量長度的 Base62 標識符,允許模型通過錨點進行編輯,從而避免重複輸出舊代碼,並提供原子性的批量寫入能力。

插件定位

這是一個工作流插件,由維護者 hyperion2144 開發,基於 MIT 許可證。它替換了 DSH 內置的 read / edit / grep 工具,並新增了 undo_last_edit、ast_grep、ast_edit 和 lsp 工具。

核心功能

1. Hash 錨點機制

  • 變量長度編碼:錨點不是固定寬度的哈希,而是動態分配的 Base62 編碼。前 3,844 行只需 2 個字符即可覆蓋,隨着文件增長才增加長度(上限約爲 62⁸ 行)。
  • 非數字標識:編碼中跳過全數字組合,避免與行號混淆。
  • 標記格式:編輯時使用 <anchor>:<line> 格式。其中 line 僅作爲位置提示,錨點纔是權威標識。

2. 原子性寫入與驗證

  • 批量原子性:所有的編輯操作是一個原子批次。如果批次中任何一個編輯範圍驗證失敗,整個寫入操作都會回滾,不會寫入任何文件。
  • 寫入路徑:所有寫入操作通過 ctx.fs 進行。
  • 過期檢測:寫入時會驗證模型實際看到的內容是否與磁盤當前內容一致。如果內容被篡改,會返回 [E_STALE] 錯誤,並立即返回當前行的最新錨點和內容供重試。

3. 自渲染 UI 與配置

  • 自渲染卡片:插件自帶 React 組件(如 HashlineReadRow、HashlineEditRow 等),直接註冊到 DSH Web UI 的插槽中。UI 從結構化數據渲染,無需字符串解析。
  • 自渲染設置面板:提供可視化的設置界面,無需手動編輯 YAML。
  • 熱切換:配置更改(如輸出格式、AST/LSP 開關)在下次工具調用時立即生效,無需重啓進程。

4. AST 與 LSP 支持

  • ast_grep / ast_edit:基於 Tree-sitter 提供語法樹級別的查找與編輯。
  • lsp:集成語言服務器協議,提供語義信息。

安裝與啓用

確保環境滿足以下要求:
* Node.js 版本:^22.19.0 || >=24.0.0
* 需要一個已存在的 DSH Profile

執行安裝命令:

npx @deepseek-ai/dsh plugin --profile web add github:hyperion2144/dsh-hashline-edittool

安裝完成後,在下一個會話中啓用該插件。通過以下命令驗證配置是否加載成功:

dsh --profile <name> --dump-config

輸出中應包含 # == dsh-hashline-edittool 相關的層配置。

典型用法

讀取文件

read 工具的輸出頭部爲 ANCHOR:FILELINE,格式如下:

ANCHOR:FILELINE
G8:1|// UI demo file
ur:2|export const APP = "hashline";
D0:4|export function greet(name: string): string {

編輯文件

模型在響應中通過錨點指定修改範圍。例如修改第二行:

<ur:2>const APP = "hashline";

如果編輯被拒絕(如 [E_STALE]),插件會返回當前行的最新錨點和內容,模型需使用新的錨點重新提交。

注意事項

  • 權限與來源:插件以當前 DSH 進程的權限運行,請確保在安裝前查閱 GitHub 源碼與許可證。
  • 錯誤碼:常見的錯誤碼包括 [E_RANGE_UNSERVED](範圍未服務)、[E_STALE](內容已過期)和 [E_LINE_HINT](行號提示不一致)。

總結

dsh-hashline-edittool 通過引入變量長度的 Base62 錨點,解決了傳統行號編輯在上下文傳遞和併發衝突上的痛點。它提供了原子性的編輯操作、實時的語法診斷以及自包含的 UI 組件,適合需要在 DSH 中進行復雜、多步代碼編輯場景的開發者。

  • GitHub 倉庫: https://github.com/hyperion2144/dsh-hashline-edittool
  • 插件目錄: https://www.skillhub.cn/plugins/hyperion2144/dsh-hashline-edittool
羽毛球分组比赛记分
小程序二维码

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

小夜