[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-742":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},742,"WindsurfAPI","dwgx\u002FWindsurfAPI","dwgx","Windsurf-to-OpenAI compatible API proxy","https:\u002F\u002Fdwgx.github.io\u002FWindsurfAPI\u002F",null,"JavaScript",2802,589,13,7,0,15,130,575,45,110.31,"MIT License",false,"master",true,[27,28,29,30,31],"api-proxy","llm-gateway","openai-compatible","reverse-engineering","windsurf","2026-06-12 04:00:05","# 给我点 Star 和 Follow 我就不管你了\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fdwgx\u002FWindsurfAPI?style=for-the-badge&logo=github&color=f5c518\" alt=\"Stars\">\u003C\u002Fa>&nbsp;\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdwgx\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Ffollowers\u002Fdwgx?label=Follow&style=for-the-badge&logo=github&color=181717\" alt=\"Follow\">\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"README.en.md\">English\u003C\u002Fa>\n\u003C\u002Fp>\n\n# 声明\n\n> **没点 Star 和 Follow 的**：严禁商业使用、转售、代部署、挂后台对外提供服务、包装成中转服务出售。\n> **点了 Star 和 Follow 的**：随便用，我睁一只眼闭一只眼。\n>\n> 代码本体按 MIT License 开源（见 [LICENSE](LICENSE)），上面这段是作者个人态度。\n\n---\n\n把 [Windsurf](https:\u002F\u002Fwindsurf.com)（原 Codeium）的 AI 模型变成**两套标准 API 同时兼容**：\n\n- `POST \u002Fv1\u002Fchat\u002Fcompletions` — **OpenAI 兼容** 任何 OpenAI SDK 直接用\n- `POST \u002Fv1\u002Fmessages` — **Anthropic 兼容** Claude Code \u002F Cline \u002F Cursor 直接连\n\n**100+ 模型**：Claude 4.5\u002F4.6\u002FOpus 4.7 · GPT-5\u002F5.1\u002F5.2\u002F5.4 全系 · Gemini 2.5\u002F3.0\u002F3.1 · Grok · Qwen · Kimi K2.x · GLM 4.7\u002F5\u002F5.1 · MiniMax · SWE 1.5\u002F1.6 · Arena 等。零 npm 依赖 纯 Node.js。\n\n## 它到底在干嘛\n\n```\n     ┌─────────────┐   \u002Fv1\u002Fchat\u002Fcompletions   ┌────────────┐\n     │ OpenAI SDK  │ ──────────────────────→  │            │\n     │ curl \u002F 前端 │ ←──────────────────────  │            │\n     └─────────────┘   OpenAI JSON + SSE      │ WindsurfAPI│\n                                              │ Node.js    │      ┌──────────────┐       ┌─────────────────┐\n     ┌─────────────┐   \u002Fv1\u002Fmessages           │ (本服务)   │ gRPC │ Language     │ HTTPS │ Windsurf 云端   │\n     │ Claude Code │ ──────────────────────→  │            │ ───→ │ Server (LS)  │ ────→ │ server.self-    │\n     │ Cline       │ ←──────────────────────  │            │ ←─── │ (Windsurf    │ ←─── │ serve.windsurf  │\n     │ Cursor      │   Anthropic SSE          │            │      │  binary)     │       │ .com            │\n     └─────────────┘                          └────────────┘      └──────────────┘       └─────────────────┘\n                                                    ↑\n                                                账号池轮询\n                                                速率限制隔离\n                                                故障转移\n```\n\n**它做了什么**：\n1. 一个 HTTP 服务（端口 3003）同时暴露 OpenAI 和 Anthropic 两套 API\n2. 把请求翻译成 Windsurf 内部 gRPC 协议，通过本地 Language Server 发给 Windsurf 云\n3. 维护账号池，自动轮询 + 速率限制 + 故障转移\n4. 返回前把上游 Windsurf 身份剥掉，模型自称\"我是 Claude Opus 4.6 由 Anthropic 开发\"\n\n## Claude Code \u002F Cline \u002F Cursor 怎么用\n\n模型本身**不会**操作文件 — 文件操作是 IDE Agent 客户端（Claude Code \u002F Cline 等）在本地执行的：\n\n```\n 你 \"帮我改 bug\"                Claude Code                    WindsurfAPI               Windsurf Cloud\n   │                                │                               │                          │\n   │────────────────────────────→  │                               │                          │\n   │                                │  POST \u002Fv1\u002Fmessages            │                          │\n   │                                │  messages + tools + system    │                          │\n   │                                │ ─────────────────────────────→│ 打包成 Cascade 请求      │\n   │                                │                               │ ──────────────────────→  │\n   │                                │                               │                          │\n   │                                │                               │               模型思考 → 返回\n   │                                │                               │               tool_use(edit_file)\n   │                                │                               │ ←──────────────────────  │\n   │                                │ ←── Anthropic SSE ────────────│                          │\n   │                                │   content_block=tool_use      │                          │\n   │                                │                               │                          │\n   │                                │ 本地执行 edit_file()          │                          │\n   │                                │ (读写本地文件)                │                          │\n   │                                │                               │                          │\n   │                                │ 带 tool_result 再发一轮       │                          │\n   │                                │ ─────────────────────────────→│ ──────────────────────→  │\n   │                                │                                             ... (循环) ...\n   │                                │                               │                          │\n   │  ← 最终答案                    │                               │                          │\n```\n\n**重点**：WindsurfAPI 只负责**传递** tool_use \u002F tool_result，真正改文件的是客户端 CLI。\n\n## 快速开始\n\n### 一键部署\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI.git\ncd WindsurfAPI\nbash setup.sh          # 建目录 · 配权限 · 生成 .env\nnode src\u002Findex.js\n```\n\nDashboard：`http:\u002F\u002F你的IP:3003\u002Fdashboard`\n\n### Docker 部署\n\n```bash\ncp .env.example .env\n\n# 可选：提前把 language_server_linux_x64 放到 .docker-data\u002Fopt\u002Fwindsurf\u002F 下\n# 不放也行，容器首次启动时会自动下载到 \u002Fopt\u002Fwindsurf\u002F\n\ndocker compose up -d --build\ndocker compose logs -f\n```\n\n默认挂载：\n\n- `.\u002F.docker-data\u002Fdata`：持久化 `accounts.json`、`proxy.json`、`stats.json`、`runtime-config.json`、`model-access.json`、`logs\u002F`\n- `.\u002F.docker-data\u002Fopt\u002Fwindsurf`：Language Server 二进制与数据目录\n- `.\u002F.docker-data\u002Ftmp\u002Fwindsurf-workspace`：临时工作区\n\n如果想改持久化目录，可在 `.env` 里设置 `DATA_DIR`。Docker 默认已设为 `\u002Fdata`。\n\n### 一键更新\n\n部署过之后要拉最新修复，一条命令搞定：\n\n```bash\ncd ~\u002FWindsurfAPI && bash update.sh\n```\n\n`update.sh` 做了：`git pull` → 停 PM2 → kill 3003 端口残留 → 重启 → 健康检查。\n\n如果你用的是我们的公网实例（`skiapi.dev` 之类），不用管，我们已经推过了。\n\n### 手动安装\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI.git\ncd WindsurfAPI\n\n# Language Server 二进制 —— 一键下载 + chmod（从 Exafunction\u002Fcodeium releases）\nmkdir -p \u002Fopt\u002Fwindsurf\u002Fdata\u002Fdb\nbash install-ls.sh\n\n# 如果想用本地已下好的 binary：\n#   bash install-ls.sh \u002Fpath\u002Fto\u002Flanguage_server_linux_x64\n# 或者指定 URL：\n#   bash install-ls.sh --url https:\u002F\u002Fexample.com\u002Flanguage_server_linux_x64\n\n# ⚠️ 看不到 opus-4.7 \u002F 其他新模型？\n# Exafunction\u002Fcodeium 公开 release 最新停在 v2.12.5（2026-01），不含 4.7。\n# 要 4.7，把 Windsurf 桌面端本体里的 LS binary 拷过来：\n#\n#   macOS:   \"$HOME\u002FLibrary\u002FApplication Support\u002FWindsurf\u002Fresources\u002Fapp\u002Fextensions\u002Fwindsurf\u002Fbin\u002Flanguage_server_macos_arm\"\n#   Linux:   \"$HOME\u002F.windsurf\u002Fbin\u002Flanguage_server_linux_x64\"\n#            或  \u002Fopt\u002FWindsurf\u002Fresources\u002Fapp\u002Fextensions\u002Fwindsurf\u002Fbin\u002Flanguage_server_linux_x64\n#   Windows: %APPDATA%\\Windsurf\\bin\\language_server_windows_x64.exe\n#\n#   # 从本地桌面端装：\n#   bash install-ls.sh \u002Fpath\u002Fto\u002Flanguage_server_linux_x64\n#\n# LS binary 一换，\u002Fv1\u002Fmodels 立刻就能看到最新模型目录了（云端自动发现）。\n\ncat > .env \u003C\u003C 'EOF'\nPORT=3003\nAPI_KEY=\nDEFAULT_MODEL=claude-4.5-sonnet-thinking\nMAX_TOKENS=8192\nLOG_LEVEL=info\nLS_BINARY_PATH=\u002Fopt\u002Fwindsurf\u002Flanguage_server_linux_x64\nLS_PORT=42100\nDASHBOARD_PASSWORD=\nEOF\n\nnode src\u002Findex.js\n```\n\n## 加账号\n\n服务跑起来之后要先加 Windsurf 账号才能用，三种方式：\n\n**方式 1 Dashboard 一键登录（推荐）**\n\n打开 `http:\u002F\u002F你的IP:3003\u002Fdashboard` → 登录取号 → 点 **Google 登录** 或 **GitHub 登录**（OAuth 弹窗）或直接填邮箱密码。所有方式都会自动入池。\n\n**方式 2 Token（任何登录方式都能用）**\n\n去 [windsurf.com\u002Fshow-auth-token](https:\u002F\u002Fwindsurf.com\u002Fshow-auth-token) 复制 Token：\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:3003\u002Fauth\u002Flogin \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"token\": \"你的token\"}'\n```\n\n**方式 3 批量**\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:3003\u002Fauth\u002Flogin \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"accounts\": [{\"token\": \"t1\"}, {\"token\": \"t2\"}]}'\n```\n\n## 调用示例\n\n### OpenAI 格式（Python \u002F JS \u002F curl）\n\n```python\nfrom openai import OpenAI\nclient = OpenAI(base_url=\"http:\u002F\u002F你的IP:3003\u002Fv1\", api_key=\"你设的API_KEY\")\nr = client.chat.completions.create(\n    model=\"claude-sonnet-4.6\",\n    messages=[{\"role\": \"user\", \"content\": \"你好\"}]\n)\nprint(r.choices[0].message.content)\n```\n\n### Anthropic 格式（Claude Code 直接连）\n\n```bash\nexport ANTHROPIC_BASE_URL=http:\u002F\u002F你的IP:3003\nexport ANTHROPIC_API_KEY=你设的API_KEY\nclaude                # 正常用 Claude Code 即可\n```\n\n```bash\n# 裸 curl 测试\ncurl http:\u002F\u002Flocalhost:3003\u002Fv1\u002Fmessages \\\n  -H \"Authorization: Bearer 你的key\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -d '{\"model\":\"claude-opus-4.6\",\"max_tokens\":100,\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}'\n```\n\n### Cline \u002F Cursor \u002F Aider\n\n在客户端配置里 **Custom OpenAI Compatible**：\n- Base URL: `http:\u002F\u002F你的IP:3003\u002Fv1`\n- API Key: 你设的 API_KEY\n- Model: 任选我们支持的模型\n\n> **Cursor 用户注意**：Cursor 客户端白名单会拦截含 `claude` 的模型名（请求根本不到后端）。用以下别名绕过：\n>\n> | 在 Cursor 填 | 实际模型 |\n> |---|---|\n> | `opus-4.6` | claude-opus-4.6 |\n> | `opus-4.6-thinking` | claude-opus-4.6-thinking |\n> | `opus-4.7` | claude-opus-4-7-medium |\n> | `sonnet-4.6` | claude-sonnet-4.6 |\n> | `sonnet-4.5` | claude-4.5-sonnet |\n> | `haiku-4.5` | claude-4.5-haiku |\n> | `ws-opus` | claude-opus-4.6 |\n> | `ws-sonnet` | claude-sonnet-4.6 |\n>\n> GPT \u002F Gemini \u002F DeepSeek 等不受 Cursor 白名单限制，直接填原名。\n\n## 环境变量\n\n| 变量 | 默认值 | 干嘛的 |\n|---|---|---|\n| `PORT` | `3003` | 服务端口 |\n| `API_KEY` | 空 | 调 API 要带的密钥 留空就不验证 |\n| `DATA_DIR` | 项目根目录 | 持久化 JSON 状态和 `logs\u002F` 的目录，Docker 推荐设成 `\u002Fdata` |\n| `DEFAULT_MODEL` | `claude-4.5-sonnet-thinking` | 不传 model 用哪个 |\n| `MAX_TOKENS` | `8192` | 默认最大回复 token 数 |\n| `LOG_LEVEL` | `info` | debug \u002F info \u002F warn \u002F error |\n| `LS_BINARY_PATH` | `\u002Fopt\u002Fwindsurf\u002Flanguage_server_linux_x64` | LS 二进制位置 |\n| `LS_PORT` | `42100` | LS gRPC 端口 |\n| `DASHBOARD_PASSWORD` | 空 | 后台密码 留空不设密码 |\n| `ALLOW_PRIVATE_PROXY_HOSTS` | 空 | 设为 `1` 允许在代理测试和登录时使用内网 IP（如 `192.168.x.x`、`10.x.x.x`）。默认留空仅允许公网地址 |\n\n## Dashboard 功能面板\n\n打开 `http:\u002F\u002F你的IP:3003\u002Fdashboard`：\n\n| 面板 | 功能 |\n|---|---|\n| **总览** | 运行状态 · 账号池 · LS 健康 · 成功率 |\n| **登录取号** | Google \u002F GitHub OAuth 一键登录 · 邮箱密码登录 · **测试代理** 按钮（实测出口 IP） |\n| **账号管理** | 加 \u002F 删 \u002F 停用 · 探测订阅等级 · 看余额 · 封禁模型黑名单 |\n| **模型控制** | 全局模型黑白名单 |\n| **代理配置** | 全局或单账号的 HTTP \u002F SOCKS5 代理 |\n| **日志** | 实时 SSE 串流 · 按级别筛 · 每条 `turns=N chars=M` 诊断多轮 |\n| **统计分析** | 时间范围 6h \u002F 24h \u002F 72h · 账号维度 · p50 \u002F p95 延迟 |\n| **实验性** | Cascade 对话复用 · **模型身份注入（每厂商可自定义 prompt）** |\n\n## 支持的模型\n\n主线 100+ 个静态模型 + Windsurf 雲端動態下發（`mergeCloudModels` 啟動時拉取最新）。完整列表查 `GET \u002Fv1\u002Fmodels`，或看 [GitHub Pages 模型清单](https:\u002F\u002Fdwgx.github.io\u002FWindsurfAPI\u002F#models)（同步生成於 `src\u002Fmodels.js`）。\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Claude（Anthropic）\u003C\u002Fb> — 21 个\u003C\u002Fsummary>\n\nclaude-3.5-sonnet \u002F 3.7-sonnet \u002F thinking · claude-4-sonnet \u002F opus \u002F thinking · claude-4.1-opus · claude-4.5-haiku \u002F sonnet \u002F opus · claude-sonnet-4.6（含 1m \u002F thinking \u002F thinking-1m） · claude-opus-4.6 \u002F thinking · **claude-opus-4.7-medium**\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>GPT（OpenAI）\u003C\u002Fb> — 55 个\u003C\u002Fsummary>\n\ngpt-4o · gpt-4.1 · gpt-5 全系（含 medium \u002F high \u002F codex） · **gpt-5.1 全系**（base \u002F low \u002F medium \u002F high + fast + codex 全 6 變體） · **gpt-5.2 全系**（none \u002F low \u002F medium \u002F high \u002F xhigh + fast + codex 全 5 變體） · **gpt-5.4 全系**（base \u002F mini × low\u002Fmedium\u002Fhigh\u002Fxhigh） · o3 全系（base \u002F mini \u002F pro） · o4-mini\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Gemini（Google）\u003C\u002Fb> — 9 个\u003C\u002Fsummary>\n\ngemini-2.5-pro \u002F flash · gemini-3.0-pro \u002F flash（minimal \u002F low \u002F medium \u002F high 4 個 reasoning 等級） · gemini-3.1-pro（low \u002F high）\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>开源 \u002F 国产\u003C\u002Fb>\u003C\u002Fsummary>\n\n**Kimi**: kimi-k2 \u002F k2.5 \u002F k2-6 · **GLM**: glm-4.7 \u002F 5 \u002F 5.1 · **Qwen**: qwen-3 · **Grok**: grok-3 \u002F grok-3-mini-thinking \u002F grok-code-fast-1 · **MiniMax**: minimax-m2.5\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Windsurf 自家 + Arena\u003C\u002Fb>\u003C\u002Fsummary>\n\nswe-1.5 \u002F 1.5-fast \u002F 1.6 \u002F 1.6-fast · arena-fast · arena-smart\n\n\u003C\u002Fdetails>\n\n> **免费账号 entitled 模型**主要是 `gemini-2.5-flash`、`glm-4.7`、`glm-5` \u002F `5.1`、`kimi-k2` \u002F `k2.5` \u002F `k2-6`、`qwen-3` 等开源系列；Claude \u002F GPT 全系 + Opus 系列要 Pro。具体每个账号的 entitled 清单看 dashboard。\n>\n> **工具调用稳定性**（v2.0.82+ 实测）：Claude family 走 `\u003Ctool_use>` 协议最稳；GLM-4.7 \u002F Kimi-K2.5 走 NLU 兜底 + 可选 retry 大部分 case 能调；GLM-5.1 在 cascade 后端不稳（经常空回复 textLen=0），proxy 救不动；GPT 在 cascade 协议层不传 tools[] schema 也救不全。Claude Code 调本地工具优先 `claude-haiku-4.5` \u002F `claude-sonnet-4.6`。\n\n## 架构要点\n\n- **零 npm 依赖** 全走 `node:*` 内置 · protobuf 手搓（`src\u002Fproto.js`）· 下载即跑\n- **账号池 + LS 池** 每个独立 proxy 一个 LS 实例 不混用\n- **NO_TOOL 模式** `planner_mode=3` 关掉 Cascade 内置工具循环，避免 `\u002Ftmp\u002Fwindsurf-workspace\u002F` 路径泄漏\n- **三层 sanitize** LS 内建工具结果过滤 · `\u003Ctool_call>` 文本解析 · 输出路径清洗\n- **真实 token 计量** 从 `CortexStepMetadata.model_usage` 抓 Cascade 真实 `inputTokens` \u002F `outputTokens` \u002F `cacheRead` \u002F `cacheWrite`，`prompt_tokens` 含 cacheWrite\n\n## PM2 部署\n\n```bash\nnpm install -g pm2\npm2 start src\u002Findex.js --name windsurf-api\npm2 save && pm2 startup\n```\n\n**不要**用 `pm2 restart`（会出僵尸进程），用一键更新脚本 `bash update.sh`。\n\n## 防火墙\n\n```bash\n# Ubuntu\nufw allow 3003\u002Ftcp\n\n# CentOS\nfirewall-cmd --add-port=3003\u002Ftcp --permanent && firewall-cmd --reload\n```\n\n云服务器记得去安全组开 3003。\n\n## 常见问题\n\n**Q: 登录报\"邮箱或密码错误\"**\nA: 你是用 Google\u002FGitHub 登录的 Windsurf 吧 那种账号没有密码。Dashboard 的登录取号面板现在直接支持 Google \u002F GitHub OAuth 一键登录。\n\n**Q: 模型说\"我无法操作文件系统\"**\nA: 这是 **chat API**，不是 IDE agent。要让模型真的改文件，用 **Claude Code \u002F Cline \u002F Cursor \u002F Aider** 之类的客户端 CLI，把它们的 API base URL 指向本服务就行。模型出 tool_use，客户端本地执行，再把 tool_result 发回来。上面的图有详细流程。\n\n**Q: 上下文丢失 \u002F 模型忘了前面说的**\nA: 多账号轮询**不会**丢上下文 — 每次请求都重新打包完整 history 发给 Cascade。真正的原因通常是中转层（new-api 等）没把完整 `messages[]` 透传过来。在 Dashboard 日志面板看 `turns=N`：如果多轮对话但 `turns=1`，就是中转层在你之前就把历史丢了。\n\n**Q: 长 prompt 超时**\nA: 已修。cold stall 检测按输入长度自适应，长输入最多给 90s。\n\n**Q: Claude Code 能用吗**\nA: 能。`export ANTHROPIC_BASE_URL=http:\u002F\u002F你的API` + `export ANTHROPIC_API_KEY=你的key`。`\u002Fv1\u002Fmessages` 支持 system + tools + tool_use + tool_result + stream + multi-turn 全套，已实测通过。\n\n**Q: 免费账号能用什么模型**\nA: 主要是 `gemini-2.5-flash`、`glm-4.7` \u002F `5` \u002F `5.1`、`kimi-k2` \u002F `k2.5` \u002F `k2-6`、`qwen-3` 这些开源系列。Claude family + GPT 全系 + Opus \u002F Max \u002F Thinking 高阶模型要 Pro entitlement。具体每个账号的 entitled 清单 dashboard 里看 — `model_not_entitled` 错误返回的 `available_in_pool` 字段也会列出账号池能用的。\n\n**Q: 免费账号调工具稳吗**\nA: 看模型。Claude family `\u003Ctool_use>` 协议训练扎实最稳（free 账号若 entitled 也是优选）；GLM-4.7 \u002F Kimi-K2.5 走 NLU 兜底 + `WINDSURFAPI_NLU_RETRY=1` retry-with-correction 多数 case 能调；GLM-5.1 在 cascade 后端经常空回复 proxy 救不动；GPT 系列受 cascade 协议层限制（不传 OpenAI tools[] schema）也不稳。**Claude Code \u002F Cline \u002F Codex 调本地文件 \u002F 跑命令优先 `claude-haiku-4.5` 或 `claude-sonnet-4.6`**。\n\n**Q: 31 个 trial 账号一会儿就全 unavailable**\nA: 八成是用了周限模型 — `claude-opus-4-7-max` \u002F `gpt-5.5-xhigh` \u002F `claude-sonnet-4-7-thinking` 这类高 reasoning effort 变体每个账号每周只有 5 次配额，31 号 × 5 次 ≈ 150 次就到顶。换 `claude-sonnet-4.6` \u002F `claude-haiku-4.5` daily 配额比较宽松。`docker logs windsurfapi-windsurf-api-1 | grep rate_limit` 看每个账号的 cooldown 字段验证。\n\n## 贡献者\n\n特别感谢下面的朋友，他们提交过 PR 或系统性地审了代码，让这个项目变得更稳：\n\n- [@dd373156](https:\u002F\u002Fgithub.com\u002Fdd373156) — [PR #1](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI\u002Fpull\u002F1)\n  修复 Pro 层级的模型合并逻辑：原本只看硬编码清单，云端动态拉回来的模型没进 tier 表，Pro 账号在 Cursor \u002F Cherry Studio 里看不到新上线的模型。\n- [@colin1112a](https:\u002F\u002Fgithub.com\u002Fcolin1112a) — [PR #13](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI\u002Fpull\u002F13)\n  一次性审了 15 个安全 \u002F 并发 \u002F 资源管理 bug：XSS 转义、shell 注入、OOM 防护、auth 路由位置、gRPC 双回调、LS pool 竞态、HTTP\u002F2 帧大小上限等。后续我们在这个基础上又加固了 JS-level `escJsAttr`、`_pending` 合并并发 `ensureLs`、LS 退出时释放 pooled session，并延伸修了 Antigravity 审计发现的 6 个问题。\n- [@baily-zhang](https:\u002F\u002Fgithub.com\u002Fbaily-zhang) — [PR #36](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI\u002Fpull\u002F36) + [PR #45](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI\u002Fpull\u002F45)\n  Cascade reuse 的核心修复：stableTurns 指纹匹配 (#36) 解决了 0% 命中率；trajectory offset 增量拉取 (#45) 消除了多轮复用时的上下文膨胀。\n- [@aict666](https:\u002F\u002Fgithub.com\u002Faict666) — [PR #44](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI\u002Fpull\u002F44)\n  修复 chat 调用后 inferTier 把 Pro\u002FTrial 账号降级为 free 的 bug，保护了 GetUserStatus 设定的权威 tier。\n- [@smeinecke](https:\u002F\u002Fgithub.com\u002Fsmeinecke) — [PR #43](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI\u002Fpull\u002F43)\n  Dashboard 完整国际化：14 个 commit 覆盖中英文翻译、I18n 系统、check-i18n.js 校验工具。\n\n想加入这份名单？欢迎提 [issue](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI\u002Fissues) 或 [pull request](https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI\u002Fpulls)。Dashboard 左侧有\"致谢\"面板 能看到同样的信息。\n\n## 授权\n\nMIT\n","WindsurfAPI 是一个将 Windsurf（原 Codeium）的 AI 模型转换为同时兼容 OpenAI 和 Anthropic 标准 API 的代理服务。该项目使用纯 Node.js 实现，无任何 npm 依赖，支持超过 100 种模型，包括 Claude、GPT-5 系列、Gemini、Qwen 等。其核心功能包括提供两套标准 API 接口，即 OpenAI 兼容的 `\u002Fv1\u002Fchat\u002Fcompletions` 和 Anthropic 兼容的 `\u002Fv1\u002Fmessages`，并通过本地 Language Server 将请求转发至 Windsurf 云端。此外，该服务还具备账号池管理、自动轮询、速率限制隔离及故障转移等特性。适用于需要调用多种 AI 模型进行开发或研究的场景，尤其是那些希望利用现有 OpenAI 或 Anthropic SDK 的开发者。",2,"2026-06-11 02:38:59","CREATED_QUERY"]