Files
planManage/README.md
锦麟 王 61ce809634 feat: 多平台 Coding Plan 统一管理系统初始实现
- 支持 MiniMax/OpenAI/Google Gemini/智谱/Kimi 五个平台
- 插件化 Provider 架构,自动发现注册
- 多维度 QuotaRule 额度追踪(固定间隔/自然周期/API同步/手动)
- OpenAI + Anthropic 兼容 API 代理,SSE 流式转发
- Model 路由表 + 额度耗尽自动 fallback
- 多媒体任务队列(图片/语音/视频)
- Vue3 + Tailwind 单文件 Web 仪表盘
- Docker 一键部署

Made-with: Cursor
2026-03-31 15:50:42 +08:00

124 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Plan Manager - 多平台 Coding Plan 统一管理系统
统一管理 MiniMax、OpenAI、Google Gemini、智谱、Kimi 等多个 AI 平台的订阅计划提供额度查询、刷新倒计时、API 代理转发、多媒体任务队列和 Web 仪表盘。
## 功能
- **多 Plan 管理** -- 增删改查,支持任意数量的 AI 平台订阅
- **多维度额度追踪** -- 同一 Plan 可配置多条 QuotaRule如 Kimi 的"周额度 + 5 小时滚动窗口"
- **四种刷新策略** -- 固定间隔 / 自然周期 / API 同步 / 手动
- **API 代理** -- OpenAI (`/v1/chat/completions`) + Anthropic (`/v1/messages`) 兼容端点
- **智能路由** -- 按 model 名称自动路由到对应 Plan额度耗尽自动 fallback
- **任务队列** -- 支持图片、语音、视频等多媒体任务的异步提交和消费
- **插件化 Provider** -- 新增平台只需添加一个 Python 文件
- **Web 仪表盘** -- 额度进度条、刷新倒计时、队列管理、配置页
## 快速开始
### Docker 部署(推荐)
```bash
# 1. 编辑配置文件,填入各平台 API Key
vim config.yaml
# 2. 启动
docker compose up -d
# 3. 访问 http://localhost:8080
```
### 本地开发
```bash
# 安装依赖
pip install -r requirements.txt
# 启动
uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload
```
## 配置说明
编辑 `config.yaml`
```yaml
server:
host: "0.0.0.0"
port: 8080
proxy_api_key: "your-proxy-key" # 代理端点鉴权 Key留空则不鉴权
plans:
- name: "Kimi Coding Plan"
provider: kimi
api_key: "sk-xxx"
api_base: "https://api.moonshot.cn/v1"
quota_rules:
- rule_name: "周额度"
quota_total: 500
quota_unit: requests
refresh_type: calendar_cycle
calendar_unit: weekly
calendar_anchor: { weekday: 1, hour: 0 }
- rule_name: "5小时滚动窗口"
quota_total: 50
quota_unit: requests
refresh_type: fixed_interval
interval_hours: 5
```
### QuotaRule 刷新类型
| refresh_type | 说明 | 关键参数 |
|---|---|---|
| `fixed_interval` | 固定间隔刷新(如 5h、13h | `interval_hours` |
| `calendar_cycle` | 自然周期(日/周/月) | `calendar_unit` + `calendar_anchor` |
| `api_sync` | 调用平台 API 查询真实余额 | 无 |
| `manual` | 手动重置 | 无 |
## API 代理使用
配置好 Plan 和 Model 路由后,可将本系统作为统一网关:
```bash
# OpenAI 兼容格式
curl http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer your-proxy-key" \
-H "Content-Type: application/json" \
-d '{"model": "moonshot-v1-8k", "messages": [{"role": "user", "content": "hello"}]}'
# 指定 Plan跳过 model 路由)
curl http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer your-proxy-key" \
-H "X-Plan-Id: plan-id-here" \
-d '...'
# Anthropic 兼容格式
curl http://localhost:8080/v1/messages \
-H "x-api-key: your-proxy-key" \
-d '{"model": "glm-4-plus", "messages": [{"role": "user", "content": "hello"}]}'
```
## 扩展新平台
`app/providers/` 下新建文件即可,无需修改核心代码:
```python
# app/providers/new_platform.py
from app.providers.base import BaseProvider, Capability
class NewPlatformProvider(BaseProvider):
name = "new_platform"
display_name = "New Platform"
capabilities = [Capability.CHAT]
async def chat(self, messages, model, plan, stream=True, **kwargs):
# 实现 chat 逻辑...
yield "data: ..."
```
然后在 `config.yaml` 或 Web UI 中添加对应的 Plan 即可。
## API 文档
启动后访问 `http://localhost:8080/docs` 查看自动生成的 OpenAPI 文档。