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@main 与 opencode@dev,任何默认分支 push 都会记录
- 仓库管理:设置页添加/移除任意 GitHub 仓库(
ownerrepobranch,留空即 main) - 实时面板:每个仓库状态徽章、head 提交、监听期间新增数(红色 +N)、检查时间
- 新提交流:sha / 作者 / 相对时间,底部气泡一键切换只看某个仓库
- ETag 条件缓存:无变更返回 304,不计 GitHub API 配额
- 可选 Token:匿名配额仅 60 次/小时(共享出口 IP 易耗尽);设置只读 PAT 后 5000 次/小时
- 间隔可调:5 / 10 / 30 / 60 分钟,支持暂停/继续/立即检查
- 日志落盘:工作区根目录
upstream-watch.log
🎛️ 使用
设置 → 上游更新监听:
- 仓库卡片:看 head 提交、状态与新增数;点仓库名跳转 GitHub
- 添加仓库:填
ownerrepobranch,添加后立即建基线开始监听 - GitHub Token(可选):填一个只读 PAT(权限
Contents: Read),免疫共享 IP 配额挤兑;token 只存内存、不落日志 - 新提交列表:底部气泡
[全部] [freebuff] [opencode] …切换仓库
基线语义:首次检查建立基线(不虚报),此后任何 push 都会作为「新提交」出现。
🔌 API
| 路由 | 方法 | 说明 |
|---|---|---|
/api/upstream-watch/state | GET | 完整状态快照(repos / recent / 定时信息) |
/api/upstream-watch/poll-now | POST | 立即轮询 |
/api/upstream-watch/toggle-paused | POST | 暂停 / 继续 |
/api/upstream-watch/set-interval | POST {minutes} | 调整检查间隔(1–120) |
/api/upstream-watch/add-repo | POST {owner,repo,branch} | 添加仓库 |
/api/upstream-watch/remove-repo | POST {id} | 移除仓库 |
/api/upstream-watch/set-token | POST {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/ # 构建 / 校验
📚 发布
- 建 GitHub 公开仓库,仓库根 = 包根,提交全部文件(必须包含
lib/client.js产物) - 仓库 description 与 topics:
dshdsh-bundledeepseek-harness+ui+monitoring - 打版本 tag:
git tag v0.1.0 && git push origin v0.1.0 - 自测:
dsh plugin --profile web add github:t479842598/dsh-upstream-watch#v0.1.0→ 重启 web →/api/upstream-watch/state返回 200 - (可选)
npm publish走 npm 分发;或提交收录到 awesome-dsh-plugin / Oh-My-DSH / plugin-registry
📄 License
MIT