GitHub Daily - 每日开源项目推送

核心结论:利用 GitHub Actions + 本地 Ollama 大模型 + Tailscale 加密隧道 + PushPlus 微信推送,打造每日自动推送 GitHub 热门开源项目的自动化流水线。

特性

  • 自定义搜索 - 灵活配置搜索主题,如 AI Agent、Local LLM 等
  • 本地 AI 总结 - 使用 Ollama 运行本地大模型,数据安全
  • 流式生成 - 支持流式响应 (Streaming),防止跨网络连接超时
  • 模型预热 - 自动预热加载模型,首字响应更迅速
  • 安全连接 - 通过 Tailscale 加密隧道访问家庭电脑
  • 微信推送 - 支持 PushPlus 免费推送
  • 现代管理 - 使用 uv 处理依赖,极速环境搭建
  • 调试工具集 - 内置全套 API 调试脚本,快速定位连接故障

架构图

graph TD
    subgraph "Cloud (GitHub)"
        GA[GitHub Actions]
        GS[GitHub Search API]
    end

    subgraph "Tunnels"
        TS[Tailscale Encryption]
    end

    subgraph "Home (Local)"
        LO[Ollama LLM]
    end

    subgraph "Notification"
        PP[PushPlus WeChat]
    end

    GA --> GS
    GA --> TS
    TS --> LO
    GA --> PP

文件结构

1
2
3
4
5
6
7
8
├── search_and_summarize.py    # 主脚本
├── pyproject.toml # uv 项目配置文件
├── uv.lock # 依赖锁定文件
├── debug_*.py # 各类连接/API 调试脚本
├── .github/
│ └── workflows/
│ └── daily-interest.yml # Actions 定时任务
└── README.md

准备工作

1. GitHub 配置

1.1 创建 Personal Access Token (PAT)

  1. 访问 GitHub Settings → Developer settings → Personal access tokens → Classic
  2. 点击 “Generate new token (classic)”
  3. 勾选 repo 权限
  4. 复制生成的 token,保存好(只会显示一次)

1.2 配置仓库 Secrets

在 GitHub 仓库的 Settings → Secrets and variables → Actions 中添加:

Secret 名称 说明 示例
REPO_TOKEN GitHub PAT ghp_xxxxxxxxxxxx
PUSHPLUS_TOKEN PushPlus token 见下方获取步骤
PUSHPLUS_GROUP 微信群组编码(可选) xxxxx
TAILSCALE_AUTHKEY Tailscale 临时认证 key tskey-auth-xxxxx

1.3 配置仓库 Variables (可选)

变量名称 说明 示例
OLLAMA_HOSTNAME 家用电脑主机名 popos

2. 获取 PushPlus Token

  1. 访问 https://www.pushplus.plus/
  2. 微信扫码登录
  3. 在”一对一推送”获取 token
  4. 如果要发群聊:在”群组管理”创建群组,获取 group code

3. 配置 Tailscale

3.1 安装 Tailscale(家用电脑)

  1. 访问 https://tailscale.com/download 下载安装
  2. 登录你的 Tailscale 账号
  3. 在 admin 面板 (https://login.tailscale.com/admin) 启用 MagicDNS

3.2 生成 Auth Key

  1. 访问 https://login.tailscale.com/admin/settings/keys
  2. Generate auth key → 勾选 Ephemeral → Generate
  3. 复制 key,保存到 GitHub Secrets

3.3 确认主机名

在 Tailscale admin 面板查看你的设备主机名。系统默认使用的是 mbp,你可以通过 GitHub Actions 变量 OLLAMA_HOSTNAME 进行自定义覆盖。

4. 配置本地 Ollama

4.1 安装 Ollama

1
2
3
4
5
# Linux
curl -fsSL https://ollama.com/install.sh | sh

# macOS
brew install ollama

4.2 拉取模型

1
ollama pull qwen3.5:4b

4.3 启动服务(监听所有接口)

1
2
3
4
5
6
7
# Linux
export OLLAMA_HOST=0.0.0.0
ollama serve

# macOS
launchctl setenv OLLAMA_HOST "0.0.0.0"
ollama serve

4.4 设置开机自启

Linux (systemd):

1
2
3
4
5
sudo systemctl edit ollama.service
# 添加:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
sudo systemctl restart ollama

macOS (launchd):

1
2
3
brew services stop ollama
launchctl setenv OLLAMA_HOST "0.0.0.0"
brew services start ollama

本地测试

安装 uv (推荐)

1
2
# 安装依赖并运行
uv run search_and_summarize.py

设置环境变量

1
2
export REPO_TOKEN="ghp_xxxxx"
export PUSHPLUS_TOKEN="your_token"

调试工具集

脚本名称 用途
uv run debug_chat.py 测试原生 Chat 接口
uv run debug_v1_requests.py 测试 OpenAI 兼容层接口
uv run debug_speed.py 压力/速度测试
uv run debug_native.py 原生生成接口测试
uv run debug_ollama.py OpenAI 库兼容性测试

自定义搜索主题

编辑 search_and_summarize.py 中的 QUERIES 列表:

1
2
3
4
5
6
7
QUERIES = [
{
"q": 'topic:ai',
"label": "AI 热门项目 Top 10",
"max_items": 5
},
]

GitHub Search 语法速查

语法 说明 示例
created:>=YYYY-MM-DD 创建日期 created:>=2026-03-01
stars:>=N / stars>N Star 数量 stars:>=50
language:xxx 编程语言 language:rust
-is:fork 排除 fork -is:fork
-archived 排除归档 -archived

故障排查

Ollama 连接失败

1
2
3
4
5
6
7
8
# 检查 Tailscale 连接
tailscale status

# 检查 Ollama 服务
curl http://localhost:11434/api/tags

# 检查防火墙
sudo ufw allow 11434/tcp # Linux

GitHub API 限流

  • 未认证:每小时 10 次
  • 已认证:每小时 5000 次
  • 解决方案:确保配置了 GITHUB_TOKEN

PushPlus 推送失败

  • 检查 token 是否正确
  • 检查群组编码(如果发群)
  • 访问 PushPlus 官网查看推送日志

修改调度时间

编辑 .github/workflows/daily-interest.yml:

1
2
3
on:
schedule:
- cron: '0 1 * * *' # 改为其他时间

Cron 格式:分 时 日 月 周(UTC 时间)

成本说明

  • GitHub Actions: 免费(每月 2000 分钟)
  • Tailscale: 免费(支持 3 用户 + 100 设备)
  • PushPlus: 免费
  • Ollama: 仅需家用电脑电费

最终实现效果

文章目录
  1. 1. 特性
  2. 2. 架构图
  3. 3. 文件结构
  4. 4. 准备工作
    1. 4.1. 1. GitHub 配置
      1. 4.1.1. 1.1 创建 Personal Access Token (PAT)
      2. 4.1.2. 1.2 配置仓库 Secrets
      3. 4.1.3. 1.3 配置仓库 Variables (可选)
    2. 4.2. 2. 获取 PushPlus Token
    3. 4.3. 3. 配置 Tailscale
      1. 4.3.1. 3.1 安装 Tailscale(家用电脑)
      2. 4.3.2. 3.2 生成 Auth Key
      3. 4.3.3. 3.3 确认主机名
    4. 4.4. 4. 配置本地 Ollama
      1. 4.4.1. 4.1 安装 Ollama
      2. 4.4.2. 4.2 拉取模型
      3. 4.4.3. 4.3 启动服务(监听所有接口)
      4. 4.4.4. 4.4 设置开机自启
  5. 5. 本地测试
    1. 5.1. 安装 uv (推荐)
    2. 5.2. 设置环境变量
    3. 5.3. 调试工具集
  6. 6. 自定义搜索主题
    1. 6.1. GitHub Search 语法速查
  7. 7. 故障排查
    1. 7.1. Ollama 连接失败
    2. 7.2. GitHub API 限流
    3. 7.3. PushPlus 推送失败
  8. 8. 修改调度时间
  9. 9. 成本说明
  10. 10. 最终实现效果