vibe-coding-cn/assets/documents/02-方法论/ProxyCast配置文档.md

1127 lines
34 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.

# 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
```bash
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 凭证,最强)
```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 claude-opus-4-5
```
### Claude Sonnet 4.5 (Kiro 凭证)
```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 claude-sonnet-4-5
```
### DeepSeek R1 (OpenRouter 免费,推理最强)
```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 deepseek/deepseek-r1-0528:free
```
### Gemini 2.0 Flash (OpenRouter 免费)
```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 google/gemini-2.0-flash-exp:free
```
### Llama 3.1 405B (OpenRouter 免费,综合最强)
```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 meta-llama/llama-3.1-405b-instruct:free
```
### Devstral 2 (OpenRouter 免费,代码专精)
```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 mistralai/devstral-2512:free
```
### Gemini 3 Pro Preview - 最新预览版
```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-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
```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-preview-06-05
```
### Gemini 2.5 Flash - 快速版本
```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-flash
```
### Gemini 2.5 Flash Lite - 轻量版本
```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-flash-lite
```
---
## 三、API 直接调用
### 通用配置
```
API Base URL: http://127.0.0.1:8999/v1
API Key: proxy_cast
```
### cURL 示例
```bash
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"}]
}'
```
### 获取可用模型列表
```bash
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 过期后,使用以下命令刷新:
```bash
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
```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 代码
```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 没运行
```bash
ps aux | grep proxycast
# 如果没有,启动它:
cd /mnt/d/.projects/kiro-account-manager-main.zip/proxycast-main && ./src-tauri/target/release/proxycast &
```
### 检查端口
```bash
ss -tlnp | grep 8999
```
### 测试 API
```bash
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 系列)
```bash
# 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 轮询)
```bash
# 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 系列 (阿里通义千问)
```bash
# 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 免费模型
```bash
# 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` 中添加:
```bash
# 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. 环境要求
```bash
# 系统要求
- Linux / WSL2 / macOS
- Node.js >= 20.0.0
- Rust >= 1.70
- pnpm 或 npm
# 检查环境
node -v # v20.x.x
rustc -V # rustc 1.70+
```
### 2. 获取源码
```bash
# 克隆或下载 ProxyCast
cd /mnt/d/.projects
git clone https://github.com/aiclientproxy/proxycast.git
# 或解压已有的 zip 包
```
### 3. 编译构建
```bash
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 凭证
```bash
# 安装 Kiro IDE 并登录,凭证自动生成在:
~/.aws/sso/cache/kiro-auth-token.json
```
#### Gemini 凭证
```bash
# 安装 Gemini CLI 并登录
pip install gemini-cli
gemini auth login
# 凭证位置:~/.gemini/oauth_creds.json
```
#### Qwen 凭证
```bash
# 安装通义千问 CLI 并登录
# 凭证位置:~/.qwen/oauth_creds.json
```
### 5. 首次启动配置
```bash
# 启动 ProxyCast
./src-tauri/target/release/proxycast &
# 等待 GUI 启动后:
# 1. 进入 "凭证池" 页面
# 2. 点击 "一键读取凭证" 或手动添加
# 3. 进入 "Dashboard" 点击 "启动服务器"
```
### 6. 手动添加凭证到数据库(无 GUI 方式)
```bash
# 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. 创建配置文件
```bash
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. 验证部署
```bash
# 启动服务
./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. 无头启动
```bash
# 设置无显示环境
export DISPLAY=
# 或使用虚拟显示(如果需要)
Xvfb :99 -screen 0 1024x768x24 &
export DISPLAY=:99
# 启动 ProxyCast
./src-tauri/target/release/proxycast &
```
### 2. 纯命令行配置(无需 GUI
```bash
#!/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 后台运行)
```bash
# 创建服务文件
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
# 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"]
```
```bash
# 构建并运行
docker build -t proxycast .
docker run -d -p 8999:8999 -v ~/.proxycast:/root/.proxycast -v ~/.config/proxycast:/root/.config/proxycast proxycast
```
### 5. 无头模式下刷新 Token
```bash
#!/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
```
```bash
# 添加到 crontab每 50 分钟刷新一次
crontab -e
# 添加:*/50 * * * * /path/to/refresh-kiro-token.sh >> /var/log/kiro-refresh.log 2>&1
```
### 6. 健康检查脚本
```bash
#!/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. 远程访问配置
```bash
# 修改配置允许外部访问
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
```
---
## 十七、常用运维命令
```bash
# 启动
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 发送遥测数据。遥测失败会导致程序异常退出。
### 解决方案
所有启动命令都需要添加环境变量禁用遥测:
```bash
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
```
### 完整单行启动命令(无遥测)
```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 claude-opus-4-5
```
---
*文档更新时间2025-12-20 17:46*
---
## 十九、Codex (OpenAI) 凭证集成(待实现)
### 凭证来源
Codex 凭证来自 OpenAI 官方 CLI 工具,存储在 `~/.codex/auth.json`
```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` 函数中添加:
```rust
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
```
### 凭证结构
```sql
-- 查询凭证
SELECT value FROM ItemTable WHERE key = 'antigravityAuthStatus';
```
返回 JSON
```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 链接器**(失败)
```bash
RUSTFLAGS="-C link-arg=-fuse-ld=gold" cargo build --release
```
2. **配置 cargo**(失败)
```toml
# ~/.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+ 免费模型
### 快速启动
```bash
# 启动 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 启动命令
```bash
# 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 测试命令
```bash
# 测试 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*