Skip to content

AtomCode LLM 提供商与模型系统分析

持续深度分析 — 支持的提供商、模型配置、ProviderConfig 字段 2026-06-23


1. 支持的提供商类型

类型标识符默认端点实现路径
OpenAIopenaihttps://api.openai.com/v1crates/atomcode-core/src/provider/openai.rs
Anthropic Claudeclaudehttps://api.anthropic.com
Ollamaollamahttp://localhost:11434crates/atomcode-core/src/provider/ollama.rs
DeepSeekdeepseekhttps://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-chatchatDeepSeek
deepseek-reasonerreasoningDeepSeek
deepseek-r1reasoningDeepSeek
deepseek-v4chat (最新)DeepSeek
kimichatMoonshot AI
xiaomichat小米
mimochat
sonnetchatClaude
haikuchatClaude
gpt-4ochatOpenAI
gpt-4o-minichatOpenAI
gpt-4chatOpenAI
gpt-4.1chatOpenAI
o1reasoningOpenAI
o1-minireasoningOpenAI
o3reasoningOpenAI
o1reasoningOpenAI
glmchat智谱
llamachatMeta
mistralchatMistral 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-01

Anthropic 的流式格式:

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_stop

3.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 三大类 + 自定义
2ProviderConfig 15 字段完整字段列表
3DeepSeek 为默认提供商deepseek-chat 模型
4Anthropic 流式格式7 种事件类型
5Ollama 集成本地 localhost:11434
6TUI 配置向导3 步交互流程
7WebUI 提供商管理器ProviderCard + ProviderForm 组件
8推理努力级别high/max/off + 仅 DeepSeek V4
9Token/思考结构体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

基于 VitePress 构建 · AtomCode v4.25.3 逆向工程分析文档