参考

配置

SOBA 的配置文件、CLI 参数、环境变量和优先级规则。

SOBA 会从多个来源读取配置,优先级很清楚:CLI 参数 > 环境变量 > config.json > 默认值。本页说明主要选项,以及它们如何一起工作。


1. 配置文件

配置文件位于 ~/.soba/config.json。SOBA 首次运行时会自动创建,也可以手动创建。

{
  "baseUrl": "https://api.deepseek.com",
  "apiKey": "YOUR_API_KEY",
  "model": "deepseek/deepseek-v4-flash",
  "maxOutputTokens": 8192,
  "maxCompletionTokens": 0,
  "reasoning": { "mode": "provider_default" },
  "contextWindow": 65536,
  "temperature": 0.7,
  "maxAgentIterations": 0,
  "maxStalledIterations": 4,
  "maxRunMinutes": 0,
  "bashMaxTimeoutSeconds": 300,
  "sessionDir": "~/.soba/sessions",
  "lang": "zh",
  "theme": "graphite",
  "compaction": {
    "auto": true,
    "compactOnTurnComplete": true,
    "compactOnMilestone": true,
    "minTokensForAutoCompact": 32000,
    "minReclaimableTokens": 12000,
    "minSavingsRatio": 0.25,
    "keepRecentTokens": 20000,
    "safetyReserveTokens": 8192,
    "autoCompactThresholdRatio": 0.8,
    "timeoutMs": 15000
  },
  "registry": {
    "activeProvider": "deepseek",
    "activeModelId": "deepseek-v4-flash",
    "customProviders": []
  }
}

最小配置:

{
  "apiKey": "YOUR_API_KEY",
  "model": "deepseek/deepseek-v4-flash"
}

2. 参数列表

2.1. Provider 参数

参数类型默认值说明
baseUrlstring""OpenAI-compatible API 的 base URL。为空时从 active provider 推导
apiKeystring""API key
modelstring""完整模型 ID,例如 deepseek/deepseek-v4-flashopenrouter/anthropic/claude-sonnet-4.6

2.2. 模型响应参数

参数类型默认值说明
maxOutputTokensnumber8192每次模型响应的最大输出 token。默认值只是占位;可用时会从 active model definition 读取真实值
maxCompletionTokensnumber0transport 支持时的 output + reasoning token 上限;0 保留 provider 默认值
reasoningReasoningSelection{ "mode": "provider_default" }请求的 reasoning 策略;effective 值根据 active model capabilities 重新计算
contextWindownumber128000模型上下文窗口。优先使用 provider metadata;fallback 会在 UI 中标为 assumed
temperaturenumber0.7采样温度,范围 0 到 2

2.3. 运行安全参数

参数类型默认值说明
maxAgentIterationsnumber0单个任务内模型调用的紧急上限。0 表示无限制
maxStalledIterationsnumber4连续无进展多少次后认为循环卡住
maxRunMinutesnumber0单个任务最大分钟数。0 表示无限制
bashMaxTimeoutSecondsnumber300单次 bash tool 调用的最大 timeout

2.4. 会话

参数类型默认值说明
sessionDirstring~/.soba/sessionsJSONL 会话文件目录

2.5. 界面

参数类型默认值说明
lang"en" | "ru" | "zh""en"默认界面语言
themeTuiThemeName"graphite"TUI 主题:graphitevscodegithubaurorasynthwavepaperforesthighContrastclayoperatorink

3. 环境变量

环境变量会覆盖 config.json

变量对应配置说明
SOBA_BASE_URLbaseUrlAPI base URL
SOBA_API_KEYapiKeyAPI key
SOBA_MODELmodel模型 ID
SOBA_MAX_OUTPUT_TOKENSmaxOutputTokens输出 token 上限
SOBA_MAX_TOKENSmaxOutputTokensSOBA_MAX_OUTPUT_TOKENS 的 deprecated alias
SOBA_MAX_COMPLETION_TOKENSmaxCompletionTokensreasoning token 上限
SOBA_REASONING_EFFORTreasoningdefaultnoneminimallowmediumhighxhighmax
SOBA_REASONING_BUDGETreasoning正整数 reasoning budget
SOBA_REASONING_ENABLEDreasoningtoggle 模型使用 true/1false/0
SOBA_CONTEXT_WINDOWcontextWindow上下文窗口大小
SOBA_MAX_AGENT_ITERATIONSmaxAgentIterations迭代上限
SOBA_MAX_STALLED_ITERATIONSmaxStalledIterationsstall recovery 前的无进展迭代次数
SOBA_MAX_RUN_MINUTESmaxRunMinutes任务最大分钟数
SOBA_BASH_MAX_TIMEOUT_SECONDSbashMaxTimeoutSeconds单次 bash tool 调用最大 timeout
SOBA_LANGlang界面语言
SOBA_THEMEthemeTUI 主题
SOBA_AUTO_COMPACTcompaction.autofalse0 会关闭 auto-compaction
SOBA_SOUND_ENABLEDsound.enabled开启/关闭声音通知
SOBA_SOUND_VOLUMEsound.volume音量 0.0 到 1.0
SOBA_SOUND_REPEATsound.repeatModerepeat/true/1 表示重复,once/false/0 表示一次
SOBA_CONFIG_PATHconfig file path使用非默认配置文件
NO_COLORoutput colors关闭 ANSI 颜色,效果同 --no-color
DEEPSEEK_API_KEYDeepSeek provider keyDeepSeek API key
MOONSHOT_API_KEYKimi provider keyMoonshot Kimi API key
DASHSCOPE_API_KEYAlibaba provider keyAlibaba Qwen API key
OPENROUTER_API_KEYOpenRouter provider keyOpenRouter API key
OPENAI_API_KEYOpenAI provider key官方 OpenAI API key

4. CLI 参数

CLI 参数拥有最高优先级。

4.1. 启动模式

参数短参数说明
--interactive-i启动交互式 TUI
--continue-c继续最近的会话
--resume-r通过交互式选择器恢复会话
--session <id>-s按 ID 继续指定会话

4.2. Provider 与模型

参数短参数说明
--model <id>-m覆盖模型 ID
--api-key <key>-k覆盖 API key
--base-url <url>覆盖 API base URL

4.3. 限制

参数说明
--max-output-tokens <n>输出 token 上限
--max-tokens <n>--max-output-tokens 的 deprecated alias
--max-completion-tokens <n>reasoning/thinking token 上限
--reasoning-effort <level>请求 defaultnoneminimallowmediumhighxhighmax
--reasoning-budget <n>设置正整数 reasoning budget
--reasoning-enabled为 toggle 模型启用 reasoning
--no-reasoning模型允许时关闭 reasoning
--context-window <n>覆盖模型上下文窗口
--budget <n>设置任务总 token 预算
--max-agent-iterations <n>紧急迭代上限
--max-stalled-iterations <n>stall recovery 前的无进展迭代次数
--max-run-minutes <n>任务最大分钟数
--bash-max-timeout-seconds <n>单次 bash tool 调用最大 timeout

4.4. 控制与调试

参数说明
--no-session交互模式但不保存会话
--no-color关闭颜色
--no-stream关闭 streaming
--stream显式开启 streaming
--debug将 loop decisions 写入 JSONL 会话文件
--no-auto-compact关闭 proactive compaction,等同于 compaction.auto: false
--lang <locale>覆盖界面语言:enruzh
--theme <name>覆盖 TUI 主题

4.5. 信息

参数短参数说明
--help-h显示帮助
--version-v显示版本

5. Provider 配置

SOBA v0.6.x 使用 provider registry。更多细节见 Provider 与模型

内置 providers:

ID名称Base URL
deepseekDeepSeekhttps://api.deepseek.com
kimiMoonshot Kimi (K2 for code)https://api.moonshot.cn/v1
alibabaAlibaba Qwen (Singapore)https://dashscope-intl.aliyuncs.com/compatible-mode/v1
openrouterOpenRouterhttps://openrouter.ai/api/v1
openai-officialOpenAI Responses APIhttps://api.openai.com/v1

每个 provider 的模型会通过 GET /models 动态发现,并缓存在当前进程内。TUI 中用 F2/model 打开模型选择器时,会刷新内置 providers。

Discovery 也会读取 context/output limits 与 reasoning capabilities。限额优先级为:用户显式设置 → runtime → active route → model metadata → 精确内置 profile → 保守 fallback。SOBA 不会从模型名称猜测 capabilities;assumed 值会显示 ~,选择时也会警告。

添加自定义 provider:

soba provider add my-llm \
  --base-url https://api.myllm.com/v1 \
  --api-key-env MY_LLM_KEY \
  --model my-code-model="My Code Model",128000,8192

自定义 providers 保存在 registry.customProviders 中。

模型特定的 wire-format 兼容性应在完整的 provider JSON 中声明,并通过 soba provider add <id> --from-file <path> 加载。例如,"compatibility": ["single_system_message"] 会让 SOBA 为拒绝多条 system messages 的 chat template 只发送一条位于开头的 system message。完整 schema 和支持的 features 请参阅模型兼容性元数据


6. Compaction 配置

Compaction 通过 compaction 配置段控制。

参数默认值说明
autotrue开启软 deferred preflight compaction
compactOnTurnCompletetrueturn 完成后标记 deferred preflight compaction
compactOnMilestonetruemilestone checkpoint 时标记 pending compaction
minTokensForAutoCompact32000考虑 auto-compaction 的最低 effective tokens
minReclaimableTokens12000值得回收的最低 token 数
minSavingsRatio0.25最低节省比例,默认 25%
keepRecentTokens20000compaction 后保留的最近 token 数
safetyReserveTokens8192从 context window 中扣除的安全保留量
autoCompactThresholdRatio0.8相对于请求 hard limit 的软阈值
timeoutMs15000模型摘要超时后切换到 deterministic fallback
backgroundTimeoutMstimeoutMs 的 deprecated alias

Hard limit:

hardLimit = contextWindow - maxOutputTokens - safetyReserveTokens

当 effective tokens 超过 hardLimit 时,SOBA 会执行 blocking compaction。这个行为不能通过 auto: false 关闭。完整生命周期与阈值说明请参阅 Compaction 与 Context Capsules


7. 优先级

CLI 参数
    ↓ 覆盖
环境变量
    ↓ 覆盖
config.json
    ↓ 覆盖
默认值

例如:config.json 中是 "theme": "graphite",环境变量是 SOBA_THEME=forest,同时传入 --theme paper,最终会使用 paper

特殊规则:

  • Reasoning 优先级: request/session override → CLI → env → config → provider default。/reasoningF4 无需重启即可影响下一次 model request。
  • Requested 与 effective reasoning 分开保存;不支持的模式会明确 fallback 到 provider default,不会静默 clamp。
  • maxOutputTokenscontextWindow 会从 active model 和 provider/runtime/route metadata 获取。CLI 与显式 model limits 可以覆盖 discovery。
  • compaction.auto 可以通过 SOBA_AUTO_COMPACT=false--no-auto-compact 覆盖。
  • 关闭 auto-compaction 只会关闭软触发器;hard limit 和 provider overflow 恢复仍然强制执行。
  • turn 和 milestone 只记录 pending intent;SOBA 会在下一次 model call 前显示进度并等待 compaction 完成。
  • 数字 0maxAgentIterationsmaxRunMinutes 表示无限制;对 maxCompletionTokens 表示不显式限制。

8. 校验

SOBA 启动时会校验配置:

  • API key 必须存在,除非所选 provider 不需要 key。
  • model 必须存在
  • Compaction invariants 必须满足:
    • contextWindow > 0
    • maxOutputTokens > 0
    • safetyReserveTokens >= 0
    • maxOutputTokens + safetyReserveTokens < contextWindow
    • keepRecentTokens < contextWindow - maxOutputTokens - safetyReserveTokens

如果 compaction invariants 不满足,SOBA 会带着 warning 禁用 compaction:

⚠️  Compaction disabled: config validation failed:
    keepRecentTokens (50000) must be < hard limit (47360)

本頁目錄