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
羽毛球分组比赛记分
小程序二维码

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

小夜