dsh-upstream-watch

August 14, 2026 · View on GitHub

监听 GitHub 上游仓库(freebuff / opencode / 自定义)默认分支的所有新提交,设置页面板实时展示 + 日志记录。


⚡ 一键安装

dsh plugin --profile web add github:t479842598/dsh-upstream-watch#v0.1.0

装完重启 web,设置 → 「上游更新监听」出现即成功。

本地调试:cd dsh-upstream-watch && dsh plugin --profile web add .


✨ 功能

  • 上游监控:默认监听 freebuff@mainopencode@dev,任何默认分支 push 都会记录
  • 仓库管理:设置页添加/移除任意 GitHub 仓库(owner repo branch,留空即 main)
  • 实时面板:每个仓库状态徽章、head 提交、监听期间新增数(红色 +N)、检查时间
  • 新提交流:sha / 作者 / 相对时间,底部气泡一键切换只看某个仓库
  • ETag 条件缓存:无变更返回 304,不计 GitHub API 配额
  • 可选 Token:匿名配额仅 60 次/小时(共享出口 IP 易耗尽);设置只读 PAT 后 5000 次/小时
  • 间隔可调:5 / 10 / 30 / 60 分钟,支持暂停/继续/立即检查
  • 日志落盘:工作区根目录 upstream-watch.log

🎛️ 使用

设置 → 上游更新监听:

  1. 仓库卡片:看 head 提交、状态与新增数;点仓库名跳转 GitHub
  2. 添加仓库:填 owner repo branch,添加后立即建基线开始监听
  3. GitHub Token(可选):填一个只读 PAT(权限 Contents: Read),免疫共享 IP 配额挤兑;token 只存内存、不落日志
  4. 新提交列表:底部气泡 [全部] [freebuff] [opencode] … 切换仓库

基线语义:首次检查建立基线(不虚报),此后任何 push 都会作为「新提交」出现。

🔌 API

路由方法说明
/api/upstream-watch/stateGET完整状态快照(repos / recent / 定时信息)
/api/upstream-watch/poll-nowPOST立即轮询
/api/upstream-watch/toggle-pausedPOST暂停 / 继续
/api/upstream-watch/set-intervalPOST {minutes}调整检查间隔(1–120)
/api/upstream-watch/add-repoPOST {owner,repo,branch}添加仓库
/api/upstream-watch/remove-repoPOST {id}移除仓库
/api/upstream-watch/set-tokenPOST {token}设置 / 清除 Token

🛠️ 开发

npm run build    # 重建 lib/client.js(client/src/client.js → bundle 包装)
npm run check    # 校验产物新鲜度(发布前必须跑)

lib/client.js 是生成物,勿手改;改动 client 源码后需重新 build 并提交。

📁 结构

dsh-upstream-watch/
├── package.json        # main/exports + dsh.bundle.patch + dsh.client
├── cordis.patch.yml    # 组合层:insert 挂载自身
├── index.mjs           # Node half:轮询引擎 + webServer 路由(严格 inject)
├── client/src/client.js# browser half 源码
├── lib/client.js       # 构建产物(__ModuleLoader__.load 包装)
└── scripts/            # 构建 / 校验

📚 发布

  1. 建 GitHub 公开仓库,仓库根 = 包根,提交全部文件(必须包含 lib/client.js 产物
  2. 仓库 description 与 topics:dsh dsh-bundle deepseek-harness + ui + monitoring
  3. 打版本 tag:git tag v0.1.0 && git push origin v0.1.0
  4. 自测:dsh plugin --profile web add github:t479842598/dsh-upstream-watch#v0.1.0 → 重启 web → /api/upstream-watch/state 返回 200
  5. (可选)npm publish 走 npm 分发;或提交收录到 awesome-dsh-plugin / Oh-My-DSH / plugin-registry

📄 License

MIT