# TODO — LiteLLM Gateway > 建立时间:2026-04-10 > 负责人:西莉雅 (Sileya) --- ## 背景 ### 问题 - MiniMax M2.7 频繁返回 529(服务过载),导致 session 被 terminate - Agent 的 API Key 存在泄漏风险(直接写在配置里) - 没有额度管控,agent 滥用无法控制 - 缺少统一日志,无法追踪用量 ### 目标 在 OMV(Nas/Proxmox)节点上部署 LiteLLM Gateway,实现: 1. MiniMax API 安全代理(key 集中管理) 2. 模型自动回落(M2.7 → M2.5 → M2.5-Lightning) 3. per-key 额度管控 4. 完整 API 管理接口(用量查询、key 生成/封禁) 5. Sileya Skill 化(通过 API 动态管理) --- ## 部署规划 ### 部署节点 - **OMV (Open Media Vault)** — 运行在 NAS 上的 Proxmox 容器 - 或者直接跑在 Nas 本身(推荐,更简单) ### 模型路由策略 ``` 优先: MiniMax-M2.7 ↓ 529 / 超时 / 500 备用: MiniMax-M2.5 ↓ 529 / 超时 / 500 兜底: MiniMax-M2.5-Lightning ``` ### 双 Key 隔离 - `sk-sileya-fixed` — 西莉雅的专属 key,指向固定 model group,**不动 config.yaml 就永远不受影响** - `sk-admin-*` — 管理员 key,可动态管理其他 key ### 热更新策略 | 操作 | 是否需要重启 | |------|------------| | `/key/generate` 生成新 key | ❌ 不需要 | | `/key/block` 封禁 key | ❌ 不需要 | | `/model/new` 动态加模型 | ❌ 不需要 | | 改 fallback 策略 / 模型顺序 | ⚠️ 需要(但不频繁,重启 < 5s)| --- ## 待办事项 ### P0 — 必须完成(网关可用) - [ ] **DEPLOY-01**: 在 OMV/Nas 上安装 Python 环境 + pip install litellm - [ ] **DEPLOY-02**: 配置 `config.yaml`(MiniMax provider + fallback 路由 + virtual key) - [ ] **DEPLOY-03**: 配置 `.env`(MINIMAX_API_KEY + LITELLM_MASTER_KEY) - [ ] **DEPLOY-04**: 启动验证 — curl 测试 `/health` - [ ] **DEPLOY-05**: OpenClaw 接入 — 修改 `openclaw.json` 的 model provider 指向 LiteLLM ### P1 — 管控能力 - [ ] **MGMT-01**: 生成各 agent 的专属 key(`sk-sileya-fixed`、`sk-ligoudan`、`sk-nico`) - [ ] **MGMT-02**: 配置 per-key RPM 限制(各 agent 独立额度) - [ ] **MGMT-03**: Sileya Skill — `lite-llm-admin`(用量查询、key 管理接口) - [ ] **MGMT-04**: 验证 hot reload — 测试 `/key/generate` 不影响 Sileya session ### P2 — 安全加固 - [ ] **SEC-01**: 网络隔离 — LiteLLM 仅内网可访问,Tailscale/ZeroTier 组网 - [ ] **SEC-02**: 确认 Sileya 的 key 配置在 `config.yaml` 固定区域,不参与动态更新 - [ ] **SEC-03**: 审计日志 — 确认所有请求记录到数据库 ### P3 — 可选优化 - [ ] **OPT-01**: LiteLLM Dashboard(`:4000/ui`)启用,Web UI 管理 - [ ] **OPT-02**: Prometheus metrics 接入(Grafana 监控) - [ ] **OPT-03**: 多 provider 预留 — 对接其他 LLM(Claude/GPT)时网关层无需修改 --- ## 关键配置 ### config.yaml 核心结构 ```yaml model_list: - model_name: MiniMax-M2.7 litellm_params: model: minimax/MiniMax-M2.7 api_key: os.environ/MINIMAX_API_KEY api_base: https://api.minimax.io/v1 rpm: 60 - model_name: MiniMax-M2.5 litellm_params: model: minimax/MiniMax-M2.5 api_key: os.environ/MINIMAX_API_KEY api_base: https://api.minimax.io/v1 rpm: 60 - model_name: MiniMax-M2.5-Lightning litellm_params: model: minimax/MiniMax-M2.5-Lightning api_key: os.environ/MINIMAX_API_KEY api_base: https://api.minimax.io/v1 rpm: 120 router_settings: fallback_params: [{"model": ["MiniMax-M2.7", "MiniMax-M2.5", "MiniMax-M2.5-Lightning"]}] num_retries: 3 retry_after: 5 timeout: 30 general_settings: master_key: os.environ/LITELLM_MASTER_KEY ``` ### Sileya Key 专属配置(不参与动态更新) ```yaml # config.yaml 中的 sileya 专属区 # 此区域修改需要重启,但这种情况极低频 ``` --- ## API 接口 ### 管理 API(admin key) ``` POST /key/generate — 生成新 key GET /key/info?key=sk-xxx — 查询 key 用量 GET /spend — 查询总用量 POST /key/block — 封禁 key POST /key/unblock — 解封 key POST /model/new — 动态添加模型(热生效) ``` ### 对外 API(agent 使用) ``` POST /v1/chat/completions — 标准 OpenAI 兼容接口 GET /health — 健康检查 ``` --- ## 目录结构 ``` litellm-gateway/ ├── README.md ├── TODO.md ├── config.yaml # 主配置 ├── .env.example # 环境变量模板 ├── requirements.txt # Python 依赖 ├── run.sh # 启动脚本 └── docs/ ├── CONFIG_GUIDE.md ├── DEPLOYMENT.md └── SKILL_INTEGRATION.md ``` --- ## 里程碑 - [ ] **M1**: LiteLLM 在 OMV 上跑通,health check 通过 - [ ] **M2**: Sileya 通过 LiteLLM 代理访问 MiniMax,fallback 验证通过 - [ ] **M3**: 所有 agent 迁移到独立 key 体系 - [ ] **M4**: Sileya Skill `lite-llm-admin` 可用,日常管理无需手动操作