SOBAAgent Docs

Provider 与模型

内置 DeepSeek、Moonshot Kimi、Alibaba Qwen、OpenRouter providers,动态模型发现和自定义 providers。

SOBA 可以使用任何 OpenAI-compatible API。本页说明如何使用内置 providers、切换模型、添加自定义 providers,以及排查常见连接问题。

v0.4.0 的重要变化: 模型不再保存在硬编码列表里。SOBA 会通过 GET /v1/models 动态发现模型,所以 provider 新增模型后,通常不需要等待 SOBA 发版。


1. 架构

SOBA 使用 provider registry。它包含:

  • 内置 providers:4 个预置 base URL 的 provider
  • 自定义 providers:用户添加的任意 OpenAI-compatible API
  • 动态模型发现:从 provider API 拉取模型列表,并缓存在内存中
┌──────────────────────────────────────────┐
│              Registry                    │
│                                          │
│  ┌────────────────┐  ┌────────────────┐ │
│  │ Built-in       │  │ Custom         │ │
│  │ Providers (4)  │  │ Providers (∞)  │ │
│  └────────────────┘  └────────────────┘ │
│                                          │
│  ┌────────────────────────────────────┐  │
│  │ Dynamic Model Discovery             │  │
│  │ GET /v1/models → in-memory cache    │  │
│  └────────────────────────────────────┘  │
└──────────────────────────────────────────┘

2. 内置 providers

SOBA v0.4.0 提供 4 个内置 providers。它们都使用 OpenAI-compatible adapter。

ID名称Base URLAPI key env说明
deepseekDeepSeekhttps://api.deepseek.comDEEPSEEK_API_KEYV3、R1、Coder
kimiMoonshot Kimihttps://api.moonshot.cn/v1MOONSHOT_API_KEYKimi K2 很适合代码
alibabaAlibaba Qwenhttps://dashscope-intl.aliyuncs.com/compatible-mode/v1DASHSCOPE_API_KEYQwen3、Qwen-Coder,新加坡区域
openrouterOpenRouterhttps://openrouter.ai/api/v1OPENROUTER_API_KEY可路由 Claude、GPT、Gemini、Llama 等大量模型

2.1. 动态发现

启动时,SOBA 会对 active provider 调用 GET {baseUrl}/models。结果缓存在当前进程内。随后 SOBA 会选择一个合适的默认模型,并优先选择偏代码的模型。

缓存只存在于内存中。要刷新它,请重启 SOBA,或在 TUI 里用 Ctrl+M 打开模型选择器。


3. 选择模型

3.1. 查看可用模型

soba provider list

输出会按 provider 分组展示 providers 和模型。当前 active model 会带星号。

3.2. 选择模型

在 TUI 中可以用 Ctrl+M 切换模型。单次运行可以通过 CLI 或 env 传入模型:

# 单次 CLI 运行
soba --model deepseek-v4-flash "Check the project"

# 环境变量
export SOBA_MODEL="anthropic/claude-sonnet-4.6"

soba provider use <id> 会把 active provider 切到它的 default model。自定义 providers 可以用 --default-model 设置默认模型;未设置时使用第一个 --model

3.3. 实用模型选择

这不是永久排行榜,只是截至 2026 年 6 月 21 日的实用参考。跑大任务前建议先看 soba provider list:模型别名、价格和限制都变得很快。

任务推荐模型原因
快速、便宜的编码deepseek/deepseek-v4-flash适合日常改动的快速 DeepSeek V4 模型。旧的 deepseek-chat / deepseek-reasoner 现在主要是兼容别名
推理和复杂验证deepseek/deepseek-v4-pro更重的 DeepSeek V4 模型,适合需要仔细推理、验证和排查的任务
最高质量的 agentic codeopenrouter/openai/gpt-5.5当 tool-heavy agent loop 需要最高质量时使用:规划、修改、验证和谨慎的最终答复。直接使用 OpenAI API 时模型 id 是 gpt-5.5
复杂编码任务openrouter/anthropic/claude-sonnet-4.6适合大型重构、代码库导航和 agentic work
长周期 agent 任务openrouter/minimax/minimax-m3MiniMax M3 上下文很长,适合持续使用工具的任务;直接走 MiniMax API 时模型 id 是 MiniMax-M3
Kimi 编码kimi/kimi-k2.7-code当前的 Kimi 编码模型;需要速度时可以试 kimi-k2.7-code-highspeed
Qwen 编码openrouter/qwen/qwen3-coder适合作为 agentic coding、tool use 和大型仓库场景的备选
免费试用openrouter/freeOpenRouter 会选择可用的免费模型;具体 :free id 经常变化
本地工作custom provider → Ollamahttp://localhost:11434/v1

4. 自定义 providers

任何 OpenAI-compatible API 都可以添加成自定义 provider。

4.1. 添加 provider

# Ollama,本地且不需要 key
soba provider add ollama \
  --base-url http://localhost:11434/v1 \
  --model llama3.1="Llama 3.1",8192,2048

# 本地模型建议从较小限制开始:
# 8192 = contextWindow,2048 = maxOutput。
# 128000,8192 可能会明显压到笔记本内存。

# Groq
soba provider add groq \
  --base-url https://api.groq.com/openai/v1 \
  --api-key-env GROQ_API_KEY \
  --model llama-3.3-70b-versatile="Llama 3.3 70B",128000,8192

# Together AI
soba provider add together \
  --base-url https://api.together.xyz/v1 \
  --api-key-env TOGETHER_API_KEY \
  --model meta-llama/Llama-3.3-70B-Instruct-Turbo="Llama 3.3 70B",128000,8192

# 任意 self-hosted OpenAI-compatible API
soba provider add my-api \
  --base-url https://my-llm.company.com/v1 \
  --api-key-env MY_LLM_KEY \
  --model company-code-model="Company Code Model",128000,8192

4.2. soba provider add 参数

参数必填说明
<id>唯一 provider ID,只允许字母、数字和短横线
--base-url <url>OpenAI-compatible API base URL
--api-key-env <VAR>存放 API key 的环境变量名。省略时认为 provider 不需要 key
--name <name>展示名称
--model <spec>模型规格:id=name,contextWindow,maxOutput[,supportsStreaming[,supportsThinking]]。可重复
--default-model <id>默认模型。省略时使用第一个 --model
--adapter <openai|anthropic>Provider adapter。当前 runtime 路径主要面向 OpenAI-compatible API
--from-file <path>从 JSON 文件加载 provider 定义
--set-active添加后立即设为 active provider

4.3. 管理自定义 providers

# 查看 provider 定义
soba provider show ollama

# 设为 active provider
soba provider use ollama

# 删除自定义 provider
soba provider remove ollama

目前没有 update 命令。要修改 URL 或模型列表,请先删除自定义 provider,再重新添加。

4.4. 存储位置

自定义 providers 保存在 ~/.soba/config.jsonregistry.customProviders 中:

{
  "registry": {
    "activeProvider": "deepseek",
    "activeModelId": "deepseek-v4-flash",
    "customProviders": [
      {
        "id": "ollama",
        "name": "Ollama (Local)",
        "baseUrl": "http://localhost:11434/v1",
        "apiKeyEnv": "OLLAMA_API_KEY",
        "adapter": "openai"
      }
    ]
  }
}

5. CLI 管理

完整的 soba provider 命令:

# 帮助
soba provider help

# 列出 providers 和模型
soba provider list

# 选择 active provider 以及它的 default model
soba provider use deepseek

# 添加自定义 provider
soba provider add <id> --base-url <url> --model <spec> [--api-key-env <VAR>] [--name <name>]

# 删除自定义 provider
soba provider remove <id>

# 查看 provider 定义
soba provider show <id>

Provider 和模型管理目前主要通过 CLI 命令和 TUI 模型选择器完成。


6. 认证

6.1. API key 来源

优先级:

  1. 已保存的 provider keyregistry.providers.<providerId>.apiKey,通常由首次启动 wizard 为内置 providers 创建
  2. Provider-specific 环境变量DEEPSEEK_API_KEYMOONSHOT_API_KEYDASHSCOPE_API_KEYOPENROUTER_API_KEY
  3. Legacy flat configSOBA_API_KEYapiKey,作为 fallback 保留

对于 registry providers,更推荐 provider-specific env vars 或已保存的 provider key。

6.2. 自定义 providers

使用 --api-key-env MY_VAR 时,SOBA 会从 process.env.MY_VAR 读取 key。如果省略 --api-key-env,provider 会被认为不需要 key,这对本地 OpenAI-compatible server 很方便。


7. 诊断

7.1. 检查连接

# 直接检查 API
curl -H "Authorization: Bearer $DEEPSEEK_API_KEY" https://api.deepseek.com/models

# 通过 SOBA 检查
soba provider list

7.2. 常见问题

问题原因解决办法
401 UnauthorizedAPI key 错误检查 provider-specific env vars 或保存的 provider key
404 Not Foundbase URL 错误检查 --base-url 或配置
Model not foundprovider 不提供该模型检查 soba provider list,打开 Ctrl+M,或传入有效的 --model
Context overflow超过 context window降低 maxOutputTokens 或使用 compaction
429 Too Many Requestsprovider rate limit等待,或降低请求频率
Timeoutprovider 没有响应检查网络,或换一个 provider

7.3. 刷新模型缓存

模型缓存在当前进程内。如果 provider 新增了模型,请重启 SOBA,或打开 Ctrl+M 选择器重新 discovery。

7.4. 遇到问题时切换 provider

soba provider use openrouter
soba --model meta-llama/llama-3.3-70b-instruct "Continue the task"

本頁目錄