B站 @mention 自动回复机器人,使用 AI(LangGraph + LLM)自动生成回复。
- 🤖 自动回复:监听 B站 @mention,使用 AI 自动生成回复
- 🔐 扫码登录:支持二维码登录,凭证自动保存
- 📊 状态追踪:SQLite 数据库记录所有 mentions 状态
- 🏥 健康检查:内置 HTTP 健康检查端点
- 📝 完整日志:结构化日志,支持 JSON 格式
- 🐳 Docker 部署:支持容器化部署
- ⚡ 并发处理:监听和处理独立运行,互不阻塞
# 1. 安装依赖
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# 2. 配置
cp config.yaml config.yaml.bak
# 编辑 config.yaml,填入 API Key
# 3. 运行(首次需扫码登录)
PYTHONPATH=src python -m grok.main# 构建并运行(使用当前目录的 config.yaml)
docker build -t bilibili-grok .
docker run -d --name grok \
-v $(pwd)/data:/app/data \
-v $(pwd)/config.yaml:/app/config.yaml \
-e GROK_AGENT_API_KEY=your-api-key \
-e SEARCH_API_KEY=your-search-key \
bilibili-grok
# 或使用 Docker Compose(推荐)
cp .env.template .env
# 编辑 .env 文件
docker-compose up -d生产部署:
-
使用预构建的镜像:
export GITHUB_USERNAME=your-username export GROK_AGENT_API_KEY=your-api-key docker-compose -f docker-compose.prod.yml up -d
-
镜像自动构建:每次推送到 main 分支或发布新版本时,GitHub Action 会自动构建并推送到
ghcr.io/{username}/bilibili-grok
| 配置项 | 说明 | 默认值 |
|---|---|---|
agent.model |
LLM 模型 | openai/gpt-4o-mini |
agent.api_base |
API 基础URL | https://api.openai.com/v1 |
agent.api_key |
API Key | 环境变量 LITELLM_API_KEY |
monitor.poll_interval |
轮询间隔 (秒) | 60 |
monitor.batch_size |
批处理数量 | 20 |
monitor.processing_interval_seconds |
处理间隔 (秒) | 20 |
monitor.processing_timeout_minutes |
超时跳过阈值 (分钟) | 20 |
reply.rate_limit_seconds |
回复速率限制 (秒) | 3 |
reply.max_retries |
最大重试次数 | 3 |
health.port |
健康检查端口 | 8080 |
环境变量覆盖:所有配置项都支持环境变量覆盖,格式为 GROK_XXX_YYY,例如:
GROK_AGENT_MODEL=gpt-4覆盖模型GROK_AGENT_API_KEY=sk-xxx覆盖 API KEYGROK_AGENT_API_BASE=https://api.example.com/v1覆盖 API 地址GROK_MONITOR_POLL_INTERVAL=120覆盖轮询间隔GROK_MONITOR_BATCH_SIZE=30覆盖批处理数量GROK_MONITOR_PROCESSING_INTERVAL_SECONDS=30覆盖处理间隔GROK_MONITOR_PROCESSING_TIMEOUT_MINUTES=30覆盖超时阈值GROK_REPLY_RATE_LIMIT_SECONDS=5覆盖速率限制GROK_REPLY_MAX_RETRIES=5覆盖最大重试次数GROK_HEALTH_PORT=9090覆盖健康检查端口GROK_LOGGING_LEVEL=DEBUG覆盖日志级别
Docker 部署:使用 Docker Compose 部署时,可以通过 .env 文件或环境变量传入敏感配置:
environment:
- GROK_AGENT_API_KEY=your-api-key
- GROK_SEARCH_API_KEY=your-search-key
- GROK_MONITOR_POLL_INTERVAL=30
- GROK_MONITOR_PROCESSING_INTERVAL_SECONDS=15
- GROK_MONITOR_PROCESSING_TIMEOUT_MINUTES=30详细指南见:docs/快速开始.md
| 配置项 | 说明 | 默认值 |
|---|---|---|
agent.model |
LLM 模型 | openai/gpt-4o-mini |
agent.api_base |
API 基础URL | https://api.openai.com/v1 |
agent.api_key |
API Key | 环境变量 LITELLM_API_KEY |
monitor.poll_interval |
轮询间隔 (秒) | 60 |
monitor.batch_size |
批处理数量 | 20 |
monitor.processing_interval_seconds |
处理间隔 (秒) | 20 |
monitor.processing_timeout_minutes |
超时跳过阈值 (分钟) | 20 |
reply.rate_limit_seconds |
回复速率限制 (秒) | 3 |
reply.max_retries |
最大重试次数 | 3 |
health.port |
健康检查端口 | 8080 |
环境变量覆盖:所有配置项都支持环境变量覆盖,格式为 GROK_XXX_YYY,例如:
GROK_AGENT_MODEL=gpt-4覆盖模型GROK_AGENT_API_KEY=sk-xxx覆盖 API KEYGROK_AGENT_API_BASE=https://api.example.com/v1覆盖 API 地址GROK_MONITOR_POLL_INTERVAL=120覆盖轮询间隔GROK_MONITOR_BATCH_SIZE=30覆盖批处理数量GROK_MONITOR_PROCESSING_INTERVAL_SECONDS=30覆盖处理间隔GROK_MONITOR_PROCESSING_TIMEOUT_MINUTES=30覆盖超时阈值GROK_REPLY_RATE_LIMIT_SECONDS=5覆盖速率限制GROK_REPLY_MAX_RETRIES=5覆盖最大重试次数GROK_HEALTH_PORT=9090覆盖健康检查端口GROK_LOGGING_LEVEL=DEBUG覆盖日志级别
Docker 部署:使用 Docker Compose 部署时,可以通过 .env 文件或环境变量传入敏感配置:
environment:
- GROK_AGENT_API_KEY=your-api-key
- GROK_SEARCH_API_KEY=your-search-key
- GROK_MONITOR_POLL_INTERVAL=30
- GROK_MONITOR_PROCESSING_INTERVAL_SECONDS=15
- GROK_MONITOR_PROCESSING_TIMEOUT_MINUTES=30src/grok/
├── main.py # 入口
├── login.py # 扫码登录
├── mention.py # @mention 监控
├── reply.py # 评论回复
├── agent.py # LangGraph AI Agent
├── db.py # SQLite 存储
├── config.py # 配置管理
├── logger.py # 日志
└── health.py # 健康检查
- Python 3.10+
- LangGraph - AI Agent 框架
- httpx - HTTP 客户端
- aiosqlite - 异步 SQLite
- qrcode - 二维码生成
- aiohttp - 健康检查服务