Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛰️ OSS Radar

AI 时代,每个人都是贡献者。 所有人都可以为下一个阶段添砖加瓦。

一个轻量级的开源贡献工作台 —— 扫描、追踪、管理你的开源贡献之旅。

发现 issue → 认领 → 开发 → 提 PR → 跟踪 review → 合并 🎉

✨ 功能

命令 说明
watch add/remove/list 管理关注的仓库列表
scan 扫描目标仓库的 good first issue / help wanted
issues 查看已发现的 issue(--claimed / --available
claim 在 issue 下评论认领
track 追踪你所有 PR 的 review 状态
digest 汇总报告(终端输出)
serve 守护轮询 + 主动通知(新 issue / PR 状态变化推送到 Qwen Code 会话)
notify 手动推送通知 / 查看通知状态
install 安装为 Qwen Code extension(skill + hooks)+ 注册入站管道

🚀 快速开始

# 1. 设置 GitHub Token(也可从 git remote URL 内嵌 token 自动提取)
export GITHUB_TOKEN="ghp_xxxx"

# 2. 添加关注的仓库
python oss_radar.py watch add alibaba/open-code-review
python oss_radar.py watch add QwenLM/qwen-code

# 3. 扫描可用的 issue
python oss_radar.py scan

# 4. 认领一个 issue(会在 GitHub 上评论,对外可见)
python oss_radar.py claim alibaba/open-code-review 631

# 5. 追踪你的 PR 状态
python oss_radar.py track

# 6. 查看汇总
python oss_radar.py digest

🔌 作为 Qwen Code Extension(issue #1)

一条命令安装为 extension(内含 skill + gate/flush hooks),之后在任何 Qwen Code 会话里直接说 "帮我找点能做的开源任务" / "我的 PR 怎么样了", agent 会自动调用本工具:

# 安装 extension 到 ~/.qwen/extensions/oss-radar,并在当前项目注册入站管道
python oss_radar.py install

# 只装 extension,不写项目 settings
python oss_radar.py install --no-project

# 指定注册入站管道的项目目录
python oss_radar.py install --project ~/my-project

# 验证
qwen extensions list

extension 布局(hooks 随 extension 分发,会话启动即生效, 不需要在 settings.json 里注册 hooks):

~/.qwen/extensions/oss-radar/
├── qwen-extension.json
├── hooks/hooks.json          # SessionStart→flush, UserPromptSubmit→gate
├── skills/oss-radar/SKILL.md
└── scripts/                  # oss_radar.py + oss_notify/

为什么不是 SKILL.md frontmatter hooks? qwen-code 的 skill frontmatter hooks 在 skill 被调用时才注册 (registerSkillHooks 由 skill tool 触发),gate/flush 需要在会话启动前 就生效,因此选用 extension hooks(hookRegistry 初始化时加载)。

skill 与 repo 副本共享同一运行时目录 —— 默认 <项目根>/.oss-radar/ (旧版 ~/.oss-radar/ 首次运行自动迁入):数据库、inbox/pending/ack、 serve 日志都在这里。extension 部署副本通过 install 写入的 .oss-radar-home 标记指向同一目录,保证状态一致。运行时目录不进 git(见 .gitignore)。

📡 主动通知 & 服务化(issue #2)

从"手动轮询"升级为"主动推送":守护进程扫描 GitHub, 新事件通过 Qwen Code 的入站管道(dualOutput.inputFile / RemoteInputWatcher) 直接注入到你正在使用的 agent 会话

serve 守护轮询 GitHub(Search API + GraphQL)
  │  发现新 issue / PR review 状态变化
  ▼
sender 双写 <项目>/.oss-radar/pending.jsonl + inbox.jsonl(flock + 原子写)
  ▼
RemoteInputWatcher 消费 inbox,注入为会话 prompt
  ▼
agent 转述给你;Qwen 没开时留存 pending,下次启动由 flush hook 补投
# 启动守护(后台,默认 15 分钟一轮)
python oss_radar.py serve --background
python oss_radar.py serve --background --interval 600

# 查看 / 停止
python oss_radar.py serve --status
python oss_radar.py serve --stop

# 手动推送测试
python oss_radar.py notify push "测试通知"           # 信息通知(直接注入)
python oss_radar.py notify push "认领 foo/bar #12" --gate  # 待办通知(需确认)
python oss_radar.py notify status

审核闸门(gate hook)

「OSS待办」 前缀的消息会被 UserPromptSubmit hook 拦截: 在 TUI 展示待办内容,不会自动执行,你确认后才生效(复刻 IRDS 通知模式)。 普通信息通知不带前缀,直接注入由 agent 转述。

耐久性

情况 会丢吗
Qwen 开着(已 install 的项目会话) 不丢,实时注入
Qwen 没开 不丢,留存 pending,启动时 flush hook 补投(TTL 7 天)
<项目>/.oss-radar/ 被删 本地缓冲丢失

📡 工作原理

┌──────────────────┐
│  GitHub GraphQL   │ ← 扫描 issue / 查询 PR 状态
│  + REST API       │ ← 认领 issue / Search API
└────────┬─────────┘
         │
┌────────▼─────────┐
│   oss-radar CLI   │ ← 本地命令行工具 / Qwen Code skill
│   + serve 守护    │ ← 定时轮询,发现新事件
└────────┬─────────┘
         │
┌────────▼─────────────────┐
│  <项目>/.oss-radar/            │
│  ├─ oss_radar.db (SQLite) │ ← 仓库列表 / issue 记录 / PR 追踪
│  ├─ inbox.jsonl           │ ← Qwen RemoteInputWatcher 入站管道
│  └─ pending/ack.jsonl     │ ← 耐久缓冲 + 投递确认(flock 保护)
└──────────────────────────┘
  • 发现:轮询 GitHub Search API,按 label 筛选目标仓库的新 issue
  • 追踪:GraphQL 查询你所有 PR 的 reviewDecision 状态
  • 推送:新事件写入 inbox,注入 Qwen Code 会话;pending/ack 保证不丢不重
  • 零依赖:纯 Python 标准库,无需 pip install

🗺️ Roadmap

  • Qwen Code Skill(#1)
  • 主动通知 & 服务化:Qwen 会话推送渠道(#2)
  • MCP Server:覆盖 Claude Desktop / Cursor 等所有 agent(#1 后续)
  • 更多通知渠道:钉钉 / Server酱 / Telegram / Webhook(#2 后续)
  • GitHub Actions cron:免服务器部署(#2 后续)

🎯 设计理念

在 AI 时代,开源贡献的门槛正在被重新定义:

  • AI 辅助编码让每个人都能提交高质量的 PR
  • 好的工具让发现和管理贡献变得毫不费力
  • 每一个小小的 refactor、每一行文档改进,都是添砖加瓦

不需要是专家,只需要开始。

📄 License

MIT

About

🛰️ AI 时代,每个人都是贡献者。扫描、追踪、管理你的开源贡献之旅。Scan, track & manage your open-source contributions.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages