diff --git a/i18n/zh/documents/02-方法论/ProxyCast配置文档.md b/i18n/zh/documents/02-方法论/ProxyCast配置文档.md new file mode 100644 index 0000000..678de9e --- /dev/null +++ b/i18n/zh/documents/02-方法论/ProxyCast配置文档.md @@ -0,0 +1,1126 @@ +# 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.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-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 月之暗面 | +| `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 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 系列) + +```bash +# Claude Opus 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-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 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` 版本不兼容。 + +### 尝试的解决方案 + +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 | ✅ 已测试 | + +### 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 - 月之暗面最新模型 +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 +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 | 中文任务 | +| `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* diff --git a/i18n/zh/documents/02-方法论/README.md b/i18n/zh/documents/02-方法论/README.md index 91c89cb..4e67c2b 100644 --- a/i18n/zh/documents/02-方法论/README.md +++ b/i18n/zh/documents/02-方法论/README.md @@ -12,6 +12,7 @@ - [tmux 快捷键大全](./tmux快捷键大全.md) - 终端复用工具 - [LazyVim 快捷键大全](./LazyVim快捷键大全.md) - Neovim 配置框架 - [Augment MCP 配置](./auggie-mcp配置文档.md) - 上下文引擎配置 +- [ProxyCast 配置](./ProxyCast配置文档.md) - AI 凭证代理服务配置 - [手机远程 Vibe Coding](./关于手机ssh任意位置链接本地计算机,基于frp实现的方法.md) - 基于 frp 的远程开发 - [GEMINI-HEADLESS](./GEMINI-HEADLESS.md) - Gemini 无头模式配置