WindsurfAPI:将 Windsurf AI 模型转化为 OpenAI/Anthropic 兼容 API 的开源神器

最近在 GitHub 上发现了一个非常硬核的开源项目 —— WindsurfAPIgithub.com/dwgx/WindsurfAPI),它能把 Windsurf(原 Codeium)编辑器内置的 AI 模型能力,转化为标准的 OpenAIAnthropic 兼容 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 通信,这个项目都提供了极好的参考。项目代码质量高,架构设计合理,文档详尽,是开源社区中少见的精品。

发表回复

后才能评论