Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (windsurf-api) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Windsurf API
将 Windsurf 订阅转换为 OpenAI / Anthropic 兼容的 API 服务器。
✨ 功能特点
- 双协议兼容 — OpenAI (
/v1/chat/completions) + Anthropic (/v1/messages) 原生端点 - 100+ 模型 — Claude / GPT / Gemini / DeepSeek / Grok / Qwen / Kimi 等
- 多账号池 — 按剩余容量均衡分配,自动故障转移
- CLI 管理 — 简单命令行管理账号,交互式登录
- Dashboard — Web 管理面板,账号/密钥/统计一目了然
- API Key 管理 — 下游消费者密钥管理
- Docker 支持 — 一键部署
- 零依赖 — 纯 Node.js 内置模块
🚀 快速开始
前置条件
- Node.js ≥ 20
- Windsurf Language Server 二进制文件
- 至少一个 Windsurf 账号
安装
git clone https://github.com/imbuxiangnan-cyber/windsurf-api.git
cd windsurf-api
npm install
npm run build基本用法
# 方式一:已装 Windsurf 桌面客户端(零配置,自动提取 token + LS)
npx windsurf-api start
# 方式二:交互式登录(支持邮箱密码 / 手动粘贴 token)
npx windsurf-api auth
npx windsurf-api start
# 方式三:直接用 token 添加
npx windsurf-api add-account --token <session_token>
npx windsurf-api start --ls-path /path/to/language_server服务器默认监听 http://localhost:4000。
登录方式
| 方式 | 前提 | 说明 |
|---|---|---|
| 自动提取 | 已装 Windsurf 桌面端并登录过 | 启动时自动从桌面 app 提取 token 和 LS |
| 邮箱密码 | 有 Windsurf 账号 | npx windsurf-api auth 选择 [2] |
| 手动粘贴 | 有 session token | auth 选 [3] 或 add-account --token |
Language Server
启动时自动检测,无需手动指定。如未自动检测到,可手动指定:
- Windows:
<Windsurf安装目录>\resources\app\extensions\windsurf\bin\language_server_windows_x64.exe - macOS:
~/Library/Application Support/Windsurf/resources/app/extensions/windsurf/bin/language_server_macos_arm - Linux:
/opt/Windsurf/resources/app/extensions/windsurf/bin/language_server_linux_x64
📋 CLI 命令
# 启动服务
windsurf-api start [--port 4000] [--ls-path /path/to/ls]
# 添加账号
windsurf-api add-account --token <devin_session_token>
windsurf-api add-account --token <token> --label my-pro-account
# 查看账号列表
windsurf-api list-accounts
# 删除账号
windsurf-api remove-account <id>
# 帮助
windsurf-api help📡 API 端点
OpenAI 兼容
curl http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-api-key" \
-d '{
"model": "claude-sonnet-4.6",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": false
}'Anthropic 兼容
curl http://localhost:4000/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: sk-your-api-key" \
-d '{
"model": "claude-sonnet-4.6",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}]
}'模型列表
curl http://localhost:4000/v1/models💻 Claude Code 集成
自动配置(推荐)
# 启动时带 --claude-code 自动显示集成命令
npx windsurf-api start --claude-code手动配置
在项目根目录创建 .claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:4000",
"ANTHROPIC_AUTH_TOKEN": "dummy",
"ANTHROPIC_MODEL": "claude-sonnet-4",
"ANTHROPIC_SMALL_FAST_MODEL": "gpt-4.1",
"API_TIMEOUT_MS": "3000000",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_NON_ESSENTIAL_MODEL_CALLS": "1"
}
}或通过环境变量:
export ANTHROPIC_BASE_URL=http://localhost:4000
export ANTHROPIC_API_KEY=sk-your-api-key
claude提示:
ANTHROPIC_AUTH_TOKEN可以是任意值(如dummy),只要你没有设置--api-key。如果设置了 API Key,则填写对应的 Key。
🖥 Dashboard
访问 http://localhost:4000/dashboard 管理:
- 账号管理(添加/删除/状态)
- API Key 管理
- 使用统计
设置密码:DASHBOARD_PASSWORD=your_password
⚙️ 环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
PORT |
4000 |
服务端口 |
API_KEY |
空 | 全局 API 密钥 |
DASHBOARD_PASSWORD |
空 | Dashboard 密码 |
LS_BINARY_PATH |
自动检测 | LS 二进制路径 |
LS_PORT |
42100 |
LS 端口 |
API_SERVER_URL |
https://server.self-serve.windsurf.com |
Windsurf 云端 |
DEFAULT_MODEL |
claude-sonnet-4.6 |
默认模型 |
LOG_LEVEL |
info |
日志级别 |
DATA_DIR |
./data |
数据目录 |
🐳 Docker 部署
# 1. 将 LS 二进制放到 ls-binary/ 目录
mkdir -p ls-binary
cp /path/to/language_server_linux_x64 ls-binary/
# 2. 启动
docker compose up -d --build
# 3. 添加账号
curl -X POST http://localhost:4000/api/accounts \
-H "Content-Type: application/json" \
-d '{"email": "my-account", "apiKey": "<devin_session_token>"}'🏗 架构
Client (OpenAI SDK / Anthropic SDK / Claude Code / curl)
│
▼
Windsurf API (Node.js HTTP, :4000)
├── /v1/chat/completions (OpenAI format)
├── /v1/messages (Anthropic format)
├── /v1/models (Model list)
├── /dashboard (Admin UI)
└── /dashboard/api/* (Admin API)
│
▼
Language Server (gRPC, :42100)
│
▼
Windsurf Cloud (server.self-serve.windsurf.com)⚠️ 免责声明
本项目仅供个人学习和研究使用。请遵守 Windsurf 的使用条款。
📄 许可证
MIT