前言¶
在 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 去重。需要notificationsscope,缺失時面板會提示執行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
安裝後按下面步驟啓用觀測與上報:
- 打開 設置 → 插件 → GitHub 消息,確認「GitHub 登錄」爲綠色(本機
gh auth status通過)。 - 在「維護倉庫」填入要盯的
owner/repo。 - 來源默認關閉;若要用超級助理,到超級助理的「來源」頁打開
github-message(核心需聲明github-source,舊核心會 dry-run,只採集不推送)。
更新時:僅 client 改動刷新頁面即可;含 host 改動需 dsh plugin remove 再 add,profile 未開 HMR 時還要重啓 dsh。
前提條件¶
gh auth status
- 已安裝並登錄 GitHub CLI。
- 要看
@提醒需notificationsscope。 - 上報給超級助理:安裝 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