Model Slot Overrides
本文说明如何配置不同模型使用场景的模型名、Auth(provider)、采样参数和 Wire API。
配置位置
可以在用户级或工作区级 settings 中配置:
-
用户级:
~/.codely-cli/settings.json -
工作区级:
.codely-cli/settings.json
命令行参数只影响当前进程,不会写回 settings 文件。其中 --auth / --wire-api 作用于全局/会话级默认;已在 settings 中为某个槽位单独配置了 authType / wireApi override 的槽位不受这些全局命令行参数影响。
支持的模型槽位
contentGenerator.overrides 只支持以下 key:
-
model:主对话模型 -
flashModel:快速模型,常用于内部 JSON、压缩、辅助判断等场景 -
multimodalModel:多媒体分析模型 -
defaultAgentModel:默认 Agent / Subagent 模型
模型名称本身仍配置在顶层字段:
{
"model": "main-model",
"flashModel": "flash-model",
"multimodalModel": "vl-model",
"defaultAgentModel": "agent-model"
}
全局 Content Generator 配置
全局配置会作为所有模型槽位的默认配置:
{
"contentGenerator": {
"wireApi": "chat",
"samplingParams": {
"temperature": 0.3,
"top_p": 0.9
},
"chat_template_kwargs": {
"enable_thinking": false
},
"extra_body": {
"custom_field": "value"
}
}
}
按槽位覆盖采样参数
槽位级配置写在 contentGenerator.overrides 下。槽位级字段会覆盖同名全局字段:
{
"model": "main-model",
"flashModel": "flash-model",
"multimodalModel": "vl-model",
"defaultAgentModel": "agent-model",
"contentGenerator": {
"samplingParams": {
"temperature": 0.3
},
"overrides": {
"model": {
"samplingParams": {
"temperature": 0.2,
"reasoning_effort": "medium"
}
},
"flashModel": {
"samplingParams": {
"temperature": 0.1,
"reasoning_effort": "low"
}
},
"multimodalModel": {
"samplingParams": {
"temperature": 0.2
}
},
"defaultAgentModel": {
"samplingParams": {
"temperature": 0.4,
"reasoning_effort": "high"
}
}
}
}
}
配置 Wire API
wireApi 支持以下值:
-
chat -
responses -
messages
全局配置示例:
{
"contentGenerator": {
"wireApi": "responses"
}
}
槽位级配置示例:
{
"contentGenerator": {
"wireApi": "responses",
"overrides": {
"flashModel": {
"wireApi": "responses"
}
}
}
}
注意:不同槽位可以使用不同的 wireApi。每个槽位会根据自己的 effective (authType, wireApi) 选择独立的 provider runtime;effective 配置相同的槽位会复用同一个 runtime。
配置 Auth(Provider)
authType 决定该槽位使用哪个 provider 的 credential、baseUrl 和可选模型列表来源。它和 wireApi 是两个独立的配置项,但会共同决定 provider runtime:
-
authType→ credential / baseUrl / 模型列表来源 -
wireApi→ 请求投影格式
支持的 authType 值:
-
openai -
anthropic -
codely-oauth -
qwen-oauth -
gemini-api-key -
vertex-ai
全局配置(作为所有槽位的默认 auth):
{
"contentGenerator": {
"authType": "codely-oauth"
}
}
槽位级覆盖只影响该槽位,其余槽位继承全局 auth:
{
"contentGenerator": {
"authType": "codely-oauth",
"wireApi": "chat",
"overrides": {
"model": {
"authType": "anthropic",
"wireApi": "messages"
}
}
}
}
上例中:主对话模型(model)使用 Anthropic + messages,而 flashModel、multimodalModel、defaultAgentModel 继续使用默认的 codely-oauth + chat,互不影响。
模型列表会按槽位的 effective auth 选择:切换某个槽位的 auth 后,/model config 会从对应 provider 重新拉取可用模型列表(并保留 Custom model... 选项)。不同 auth/baseUrl 不会复用彼此的模型列表缓存。
默认 Wire API 行为
如果没有配置任何 wireApi:
-
Anthropic 认证默认使用
messages -
其他认证默认使用
chat
如果只配置 samplingParams、chat_template_kwargs 或 extra_body,但没有配置任何 wireApi,仍保留上述默认行为。
配置 chat_template_kwargs
可以配置全局 chat_template_kwargs:
{
"contentGenerator": {
"chat_template_kwargs": {
"enable_thinking": false
}
}
}
也可以按槽位覆盖:
{
"contentGenerator": {
"overrides": {
"flashModel": {
"chat_template_kwargs": {
"enable_thinking": false
}
}
}
}
}
配置 extra_body
可以配置全局 extra_body:
{
"contentGenerator": {
"extra_body": {
"custom_field": "value"
}
}
}
也可以按槽位覆盖:
{
"contentGenerator": {
"extra_body": {
"shared_field": "global"
},
"overrides": {
"defaultAgentModel": {
"extra_body": {
"shared_field": "agent",
"agent_only_field": true
}
}
}
}
}
命令行临时覆盖
--wire-api 只影响当前运行,不会写入 settings 文件:
codely --wire-api responses
交互式配置
可以使用以下命令打开模型配置界面:
/model config
界面支持配置:
-
各槽位的模型名
-
wireApi -
temperature -
reasoning_effort
涉及 wireApi 的修改通常需要重启后生效。