Skip to content

wwb3201369791-cell/sonnetforapi

Repository files navigation

SonnetForAPI

English | 简体中文

SonnetForAPI 是一个按计划书重写的 Go 代理服务,用来把 Cursor 文档页聊天接口包装成两套对外协议:

  • OpenAI POST /v1/chat/completions
  • Anthropic POST /v1/messages

它的定位是一个新的双协议桥接层:统一配置、统一鉴权、统一 Cursor 上游客户端,同时保留 *-thinking 模型暴露方式和工具调用桥接能力。

当前能力

  • 支持 claude-sonnet-4.6
  • 自动暴露 claude-sonnet-4.6-thinking
  • 支持 Bearer Token 与 x-api-key
  • 支持 OpenAI 流式输出
  • 支持 Anthropic SSE 事件输出
  • 支持 tool bridge 与 thinking 事件透传
  • 支持 stream_options.include_usage
  • 支持 config.yaml 热重载
  • 支持非流式拒答重试
  • 支持早期上下文压缩
  • 支持可选图像预处理(vision)

运行要求

  • Go 1.24+
  • Node.js 18+

Node.js 仅用于需要执行 x-is-human JS 兜底逻辑时的运行时支持。

快速开始

1. 准备配置

cp config.yaml.example config.yaml

如果你更习惯环境变量方式,也可以从 .env.example 复制一份 .env 再按需覆盖。

默认配置会监听 http://localhost:3010,默认密钥为:

sk-sonnetforapi

2. 本地启动

Linux / macOS:

chmod +x start.sh
./start.sh

Windows:

start-go.bat

或者直接:

go mod tidy
go run .

API 示例

OpenAI Chat Completions

curl http://localhost:3010/v1/chat/completions \
  -H "Authorization: Bearer sk-sonnetforapi" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4.6-thinking",
    "stream": true,
    "stream_options": { "include_usage": true },
    "messages": [
      { "role": "user", "content": "Summarize this service." }
    ]
  }'

Anthropic Messages

curl http://localhost:3010/v1/messages \
  -H "x-api-key: sk-sonnetforapi" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4.6",
    "max_tokens": 1024,
    "stream": true,
    "messages": [
      { "role": "user", "content": "Explain the route layout." }
    ]
  }'

Models

curl http://localhost:3010/v1/models \
  -H "Authorization: Bearer sk-sonnetforapi"

Docker

docker build -t sonnetforapi .
docker run --rm -p 3010:3010 sonnetforapi

或:

docker-compose up -d

配置说明

主要配置位于 config.yaml

  • api_keys: 允许访问的密钥列表
  • cursor.model: Cursor 上游模型,默认 anthropic/claude-sonnet-4.6
  • x_is_human.enabled: 是否启用 JS token 兜底
  • streaming.keepalive_seconds: SSE 心跳间隔
  • thinking.enabled: 是否允许 thinking 模型注入

同时也支持环境变量覆盖:

  • API_KEY / API_KEYS
  • PORT
  • CURSOR_MODEL
  • TIMEOUT
  • MAX_HISTORY_MESSAGES
  • MAX_AUTO_CONTINUE
  • PROXY
  • STREAM_KEEPALIVE_SECONDS
  • STREAM_IDLE_TIMEOUT
  • STREAMER_WARMUP_CHARS
  • STREAMER_GUARD_CHARS
  • X_IS_HUMAN_ENABLED
  • REJECTION_ENABLED
  • REJECTION_MAX_RETRIES
  • COMPRESSION_ENABLED
  • COMPRESSION_LEVEL
  • COMPRESSION_KEEP_RECENT
  • COMPRESSION_EARLY_MSG_MAX_CHARS
  • VISION_ENABLED
  • VISION_MODE
  • VISION_BASE_URL
  • VISION_API_KEY
  • VISION_MODEL
  • TOOLS_SCHEMA_MODE
  • TOOLS_DESCRIPTION_MAX_LENGTH
  • TOOLS_INCLUDE_ONLY
  • TOOLS_EXCLUDE

页面风格

首页文档页已经重写为白底、浅蓝、浅黄、浅粉的轻淡主题。

验证

go test ./...

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors