vibe-coding-cn/assets/documents/guides/playbook/ProxyCast配置文档.md

34 KiB
Raw Blame History

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 RPD8 个 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.rscall_provider_openai 函数尚未集成 Codex 调用
  • WSL 编译环境链接器问题,无法编译新版本

代码修改位置

需要在 src-tauri/src/server.rscall_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 ManagerWSL 无法访问)

结论

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 版本不兼容。

尝试的解决方案

  1. 使用 gold 链接器(失败)
RUSTFLAGS="-C link-arg=-fuse-ld=gold" cargo build --release
  1. 配置 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