dsh-github-message:用 gh 只讀輪詢,把 GitHub 事件變成超級助理信號

前言

在 DSH(DeepSeek Harness)裏做智能體,常常需要把「人還在盯着 GitHub」這件事拆開:一邊是觀測 PR、Issue、@ 提醒,一邊是決定是否打擾你、要不要做評審或分析。自己寫輪詢腳本容易和 gh 鑑權、限流、去重纏在一起;只靠瀏覽器通知又難接到 my-superagent/v1 這類統一信源。

dsh-github-message 是社區維護的聯網類插件,定位很明確:本機 gh 只讀輪詢 → 翻譯成標準信號 → 上報或本地提示。評審、寫回 GitHub、是否通知用戶,交給 dsh-my-superagent 或其他核心,本插件代碼裏不含任何寫 GitHub 的操作。

這是什麼

  • 名稱:dsh-github-message(npm 包名同)
  • 維護者:xbzbing
  • 分類:聯網工具
  • 當前版本(package.json):0.1.1,許可證 MIT
  • 作用:定時用 GitHub CLI 查詢待評審 PR、維護倉庫新 Issue、@ 提醒等,映射爲 my-superagent/v1 信號;未接超級助理時,新消息可在 DSH Web 頁面右下角彈卡片。

插件隨 DSH 進程運行,兼容性在資料中寫明爲 dsh@0.2.2-rc.1 驗證,Node.js ≥ 24.9。

核心功能

下面能力是 README 中逐項寫明的,插件只做採集、翻譯、上報。

待評審與我倉庫裏的 PR

  • 待評審 PR:review-requested:@me 的 open PR,按 head 提交去重;同一 PR 只有推新 commit 纔算新事件。
  • 我倉庫裏的 PR:prScope: owned 時,還會按 user:@me、orgs 與倉庫列表查詢他人在你倉庫開的 open PR,以 github.pr.repo 上報(你自己開的 PR 走自提流)。

Issue 與 @ 提醒

  • 新 Issue:默認只盯「維護倉庫」列表;issueScope: owned 時額外覆蓋你名下倉庫,並逐個查 orgs 裏列出的組織;按創建時間提醒一次。
  • @ 提醒:優先走 Notifications(reason=mention|team_mention);拿不到時降級爲 mentions:@me 搜索;按評論 id 去重。需要 notifications scope,缺失時面板會提示執行 gh auth refresh -s notifications。

輪詢與本地提示

  • 默認 5 分鐘一輪,可配 1 分鐘~24 小時;實際間隔取配置與 GitHub X-Poll-Interval 的較大者,失敗指數退避(最長 30 分鐘),限流時等到 X-RateLimit-Reset。
  • 未接入超級助理時:右下角最多 4 張卡片、約 12 秒消失、可點開 GitHub;每條只彈一次,記錄寫在 notified.json,與上報用的 seen 分開。

信號契約(與核心對接)

kind 典型觸發
code-review.requested 有人請求我(或團隊)評審 PR
github.pr.opened 我自己開的 PR
github.pr.repo 我名下倉庫裏別人開的 PR(prScope=owned)
github.issue.opened 維護列表 / 自有倉庫 / 組織倉庫有新 Issue
github.mention Issue/PR/評論裏 @ 我或團隊

插件以 trust: 'external' 註冊,核心回源確認後才採納;payload 只放展示與路由字段,不含 raw API、diff、token。

安裝與啓用

倉庫不提交 lib/,不能用 dsh plugin add github:xbzbing/dsh-github-message 直接安裝。請使用 npm 或 Release 附件,命令來自官方 README:

# 正式版(npm)
dsh plugin --profile web add dsh-github-message@latest

# 預發佈(npm stage 通道,版本號形如 0.1.0-stage.0)
dsh plugin --profile web add dsh-github-message@stage

# 或指定版本的 GitHub Release 附件
dsh plugin --profile web add https://github.com/xbzbing/dsh-github-message/releases/download/v0.1.0/dsh-github-message-0.1.0.tgz

安裝後按下面步驟啓用觀測與上報:

  1. 打開 設置 → 插件 → GitHub 消息,確認「GitHub 登錄」爲綠色(本機 gh auth status 通過)。
  2. 在「維護倉庫」填入要盯的 owner/repo。
  3. 來源默認關閉;若要用超級助理,到超級助理的「來源」頁打開 github-message(核心需聲明 github-source,舊核心會 dry-run,只採集不推送)。

更新時:僅 client 改動刷新頁面即可;含 host 改動需 dsh plugin remove 再 add,profile 未開 HMR 時還要重啓 dsh。

前提條件

gh auth status
  • 已安裝並登錄 GitHub CLI。
  • 要看 @ 提醒需 notifications scope。
  • 上報給超級助理:安裝 dsh-my-superagent 並實現 github-source(資料寫明 P1 已實現)。

配置要點

面板裏可改輪詢週期、倉庫、Issue/PR 範圍、組織列表,保存後寫入 $DSH_HOME/dsh-github-message/config.json,優先於 Cordis patch。刪掉該文件可回到 patch 默認。

在 profile 的 cordis.patch.yml 裏整體替換式 patch 時,需保留仍要用的鍵。README 給出的示例:

- id: dsh-github-message
  name: dsh-github-message
  config:
    intervalMs: 300000
    windowMs: 604800000
    issueScope: owned
    prScope: owned
    repos:
      - xbzbing/dsh-my-superagent
    orgs:
      - my-org
    mentionMode: notifications

常用項摘要:intervalMs 默認 300000(5 分鐘);issueScope 默認 repos(僅列表),可改 owned;prScope 默認 review,可改 owned;mentionMode 爲 notifications / search / off。

本地數據僅寫在 $DSH_HOME/dsh-github-message/(seen.json、notified.json、stats.json、config.json、poll.log 等),權限 0700/0600。插件不讀不寫 token,gh 自用 keyring,子進程不傳 GH_TOKEN / GITHUB_TOKEN。

適用場景與注意

適合誰

  • 已在 DSH Web profile 下使用超級助理,希望把 GitHub 待辦收成統一信源的人。
  • 暫時不接核心,但需要右下角只讀提醒、且願意用本機 gh 承擔輪詢的人。
  • 維護少量倉庫或組織,願意在面板或 patch 裏維護 repos / orgs 列表的維護者。

使用前務必知曉

  • 插件以當前 DSH 進程權限運行,安裝前建議查看 GitHub 倉庫 源碼與 MIT 許可證。
  • 只讀:僅用 gh api 的 GET / search / notifications,無 POST/PATCH/PUT/DELETE,也不調用 gh pr review、gh issue comment 等寫操作。
  • 社區插件目錄 SkillHub 條目 與 DeepSeek / 幻方無官方從屬關係;生態理念是「一切皆插件」,本文事實以倉庫 README 爲準。

結尾

dsh-github-message 把 GitHub 上「該你看一眼」的幾類事實做成可去重、可限流、可對接 my-superagent/v1 的管道;寫回與是否打擾你留給上層智能體。需要插件說明與配置表時打開倉庫 README;需要瀏覽分類與簡介時可訪問 SkillHub 目錄頁與 GitHub 主頁:

  • 目錄頁:https://www.skillhub.cn/plugins/xbzbing/dsh-github-message
  • GitHub:https://github.com/xbzbing/dsh-github-message
羽毛球分组比赛记分
小程序二维码

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

小夜