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
羽毛球分组比赛记分
小程序二维码

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

小夜