🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

GitHub 变更监视 psenY/gh-watch

DeepSeek Harness
psenY50 天前有提交已提供中文文档扫描:含敏感能力

轮询仓库 PR 与 issue,有变更就通知对应 AI

30.4/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add psenY/gh-watch
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · market
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 50 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包gh-watch(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/6 14:17:56

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 4 处,展示前 4 条)
  • 读取本地文件
    lib/index.js:107
    if (existsSync(STATE_FILE)) {
  • 读取密钥环境变量
    lib/index.js:144
    token = process.env.GH_TOKEN || process.env.GITHUB_TOKEN
  • 请求外部主机api.github.com
    lib/index.js:160
    res = await fetch('https://api.github.com' + pathname, {
  • 发起网络请求
    lib/index.js:160
    res = await fetch('https://api.github.com' + pathname, {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:api.github.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/dsh-credentials@deepseek-ai/dsh-llm
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 轮询PR与issue
  • 变更通知对应AI
  • 多AI独立配置

DSH 插件:GitHub PR/issue 变更监视插件(多 AI 独立配置,插件自身不审查、不回帖)

README

由 DeepSeek 最新模型翻译生成
gh-watch DeepSeek Harness (DSH) 的 GitHub PR / issue 变更监视插件。 检测 PR 与 issue 的变更并自动拉起对话通知 AI —— 插件自身不做审查、不回帖,只负责「发现并通知」,把判断权留给 AI 与用户。 它解决什么问题 在多 AI 独立协作的场景里,经常需要让某个 AI 关注某些 GitHub 仓库的 PR 与 issue 是否有新动态(新建、新 push、新评论 / review、合并、关闭、重开等)。gh-watch 在后台轮询这些仓库,一旦检测到变更,就把一条变更通知注入对应 AI 的对话,让 AI 知道并决定下一步——而不需要人工反复去刷 GitHub。 设计上刻意保持了「监视与行动」的分离: - 检测:轮询 GitHub REST API,diff 游标快照,识别变更类型。 - 通知:把变更摘要推送到调用方对话(current)或新开对话(new)。 - 不越界:插件从不代表用户去评论、合并或回帖。 特性 - 每个会话(每个 AI)独立配置自己的监视器:仓库列表、轮询间隔、通知模式、推送目标各自独立。 - 一次轮询覆盖 PR 与 issue(issue 自动排除 pull_request 项,GR 与 issue 不会互相污染)。
展开完整文档(README 剩余 1 节)
gh-watch

DeepSeek Harness (DSH) 的 GitHub PR / issue 变更监视插件。
检测 PR 与 issue 的变更并自动拉起对话通知 AI —— 插件自身不做审查、不回帖,只负责「发现并通知」,把判断权留给 AI 与用户。

它解决什么问题

在多 AI 独立协作的场景里,经常需要让某个 AI 关注某些 GitHub 仓库的 PR 与 issue 是否有新动态(新建、新 push、新评论 / review、合并、关闭、重开等)。gh-watch 在后台轮询这些仓库,一旦检测到变更,就把一条变更通知注入对应 AI 的对话,让 AI 知道并决定下一步——而不需要人工反复去刷 GitHub。

设计上刻意保持了「监视与行动」的分离:

- 检测:轮询 GitHub REST API,diff 游标快照,识别变更类型。
- 通知:把变更摘要推送到调用方对话(current)或新开对话(new)。
- 不越界:插件从不代表用户去评论、合并或回帖。

特性

- 每个会话(每个 AI)独立配置自己的监视器:仓库列表、轮询间隔、通知模式、推送目标各自独立。
- 一次轮询覆盖 PR 与 issue(issue 自动排除 pull_request 项,GR 与 issue 不会互相污染)。
- 变更类型识别:新建 / 新push / 新评论 / 评论变化 / 已合并 / 已关闭 / 重新打开 / 有更新 / 主动查询。
- 首次监视某仓库时只建立基线快照,不推送存量清单,避免对历史海量数据刷屏。
- 轮询间隔钳制到至少 1 分钟;轮询失败时按 2x→4x→8x 指数退避推后下一次轮询,直至某次轮询完全成功后清零,降低撞 GitHub 限流的风险。
- 状态持久化到 $DSH_HOME/gh-watch/state.json,重启后恢复游标。

运行机制

[AI 调用 gh_watch_configure] → 注册监视器 (repos / interval / mode / target) │ 每个会话独立 watcher │ timer 每 60s 触发 tick() ▼ pollWatcher:对每个 repo 拉 pulls + issues │ 首次?──────是──→ 建立基线游标,不推送 │ 否 ▼ diff 快照 → 检测到变更 → dispatch → 注入对话 ├─ current:回到调用方对话 └─ new:新开对话

- 每个会话一个 watcher,互不干扰。
- timer.interval(tick, 60_000) 全局 60 秒驱动一次调度;每个 watcher 按自己的 nextPollAt(= 上次轮询 + intervalMin 分钟)判断是否到期。
- 失败重试采用指数退避:连续失败逐级推后 min(2^failCount, 8) 倍间隔,仅在某次轮询完全成功(所有分仓都拉取成功)后才清零 failCount。

安装与挂载

作为 DSH 用户插件,通过 cordis.patch.yml 把插件插入 profile 的 layer 栈:

cordis.patch.yml
- insert:
- id: gh-watch
name: 'gh-watch'
config: {}

安装依赖:

npm install
或 pnpm install

需要网络访问 api.github.com。推荐配置只读 PAT(GH_TOKEN),否则匿名访问限流 60 次 / 小时。Token 可通过环境变量 GH_TOKEN / GITHUB_TOKEN,或 DSH credentials 中 GH_TOKEN。

工具(Tools)

插件向会话上下文注册 4 个工具:

| 工具 | 作用 |
| gh_watch_configure | 配置本会话监视器:repos、intervalMin、notifyMode、pushTarget |
| gh_watch_status | 查询本会话监视器当前配置与跟踪状态(只读) |
| gh_watch_act | 主动拉取某个 PR/issue 的最新状态并注入通知 |
| gh_watch_stop | 停止本会话监视器,删除配置 |

gh_watch_configure 参数

| 参数 | 类型 | 默认 | 说明 |
| repos | string[] | 必填 | 仓库列表,格式 owner/repo |
| intervalMin | number | 10 | 轮询间隔(分钟),钳制 ≥1 |
| notifyMode | inform \| auto | inform | inform=只告知更新;auto=通知并请 AI 自动检查 |
| pushTarget | current \| new | current | current=回调用方对话(推荐);new=新开一个对话 |

gh_watch_act 参数

| 参数 | 类型 | 默认 | 说明 |
| repo | string | 必填 | 仓库 owner/repo |
| id | number | 必填 | PR 或 issue 编号 |
| kind | pull \| issue | pull | 类型 |
| target | current \| new | current | 通知目标 |

目录结构

gh-watch/
├── lib/index.js # 插件主入口:export { name, inject, apply } ├── package.json # 包定义:main = lib/index.js, type = module ├── cordis.patch.yml # DSH bundle patch:把插件插入 profile layer 栈 ├── README.md # 本文档 ├── LICENSE # MIT └── .gitignore

开发与测试

插件入口约定为 CommonJS-style Cordis 插件对象导出 { name, inject, apply }:

// lib/index.js
export const name = 'gh-watch'
export const inject = ['tools', 'timer', 'agents', 'credentials']
export function apply(ctx, config) { /* ... */ }

冒烟测试(确认可导入且导出约定成员):

node --input-type=module -e "
import { name, inject, apply } from './lib/index.js';
if (name !== 'gh-watch') throw new Error('name mismatch');
if (!Array.isArray(inject) || !('apply' in { apply })) throw new Error('export mismatch');
console.log('smoke ok', { name, inject });
"

依赖 @deepseek-ai/dsh-tools 与 @deepseek-ai/dsh-credentials 需在安装后可用,否则 lib/index.js 无法导入。

持久化状态

运行时状态(不入库):

- $DSH_HOME/gh-watch/state.json —— watchers 配置与每仓库游标快照。
- $DSH_HOME/gh-watch/undelivered.log —— 通知派发失败时记录的未送达文本。
- $DSH_HOME/gh-watch/diag.log —— 基线异常诊断(v0.1.1 起):陈旧条目被判为「新建」、或持久化时从磁盘补回丢失的 key 时留痕。
- $DSH_HOME/gh-watch/state.json.bak-YYYYMMDD —— 每日一份状态备份(v0.1.1 起),便于事后 diff 基线改动。

变更记录

- v0.1.1:修复「已关闭的历史条目被重新报为『新建』」这一类基线回退问题——写盘前与磁盘现状做 cursor 并集(内存缺失而磁盘存在的 key 一律补回,冲突以内存为准),从机制上杜绝「持有旧快照的写入者整体覆盖 state.json 时抹掉他人新增 key」;新增 diag.log 诊断与每日状态备份。同版并入此前仅在本地运行版存在的两处补丁:批量合并通知(buildBatchNotification)与取消 cursor 窗口淘汰(消除条目在 50 条窗口边界反复进出导致的重复推送)。
- v0.1.0:首个发布版(轮询 + 游标 diff + 通知派发 + 会话级配置)。

License

MIT
预览分享卡片长什么样 ↓psenY/gh-watch
分享 · DeepSeek Harness Hub
psenY/gh-watch

轮询仓库 PR 与 issue,有变更就通知对应 AI

这是你的仓库?认领条目

回到顶部