dsh-turnsnap:DeepSeek Harness 的零配置每回合 Git 检查点

前言

DeepSeek Harness (DSH) 的核心设计理念之一是「一切皆插件」。在智能体长会话中,频繁的文件重写容易导致状态不可控。当某个回合出现错误时,开发者通常需要手动执行 git 命令来回滚,或者直接丢失开发轨迹。dsh-turnsnap 旨在解决这一问题,它通过监听 DSH 的事件流,将每个完成的智能体回合自动转化为一个可回滚的 Git 检查点。

安装

该插件无需额外配置,安装即用。

dsh plugin --profile <your-profile> add dsh-turnsnap

安装完成后,插件会热重载并在当前配置文件下的所有 Git 工作区会话中生效。

工作原理

插件监听 Harness 的 agent/turn-stopping 事件。当事件触发时,系统会检查会话工作区(agent.session.header.cwd):
1. 如果目录不是 Git 仓库,或工作树干净(无未提交更改),则跳过。
2. 否则,运行 git add -A 暂存所有更改,并创建一个带有 [turnsnap] 标签的提交。
3. 提交信息格式固定为:[turnsnap] turn N · M files · HH:MM:SS。

为了防止并发冲突,插件内部使用了一个序列化队列来处理检查点生成。Git 命令通过 Harness 的 shell service 运行,确保权限隔离。

工具

提供了三个工具,用于在会话中控制检查点行为:

工具名 效果
turnsnap_pause 暂停自动提交,直到调用恢复命令
turnsnap_resume 恢复自动提交
turnsnap_status 报告插件启用状态、计数器及最后一次提交信息

你可以在会话中让模型说出 “pause turnsnap”,或者在脚本中直接调用上述工具。

注意事项

  • 已暂存更改:git add -A 会将已暂存但未提交的更改合并到当前检查点中。如果你在回合边界保留了特定的暂存状态,请先调用 turnsnap_pause。
  • 忽略文件:.gitignore 的规则在 add -A 时依然生效,被忽略的文件不会被提交。
  • Pre-commit Hooks:检查点提交使用 --no-verify 标志,不会运行本地的 pre-commit hooks。
  • 并发限制:每个仓库每个回合只生成一个检查点。当子代理与父会话共享工作区时,它们会生成同一个提交。

资源

DeepSeek Harness 插件目录
GitHub 仓库

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

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

小夜