前言¶
在 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