OpenScout 是一个自主运行的开发者活动通知工具,聚合并排序开发者活动、黑客松与开源聚会,按语义相关度打分。它面向一位常驻印度的开发者:关注开源、AI/ML、DevOps、Docker、Kubernetes 与云计算,活动范围覆盖 Pune、Mumbai 及线上黑客松。
痛点在于活动信息散落在数十个网站、RSS、Discord 社区和社交媒体里,人工追踪成本高,相关活动常在报名截止后才被发现。作者在写代码前先与朋友确认了这个需求。
技术栈上,后端为 FastAPI,提供 REST 接口与可扩展的 EventSource 架构;AI 相关度引擎基于开源权重模型,通过 Ollama 本地推理,使用 Gemma(gemma2:2b / gemma3:4b);数据层用 SQLite 保存偏好、活动、反馈与通知日志;前端为 HTML5/CSS/原生 JavaScript 仪表盘,另含后台调度器 scheduler.py 与 Docker 配置。
对每个采集到的活动,引擎把用户兴趣、地点与活动详情交给模型,输出结构化 JSON:0.0–1.0 的 relevance_score、matched_interests 匹配主题列表、可读的推荐理由,以及是否达到通知阈值的 should_notify 布尔值。本地推理守护进程启动期间有开源权重回退模拟,保证演示与测试可验证。
用户标记 Interested / Not Interested 后,反馈写入 SQLite,用于后续个性化与 few-shot 提示适配。模型参数可调,切换模型只需改环境变量 MODEL_NAME,可选 gemma2:2b、mistral、llama3.2。
选择本地开源权重模型的原因有三点:开发者兴趣与位置属于隐私数据,本地运行可避免外传;后台周期性批量推理若走商业 API 会持续产生费用,本地推理无按量成本;不依赖商业 API 也避免了服务条款变更、接口下线或密钥吊销带来的中断,可离线长期运行。
该项目投稿 Hacktoberfest Weekend Challenge 的 Build for a Friend 主题,归属开源 AI / 开放创新赛道。仓库包含完整测试套件,覆盖 AI 解析、去重与 API 路由,测试全部通过。