前言¶
DeepSeek Harness (DSH) 在處理多個 Pull Request 時,智能體沒有記憶功能,每次查詢都需要重新從 GitHub 獲取數據。這會導致重複的 API 調用和上下文冗餘。dsh-pr-watch 插件旨在解決這一問題,它通過存儲快照並報告增量變化,讓智能體只需關注“最近發生了什麼”。
功能概覽¶
該插件通過註冊一個名爲 pr_watch 的工具來工作。核心能力包括:
- 跨倉庫追蹤:追蹤你 authored(作者身份)的所有 Pull Request,無需本地克隆倉庫。
- 狀態報告:區分並報告 PR 的變化狀態,包括已合併、已關閉未合併、變得陳舊。
- 增量更新:基於上次檢查的快照,只報告新增或變化的狀態。
- 處理重新打開:能夠識別那些被關閉後又重新打開的 PR。
- 防重複:合併和陳舊狀態在後續檢查中不會重複報告,直到其狀態再次發生根本性變化。
安裝與啓用¶
當前插件處於 pre-release(預發佈) 狀態,尚未發佈到 npm,因此官方安裝命令暫時無法使用。
官方安裝命令(待發布):
dsh plugin --profile PROFILE add dsh-pr-watch
當前安裝方式:
從源碼檢出倉庫後,先構建,再通過本地鏈接安裝。
pnpm install && pnpm run build
dsh plugin --profile PROFILE add link:.
依賴與環境¶
安裝前需確保環境滿足以下要求:
* Node.js:版本需大於等於 18。
* GitHub CLI (gh):必須安裝在 PATH 中,並已通過 gh auth login 完成認證。
* 憑據處理:插件不存儲任何憑據,完全依賴 gh 的 keyring 認證機制。
使用方法¶
可以通過調用工具 pr_watch 來檢查 PR 狀態。調用時傳入參數配置。
調用示例:
{
"staleDays": 14,
"all": false
}
參數說明:
* staleDays:整數類型,PR 無活動多少天后會被標記爲陳舊,默認爲 14。範圍限制在 1 到 3650 之間,0 會被拒絕。
* all:布爾類型,設爲 true 時列出所有打開的 PR,而不是僅列出變化。默認爲 false。
輸出示例:
插件會輸出三類狀態的 PR:
✅ Merged (2):
octo/repo#41 — Add Russian locale (last activity 1 day ago)
octo/repo#38 — Fix broken link (last activity 3 days ago)
⏳ Became stale (1):
octo/repo#29 — docs: clarify install steps (last activity 21 days ago)
🆕 Newly noticed (1):
octo/repo#44 — Add MCP server entry (last activity today)
工作原理與注意事項¶
該插件採用了兩階段查詢策略:
1. 枚舉:獲取你 authored 的所有打開的 PR。
2. 解析:將當前打開的 PR 集合與上次快照進行比對,找出那些不在當前集合中(即已關閉或已合併)的 PR,並單獨查詢其最終狀態。
由於需要區分“已合併”和“關閉未合併”,簡單的 diff 無法滿足需求。插件通過這種機制確保了狀態的準確性。
注意事項:
* 插件僅依賴 gh CLI 進行認證,不保存 Token,安全性由 gh 的 keyring 保證。
* 對於未克隆的倉庫,插件通過 owner/repo#number 的形式進行追蹤,因此本地無需 checkout。
總結¶
dsh-pr-watch 爲 DSH 智能體提供了對 PR 變化的有效追蹤能力,減少了重複檢查的開銷。目前代碼實現已完成,測試通過,但尚未發佈,需通過源碼方式安裝使用。