dsh-upstream-watch
监听 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
🎛️ 使用
设置 → 上游更新监听:
1. 仓库卡片:看 head 提交、状态与新增数;点仓库名跳转 GitHub 2. 添加仓库:填 owner repo branch,添加后立即建基线开始监听 3. GitHub Token(可选):填一个只读 PAT(权限 Contents: Read),免疫共享 IP 配额挤兑;token 只存内存、不落日志 4. 新提交列表:底部气泡 [全部] [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/ # 构建 / 校验📚 发布
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