基础设施控制API

一个用于通过GitHub Actions控制VPS爬虫群、MCP工具编排和双LLM路由(Qwen本地/云+Gemini)的组织级API。

  • by Duckshot-Productions
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 DuckshotPro/infra-control-api

使用说明

基础设施控制API

组织级API,用于通过GitHub Actions控制您的VPS scraper车队、MCP工具编排和双LLM路由(Qwen local/cloud+Gemini)。

建筑

GitHub Actions (Tailscale) → VPS Control Plane → ┬→ Scraper Workers
                                                   ├→ Qwen (local/cloud)
                                                   ├→ Gemini API
                                                   └→ MCP Tools

特性

  • 铲运机车队控制:触发、监视和队列抓取作业
  • 双LLM路由:自动路由到Qwen本地(如果可用)或回退到云/双子座
  • MCP工具执行:通过LLM执行任何MCP工具,并进行成本跟踪
  • GitHub操作集成:用于部署和编排的组织级工作流
  • 尾秤安全:零信任网络,只能通过tailnet访问
  • 事件日志记录:实时事件流到Redis+持久数据库存储

设置

1.VPS设置

# Install dependencies
sudo apt update && sudo apt install -y python3-pip python3-venv redis-server postgresql

# Clone repo
git clone https://github.com/DuckshotPro/infra-control-api.git /opt/infra-control-api
cd /opt/infra-control-api

# Create venv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Setup database
sudo -u postgres psql
CREATE DATABASE infradb;
CREATE USER infrauser WITH PASSWORD 'yourpassword';
GRANT ALL PRIVILEGES ON DATABASE infradb TO infrauser;
\q

# Create tables
psql -U infrauser -d infradb < schema.sql

# Configure
cp .env.example .env
nano .env  # Fill in your values

# Get Tailscale IP
tailscale ip -4

# Install systemd service
sudo cp infra-control-api.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable infra-control-api
sudo systemctl start infra-control-api

2.GitHub的秘密

将这些秘密添加到您的 组织 或存储库:

  • TS_OAUTH_CLIENT_ID:Tailscale OAuth客户端ID
  • TS_OAUTH_SECRET:Tailscale OAuth秘密
  • VPS_TAILSCALE_IP:您的VPS Tailscale IP(例如。, 100.x.x.x)
  • VPS_SSH_KEY:用于VPS访问的SSH私钥
  • VPS_USERSSH用户(例如。, ubuntu)
  • CONTROL_API_TOKEN:API身份验证的承载令牌

3.部署

推至 main 分支或手动触发:

gh workflow run deploy-listener.yml

用法

通过GitHub操作触发Scraper

gh workflow run deploy-listener.yml \
  -f action=run-scraper \
  -f target=site_a

执行MCP工具

gh workflow run mcp-orchestrator.yml \
  -f tool=github_search_code \
  -f arguments='{"query": "MCP server", "limit": 10}' \
  -f llm_preference=qwen-local

查询系统状态

curl -H "Authorization: Bearer $TOKEN" \
  https://your-vps.ts.net:5000/query-state

LLM路由逻辑

  • 自动:如果负载<70%,则路由到本地Qwen,否则路由到云端
  • qwen本地:强制本地Qwen(如果不可用,则失败)
  • qwen云:使用Qwen cloud API(成本$$$)
  • 双子座:使用Gemini 2.0 Flash

所有云LLM调用都内置了成本跟踪。

API终点

端点 方法 描述
/health GET 健康检查
/run-scraper POST 队列抓取作业
/scraper-status/<target> GET 获取刮刀状态
/query-state POST 获取系统状态
/execute-mcp POST 执行MCP工具
/admin/restart POST 重新启动服务

下一步

  1. 添加铲运机工作逻辑:在后台工作人员中实施实际的刮刀执行
  2. 连接MCP注册表:电线 /execute-mcp 到您的实际MCP服务器/工具
  3. 设置警报:在scraper故障时向Discord/Slack添加webhooks
  4. 成本仪表板:为LLM使用/成本构建Grafana仪表板

让Qwen或Gemini完成实施 🚀