DeepSeek Harness(DSH)采用插件化架构,旨在通过模块化扩展能力。在使用智能体进行代码开发时,开发者需要清晰地掌握具体由哪个模型、在哪个会话中对哪些文件进行了修改。dsh-git-ai 插件解决了这一归因需求,它将智能体的操作记录转化为 git-ai 可识别的数据,从而实现代码变更的自动追溯。
插件定位¶
dsh-git-ai 是 DeepSeek Harness 的一个插件,由开发者 NiuZhuang 维护。它位于「记忆」分类,采用 MIT 许可证。其核心功能是拦截 DSH 的工具执行钩子,将文件编辑、使用的模型以及会话信息转换为 git-ai 的 agent-v1 检查点 payload,并调用 git-ai 的 checkpoint 命令进行记录。
核心功能¶
该插件主要通过拦截和转换数据实现归因:
- 拦截点监听:拦截 DeepSeek Harness 的
tools/pre-execute和tools/post-execute两个拦截点。 - 数据记录:记录文件编辑操作、使用的模型名称以及会话信息。
- 协议转换:将捕获的工具调用转换为 git-ai 通用接口
agent-v1的 payload 格式。 - Shell 支持:支持对 bash 和 pwsh 命令的 pre/post shell 检查点记录。
- 可配置项:提供丰富的配置选项,包括指定 git-ai 可执行文件路径、设置 agent 名称、指定模型、检查点预设、调用超时时间以及是否追踪 bash 命令。
安装与启用¶
安装该插件可以通过以下命令完成:
dsh plugin --profile web add dsh-git-ai
如果使用 pnpm 版本大于等于 10,安装命令需要加上 -w 参数以避免工作区根目录冲突:
dsh plugin --profile web add -w dsh-git-ai
该包声明了 dsh.bundle,在执行上述命令时会自动激活配置。如果需要手动加载或在自定义 profile 中配置,需在 cordis.patch.yml 中添加如下块:
- dsh-git-ai:
gitAiPath: git-ai
agentName: deepseek-harness
典型用法¶
完成安装与配置后,可以通过以下步骤验证功能:
- 安装插件:执行安装命令。
- 配置插件:在
cordis.patch.yml中添加上述配置块。 - 启动 Harness:运行
dsh web启动服务。 - 编辑文件:让智能体编辑 git 仓库中的文件。
- 检查状态:运行
git-ai status --,查看 git-ai 是否接收到了检查点数据。 - 提交与验证:执行
git add -A && git commit -m "test"提交,随后运行git-ai stats HEAD --json检查归因统计。
配置项说明¶
插件支持通过配置对象进行细粒度控制,配置项包括:
import type { Config } from 'dsh-git-ai'
const config: Config = {
gitAiPath: 'git-ai', // 可选:git-ai 可执行文件路径(省略时通过 PATH 解析)
agentName: 'deepseek-harness', // 可选:标记在所有检查点上的 agent_name
model: '', // 可选:显式指定的模型,空则回退到 agent.options.model
checkpointPreset: 'agent-v1', // 可选:git-ai 的通用集成预设
timeoutMs: 10_000, // 可选:git-ai 调用超时时间(毫秒)
trackBash: true, // 可选:是否为 bash/pwsh 发送 pre/post shell 检查点
}
适用场景与注意事项¶
- 依赖关系:git-ai 是可选依赖。如果 git-ai 未安装、调用失败或超时,插件仅记录警告而不会中断工具调用。
- 编辑归因限制:文件编辑工具目前仅发送 post-edit 检查点。这意味着如果用户在智能体编辑前对同一文件进行了未提交的修改,这些修改可能会被误归因给智能体。
- Bash 输出限制:Bash 输出的归因基于快照,仅限仓库树内的文件修改会被归因,仓库外的文件修改无法被追踪。
- 同步延迟:每个被追踪的工具调用都会等待 git-ai 检查点完成(受
timeoutMs限制)后再返回结果,这会增加工具调用的同步延迟。
总结¶
dsh-git-ai 为 DeepSeek Harness 用户提供了一种标准化的方式,将智能体的操作行为与 git-ai 的归因系统打通。通过拦截工具执行钩子并生成符合 agent-v1 规范的 payload,它帮助开发者实现了代码来源的可追溯性。更多细节与源码可参考其 GitHub 仓库或社区目录页面。