GoClaw - 多 Agent 网关
约 1146 字大约 4 分钟
2026-03-07
API Gateway 架构的 OpenClaw 实现,支持 11+ 家 LLM API 协议转换和多模型混用。
核心特性
多模型支持
- 支持 11+ 家 LLM 提供商
- 协议自动转换
- 模型自动切换
- 成本优化路由
API Gateway 架构
- 统一 API 接口
- 请求路由分发
- 流量控制
- 限流熔断
高性能
- Go 语言实现
- Goroutine 并发
- 低延迟响应
- 高吞吐量
易于集成
- RESTful API
- 标准化接口
- 快速接入
- 文档完善
快速开始
安装
# 下载预编译二进制
wget https://github.com/nextlevelbuilder/goclaw/releases/latest/download/goclaw-gateway-linux-amd64
chmod +x goclaw-gateway-linux-amd64
sudo mv goclaw-gateway-linux-amd64 /usr/local/bin/goclaw
# 或从源码编译
git clone https://github.com/nextlevelbuilder/goclaw.git
cd goclaw/gateway
go build -o goclaw配置
创建 config.yaml:
# 网关配置
gateway:
host: 0.0.0.0
port: 8080
# 上游 LLM 配置
providers:
- name: openai
api_key: ${OPENAI_API_KEY}
base_url: https://api.openai.com/v1
- name: anthropic
api_key: ${ANTHROPIC_API_KEY}
base_url: https://api.anthropic.com
- name: google
api_key: ${GOOGLE_API_KEY}
base_url: https://generativelanguage.googleapis.com/v1
# 支持更多提供商...
# 路由规则
routing:
default_provider: openai
fallback:
- anthropic
- google运行
# 启动网关
goclaw gateway start
# 或使用 Docker
docker run -d -p 8080:8080 \
-v $(pwd)/config.yaml:/app/config.yaml \
goclaw/gateway:latest技术架构
网关架构
// 请求处理流程
type Gateway struct {
router *Router
providers map[string]LLMProvider
middleware []Middleware
}
func (g *Gateway) HandleRequest(req *Request) (*Response, error) {
// 1. 中间件处理
for _, m := range g.middleware {
req = m.Process(req)
}
// 2. 路由选择
provider := g.router.Select(req)
// 3. 调用上游
resp, err := provider.Call(req)
// 4. 响应处理
return g.processResponse(resp), nil
}路由策略
// 路由选择器
type Router struct {
strategies []RoutingStrategy
}
func (r *Router) Select(req *Request) LLMProvider {
for _, s := range r.strategies {
if provider := s.Select(req); provider != nil {
return provider
}
}
return r.defaultProvider
}
// 成本优化策略
type CostStrategy struct{}
func (s *CostStrategy) Select(req *Request) LLMProvider {
// 根据请求复杂度选择最便宜的模型
if req.Simple() {
return providers["gpt-3.5-turbo"]
}
return nil // 交给下一个策略
}提供商适配
// LLM 提供商接口
type LLMProvider interface {
Call(req *Request) (*Response, error)
GetName() string
GetModels() []string
}
// OpenAI 适配器
type OpenAIProvider struct {
client *openai.Client
}
func (p *OpenAIProvider) Call(req *Request) (*Response, error) {
resp, err := p.client.CreateChatCompletion(req.ToOpenAI())
return FromOpenAI(resp), err
}
// Anthropic 适配器
type AnthropicProvider struct {
client *anthropic.Client
}
func (p *AnthropicProvider) Call(req *Request) (*Response, error) {
resp, err := p.client.CreateMessage(req.ToAnthropic())
return FromAnthropic(resp), err
}功能列表
核心功能
支持的提供商
| 提供商 | 模型数 | 状态 |
|---|---|---|
| OpenAI | 20+ | 已支持 |
| Anthropic | 10+ | 已支持 |
| Google Gemini | 15+ | 已支持 |
| Azure OpenAI | 10+ | 已支持 |
| Cohere | 5+ | 已支持 |
| AI21 | 5+ | 已支持 |
| Mistral | 5+ | 已支持 |
| Meta | 10+ | 已支持 |
| 百度文心 | 10+ | 已支持 |
| 阿里通义 | 10+ | 已支持 |
| MiniMax | 5+ | 已支持 |
使用示例
API 调用
# 使用默认模型
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"messages": [{"role": "user", "content": "你好"}]
}'
# 指定模型
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-5-sonnet",
"messages": [{"role": "user", "content": "你好"}]
}'
# 指定提供商
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"provider": "anthropic",
"model": "claude-3-5-sonnet",
"messages": [{"role": "user", "content": "你好"}]
}'Go SDK 使用
package main
import (
"github.com/nextlevelbuilder/goclaw/gateway/sdk"
)
func main() {
client := sdk.NewClient("http://localhost:8080", "your-api-key")
resp, err := client.Chat(&sdk.ChatRequest{
Messages: []sdk.Message{
{Role: "user", Content: "你好"},
},
})
if err != nil {
panic(err)
}
println(resp.Choices[0].Message.Content)
}路由策略
成本优先
routing:
strategy: cost
# 按价格排序,便宜的优先
providers:
- name: openai
model: gpt-4o-mini
price: $0.15/1M tokens
- name: anthropic
model: claude-3-haiku
price: $0.25/1M tokens质量优先
routing:
strategy: quality
# 按质量排序
providers:
- name: openai
model: gpt-4o
- name: anthropic
model: claude-3-5-sonnet自动回退
routing:
strategy: fallback
chain:
- provider: openai
model: gpt-4o
timeout: 10s
- provider: anthropic
model: claude-3-5-sonnet
timeout: 10s
- provider: google
model: gemini-pro
timeout: 15s监控与运维
指标监控
# 查看指标
curl http://localhost:8080/metrics
# Prometheus 格式
# go_requests_total{publisher="openai",model="gpt-4"} 1234
# go_requests_total{publisher="anthropic",model="claude-3"} 567限流配置
rate_limit:
enabled: true
global:
requests_per_minute: 1000
per_provider:
openai:
requests_per_minute: 500
anthropic:
requests_per_minute: 300适用场景
推荐使用
- 多模型切换: 需要灵活切换不同 LLM
- 成本优化: 想要降低 API 成本
- 高并发: 需要处理大量请求
- 国内访问: 需要使用国内模型
与其他版本对比
| 特性 | GoClaw 网关 | GoClaw SDK | PicoClaw |
|---|---|---|---|
| 用途 | API 网关 | 开发框架 | 单文件部署 |
| 架构 | 集中式 | 分布式 | 无状态 |
| 适合 | 多模型管理 | 二次开发 | Serverless |
相关链接
- GitHub: nextlevelbuilder/goclaw
- 文档: 使用文档
- 问题反馈: Issues
许可证
MIT License - 详见 LICENSE