将各大 AI 模型 Web 页面封装成标准 OpenAI API 接口的代理服务,支持 ChatGPT、Claude、DeepSeek、Qwen、Kimi、GLM、Doubao 等多个 AI Provider。
- 🚀 统一 API 接口:将不同 AI 平台的 Web 界面统一封装为 OpenAI 兼容的 REST API
- 🔄 双模式支持:Web 模式(浏览器自动化)+ Forward 模式(API 直连),灵活切换
- 🎯 Forward Monitor:实时监控和调试转发的请求/响应,支持流式响应追踪和 Session 管理
- 🖥️ 桌面应用:Electron 桌面客户端,提供可视化的服务管理、多 Provider 切换和监控界面
- 🌐 多 Provider 支持:ChatGPT (GPT-5.2/O3) / Claude (Opus 4/Sonnet 4) / DeepSeek / Qwen / Kimi / GLM / Doubao
- 🔧 灵活配置:支持自定义 Provider、Model、Cookie、超时时间等配置
- 📊 Session Registry:会话管理和追踪,支持查询、删除和统计
- 🔄 Context Switch:智能上下文切换,自动管理会话长度
- Node.js: >= 18.0.0
- pnpm: >= 8.0.0
- 操作系统: macOS / Linux / Windows
- Chrome/Chromium: 用于 Playwright 自动化
# 安装 pnpm(如果未安装)
npm install -g pnpm
# 安装所有依赖(包括 desktop 子项目)
pnpm install编辑 config/default.json,配置你的 AI Providers,使用 web 模式不需要配置 api_key
{
"providers": {
"deepseek": {
"default_mode": "forward",
"models": ["deepseek-chat", "deepseek-r1", "deepseek-v3"],
"web": {
"site": "https://chat.deepseek.com/",
"input_max_chars": 120000
},
"forward": {
"base_url": "https://api.deepseek.com",
"api_key": "sk-your-api-key-here",
"upstream_model_map": {
"deepseek-chat": "deepseek-chat"
}
}
},
"gpt": {
"default_mode": "web",
"models": ["gpt-4", "gpt-4o", "gpt-5", "o1", "o3"],
"web": {
"site": "https://chatgpt.com/",
"input_max_chars": 60000
}
},
"claude": {
"default_mode": "web",
"models": ["claude-3-5-sonnet", "claude-sonnet-4", "claude-opus-4"],
"web": {
"site": "https://claude.ai/",
"input_max_chars": 120000
}
}
},
"webdriver": {
"response_timeout_ms": 120000,
"headless": false,
"startup_preflight_enabled": false,
"startup_open_sites_enabled": true
},
"server": {
"port": 3000
}
}💡 配置说明:
- default_mode:
web(浏览器自动化)或forward(API 直连)- web.site: Web 界面 URL(web 模式需要)
- forward.api_key: 上游 API 密钥(forward 模式需要)
- startup_preflight_enabled: 服务启动时是否执行登录预检(false 可加速启动)
- startup_open_sites_enabled: 服务启动时是否打开 Web 页面
启动后请在打开的浏览器页面进行登录(Web 模式),登录后才能使用对应 AI 服务商。
npm run dev:tui一键启动 Proxy + Agent Service + TUI,Ctrl-C 关闭全部。
后台服务日志写入 .logs/,TUI 独占终端,交互界面不被日志打断。
# 开发模式(热重载)
npm run dev:desktop
# 生产模式
npm run build:all
npm run start:desktop桌面应用提供:
- 可视化服务启动/停止控制
- 多 Provider Web 界面切换
- Forward Monitor 实时监控
- 内置终端和日志查看
# 开发模式
npm run dev
# 生产模式
npm run build
npm run start服务将在 http://127.0.0.1:3000 启动。
# 发送测试请求
curl -X POST http://127.0.0.1:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hello"}],
"stream": false
}'┌──────────────────────────────────────────────────────────────┐
│ 用户界面层 (UI Layer) │
│ │
│ Desktop (Electron + React) TUI (Node.js + readline) │
│ 图形化桌面客户端 命令行交互客户端 │
│ HTTP + WebSocket HTTP + WebSocket │
└─────────────────────┬────────────────────┬───────────────────┘
│ │
▼ ▼
┌──────────────────────────────────────────────────────────────┐
│ Agent Service (client-core/src/server/) │
│ 默认端口 :8100 │
│ │
│ SessionManager ──► AgentSession ──► WebClawClientCore │
│ (多会话管理) (单会话包装) (Tool Loop 核心逻辑) │
│ FileSessionStore 内置工具:browser/exec/ │
│ (~/.webclaw/sessions) read-file/web-search 等 │
│ │
│ REST API: POST /v1/chat GET /v1/sessions PATCH /v1/config│
│ WebSocket: ws://localhost:8100/ws (实时事件推送) │
└─────────────────────────────┬────────────────────────────────┘
│ HTTP POST /v1/chat/completions
▼
┌──────────────────────────────────────────────────────────────┐
│ WebClawProxy (src/) │
│ 默认端口 :3000 │
│ │
│ ┌─────────────────────┐ ┌──────────────────────────────┐ │
│ │ Web 模式 │ │ Forward 模式 │ │
│ │ Playwright/CDP │ │ 透明转发到上游 OpenAI API │ │
│ │ 驱动真实 Chromium │ │ SessionRegistry 会话管理 │ │
│ │ 操作 ChatGPT/Claude │ │ SSE Forward Monitor │ │
│ │ /DeepSeek 等网站 │ │ │ │
│ └─────────────────────┘ └──────────────────────────────┘ │
│ │
│ OpenAI 兼容接口:POST /v1/chat/completions │
│ 管理接口:/v1/models /v1/providers /v1/conversations │
│ 监控界面:/monitor │
└──────────────────────────────────────────────────────────────┘
数据流向:
用户输入 → Desktop / TUI
→ Agent Service (:8100) [处理命令、管理会话]
→ WebClawClientCore [Tool Loop 自动循环执行工具]
→ WebClawProxy (:3000) [路由分发]
→ Web 模式: Playwright 驱动浏览器访问 AI 网站
→ Forward 模式: 直接调用上游 OpenAI 兼容 API
WebClawProxy/
├── config/ # 配置文件目录
│ └── default.json # 主配置文件
├── src/ # WebClawProxy 代理服务(端口 3000)
│ ├── controller/ # API 路由、会话注册、Forward Monitor
│ ├── web-driver/ # Playwright 浏览器自动化
│ ├── data-manager/ # 数据管理
│ └── protocol/ # 协议解析(OpenAI 格式)
├── client-core/ # 客户端核心库 + Agent Service
│ └── src/
│ ├── core/ # WebClawClientCore(Tool Loop 核心)
│ │ └── tools/ # 内置工具(browser/exec/web-search 等)
│ ├── server/ # Agent Service(端口 8100)
│ └── shared/ # 共享类型定义
├── desktop/ # Electron 桌面客户端
│ ├── electron/ # Electron 主进程(服务管理、CDP)
│ └── src/ # React 渲染进程(聊天面板、监控界面)
├── tui/ # 命令行交互客户端
│ └── src/ # ChatCLI + AgentClient
├── scripts/ # 开发脚本
│ └── dev-tui.sh # TUI 一键启动脚本
├── tests/ # 测试用例
├── docs/ # 文档
└── pnpm-workspace.yaml # pnpm workspace 配置
| 命令 | 说明 |
|---|---|
npm run dev |
仅启动 WebClawProxy 代理服务(端口 3000) |
npm run dev:desktop |
一键启动桌面应用(含代理服务) |
npm run dev:tui |
一键启动 TUI 客户端(proxy + agent + tui) |
npm run dev:tui启动流程:
- 后台启动 WebClawProxy(日志写入
.logs/proxy.log) - 后台启动 Agent Service(日志写入
.logs/agent.log) - 前台运行 TUI 终端界面(独占终端,不被后台日志打断)
- Ctrl-C 时自动关闭所有后台进程
# 查看后台服务日志(可另开终端)
tail -f .logs/proxy.log
tail -f .logs/agent.log# 开发
npm run dev # 启动 WebClawProxy(开发模式)
npm run build # 编译 TypeScript
npm run start # 启动服务(生产模式)
# 测试
npm run test # 运行所有测试
npm run test:web-driver # 测试 Web Driver
npm run test:protocol # 测试协议解析
npm run test:controller # 测试控制器# 开发
npm run dev:desktop # 启动桌面应用(开发模式,含代理服务)
npm run build:desktop # 编译桌面应用
npm run start:desktop # 启动桌面应用(生产模式)
npm run build:all # 编译服务端 + 桌面端在 TUI 交互界面中可使用以下命令:
/help 显示帮助
/model <名称> 切换模型(如 /model gpt-4o)
/mode <web|forward> 切换路由模式
/new 新建会话
/sessions 列出所有会话
/session 显示当前会话信息
/clear 清空当前对话
/config 查看当前配置
/tools 查看可用工具列表
/quit 退出
POST /v1/chat/completions
请求体:
{
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Hello"}
],
"stream": false
}响应:
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1234567890,
"model": "gpt-4",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "Hi! How can I help you today?"
},
"finish_reason": "stop"
}]
}Forward Monitor 提供实时的请求/响应监控和 Session 管理:
GET /v1/forward-monitor/events # SSE 事件流(实时监控)
GET /v1/forward-monitor/sessions # 获取所有 Session
GET /v1/forward-monitor/sessions/:id # 获取单个 Session 详情
DELETE /v1/forward-monitor/sessions/:id # 删除指定 Session
GET /monitor # Forward Monitor Web 界面
Session 示例:
# 获取所有 Session
curl http://127.0.0.1:3000/v1/forward-monitor/sessions
# 响应示例
{
"sessions": [
{
"sessionId": "sess_123abc",
"provider": "gpt",
"model": "gpt-4",
"mode": "web",
"createdAt": "2026-04-22T13:00:00.000Z",
"requestCount": 5,
"status": "active"
}
]
}
# 获取单个 Session 详情
curl http://127.0.0.1:3000/v1/forward-monitor/sessions/sess_123abc
# 删除 Session
curl -X DELETE http://127.0.0.1:3000/v1/forward-monitor/sessions/sess_123abc实时监控(SSE):
const eventSource = new EventSource('http://127.0.0.1:3000/v1/forward-monitor/events');
eventSource.addEventListener('session-start', (e) => {
const data = JSON.parse(e.data);
console.log('Session started:', data);
});
eventSource.addEventListener('message-chunk', (e) => {
const data = JSON.parse(e.data);
console.log('Message chunk:', data.content);
});
eventSource.addEventListener('session-end', (e) => {
const data = JSON.parse(e.data);
console.log('Session ended:', data);
});每个 Provider 支持以下配置项:
{
"providers": {
"provider_key": {
"default_mode": "web", // 默认模式:"web" 或 "forward"
"models": ["model-1", "model-2"], // 支持的模型列表
"web": {
"site": "https://example.com/", // Web 界面 URL
"input_max_chars": 120000 // 最大输入字符数
},
"forward": {
"base_url": "https://api.example.com", // API 端点
"api_key": "sk-xxx", // API 密钥
"upstream_model_map": { // 模型映射
"local-model": "upstream-model"
}
}
}
}
}| Provider | 模型示例 | Web 模式 | Forward 模式 |
|---|---|---|---|
| ChatGPT | gpt-4, gpt-4o, gpt-5, gpt-5.1, gpt-5.2, o1, o3 | ✅ | |
| Claude | claude-3-5-sonnet, claude-3-7-sonnet, claude-sonnet-4, claude-opus-4 | ✅ | |
| DeepSeek | deepseek-chat, deepseek-r1, deepseek-v3 | ✅ | ✅ |
| Qwen | qwen-turbo, qwen-plus, qwen-max, qwen2.5-72b | ✅ | |
| Kimi | moonshot-v1-8k, moonshot-v1-32k, kimi | ✅ | |
| GLM | glm-4, glm-4-plus, glm-5, glm-5.1 | ✅ | |
| Doubao | doubao, doubao-1.5-pro | ✅ |
{
"webdriver": {
"response_timeout_ms": 120000, // 响应超时时间(毫秒)
"stability_check_interval_ms": 500, // 稳定性检查间隔
"stability_check_count": 3, // 稳定性检查次数
"headless": false, // 是否无头模式
"startup_preflight_enabled": false, // 启动时是否执行登录预检
"startup_open_sites_enabled": true // 启动时是否打开 Web 页面
}
}{
"logging": {
"enabled": true, // 是否启用日志
"debug": true, // 是否启用调试日志
"dir": ".data/logs", // 日志目录
"file_prefix": "webclaw-proxy", // 日志文件前缀
"pretty_json": false, // 是否美化 JSON 输出
"request_body_truncate_enabled": false, // 是否截断请求体
"request_body_max_chars": 5000 // 请求体最大字符数
}
}自动管理会话上下文长度,防止超出模型限制:
{
"context_switch": {
"enabled": true, // 是否启用上下文切换
"max_prompt_tokens": 120000, // 最大 prompt tokens
"max_total_tokens": 128000 // 最大总 tokens
}
}在 Web 模式下,如果遇到认证问题:
- 重新登录对应平台
- 更新
config/default.json中的 Cookie 值(如果配置了) - 或者重启服务,让浏览器自动化重新登录
# 安装浏览器
npx playwright install chromium
# 或使用 pnpm
pnpm exec playwright install chromium修改 config/default.json 中的 server.port:
{
"server": {
"port": 3001 // 改为其他端口
}
}确保已安装依赖:
cd desktop && pnpm install如果还有问题,尝试重新构建:
pnpm build:all如果启动时需要等待较长时间,可以禁用启动预检:
{
"webdriver": {
"startup_preflight_enabled": false
}
}确保在配置中正确设置了 forward 相关参数:
base_url: API 端点地址api_key: 有效的 API 密钥
Forward Monitor 支持流式响应的实时显示。如果遇到问题:
- 检查浏览器控制台是否有错误
- 确认 SSE 连接是否建立成功
- 查看服务端日志(
.data/logs/)
- Web 界面:访问
http://127.0.0.1:3000/monitor - 桌面应用:切换到 "Forward Monitor" 标签页
- API:使用
/v1/forward-monitor/sessions端点
- 在
config/default.json添加配置 - 在
src/web-driver/创建对应的 driver 文件 - 在
src/protocol/添加协议解析逻辑 - 更新
desktop/electron/provider-sites.ts
# 服务端日志
pnpm dev # 控制台输出
# 桌面端日志
pnpm dev:desktop # 查看 Logs 标签页MIT License
Copyright (c) 2024 fuguoheng
欢迎提交 Issue 和 Pull Request!