English | 中文
GitHub Sentinel 是专为大模型(LLMs)时代打造的智能信息检索和高价值内容挖掘 AI Agent
。它面向那些需要高频次、大量信息获取的用户,特别是开源爱好者、个人开发者和投资人等。
- 订阅管理:轻松管理和跟踪您关注的 GitHub 仓库。
- 更新检索:自动检索并汇总订阅仓库的最新动态,包括提交记录、问题和拉取请求。
- 通知系统:通过电子邮件等方式,实时通知订阅者项目的最新进展。
- 报告生成:基于检索到的更新生成详细的项目进展报告,支持多种格式和模板,满足不同需求。
- 多模型支持:结合 OpenAI 和 Ollama 模型,生成自然语言项目报告,提供更智能、精准的信息服务。
- 定时任务:支持以守护进程方式执行定时任务,确保信息更新及时获取。
- 图形化界面:基于 Gradio 实现了简单易用的 GUI 操作模式,降低使用门槛。
- 容器化:项目支持 Docker 构建和容器化部署,便于在不同环境中快速部署和运行。
- 持续集成:实现了完备的单元测试,便于进一步配置生产级 CI/CD 流程,确保项目的稳定性和高质量交付。
GitHub Sentinel 不仅能帮助用户自动跟踪和分析 GitHub 开源项目
的最新动态,还能快速扩展到其他信息渠道,如 Hacker News
的热门话题,提供更全面的信息挖掘与分析能力。
GitHub 项目进度跟踪与总结
首先,安装所需的依赖项:
pip install -r requirements.txt
编辑 config.json
文件,以设置您的 GitHub Token、Email 设置(以腾讯企微邮箱为例)、订阅文件、更新设置,大模型服务配置(支持 OpenAI GPT API 和 Ollama 私有化大模型服务),以及自动检索和生成的报告类型(GitHub项目进展, Hacker News 热门话题和前沿技术趋势):
{
"github": {
"token": "your_github_token",
"subscriptions_file": "subscriptions.json",
"progress_frequency_days": 1,
"progress_execution_time": "08:00"
},
"email": {
"smtp_server": "smtp.exmail.qq.com",
"smtp_port": 465,
"from": "[email protected]",
"password": "your_email_password",
"to": "[email protected]"
},
"llm": {
"model_type": "ollama",
"openai_model_name": "gpt-4o-mini",
"ollama_model_name": "llama3",
"ollama_api_url": "http://localhost:11434/api/chat"
},
"report_types": [
"github",
"hacker_news_hours_topic",
"hacker_news_daily_report"
],
"slack": {
"webhook_url": "your_slack_webhook_url"
}
}
出于安全考虑: GitHub Token 和 Email Password 的设置均支持使用环境变量进行配置,以避免明文配置重要信息,如下所示:
# Github
export GITHUB_TOKEN="github_pat_xxx"
# Email
export EMAIL_PASSWORD="password"
GitHub Sentinel 支持以下三种运行方式:
您可以从命令行交互式地运行该应用:
python src/command_tool.py
在此模式下,您可以手动输入命令来管理订阅、检索更新和生成报告。
要将该应用作为后台服务(守护进程)运行,它将根据相关配置定期自动更新。
您可以直接使用守护进程管理脚本 daemon_control.sh 来启动、查询状态、关闭和重启:
-
启动服务:
$ ./daemon_control.sh start Starting DaemonProcess... DaemonProcess started.
- 这将启动[./src/daemon_process.py],按照
config.json
中设置的更新频率和时间点定期生成报告,并发送邮件。 - 本次服务日志将保存到
logs/DaemonProcess.log
文件中。同时,历史累计日志也将同步追加到logs/app.log
日志文件中。
- 这将启动[./src/daemon_process.py],按照
-
查询服务状态:
$ ./daemon_control.sh status DaemonProcess is running.
-
关闭服务:
$ ./daemon_control.sh stop Stopping DaemonProcess... DaemonProcess stopped.
-
重启服务:
$ ./daemon_control.sh restart Stopping DaemonProcess... DaemonProcess stopped. Starting DaemonProcess... DaemonProcess started.
要使用 Gradio 界面运行应用,允许用户通过 Web 界面与该工具交互:
python src/gradio_server.py
- 这将在您的机器上启动一个 Web 服务器,允许您通过用户友好的界面管理订阅和生成报告。
- 默认情况下,Gradio 服务器将可在
http://localhost:7860
访问,但如果需要,您可以公开共享它。
Ollama 是一个私有化大模型管理工具,支持本地和容器化部署,命令行交互和 REST API 调用。
关于 Ollama 安装部署与私有化大模型服务发布的详细说明,请参考Ollama 安装部署与服务发布。
要在 GitHub Sentinel 中使用 Ollama 调用私有化大模型服务,请按照以下步骤进行安装和配置:
-
安装 Ollama: 请根据 Ollama 的官方文档下载并安装 Ollama 服务。Ollama 支持多种操作系统,包括 Linux、Windows 和 macOS。
-
启动 Ollama 服务: 安装完成后,通过以下命令启动 Ollama 服务:
ollama serve
默认情况下,Ollama API 将在
http://localhost:11434
运行。 -
配置 Ollama 在 GitHub Sentinel 中使用: 在
config.json
文件中,配置 Ollama API 的相关信息:{ "llm": { "model_type": "ollama", "ollama_model_name": "llama3", "ollama_api_url": "http://localhost:11434/api/chat" } }
-
验证配置: 使用以下命令启动 GitHub Sentinel 并生成报告,以验证 Ollama 配置是否正确:
python src/command_tool.py
如果配置正确,您将能够通过 Ollama 模型生成报告。
为了确保代码的质量和可靠性,GitHub Sentinel 使用了 unittest
模块进行单元测试。关于 unittest
及其相关工具(如 @patch
和 MagicMock
)的详细说明,请参考 单元测试详细说明。
validate_tests.sh
是一个用于运行单元测试并验证结果的 Shell 脚本。它在 Docker 镜像构建过程中被执行,以确保代码的正确性和稳定性。
- 脚本运行所有单元测试,并将结果输出到
test_results.txt
文件中。 - 如果测试失败,脚本会输出测试结果并导致 Docker 构建失败。
- 如果所有测试通过,脚本会继续构建过程。
为了便于在各种环境中构建和部署 GitHub Sentinel 项目,我们提供了 Docker 支持。该支持包括以下文件和功能:
Dockerfile
是用于定义如何构建 Docker 镜像的配置文件。它描述了镜像的构建步骤,包括安装依赖、复制项目文件、运行单元测试等。
- 使用
python:3.10-slim
作为基础镜像,并设置工作目录为/app
。 - 复制项目的
requirements.txt
文件并安装 Python 依赖。 - 复制项目的所有文件到容器,并赋予
validate_tests.sh
脚本执行权限。 - 在构建过程中执行
validate_tests.sh
脚本,以确保所有单元测试通过。如果测试失败,构建过程将中止。 - 构建成功后,将默认运行
src/main.py
作为容器的入口点。
build_image.sh
是一个用于自动构建 Docker 镜像的 Shell 脚本。它从当前的 Git 分支获取分支名称,并将其用作 Docker 镜像的标签,便于在不同分支上生成不同的 Docker 镜像。
- 获取当前的 Git 分支名称,并将其用作 Docker 镜像的标签。
- 使用
docker build
命令构建 Docker 镜像,并使用当前 Git 分支名称作为标签。
chmod +x build_image.sh
./build_image.sh
通过这些脚本和配置文件,确保在不同的开发分支中,构建的 Docker 镜像都是基于通过单元测试的代码,从而提高了代码质量和部署的可靠性。
贡献是使开源社区成为学习、激励和创造的惊人之处。非常感谢你所做的任何贡献。如果你有任何建议或功能请求,请先开启一个议题讨论你想要改变的内容。
该项目根据 Apache-2.0 许可证的条款进行许可。详情请参见 LICENSE 文件。
Django Peng - [email protected]