34 KiB
ProxyCast 完整配置文档
系统原理
你的 AI 凭证 ProxyCast 任意 AI 工具
┌─────────────────┐ ┌─────────────┐ ┌─────────────────────┐
│ Kiro OAuth │ │ │ │ Claude Code │
│ Gemini API Keys │ ───▶ │ 本地 API │ ───▶ │ Cherry Studio │
│ Qwen OAuth │ │ 代理服务 │ │ Cursor / Cline │
│ OpenRouter │ │ :8999 │ │ 你的 AI Agent │
└─────────────────┘ └─────────────┘ └─────────────────────┘
ProxyCast 把你已有的 AI 凭证转换成标准 OpenAI/Anthropic API,让任何支持这些接口的工具都能用。
一、启动 ProxyCast
cd /mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main && ./src-tauri/target/release/proxycast &
服务监听:http://127.0.0.1:8999
二、Claude Code 启动命令
Claude Opus 4.6 (Kiro 凭证,最强)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-opus-4-5
Claude Sonnet 4.5 (Kiro 凭证)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-sonnet-4-5
DeepSeek R1 (OpenRouter 免费,推理最强)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model deepseek/deepseek-r1-0528:free
Gemini 2.0 Flash (OpenRouter 免费)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model google/gemini-2.0-flash-exp:free
Llama 3.1 405B (OpenRouter 免费,综合最强)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model meta-llama/llama-3.1-405b-instruct:free
Devstral 2 (OpenRouter 免费,代码专精)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model mistralai/devstral-2512:free
Gemini 3 Pro Preview - 最新预览版
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-3-pro-preview
### Gemini 2.5 Pro - Pro 版本
```bash
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-2.5-pro
Gemini 2.5 Pro Preview
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-2.5-pro-preview-06-05
Gemini 2.5 Flash - 快速版本
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-2.5-flash
Gemini 2.5 Flash Lite - 轻量版本
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-2.5-flash-lite
三、API 直接调用
通用配置
API Base URL: http://127.0.0.1:8999/v1
API Key: proxy_cast
cURL 示例
curl http://127.0.0.1:8999/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer proxy_cast" \
-d '{
"model": "claude-opus-4-5",
"messages": [{"role": "user", "content": "Hello"}]
}'
获取可用模型列表
curl http://127.0.0.1:8999/v1/models -H "Authorization: Bearer proxy_cast"
四、可用模型列表
Kiro 凭证 (Claude)
| 模型 | 说明 |
|---|---|
claude-opus-4-5 |
最强模型 |
claude-sonnet-4-5 |
平衡性能 |
claude-sonnet-4-5-20250929 |
Sonnet 特定版本 |
claude-3-7-sonnet-20250219 |
Claude 3.7 |
claude-3-5-sonnet-latest |
Claude 3.5 |
Gemini API Keys (8个轮询负载均衡)
| 模型 | 说明 |
|---|---|
gemini-3-pro-preview |
最新预览版 |
gemini-2.5-pro |
Pro 版本 |
gemini-2.5-flash |
快速版本 |
gemini-2.5-flash-lite |
轻量版本 |
Qwen OAuth
| 模型 | 说明 |
|---|---|
qwen3-coder-plus |
代码增强版 |
qwen3-coder-flash |
快速版本 |
OpenRouter 免费模型
| 模型 | 说明 |
|---|---|
deepseek/deepseek-r1-0528:free |
推理最强 |
google/gemini-2.0-flash-exp:free |
翻译首选 |
meta-llama/llama-3.1-405b-instruct:free |
综合最强 |
meta-llama/llama-3.3-70b-instruct:free |
速度快 |
mistralai/devstral-2512:free |
代码专精 123B |
nousresearch/hermes-3-llama-3.1-405b:free |
指令遵循好 |
openai/gpt-oss-120b:free |
GPT 开源 120B |
openai/gpt-oss-20b:free |
GPT 开源 20B |
moonshotai/kimi-k2:free |
Kimi K2.5 月之暗面 |
z-ai/glm-4.5-air:free |
中文原生 |
alibaba/tongyi-deepresearch-30b-a3b:free |
中文研究 |
kwaipilot/kat-coder-pro:free |
代码 Agent |
qwen/qwen-2.5-vl-7b-instruct:free |
视觉理解 |
allenai/olmo-3.1-32b-think:free |
深度推理 |
五、凭证配置详情
凭证文件位置
| Provider | 路径 |
|---|---|
| Kiro | ~/.aws/sso/cache/kiro-auth-token.json |
| Gemini | ~/.gemini/oauth_creds.json |
| Qwen | ~/.qwen/oauth_creds.json |
| Codex | ~/.codex/auth.json |
ProxyCast 数据目录
- 配置文件:
~/.config/proxycast/config.json - 数据库:
~/.proxycast/proxycast.db - 凭证副本:
~/.local/share/proxycast/credentials/
当前凭证池
kiro - Kiro OAuth (Claude)
qwen - Qwen OAuth
gemini_api_key - Gemini Key 1-8 (8个轮询)
openai - OpenRouter Free
六、刷新 Kiro Token
Kiro Token 过期后,使用以下命令刷新:
REFRESH_TOKEN=$(cat ~/.aws/sso/cache/kiro-auth-token.json | jq -r '.refreshToken')
curl -s -X POST "https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken" \
-H "Content-Type: application/json" \
-d "{\"refreshToken\": \"$REFRESH_TOKEN\"}" | jq '.' > /tmp/new_token.json
# 更新 token 文件
cat ~/.aws/sso/cache/kiro-auth-token.json | jq --slurpfile new /tmp/new_token.json '
.accessToken = $new[0].accessToken |
.expiresAt = (now + 3600 | todate)
' > ~/.aws/sso/cache/kiro-auth-token.json.tmp
mv ~/.aws/sso/cache/kiro-auth-token.json.tmp ~/.aws/sso/cache/kiro-auth-token.json
或者直接在 ProxyCast 界面点"刷新 Token"按钮。
七、配置文件参考
~/.config/proxycast/config.json
{
"server": {
"host": "127.0.0.1",
"port": 8999,
"api_key": "proxy_cast"
},
"providers": {
"kiro": {
"enabled": true,
"credentials_path": "~/.aws/sso/cache/kiro-auth-token.json"
},
"gemini": {
"enabled": true,
"credentials_path": "~/.gemini/oauth_creds.json"
},
"qwen": {
"enabled": true,
"credentials_path": "~/.qwen/oauth_creds.json"
}
},
"default_provider": "kiro"
}
八、其他工具配置
Cherry Studio / Cursor / Cline
API Base URL: http://127.0.0.1:8999/v1
API Key: proxy_cast
Model: claude-opus-4-5
Python 代码
import openai
client = openai.OpenAI(
base_url="http://127.0.0.1:8999/v1",
api_key="proxy_cast"
)
response = client.chat.completions.create(
model="claude-opus-4-5",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
九、故障排查
ProxyCast 没运行
ps aux | grep proxycast
# 如果没有,启动它:
cd /mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main && ./src-tauri/target/release/proxycast &
检查端口
ss -tlnp | grep 8999
测试 API
curl http://127.0.0.1:8999/v1/models -H "Authorization: Bearer proxy_cast"
Token 过期
在 ProxyCast 界面点"刷新 Token",或手动刷新(见第六节)。
十、Gemini API Keys
当前配置的 8 个 Key(轮询负载均衡):
# 请在此处填入你自己的 Gemini API Keys
# 格式:AIzaSy... (每行一个)
# 获取地址:https://aistudio.google.com/app/apikey
每日限制:每个 Key 20 RPD,8 个 Key = 160 次/天
十一、OpenRouter API Key
# 请在此处填入你自己的 OpenRouter API Key
# 格式:sk-or-v1-...
# 获取地址:https://openrouter.ai/keys
免费模型无限制使用。
文档生成时间:2025-12-20 16:38
十二、Claude Code 完整启动命令大全
Kiro 凭证 (Claude 系列)
# Claude Opus 4.6 - 最强模型
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-opus-4-5
# Claude Sonnet 4.5 - 平衡性能
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-sonnet-4-5
# Claude Sonnet 4.5 特定版本
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-sonnet-4-5-20250929
# Claude 3.7 Sonnet
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-3-7-sonnet-20250219
# Claude 3.5 Sonnet Latest
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-3-5-sonnet-latest
Gemini 系列 (8个 API Key 轮询)
# Gemini 3 Pro Preview - 最新预览版
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-3-pro-preview
# Gemini 2.5 Pro - Pro 版本
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-2.5-pro
# Gemini 2.5 Pro Preview
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-2.5-pro-preview-06-05
# Gemini 2.5 Flash - 快速版本
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-2.5-flash
# Gemini 2.5 Flash Lite - 轻量版本
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-2.5-flash-lite
Qwen 系列 (阿里通义千问)
# Qwen3 Coder Plus - 代码增强版
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model qwen3-coder-plus
# Qwen3 Coder Flash - 快速版本
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model qwen3-coder-flash
OpenRouter 免费模型
# DeepSeek R1 - 推理最强
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model deepseek/deepseek-r1-0528:free
# Gemini 2.0 Flash Exp - 翻译首选
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model google/gemini-2.0-flash-exp:free
# Llama 3.1 405B - 综合最强
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model meta-llama/llama-3.1-405b-instruct:free
# Llama 3.3 70B - 速度快
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model meta-llama/llama-3.3-70b-instruct:free
# Hermes 3 405B - 指令遵循好
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model nousresearch/hermes-3-llama-3.1-405b:free
# Devstral 2 - 代码专精 123B
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model mistralai/devstral-2512:free
# GLM 4.5 Air - 中文原生
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model z-ai/glm-4.5-air:free
# 通义深度研究 - 中文研究
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model alibaba/tongyi-deepresearch-30b-a3b:free
# KAT-Coder Pro - 代码 Agent
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model kwaipilot/kat-coder-pro:free
# Qwen 2.5 VL - 视觉理解
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model qwen/qwen-2.5-vl-7b-instruct:free
# NVIDIA Nemotron 12B VL - 视觉/文档
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model nvidia/nemotron-nano-12b-v2-vl:free
# Olmo 3.1 32B Think - 深度推理
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model allenai/olmo-3.1-32b-think:free
十三、快捷别名配置
在 ~/.bash_aliases 或 ~/.bashrc 中添加:
# ProxyCast 启动
alias proxycast='cd /mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main && ./src-tauri/target/release/proxycast &'
# Claude Code 快捷命令
alias cc-opus='CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-opus-4-5'
alias cc-sonnet='CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-sonnet-4-5'
alias cc-gemini='CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model gemini-3-pro-preview'
alias cc-deepseek='CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model deepseek/deepseek-r1-0528:free'
alias cc-qwen='CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model qwen3-coder-plus'
alias cc-llama='CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model meta-llama/llama-3.1-405b-instruct:free'
alias cc-devstral='CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model mistralai/devstral-2512:free'
添加后执行 source ~/.bashrc 生效。
十四、模型推荐场景
| 场景 | 推荐模型 | 启动命令 |
|---|---|---|
| 复杂推理/架构设计 | claude-opus-4-5 | cc-opus |
| 日常编码 | claude-sonnet-4-5 | cc-sonnet |
| 快速问答 | gemini-2.5-flash | 见上方命令 |
| 深度推理 | deepseek/deepseek-r1-0528:free | cc-deepseek |
| 代码专精 | mistralai/devstral-2512:free | cc-devstral |
| 中文任务 | qwen3-coder-plus | cc-qwen |
| 免费综合 | meta-llama/llama-3.1-405b-instruct:free | cc-llama |
文档更新时间:2025-12-20 16:41
十五、从零部署完整教程
1. 环境要求
# 系统要求
- Linux / WSL2 / macOS
- Node.js >= 20.0.0
- Rust >= 1.70
- pnpm 或 npm
# 检查环境
node -v # v20.x.x
rustc -V # rustc 1.70+
2. 获取源码
# 克隆或下载 ProxyCast
cd /mnt/d/.projects
git clone https://github.com/aiclientproxy/proxycast.git
# 或解压已有的 zip 包
3. 编译构建
cd proxycast-main
# 安装前端依赖
npm install
# 构建 Tauri 应用
npm run tauri build
# 构建产物位置
# Linux: src-tauri/target/release/proxycast
# macOS: src-tauri/target/release/bundle/dmg/
# Windows: src-tauri/target/release/bundle/msi/
4. 准备凭证文件
Kiro 凭证
# 安装 Kiro IDE 并登录,凭证自动生成在:
~/.aws/sso/cache/kiro-auth-token.json
Gemini 凭证
# 安装 Gemini CLI 并登录
pip install gemini-cli
gemini auth login
# 凭证位置:~/.gemini/oauth_creds.json
Qwen 凭证
# 安装通义千问 CLI 并登录
# 凭证位置:~/.qwen/oauth_creds.json
5. 首次启动配置
# 启动 ProxyCast
./src-tauri/target/release/proxycast &
# 等待 GUI 启动后:
# 1. 进入 "凭证池" 页面
# 2. 点击 "一键读取凭证" 或手动添加
# 3. 进入 "Dashboard" 点击 "启动服务器"
6. 手动添加凭证到数据库(无 GUI 方式)
# Kiro 凭证
sqlite3 ~/.proxycast/proxycast.db "INSERT INTO provider_pool_credentials (uuid, provider_type, credential_data, is_healthy, check_health, error_count, is_disabled, name, usage_count, created_at, updated_at, source) VALUES (
'$(uuidgen)',
'kiro',
'{\"type\":\"kiro_o_auth\",\"creds_file_path\":\"$HOME/.aws/sso/cache/kiro-auth-token.json\"}',
1, 1, 0, 0, 'Kiro OAuth', 0, $(date +%s), $(date +%s), 'manual'
);"
# Gemini OAuth
sqlite3 ~/.proxycast/proxycast.db "INSERT INTO provider_pool_credentials (uuid, provider_type, credential_data, is_healthy, check_health, error_count, is_disabled, name, usage_count, created_at, updated_at, source) VALUES (
'$(uuidgen)',
'gemini',
'{\"type\":\"gemini_o_auth\",\"creds_file_path\":\"$HOME/.gemini/oauth_creds.json\",\"project_id\":null}',
1, 1, 0, 0, 'Gemini OAuth', 0, $(date +%s), $(date +%s), 'manual'
);"
# Gemini API Key
sqlite3 ~/.proxycast/proxycast.db "INSERT INTO provider_pool_credentials (uuid, provider_type, credential_data, is_healthy, check_health, error_count, is_disabled, name, usage_count, created_at, updated_at, source) VALUES (
'$(uuidgen)',
'gemini_api_key',
'{\"type\":\"gemini_api_key\",\"api_key\":\"你的API_KEY\",\"base_url\":null,\"excluded_models\":[]}',
1, 1, 0, 0, 'Gemini Key 1', 0, $(date +%s), $(date +%s), 'manual'
);"
# Qwen OAuth
sqlite3 ~/.proxycast/proxycast.db "INSERT INTO provider_pool_credentials (uuid, provider_type, credential_data, is_healthy, check_health, error_count, is_disabled, name, usage_count, created_at, updated_at, source) VALUES (
'$(uuidgen)',
'qwen',
'{\"type\":\"qwen_o_auth\",\"creds_file_path\":\"$HOME/.qwen/oauth_creds.json\"}',
1, 1, 0, 0, 'Qwen OAuth', 0, $(date +%s), $(date +%s), 'manual'
);"
# OpenRouter (OpenAI 兼容)
sqlite3 ~/.proxycast/proxycast.db "INSERT INTO provider_pool_credentials (uuid, provider_type, credential_data, is_healthy, check_health, error_count, is_disabled, name, usage_count, created_at, updated_at, source) VALUES (
'$(uuidgen)',
'openai',
'{\"type\":\"open_a_i_key\",\"api_key\":\"sk-or-v1-xxx你的key\",\"base_url\":\"https://openrouter.ai/api\"}',
1, 1, 0, 0, 'OpenRouter Free', 0, $(date +%s), $(date +%s), 'manual'
);"
7. 创建配置文件
mkdir -p ~/.config/proxycast
cat > ~/.config/proxycast/config.json << 'EOF'
{
"server": {
"host": "127.0.0.1",
"port": 8999,
"api_key": "proxy_cast",
"tls": {"enable": false}
},
"providers": {
"kiro": {"enabled": true, "credentials_path": "~/.aws/sso/cache/kiro-auth-token.json"},
"gemini": {"enabled": true, "credentials_path": "~/.gemini/oauth_creds.json"},
"qwen": {"enabled": true, "credentials_path": "~/.qwen/oauth_creds.json"}
},
"default_provider": "kiro"
}
EOF
8. 验证部署
# 启动服务
./src-tauri/target/release/proxycast &
# 等待几秒后测试
curl http://127.0.0.1:8999/v1/models -H "Authorization: Bearer proxy_cast"
# 测试聊天
curl http://127.0.0.1:8999/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer proxy_cast" \
-d '{"model":"claude-sonnet-4-5","messages":[{"role":"user","content":"Hi"}]}'
十六、无头模式(Headless)部署教程
适用于服务器、Docker、无 GUI 环境。
1. 无头启动
# 设置无显示环境
export DISPLAY=
# 或使用虚拟显示(如果需要)
Xvfb :99 -screen 0 1024x768x24 &
export DISPLAY=:99
# 启动 ProxyCast
./src-tauri/target/release/proxycast &
2. 纯命令行配置(无需 GUI)
#!/bin/bash
# headless-setup.sh - 无头模式一键配置脚本
PROXYCAST_DIR="/path/to/proxycast-main"
DB_PATH="$HOME/.proxycast/proxycast.db"
CONFIG_PATH="$HOME/.config/proxycast/config.json"
# 创建目录
mkdir -p ~/.proxycast ~/.config/proxycast
# 初始化数据库(首次运行会自动创建)
$PROXYCAST_DIR/src-tauri/target/release/proxycast &
sleep 3
pkill -f proxycast
# 添加凭证
add_credential() {
local type=$1
local data=$2
local name=$3
sqlite3 $DB_PATH "INSERT INTO provider_pool_credentials (uuid, provider_type, credential_data, is_healthy, check_health, error_count, is_disabled, name, usage_count, created_at, updated_at, source) VALUES ('$(uuidgen)', '$type', '$data', 1, 1, 0, 0, '$name', 0, $(date +%s), $(date +%s), 'manual');"
}
# 添加 Kiro
add_credential "kiro" '{"type":"kiro_o_auth","creds_file_path":"'$HOME'/.aws/sso/cache/kiro-auth-token.json"}' "Kiro OAuth"
# 添加 Gemini API Keys
GEMINI_KEYS=(
"AIzaSyBt4pIYmLYheuMpXSCj5VLkCA-fhfdEVT4"
"AIzaSyBSllSwrObqvUiXqFG5RUJXB6woZoBSaTk"
# 添加更多 keys...
)
for i in "${!GEMINI_KEYS[@]}"; do
add_credential "gemini_api_key" '{"type":"gemini_api_key","api_key":"'${GEMINI_KEYS[$i]}'","base_url":null,"excluded_models":[]}' "Gemini Key $((i+1))"
done
# 添加 OpenRouter
add_credential "openai" '{"type":"open_a_i_key","api_key":"sk-or-v1-xxx","base_url":"https://openrouter.ai/api"}' "OpenRouter"
echo "配置完成!"
3. Systemd 服务(Linux 后台运行)
# 创建服务文件
sudo cat > /etc/systemd/system/proxycast.service << 'EOF'
[Unit]
Description=ProxyCast API Proxy Service
After=network.target
[Service]
Type=simple
User=lenovo
Environment=DISPLAY=
WorkingDirectory=/mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main
ExecStart=/mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main/src-tauri/target/release/proxycast
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable proxycast
sudo systemctl start proxycast
# 查看状态
sudo systemctl status proxycast
# 查看日志
journalctl -u proxycast -f
4. Docker 部署(可选)
# Dockerfile
FROM rust:1.70 as builder
WORKDIR /app
COPY . .
RUN cargo build --release -p proxycast
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y libwebkit2gtk-4.1-0 libgtk-3-0 && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/proxycast /usr/local/bin/
EXPOSE 8999
CMD ["proxycast"]
# 构建并运行
docker build -t proxycast .
docker run -d -p 8999:8999 -v ~/.proxycast:/root/.proxycast -v ~/.config/proxycast:/root/.config/proxycast proxycast
5. 无头模式下刷新 Token
#!/bin/bash
# refresh-kiro-token.sh - 自动刷新 Kiro Token
TOKEN_FILE="$HOME/.aws/sso/cache/kiro-auth-token.json"
REFRESH_TOKEN=$(jq -r '.refreshToken' "$TOKEN_FILE")
# 调用刷新 API
RESPONSE=$(curl -s -X POST "https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken" \
-H "Content-Type: application/json" \
-d "{\"refreshToken\": \"$REFRESH_TOKEN\"}")
# 检查是否成功
if echo "$RESPONSE" | jq -e '.accessToken' > /dev/null 2>&1; then
NEW_ACCESS_TOKEN=$(echo "$RESPONSE" | jq -r '.accessToken')
NEW_EXPIRES=$(date -d "+1 hour" --iso-8601=seconds)
# 更新 token 文件
jq --arg token "$NEW_ACCESS_TOKEN" --arg exp "$NEW_EXPIRES" \
'.accessToken = $token | .expiresAt = $exp' "$TOKEN_FILE" > "${TOKEN_FILE}.tmp"
mv "${TOKEN_FILE}.tmp" "$TOKEN_FILE"
echo "Token 刷新成功!"
else
echo "Token 刷新失败:$RESPONSE"
exit 1
fi
# 添加到 crontab,每 50 分钟刷新一次
crontab -e
# 添加:*/50 * * * * /path/to/refresh-kiro-token.sh >> /var/log/kiro-refresh.log 2>&1
6. 健康检查脚本
#!/bin/bash
# health-check.sh
API_URL="http://127.0.0.1:8999"
API_KEY="proxy_cast"
# 检查服务是否运行
if ! curl -s "$API_URL/v1/models" -H "Authorization: Bearer $API_KEY" > /dev/null; then
echo "ProxyCast 服务异常,正在重启..."
pkill -f proxycast
sleep 2
cd /mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main
./src-tauri/target/release/proxycast &
sleep 5
if curl -s "$API_URL/v1/models" -H "Authorization: Bearer $API_KEY" > /dev/null; then
echo "重启成功!"
else
echo "重启失败,请检查日志"
exit 1
fi
else
echo "服务正常运行"
fi
7. 远程访问配置
# 修改配置允许外部访问
sed -i 's/"host": "127.0.0.1"/"host": "0.0.0.0"/' ~/.config/proxycast/config.json
# 重启服务
pkill -f proxycast
./src-tauri/target/release/proxycast &
# 获取 IP
ip addr show | grep "inet " | grep -v 127.0.0.1
# 外部访问
# API Base URL: http://<你的IP>:8999/v1
# API Key: proxy_cast
十七、常用运维命令
# 启动
cd /mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main && ./src-tauri/target/release/proxycast &
# 停止
pkill -f proxycast
# 重启
pkill -f proxycast; sleep 2; cd /mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main && ./src-tauri/target/release/proxycast &
# 查看进程
ps aux | grep proxycast
# 查看端口
ss -tlnp | grep 8999
# 查看日志
tail -f ~/.proxycast/logs/*.log
# 查看凭证池
sqlite3 ~/.proxycast/proxycast.db "SELECT provider_type, name, is_healthy FROM provider_pool_credentials;"
# 测试 API
curl http://127.0.0.1:8999/v1/models -H "Authorization: Bearer proxy_cast" | jq
# 清空凭证池
sqlite3 ~/.proxycast/proxycast.db "DELETE FROM provider_pool_credentials;"
文档更新时间:2025-12-20 16:42
十八、断线问题修复
问题原因
Claude Code 使用自定义 API endpoint 时,仍会尝试向 Anthropic 发送遥测数据。遥测失败会导致程序异常退出。
解决方案
所有启动命令都需要添加环境变量禁用遥测:
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
完整单行启动命令(无遥测)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-opus-4-5
文档更新时间:2025-12-20 17:46
十九、Codex (OpenAI) 凭证集成(待实现)
凭证来源
Codex 凭证来自 OpenAI 官方 CLI 工具,存储在 ~/.codex/auth.json:
{
"id_token": "eyJhbGciOiJSUzI1NiI...",
"access_token": "eyJhbGciOiJSUzI1NiI...",
"refresh_token": "rt_TK67iD7Pdgg...",
"account_id": "24e8f403-dbdb-42f9-8309-98951fc2862e",
"email": "xxx@gmail.com",
"type": "codex",
"expired": "2025-12-30T08:16:48..."
}
当前状态
- ✅ 凭证已添加到 ProxyCast 数据库
- ✅
providers/codex.rs已实现 OAuth 刷新逻辑 - ❌
server.rs中call_provider_openai函数尚未集成 Codex 调用 - ❌ WSL 编译环境链接器问题,无法编译新版本
代码修改位置
需要在 src-tauri/src/server.rs 的 call_provider_openai 函数中添加:
CredentialData::CodexOAuth { creds_file_path } => {
// 加载凭证、刷新 token、调用 OpenAI API
// 参考 KiroOAuth 的实现模式
}
支持的模型
Codex 凭证支持所有 OpenAI 模型:
- gpt-4o, gpt-4o-mini, gpt-4-turbo
- o1, o1-mini, o1-preview
- o3-mini
二十、Antigravity 凭证分析
凭证位置
Antigravity (Google AI IDE) 的凭证存储在 SQLite 数据库中:
Windows: %APPDATA%\Antigravity\User\globalStorage\state.vscdb
凭证结构
-- 查询凭证
SELECT value FROM ItemTable WHERE key = 'antigravityAuthStatus';
返回 JSON:
{
"name": "git",
"apiKey": "ya29.a0Aa7pCA-1M5dtt...", // Google OAuth access_token
"email": "xxx@gmail.com",
"userStatusProtoBinaryBase64": "..." // 用户状态 protobuf
}
限制
- 只有 access_token,没有 refresh_token
- access_token 有效期约 1 小时
- 无法自动刷新,需要通过 Antigravity 应用重新登录
- refresh_token 可能存储在 Windows Credential Manager(WSL 无法访问)
结论
Antigravity 凭证不适合集成到 ProxyCast,因为无法自动刷新。建议使用 Gemini API Key 或 Gemini CLI OAuth 代替。
二十一、WSL 编译问题
问题描述
在 WSL 环境下编译 Rust 项目时,链接器报错:
error: unknown option '-Wl,--no-undefined-version'
error: unknown option '-Wl,--as-needed'
原因
Rust 1.90+ 默认使用 lld 链接器,但 WSL 的 lld 版本不兼容。
尝试的解决方案
- 使用 gold 链接器(失败)
RUSTFLAGS="-C link-arg=-fuse-ld=gold" cargo build --release
- 配置 cargo(失败)
# ~/.cargo/config.toml
[target.x86_64-unknown-linux-gnu]
linker = "gcc"
rustflags = ["-C", "link-arg=-fuse-ld=gold"]
建议
- 在原生 Linux 或 Windows 上编译
- 使用 Docker 容器编译
- 使用预编译的 Release 版本
二十二、数据库路径差异
WSL vs Windows
| 环境 | 数据库路径 |
|---|---|
| WSL/Linux | ~/.proxycast/proxycast.db |
| Windows | %APPDATA%\proxycast\proxycast.db |
| macOS | ~/Library/Application Support/proxycast/proxycast.db |
注意事项
- WSL 中运行的 ProxyCast 使用 Linux 路径
- Windows GUI 版本使用 Windows 路径
- 两者数据库不共享,需要分别配置凭证
二十三、本次配置总结
已配置的凭证池
| Provider | 名称 | 状态 |
|---|---|---|
| kiro | Kiro OAuth | ✅ 正常 |
| qwen | Qwen OAuth | ✅ 正常 |
| gemini_api_key | Gemini Key 1-8 | ✅ 8个轮询 |
| openai | OpenRouter Free | ✅ 正常 |
| codex | Codex OAuth | ⚠️ 待实现 |
可用模型
Claude (Kiro)
- claude-opus-4-5, claude-sonnet-4-5, claude-3-7-sonnet-20250219
Gemini (API Keys)
- gemini-3-pro-preview, gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite
Qwen
- qwen3-coder-plus, qwen3-coder-flash
OpenRouter Free
- deepseek/deepseek-r1-0528:free
- meta-llama/llama-3.1-405b-instruct:free
- mistralai/devstral-2512:free
- 等 10+ 免费模型
快速启动
# 启动 ProxyCast
cd /mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main && ./src-tauri/target/release/proxycast &
# 使用 Claude Code
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model claude-opus-4-5
二十四、新增 OpenRouter 免费模型(2025-12-21 测试通过)
新增模型列表
| 模型 | 说明 | 状态 |
|---|---|---|
openai/gpt-oss-120b:free |
GPT 开源 120B | ✅ 已测试 |
openai/gpt-oss-20b:free |
GPT 开源 20B | ✅ 已测试 |
moonshotai/kimi-k2:free |
Kimi K2.5 | ✅ 已测试 |
Claude Code 启动命令
# GPT-OSS 120B - 大参数开源模型
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model openai/gpt-oss-120b:free
# GPT-OSS 20B - 轻量开源模型
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model openai/gpt-oss-20b:free
# Kimi K2.5 - 月之暗面最新模型
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ANTHROPIC_BASE_URL=http://127.0.0.1:8999 ANTHROPIC_API_KEY=proxy_cast claude --dangerously-skip-permissions --model moonshotai/kimi-k2:free
API 测试命令
# 测试 GPT-OSS 120B
curl -s http://127.0.0.1:8999/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer proxy_cast" \
-d '{"model":"openai/gpt-oss-120b:free","messages":[{"role":"user","content":"Hi"}],"max_tokens":10}'
# 测试 Kimi K2.5
curl -s http://127.0.0.1:8999/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer proxy_cast" \
-d '{"model":"moonshotai/kimi-k2:free","messages":[{"role":"user","content":"Hi"}],"max_tokens":10}'
更新后的 OpenRouter 免费模型完整列表
| 模型 | 说明 | 推荐场景 |
|---|---|---|
deepseek/deepseek-r1-0528:free |
推理最强 | 复杂推理 |
meta-llama/llama-3.1-405b-instruct:free |
综合最强 | 通用任务 |
mistralai/devstral-2512:free |
代码专精 123B | 编程 |
openai/gpt-oss-120b:free |
GPT 开源 120B | 通用 |
openai/gpt-oss-20b:free |
GPT 开源 20B | 快速响应 |
moonshotai/kimi-k2:free |
Kimi K2.5 | 中文任务 |
google/gemini-2.0-flash-exp:free |
Gemini 2.0 | 翻译 |
meta-llama/llama-3.3-70b-instruct:free |
Llama 3.3 | 速度快 |
nousresearch/hermes-3-llama-3.1-405b:free |
Hermes 3 | 指令遵循 |
z-ai/glm-4.5-air:free |
GLM 4.5 | 中文原生 |
alibaba/tongyi-deepresearch-30b-a3b:free |
通义深研 | 中文研究 |
kwaipilot/kat-coder-pro:free |
KAT-Coder | 代码 Agent |
qwen/qwen-2.5-vl-7b-instruct:free |
Qwen VL | 视觉理解 |
allenai/olmo-3.1-32b-think:free |
Olmo 3.1 | 深度推理 |
文档更新时间:2025-12-21 17:07