AtomCode LLM 提供商与模型系统分析
持续深度分析 — 支持的提供商、模型配置、ProviderConfig 字段 2026-06-23
1. 支持的提供商类型
| 类型 | 标识符 | 默认端点 | 实现路径 |
|---|---|---|---|
| OpenAI | openai | https://api.openai.com/v1 | crates/atomcode-core/src/provider/openai.rs |
| Anthropic Claude | claude | https://api.anthropic.com | — |
| Ollama | ollama | http://localhost:11434 | crates/atomcode-core/src/provider/ollama.rs |
| DeepSeek | deepseek | https://api.deepseek.com/v1 | — |
1.1 默认配置
toml
[providers.deepseek]
type = "openai"
base_url = "https://api.deepseek.com/v1"
model = "deepseek-chat"
default_provider = "deepseek"1.2 其他支持的模型(从 WebUI 发现)
| 模型名 | 类型 | 提供商 |
|---|---|---|
deepseek-chat | chat | DeepSeek |
deepseek-reasoner | reasoning | DeepSeek |
deepseek-r1 | reasoning | DeepSeek |
deepseek-v4 | chat (最新) | DeepSeek |
kimi | chat | Moonshot AI |
xiaomi | chat | 小米 |
mimo | chat | — |
sonnet | chat | Claude |
haiku | chat | Claude |
gpt-4o | chat | OpenAI |
gpt-4o-mini | chat | OpenAI |
gpt-4 | chat | OpenAI |
gpt-4.1 | chat | OpenAI |
o1 | reasoning | OpenAI |
o1-mini | reasoning | OpenAI |
o3 | reasoning | OpenAI |
o1 | reasoning | OpenAI |
glm | chat | 智谱 |
llama | chat | Meta |
mistral | chat | Mistral AI |
vitest | — | — |
2. ProviderConfig 完整字段
rust
struct ProviderConfig { // 15 个字段
name: String, // 提供商名
provider_type: String, // openai / claude / ollama
api_key: Option<String>, // API 密钥(写入时使用,读取时隐藏)
base_url: Option<String>, // API 基础 URL
model: Option<String>, // 默认模型名
model_type: Option<String>, // 模型类型
max_tokens: Option<u64>, // 最大 token 数
thinking_budget: Option<u64>, // 思考预算 token
thinking_type: Option<String>, // 思考类型
thinking_keep: Option<bool>, // 保留思考过程
reasoning_history: Option<u64>, // 推理历史长度
skip_tls_verify: Option<bool>, // 跳过 TLS 验证
effort_applicable: Option<bool>, // 支持推理努力级别 (DeepSeek V4)
default: Option<bool>, // 是否为默认
ephemeral: Option<bool>, // 临时提供商
context_window: Option<u64>, // 上下文窗口大小
}3. API 兼容层
3.1 OpenAI 兼容
"Connects to any OpenAI-compatible API"AtomCode 支持任何实现 OpenAI 兼容 API 的提供商,包括:
| API | 端点 |
|---|---|
| Chat Completions | /v1/chat/completions |
| Completions | /v1/completions |
| Embeddings | /v1/embeddings |
| Models | /v1/models |
3.2 Anthropic 格式
POST /v1/messages
Content-Type: application/json
x-api-key: <key>
anthropic-version: 2023-06-01Anthropic 的流式格式:
event: content_block_start
event: content_block_delta
data: {"type": "text_delta", "text": "..."}
data: {"type": "thinking_delta", "thinking": "..."}
data: {"type": "signature_delta", "signature": "..."}
event: content_block_stop
event: message_start
event: message_delta
event: message_stop3.3 Ollama 格式
http://localhost:11434/api/chat流式响应结构:
json
{
"model": "...",
"created_at": "...",
"message": {"role": "assistant", "content": "..."},
"done": false
}4. 提供商 TUI 配置
4.1 配置文件存储
toml
[providers.deepseek]
type = "openai"
base_url = "https://api.deepseek.com/v1"
model = "deepseek-chat"
api_key = "sk-..."
# 也可以通过以下方式设置为默认
default_provider = "deepseek"4.2 TUI 配置流程
/provider — 查看/切换提供商
/provider add — 添加新提供商(交互式向导)
/provider edit <name> — 编辑提供商
/provider delete <name> — 删除提供商
/provider set-default — 设为默认
交互式向导步骤:
Step 1/3: Provider name?
Step 2/3: Type? (openai / claude / ollama)
Step 2/3: Base URL? (e.g. https://api.deepseek.com/v1)
Step 3/3: API key? (blank to leave unset)4.3 WebUI 配置
从 JS 提取的管理器组件:
javascript
// 提供商卡片
ProviderCard {
name, type, model, base_url,
is_default (badge),
api_key 状态 (configured / not configured),
edit button, delete button
}
// 添加/编辑提供商
ProviderForm {
provider_name,
model,
type (openai/claude/ollama),
context_window (128k/16k/8k/4k...),
base_url,
api_key,
set_as_default,
}5. Token 与使用统计
5.1 Token 计数(API 响应)
rust
struct ChunkUsage { // 5 个字段
prompt_tokens: u64,
completion_tokens: u64,
total_tokens: u64,
// ...
}
// Anthropic 特殊字段
prompt_cache_hit_tokens: u64, // 提示缓存命中
cache_read_input_tokens: u64, // 缓存读取5.2 思考/推理 Token
rust
struct ThinkingBlock {
thinking: String, // 思考过程文本
signature: String?, // 数字签名(用于验证)
}6. 推理努力级别
/reasoning_effort high/max/off — 控制推理深度(仅 DeepSeek V4)
消息: "reasoning_effort has no effect on the current model
(only DeepSeek V4)"| 级别 | 说明 |
|---|---|
off | 使用 API 默认 |
high | 更深推理 |
max | 最大推理深度 |
7. API 端点(提供商相关)
| 端点 | 说明 |
|---|---|
GET /models | 列出可用模型 |
GET /providers | 列出所有提供商 |
POST /providers | 创建提供商 |
PATCH /providers/:name | 更新提供商 |
DELETE /providers/:name | 删除提供商 |
POST /providers/:name/default | 设为默认 |
8. ProviderInfo 响应
rust
struct ProviderInfo {
name: String,
provider_type: String, // openai/claude/ollama
model: String,
is_default: bool,
has_api_key: bool, // 是否已配置(不返回密钥本身)
ephemeral: bool, // 临时(会话级)提供商
effort_applicable: bool, // 支持推理努力级别
// ...
}9. 新覆盖的盲区
| # | 之前未覆盖的领域 | 状态 | 发现 |
|---|---|---|---|
| 1 | 支持的提供商类型 | ✅ | openai/claude/ollama 三大类 + 自定义 |
| 2 | ProviderConfig 15 字段 | ✅ | 完整字段列表 |
| 3 | DeepSeek 为默认提供商 | ✅ | deepseek-chat 模型 |
| 4 | Anthropic 流式格式 | ✅ | 7 种事件类型 |
| 5 | Ollama 集成 | ✅ | 本地 localhost:11434 |
| 6 | TUI 配置向导 | ✅ | 3 步交互流程 |
| 7 | WebUI 提供商管理器 | ✅ | ProviderCard + ProviderForm 组件 |
| 8 | 推理努力级别 | ✅ | high/max/off + 仅 DeepSeek V4 |
| 9 | Token/思考结构体 | ✅ | ChunkUsage + ThinkingBlock |
本报告由持续分析循环生成
逆向命令索引
bash
# 提取 ProviderConfig
strings atomcode.bin.bak | grep "struct ProviderConfig"
# 输出: struct ProviderConfig with 15 elements
# 提取提供商类型
strings atomcode.bin.bak | grep -E "openai|claude|ollama" | grep -v "https\?://" | sort -u | head -5
# 运行时查看提供商列表
TOKEN=$(python3 -c "import tomllib; f=open('$HOME/.atomcode/auth.toml','rb'); print(tomllib.load(f)['access_token'])")
curl -s -H "Authorization: Bearer $TOKEN" http://localhost:13456/providers 2>/dev/null | python3 -m json.tool | head -20