Skip to main content

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,而 flashModelmultimodalModeldefaultAgentModel 继续使用默认的 codely-oauth + chat,互不影响。

模型列表会按槽位的 effective auth 选择:切换某个槽位的 auth 后,/model config 会从对应 provider 重新拉取可用模型列表(并保留 Custom model... 选项)。不同 auth/baseUrl 不会复用彼此的模型列表缓存。

默认 Wire API 行为

如果没有配置任何 wireApi

  • Anthropic 认证默认使用 messages

  • 其他认证默认使用 chat

如果只配置 samplingParamschat_template_kwargsextra_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 的修改通常需要重启后生效。