Skip to content

About

AI daily agent for industry news, GitHub projects, and HN feedback

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

AI Daily Agent

一个面向 AI 信息追踪的日报项目,当前包含三块内容:

  • 行业日报
  • GitHub 新项目
  • HN 社区反馈

项目提供两种使用方式:

  • 命令行执行采集与生成流程
  • Streamlit 前端查看历史结果、切换日期、分别更新各模块

当前能力

1. 行业日报

  • 从多个 RSS 源抓取 AI 行业新闻
  • 按发布日期窗口过滤
  • 运行内去重
  • 基于历史记忆做相似内容排除
  • 生成中文日报 Markdown
  • 生成视频脚本 JSON

2. GitHub 新项目

  • 按关键词和 topic 抓取近期值得关注的项目
  • 补充仓库语言、Star、Fork、Issue、发布时间、最近推送时间
  • 读取 README 摘要,尽量解释项目是做什么的
  • 可经过大模型转成中文说明

3. HN 社区反馈

  • 聚合 Hacker News 上近期和 AI 相关的讨论
  • 提取讨论摘要、正面反馈、负面反馈、主题信号和评论摘录
  • 可经过大模型转成中文输出

项目结构

app/
  connectors/   数据源连接器,当前支持 RSS / GitHub / Hacker News
  filters/      时间过滤、去重、筛选
  generators/   日报、视频脚本、补充模块中文化
  memory/       Chroma 记忆库与空实现兜底
  models/       Pydantic 数据模型
  workflow/     LangGraph 工作流
  delivery/     导出到 data/outputs

config/
  ai_news.yaml  主配置文件

scripts/
  run_daily.py  命令行入口

streamlit_app.py
  前端页面入口

环境要求

  • 推荐 Python 3.11 或 3.12
  • 3.13 在部分依赖上可能能运行,但 AI 生态兼容性通常不如 3.11/3.12

安装依赖:

pip install -r requirements.txt

环境变量

在项目根目录创建 .env:

DASHSCOPE_API_KEY=your_dashscope_key
GITHUB_TOKEN=your_github_token

说明:

  • DASHSCOPE_API_KEY
    • 用于日报、GitHub 新项目、HN 社区反馈的 LLM 中文生成
  • GITHUB_TOKEN
    • 用于 GitHub 项目抓取,能提高 API 限额稳定性

仓库中已提供模板文件:

  • .env.example

实际 .env 不会上传到 GitHub。

配置文件

主配置文件是:

  • config/ai_news.yaml

当前配置已经包含:

  • 行业新闻 RSS 源
  • GitHub 新项目源
  • Hacker News 社区反馈源
  • 生成参数、筛选阈值、输出目录配置

如果你只想微调抓取数量、关键词或阈值,直接改这个文件即可。

运行方式

1. 全量运行

python scripts/run_daily.py --config config/ai_news.yaml

2. 分模块运行

只更新行业日报:

python scripts/run_daily.py --target industry

只更新 GitHub 新项目:

python scripts/run_daily.py --target github

只更新 HN 社区反馈:

python scripts/run_daily.py --target hn

同时更新全部模块:

python scripts/run_daily.py --target all

说明:

  • 分模块更新可以节省 API 费用
  • 未更新的模块会在同一天内尽量保留最近一次可用结果
  • 不会把前一天的结果误当成当天内容

前端页面

启动 Streamlit:

streamlit run streamlit_app.py

项目默认监听:

  • 0.0.0.0:8501

前端当前支持:

  • 查看行业日报
  • 查看 GitHub 新项目
  • 查看 HN 社区反馈
  • 按日期切换历史结果
  • 在页面中分别更新三个模块
  • 在页面中一键更新全部内容

输出目录

每次运行后会输出到:

data/raw/<run_id>/
data/outputs/<run_id>/
data/outputs/latest/

常见文件:

  • data/outputs/<run_id>/daily_report.md
  • data/outputs/<run_id>/selected_articles.json
  • data/outputs/<run_id>/github_projects.json
  • data/outputs/<run_id>/hn_feedback.json
  • data/outputs/<run_id>/video_script.json
  • data/outputs/<run_id>/run_summary.json

其中:

  • latest/ 始终指向最近一次运行结果

降级与兜底

当前项目做了几层兜底:

  • 如果 LLM 不可用,会回退到非 LLM 生成逻辑
  • 如果 chromadb 或 grpc 被系统策略拦截,会回退到无记忆模式
  • 如果某个日期最新一次运行没有某模块内容,前端会回退到该日期最近一次有内容的快照

Git 与上传说明

当前仓库已排除以下本地内容,不会上传:

  • .env
  • data/
  • bge-m3/
  • .streamlit/secrets.toml

如果你本机走代理,当前仓库本地 Git 已配置为:

http.proxy=http://127.0.0.1:7897
https.proxy=http://127.0.0.1:7897

这只作用于当前仓库,方便后续继续推送到 GitHub。

测试

运行测试:

pytest

如果只想跑核心测试:

pytest tests/test_report.py tests/test_supplement_connectors.py tests/test_exporter_partial_updates.py

已知事项

  • langgraph 缺失时,前端仍可浏览历史结果,但不能实际触发完整 pipeline
  • Windows 上如果 cygrpc 被策略阻止,项目会自动进入无记忆模式
  • GitHub 项目描述质量依赖 README 内容和 LLM 可用性

About

AI daily agent for industry news, GitHub projects, and HN feedback

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages