Provider 体系
ccgo 支持四种 API provider,通过环境变量选择(internal/api/providers.go):
| Provider | 环境变量 | 说明 |
|---|---|---|
firstParty | 默认 | 直接调用 api.anthropic.com |
bedrock | CLAUDE_CODE_USE_BEDROCK=1 | AWS Bedrock |
vertex | CLAUDE_CODE_USE_VERTEX=1 | Google Vertex AI |
foundry | CLAUDE_CODE_USE_FOUNDRY=1 | 自定义部署 |
也支持 OpenAI 兼容接口(internal/api/openai.go),通过 ANTHROPIC_BASE_URL 指向 OpenAI 兼容端点触发。
关键环境变量
| 变量 | 说明 |
|---|---|
ANTHROPIC_API_KEY | Anthropic API 密钥 |
ANTHROPIC_BASE_URL | 覆盖 API 基地址(用于代理或兼容接口) |
CLAUDE_CODE_USE_BEDROCK | 启用 Bedrock provider |
CLAUDE_CODE_USE_VERTEX | 启用 Vertex provider |
CLAUDE_CODE_USE_FOUNDRY | 启用 Foundry provider |
USER_TYPE | 设为 ant 时允许 staging 域名 |
模型选择
模型选择优先级(internal/cli/runner.go:61-67):
--model 参数 > settings.Model > api.GetModel()(默认)
默认模型通过 api.GetModel() 返回,支持环境变量覆盖。
流式 API
ccgo 使用 SSE 流式调用,处理以下事件类型(internal/api/stream.go):
| 事件 | 说明 |
|---|---|
content_block_delta | 流式文本或 thinking 片段 |
content_block_start | 新 block 开始(text / tool_use / thinking) |
content_block_stop | block 结束 |
message_stop | 消息结束 |
Tool use 的完整 JSON 在 content_block_stop 后才完整,需要缓冲拼接。
OpenAI 兼容层
internal/api/openai.go 和 openai_stream.go 实现了 OpenAI chat completions 接口的适配,将 Anthropic message format 转换为 OpenAI format,使 ccgo 可对接 OpenAI 兼容的后端(如本地部署模型)。
认证
internal/api/auth.go 处理各 provider 的认证逻辑,包括:
- Anthropic:Bearer token(
ANTHROPIC_API_KEY) - Bedrock:AWS Signature V4
- Vertex:Google Application Default Credentials
相关页面
- architecture — 整体数据流
- query-engine — 如何调用 API