WindsurfAPI:将 Windsurf AI 模型转化为 OpenAI/Anthropic 兼容 API 的开源神器
最近在 GitHub 上发现了一个非常硬核的开源项目 —— WindsurfAPI(github.com/dwgx/WindsurfAPI),它能把 Windsurf(原 Codeium)编辑器内置的 AI 模型能力,转化为标准的 OpenAI 和 Anthropic 兼容 API,让你可以用 Claude Code、Cline、Cursor 等任何 AI 编程工具,通过标准协议调用 107 个顶级大模型。
它解决什么问题
用过 Windsurf 编辑器的朋友都知道,它内置了非常强大的 AI 编程助手,支持 Claude、GPT、Gemini 等一系列顶级模型。但问题来了:这些模型只能在 Windsurf 编辑器内使用,无法被外部工具调用。
WindsurfAPI 的核心思路就是:在本地启动一个代理服务,把标准的 OpenAI/Anthropic API 请求,翻译成 Windsurf 内部的 gRPC 协议,通过 Windsurf 的 Language Server 二进制文件与云端通信。这样任何支持 OpenAI 协议的工具都能直接接入。
架构设计
整个系统的工作流程如下:
你的工具 (Claude Code / curl / 前端)
│
│ 标准 OpenAI / Anthropic API
▼
WindsurfAPI (Node.js 服务,端口 3003)
│
│ gRPC 协议翻译
▼
Language Server (本地二进制)
│
│ HTTPS 加密通道
▼
Windsurf 云端 (server.self-serve.windsurf.com)
│
▼
AI 模型 (Claude / GPT-5 / Gemini 3.x / DeepSeek ...)
关键设计亮点:
- 双协议兼容:同时暴露
/v1/chat/completions(OpenAI 格式)和/v1/messages(Anthropic 格式) - 账号池管理:支持多账号轮询 + 速率限制 + 故障转移,Pro 账号 60 RPM,Free 账号 10 RPM
- LS 池隔离:每个代理配置独立的 Language Server 实例,避免状态污染
- 三层安全清洗:过滤内部路径,防止文件系统信息泄露
- 零 npm 依赖:纯 Node.js 内置模块,protobuf 手搓编码,下载即跑
支持的模型(107 个)
项目通过逆向 Windsurf 编辑器的 extension.js 获取模型枚举值,再通过 GetCascadeModelConfigs 接口获取 credit 倍率。主要模型分类:
Claude 系列(20 个):从 Claude 3.5 Sonnet 到最新的 Claude Opus 4.6,包括 thinking 模式和 1M 上下文窗口版本。
GPT 系列(55+ 个):覆盖 GPT-4o 到 GPT-5.4 全系,包括多个推理强度级别(none/low/medium/high/xhigh),以及 fast(优先队列)和 codex(代码优化)变体。
其他模型:
- Gemini:2.5 Pro/Flash 到 3.1 Pro
- DeepSeek:V3、V3-2、R1
- Grok:3、3-mini、code-fast-1
- Qwen:3、3-coder
- Kimi:K2、K2.5
- GLM:4.7、5、5.1
- MiniMax:M2.5
- SWE:Windsurf 自研的 SWE-1.5/1.6 代码模型
注意:免费账号只能使用 gpt-4o-mini 和 gemini-2.5-flash,其他模型需要 Windsurf Pro 订阅。
快速部署
一键安装:
git clone https://github.com/dwgx/WindsurfAPI.git
cd WindsurfAPI
bash setup.sh # 自动建目录、配权限、生成 .env
node src/index.js
服务启动后访问 http://你的IP:3003/dashboard 进入管理面板。
一键更新(已部署的实例):
cd ~/WindsurfAPI && bash update.sh
update.sh 会自动执行 git pull → 停 PM2 → 清理端口残留 → 重启 → 健康检查。
添加 Windsurf 账号
服务启动后需要添加 Windsurf 账号才能使用。三种方式:
方式 1:Dashboard 一键登录(推荐)
打开管理面板,支持 Google OAuth、GitHub OAuth、邮箱密码三种登录方式,登录即入池。
方式 2:Token 登录
访问 windsurf.com/show-auth-token 获取 Token,然后:
curl -X POST http://localhost:3003/auth/login -H "Content-Type: application/json" -d '{"token": "你的Token"}'
方式 3:批量添加
curl -X POST http://localhost:3003/auth/login -H "Content-Type: application/json" -d '{"accounts": [{"token": "***"}, {"token": "***"}]}'
使用示例
OpenAI 格式(Python):
from openai import OpenAI
client = OpenAI(
base_url="http://你的IP:3003/v1",
api_key="你设的API_KEY"
)
response = client.chat.completions.create(
model="claude-sonnet-4.6",
messages=[{"role": "user", "content": "用 Python 写一个快速排序"}]
)
print(response.choices[0].message.content)
Anthropic 格式(Claude Code 直连):
# 设置环境变量即可
export ANTHROPIC_BASE_URL=http://你的IP:3003
export ANTHROPIC_API_KEY=你的API_KEY
claude # 正常使用 Claude Code
Cline / Cursor / Aider:在客户端配置中选择 Custom OpenAI Compatible,Base URL 填 http://你的IP:3003/v1,API Key 填你设置的密钥,Model 从 107 个支持的模型中任选。
核心技术解析
1. Protobuf 手搓编解码
项目在 src/proto.js 中完全手写了 protobuf wire format 的编码解码器,支持 varint、fixed64、length-delimited 三种线型,无需安装任何 protobuf 库。整个文件约 200 行代码,是非常硬核的做法。
2. gRPC over HTTP/2
使用 Node.js 内置的 http2 模块与本地 Language Server 通信,支持 unary 和 streaming 两种 gRPC 调用模式。streaming 模式用于实时获取模型输出(SSE),超时时间设置为 5 分钟。
3. Cascade 会话管理
项目实现了两套模型调用流程:
- Legacy 模式:通过 RawGetChatMessage 直接发送聊天消息,适合简单场景
- Cascade 模式:通过 StartCascade → SendUserCascadeMessage → GetCascadeTrajectorySteps 三步流程,支持工具调用(tool_use/tool_result),适合 Claude Code 等需要模型操作文件的场景
4. NO_TOOL 模式
通过设置 planner_mode=3 关闭 Cascade 内置的工具循环,避免模型尝试操作内部路径。配合三层 sanitize 机制(LS 工具结果过滤 + 文本解析 + 输出路径清洗),确保不会泄露服务端内部信息。
5. 真实 Token 计量
从 Cascade 的 CortexStepMetadata.model_usage 中提取真实的 inputTokens、outputTokens、cacheRead、cacheWrite,确保用量统计准确。
Dashboard 管理面板
项目内置了一个功能完善的 Web 管理面板,包含以下功能模块:
- 总览:运行状态、账号池健康度、LS 状态、成功率统计
- 登录取号:Google/GitHub OAuth 一键登录、代理测试
- 账号管理:添加/删除/停用账号、探测订阅等级、查看余额、封禁模型黑名单
- 模型控制:全局模型黑白名单
- 代理配置:全局或单账号的 HTTP/SOCKS5 代理设置
- 实时日志:SSE 串流、按级别过滤、每条日志带 turns=N chars=M 诊断信息
- 统计分析:6h/24h/72h 时间范围、账号维度、p50/p95 延迟
- 实验性功能:Cascade 对话复用、模型身份注入(可自定义 prompt)
生产部署建议
使用 PM2 进行进程管理:
npm install -g pm2
pm2 start src/index.js --name windsurf-api
pm2 save && pm2 startup
注意事项:
- 不要使用 pm2 restart,会出僵尸进程,用 bash update.sh 替代
- 记得开放防火墙 3003 端口
- 云服务器需在安全组放行 3003/tcp
环境变量配置
# 服务端口
PORT=3003
# API 密钥(留空则不验证)
API_KEY=your-secret-key
# 默认模型
DEFAULT_MODEL=claude-4.5-sonnet-thinking
# 最大回复 Token
MAX_TOKENS=8192
# Language Server 二进制路径
LS_BINARY_PATH=/opt/windsurf/language_server_linux_x64
# LS gRPC 端口
LS_PORT=42100
# Dashboard 密码(留空不设密码)
DASHBOARD_PASSWORD=your-dashboard-password
项目信息
- 项目地址:github.com/dwgx/WindsurfAPI
- 作者:dwgx1337
- Stars:279+(持续增长中)
- 开源协议:MIT
- 技术栈:纯 Node.js(>= 20.0.0),零 npm 依赖
- 源码规模:约 5000+ 行,结构清晰,核心模块 20 个文件
这是一个非常值得学习和使用的项目,无论你是想搭建自己的 AI API 代理服务,还是想学习如何手搓 protobuf 编解码和 gRPC 通信,这个项目都提供了极好的参考。项目代码质量高,架构设计合理,文档详尽,是开源社区中少见的精品。





