将 Anthropic Messages API 请求转换为 Bolt API 请求的代理服务,仅支持 SSE 流式响应。
bolt-api/
├── cmd/
│ └── main.go # 程序入口
├── internal/
│ ├── anthropic/
│ │ └── types.go # Anthropic API 数据结构
│ ├── bolt/
│ │ ├── types.go # Bolt API 数据结构
│ │ └── client.go # Bolt HTTP 客户端
│ ├── converter/
│ │ ├── inbound.go # 入转换器 (Anthropic → Bolt)
│ │ └── outbound.go # 出转换器 (Bolt SSE → Anthropic SSE)
│ ├── config/
│ │ └── config.go # 配置管理
│ └── server/
│ └── server.go # HTTP 服务器
├── config.yaml # 配置文件
├── go.mod
└── go.sum
编辑 config.yaml:
server:
port: 8999
bolt:
session_token: "your-session-token-here" # Bolt 的 __session cookie 值
project_id: "your-project-id" # Bolt 项目IDexport BOLT_SESSION_TOKEN="your-session-token"
export BOLT_PROJECT_ID="your-project-id"
export PORT=8999 # 可选,默认 8999# 构建
go build -o bolt-api ./cmd/main.go
# 运行(使用配置文件)
./bolt-api
# 或指定配置文件路径
./bolt-api -config /path/to/config.yaml
# 或使用环境变量
BOLT_SESSION_TOKEN=xxx BOLT_PROJECT_ID=xxx ./bolt-apiPOST /v1/messages- Anthropic Messages API 兼容端点GET /health- 健康检查
curl -X POST http://localhost:8999/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: any-key" \
-d '{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"stream": true,
"messages": [
{"role": "user", "content": "Hello, Claude"}
]
}'返回标准 Anthropic SSE 格式:
event: message_start
data: {"type":"message_start","message":{...}}
event: content_block_start
data: {"type":"content_block_start","index":0,...}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"..."}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},...}
event: message_stop
data: {"type":"message_stop"}
- 仅支持流式模式 - 请求必须设置
stream: true - 工具调用 - 服务会将模型的 JSON 格式工具调用转换为 Anthropic 标准
tool_use格式 - Session Token - 需要从 Bolt 网站获取有效的
__sessioncookie 值