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 倉庫

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

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

小夜