iflow-proxy
v1.0.0
Published
iFlow API 反向代理 - 提供 OpenAI / Anthropic 兼容接口,支持多账号轮换,适配 Claude Code / Cline 等工具
Maintainers
Readme
iflow-proxy
iFlow API 反向代理 — 提供 OpenAI 和 Anthropic 兼容接口,支持多账号自动轮换。
可直接对接 Claude Code、Cline、LangChain、OpenAI SDK 等工具。
功能
- OpenAI 兼容 API:
/v1/chat/completions、/v1/models - Anthropic 兼容 API:
/v1/messages、/v1/messages/count_tokens - 多账号轮换:Round-Robin / Fill-First 策略
- 两种登录方式:OAuth 手机登录 + Cookie 登录
- 自动刷新:Token 过期前自动刷新凭据
- 配额切换:账号配额耗尽自动切换到下一个
- 流式支持:完整支持 SSE 流式响应
- Web 管理面板:实时统计、Token 消耗图表、账号管理
- 跨平台:Windows / macOS / Linux 均可运行
安装
# 全局安装
npm install -g iflow-proxy
# 或用 npx 直接运行(无需安装)
npx iflow-proxy快速开始
# 1. 初始化配置文件(可选,在当前目录生成 config.yaml)
iflow-proxy init
# 2. 添加 iFlow 账号(OAuth 手机登录)
iflow-proxy login
# 或 Cookie 登录
iflow-proxy login:cookie
# 3. 启动代理服务
iflow-proxy使用 npx(无需全局安装)
npx iflow-proxy # 启动服务
npx iflow-proxy login # 添加账号
npx iflow-proxy init # 生成配置配置
配置文件搜索顺序:
--config命令行指定- 当前目录的
config.yaml ~/.iflow-proxy/config.yaml- 包自带的默认配置
port: 8318 # 服务端口
host: "0.0.0.0" # 绑定地址
api-keys: # 客户端调用密钥
- "sk-iflow-proxy-key"
auth-dir: "~/.iflow-proxy" # 凭据存储目录
routing:
strategy: "round-robin" # round-robin | fill-first
quota-exceeded:
switch-account: true # 配额耗尽自动切换
log-level: "info" # debug | info | warn | error调用示例
curl (OpenAI 格式)
curl http://localhost:8318/v1/chat/completions \
-H "Authorization: Bearer sk-iflow-proxy-key" \
-H "Content-Type: application/json" \
-d '{"model": "glm-5", "messages": [{"role": "user", "content": "你好"}]}'curl (Anthropic 格式)
curl http://localhost:8318/v1/messages \
-H "x-api-key: sk-iflow-proxy-key" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{"model": "glm-5", "max_tokens": 1024, "messages": [{"role": "user", "content": "你好"}]}'Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
api_key="sk-iflow-proxy-key",
base_url="http://localhost:8318/v1",
)
resp = client.chat.completions.create(
model="glm-5",
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)Python (Anthropic SDK / Claude Code)
import anthropic
client = anthropic.Anthropic(
api_key="sk-iflow-proxy-key",
base_url="http://localhost:8318",
)
resp = client.messages.create(
model="glm-5",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}],
)
print(resp.content[0].text)Node.js (OpenAI SDK)
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-iflow-proxy-key',
baseURL: 'http://localhost:8318/v1',
});
const response = await client.chat.completions.create({
model: 'glm-5',
messages: [{ role: 'user', content: '你好' }],
});
console.log(response.choices[0].message.content);命令行参数
iflow-proxy [command] [options]
命令:
start 启动代理服务(默认)
login OAuth 手机登录(添加账号)
login:cookie Cookie 登录
init 在当前目录生成默认 config.yaml
--help, -h 显示帮助
选项:
--config <path> 指定配置文件路径项目结构
iflow-proxy/
├── bin/
│ └── iflow-proxy.js # CLI 入口
├── config.yaml # 默认配置文件
├── package.json
├── public/ # Web 管理面板
├── README.md
└── src/
├── index.js # 服务入口(Express)
├── config.js # 配置加载器
├── anthropic/
│ └── adapter.js # Anthropic ↔ OpenAI 双向转换器
├── auth/
│ ├── credentials.js # 凭据管理(加载/保存/刷新)
│ └── selector.js # 多账号轮换选择器
├── iflow/
│ ├── signature.js # iFlow 签名与请求头
│ ├── client.js # iFlow API 客户端
│ └── models.js # 模型列表管理
└── cli/
├── login.js # OAuth 登录脚本
└── cookie-login.js # Cookie 登录脚本数据存储
所有数据存储在 ~/.iflow-proxy/ 目录下(跨平台通用):
~/.iflow-proxy/
├── iflow-*.json # 账号凭据文件
└── data/
└── stats.json # 统计数据复用已有凭据
如果你已通过 CLIProxyAPI 登录了 iFlow 账号:
# Linux / macOS
cp ~/.cli-proxy-api/iflow-*.json ~/.iflow-proxy/
# 或 Windows (PowerShell)
Copy-Item "$env:USERPROFILE\.cli-proxy-api\iflow-*.json" "$env:USERPROFILE\.iflow-proxy\"License
MIT
