~/.deepagents/config.toml 让您可以自定义模型提供者、设置默认值,并向模型构造函数传递额外参数。有关环境变量和检查命令,请参阅配置。本页涵盖内容:

默认和最近使用的模型

[models].default 始终优先于 [models].recent。/model 命令仅写入 [models].recent,因此您配置的默认值不会被会话中途的切换覆盖。要移除默认值,请使用 /model --default --clear 或从配置文件中删除 default 键。

默认和最近使用的代理

[agents].default 始终优先于 [agents].recent。在 /agents 选择器中按 Enter 选择代理会写入 recent;在高亮行上按 Ctrl+S 会将其固定为 default。在同一行再次按 Ctrl+S 会清除默认设置。 显式的 -a/--agent 标志总是覆盖两者,而 -r/--resume 会绕过两者,从而恢复该对话线程的原始代理。有关相关标志,请参阅命令参考。

隐藏 LangSmith 追踪密钥

启用 LangSmith 追踪后,Deep Agents Code 默认会在不进行客户端密钥隐藏的情况下发送代理追踪的输入和输出。
如果不进行隐藏,密钥可能会作为代理追踪的一部分上传到 LangSmith。
要在上传前隐藏检测到的密钥:
~/.deepagents/config.toml
环境变量的优先级高于配置文件。启用隐藏功能时,如果无法配置隐藏,Deep Agents Code 会为该次运行禁用追踪。密钥隐藏不会隐藏一般性的个人身份信息 (PII)、追踪元数据或 shell 进程发出的追踪。要了解更多选项,请参阅从追踪中隐藏密钥。

提供者配置

每个提供者都是 [models.providers] 下的一个 TOML 表:
提供者具有以下配置选项:
string[]
可选
一个模型名称列表,用于在交互式 /model 切换器中显示为 <name> 所定义提供者的模型。对于已经附带模型配置文件的提供者,您在此处添加的任何名称都会出现在预置列表之外(这对于尚未添加到软件包中的新发布模型很有用)。对于任意提供者,此列表是切换器中模型的唯一来源。此处列出的模型会绕过任何已应用的基于配置文件的过滤标准,始终出现在切换器中。这使其成为推荐方式,用于显示因配置文件缺少 tool_calling 支持或尚不存在而被排除的模型。此键是可选的。您始终可以通过 /model 或 --model 直接传递任何模型名称,无论它是否出现在切换器中;提供者会在请求时验证名称。
string
可选
用于存放 API 密钥的环境变量的名称(例如 "OPENAI_API_KEY")。Deep Agents Code 在启动时从此环境变量读取凭据以验证访问权限,然后再创建模型。大多数聊天模型包会自动从默认环境变量读取。有关每个内置提供者检查哪个变量名称,请参阅提供者参考表。对于不在该表中的提供者,请将其变量名称设置到 api_key_env(参见任意提供者)。
string
可选
在认证 UI 中显示的可读提供者名称。对于配置键为机器优化(例如 my_gateway)但 UI 标签应包含空格或品牌大写的任意提供者,请使用此项。
string
可选
用户创建或管理 API 密钥的提供者页面 URL。/auth 模态框在 API 密钥输入框之前会链接到此页面。此值是 URL,不是凭据。
string
可选
覆盖提供者使用的基础 URL(如果支持)。请参考您提供者软件包的参考文档了解更多信息。要将内置提供者指向线协议兼容的端点,请参阅兼容 API;要通过 class_path 配置的提供者,请参阅任意提供者。
string
可选
用于存放此提供者基础 URL 的环境变量名称,与 api_key_env 类似。当端点来自环境而非固定值时(例如,不同机器或 CI 任务使用的网关 URL),请使用此项而非 base_url,以便无需编辑 config.toml 即可更改,并能参与端点解析和密钥/端点配对(参见端点、密钥和网关)。它还将这些功能扩展到内置集合之外的提供者;参见任意提供者。如果两者都设置,静态的 base_url 优先:
object
可选
转发给模型构造函数的额外关键字参数。扁平键(例如 temperature = 0)适用于此提供者的每个模型。基于模型名称的子表(例如 [params."gpt-5.5"])仅覆盖该模型的对应值;合并是浅层的(模型级值在冲突时优先)。请勿将凭据(例如 api_key)放在 params 中。请使用 api_key_env 指向一个环境变量。
object
可选
(高级)覆盖模型运行时配置文件中的字段(例如 max_input_tokens)。扁平键适用于此提供者的每个模型。基于模型名称的子表(例如 [profile."claude-sonnet-4-5"])仅覆盖该模型的对应值;合并是浅层的(模型级值在冲突时优先)。这些覆盖在模型创建后应用,因此它们会影响上下文限制显示、自动摘要以及任何读取配置文件的功能。有关示例和 --profile-override 标志,请参阅配置文件覆盖。
string
可选
用于任意模型提供者。格式为 module.path:ClassName 的完全限定 Python 类名。设置后,Deep Agents Code 会直接导入并实例化此类以用于提供者 <name>。该类必须是 BaseChatModel 的子类。
boolean
default:"true"
可选
此提供者是否出现在 /model 选择器中。设为 false 可隐藏从已安装软件包(例如您不想出现在模型切换器中的传递依赖项)自动发现的提供者。您仍然可以通过 /model provider:model 或 --model 直接使用已禁用的提供者。

模型构造函数参数

params 字段将额外参数转发给模型构造函数。要为单个模型设置不同值,请添加一个基于模型名称的子表,这样您就不必重复整个提供者配置:
使用此配置:
  • ollama:qwen3:4b 得到 {temperature: 0.5, num_ctx: 4000} — 模型级覆盖优先。
  • ollama:llama3 得到 {temperature: 0, num_ctx: 8192} — 无覆盖,仅使用提供者级参数。
合并是浅层的:模型子表中存在的任何键会替换提供者级参数中的相同键,而仅存在于提供者级的键则保留。
要在不编辑 config.toml 的情况下进行一次性调整,请在启动时或会话中途通过 /model 传递 JSON 对象 --model-params。CLI 标志的优先级高于配置文件。有关语法和提供者特定示例,请参阅提供者页面上的模型参数。

重试

使用顶层的 [retries] 部分配置瞬态模型提供者错误的重试次数。Deep Agents Code 会将这些值传递给接受重试次数构造函数关键字参数的提供者集成。如果省略此部分,则使用提供者 SDK 的默认值。
全局的 [retries].max_retries 值适用于所有支持的提供者。提供者特定的表,如 [retries.fireworks],会覆盖该提供者的全局值。值必须是大于或等于 0 的整数。 大多数支持的提供者接收重试次数参数为 max_retries。某些集成使用不同的构造函数关键字参数。对于任意提供者,或要覆盖已知提供者注册的关键字参数,请在提供者特定的重试表中设置 param:
param 必须是有效的 Python 标识符字符串,例如 "max_retries" 或 "retries"。Deep Agents Code 会忽略未设置 param 的未知提供者,因为传递错误的重试关键字参数可能会破坏模型创建。 [retries] 的优先级低于构造函数参数。完整的优先级顺序是:
  1. --max-retries N,应用于提供者解析后的重试关键字参数
  2. --model-params 中包含提供者的重试关键字参数,例如 '{"max_retries": N}' 或 '{"retries": N}'
  3. [models.providers.<provider>.params] 中包含提供者的重试关键字参数
  4. [retries.<provider>].max_retries
  5. [retries].max_retries
  6. 提供者 SDK 默认值

启动审批模式

使用顶层的 [startup].mode 键为交互式会话设置默认的审批模式:
接受的值为 manual(失败关闭的默认值)、auto(基于分类器;需要 DEEPAGENTS_CODE_EXPERIMENTAL=1)和 yolo(不受限制;需要一次性确认)。显式的 --yolo 或 -y/--auto-approve 标志会覆盖该会话的此值。

配置文件覆盖(高级)

覆盖模型运行时配置文件中的字段,以更改 Deep Agents Code 解释模型能力的方式。有关可覆盖字段的完整列表,请参见 ModelProfile。最常见的用例是降低 max_input_tokens 以更早触发自动摘要——对于测试或限制上下文使用很有用:
基于模型的子表的工作方式与 params 相同——模型级值在冲突时优先:
配置文件覆盖在模型创建后合并到其配置文件中。任何读取配置文件的功能——状态栏中的上下文限制显示、自动摘要阈值、能力检查——都会看到被覆盖的值。
要在运行时覆盖模型配置文件字段而无需编辑配置文件,请通过 --profile-override 传递一个 JSON 对象:
这些会覆盖在配置文件配置文件覆盖之上(CLI 优先)。优先级链为:模型默认值 < config.toml 配置文件 < CLI --profile-override。--profile-override 的值在会话中途 /model 热切换时持续存在——切换模型会将覆盖重新应用于新模型。

将模型添加到交互式切换器

某些提供者(例如 langchain-ollama)不捆绑模型配置文件数据(完整列表请参见提供者参考)。如果是这种情况,交互式 /model 切换器不会列出该提供者的模型。您可以通过在配置文件中为该提供者定义 models 列表来填补空白:
/model 切换器现在将包含一个 Ollama 部分,并列出这些模型。 这完全是可选的。您始终可以通过直接指定其完整名称来切换到任何模型:
当安装了 langchain-ollama 且守护进程可达时,Deep Agents Code 会自动发现本地拉取的模型并将其合并到切换器中——无需 models 列表。拉取新模型后运行 /reload 进行刷新,或设置 DEEPAGENTS_CODE_OLLAMA_DISCOVERY=0 以选择退出。

自定义基础 URL

某些提供者包接受 base_url 来覆盖默认端点。例如,langchain-ollama 通过底层的 ollama 客户端默认使用 http://localhost:11434。要将其指向其他位置,请在配置中设置 base_url:
有关兼容性信息和其他注意事项,请参考您的提供者参考文档。

兼容 API

对于公开与 OpenAI 或 Anthropic 线协议兼容的 API 的提供者,您可以通过将 base_url 指向提供者的端点来使用现有的 langchain-openai 或 langchain-anthropic 包:
提供者在官方规范之上添加的任何功能都不会被捕获。如果提供者提供专用的 LangChain 集成包,请优先使用该包。
OpenAI 提供者默认使用 Responses API,而大多数 OpenAI 兼容的网关并未实现此 API。如果您的提供者仅支持 Chat Completions API,调用可能会失败。请显式禁用 Responses API:

任意提供者

Deep Agents Code 可与任何作为 LangChain BaseChatModel 提供的、支持工具调用的 LLM 协同工作。内置提供者开箱即用;不太常见或内部模型则需要更多设置。将 class_path 指向其 BaseChatModel 子类,Deep Agents Code 将直接导入并实例化该类。
api_key_env 和 base_url 是可选的。display_name 和 api_key_url 用于自定义 /auth 显示的提供者名称和密钥获取链接;省略它们将回退到提供者配置键和提供者设置文档。要从环境变量而不是硬编码的 base_url 读取端点,请使用 base_url_env;然后它将以与内置提供者相同的方式进行解析和与密钥配对(参见端点、密钥和网关)。 class_path 提供者应自行在内部处理身份验证——当您的模型使用自定义身份验证(JWT 令牌、专有头、mTLS 等)而非标准 API 密钥时,这很有用:
使用此配置,通过 /model xyz:abc-xyz-1 或 --model xyz:abc-xyz-1 切换到该模型。
Deep Agents Code 要求工具调用支持。如果您的自定义模型支持工具调用但 Deep Agents Code 不知道,请在提供者配置文件中声明它:
虽然可选,但强烈建议将 max_input_tokens 设置为您的模型上下文窗口大小。没有它,Deep Agents Code 无法显示上下文的使用程度,并且自动摘要将回退到固定的触发值(大约 170,000 个标记),而不是您模型窗口的一部分。对于窗口较小的模型,在您达到模型硬限制之前可能不会运行摘要,因此一旦对话增长,请求就会开始失败。
由于 Deep Agents Code 在启动时导入 class_path 类,因此定义它的包必须可以从运行 dcode 的同一环境中导入。内置提供者作为安装附加项提供,但自定义或内部包不是。使用 --package 标志将其安装到 dcode 环境中:
在会话中,运行 /install my_package --package --force。两者都会将包与 dcode 一起安装。如果包缺失或无法导入,Deep Agents Code 将跳过该提供者,其模型不会出现在 /model 中。 当您切换到 my_custom:my-model-v1(通过 /model 或 --model)时,模型名称 (my-model-v1) 会作为 model 关键字参数传递:
class_path 会执行来自您配置文件的任意 Python 代码。这与 pyproject.toml 构建脚本的信任模型相同——您控制自己的机器。
您的提供者包可以选择性地在 <package>.data._profiles 中的 _PROFILES 字典中提供模型配置文件,以代替在 models 键下定义它们。有关更多信息,请参阅 LangChain 模型配置文件。

端点、密钥和网关

API 密钥及其发送的端点必须匹配:端点必须接受该密钥,否则请求很可能会失败。Deep Agents Code 会将密钥和端点一起解析,因此覆盖其中一个会更新另一个以进行匹配。例如,如果您用自己的密钥替换网关提供的密钥,Deep Agents Code 也会删除网关端点,因此您的密钥将直接发送到提供者,而不是发送到会拒绝它的网关。

base_url 如何解析

Deep Agents Code 按以下顺序解析提供者的端点(第一个匹配项优先):
  1. config.toml 中该提供者的 base_url。
  2. 带 DEEPAGENTS_CODE_ 前缀的端点变量。
  3. 环境中的纯端点变量(例如,OPENAI_BASE_URL)。
  4. 与 /auth 凭据一起保存的端点。 此步骤适用于没有端点变量的提供者——例如您添加的未声明 base_url_env 的提供者。步骤 2-3 没有可读取的变量,因此这里直接使用保存的端点。对于确实有端点变量的提供者,保存的端点已经在步骤 2 或 3 生效(它被写入该变量),因此此步骤没有改变。无论哪种方式,在 /auth 中输入的端点都会应用。
  5. 提供者 SDK 自身的默认端点,当以上所有条件都未设置时。
解析后的端点作为 base_url 构造函数参数传递给模型。
与 API 密钥一样,DEEPAGENTS_CODE_ 前缀将端点限定于 Deep Agents Code,而不会影响其他工具。对于任何其他提供者,使用 base_url_env 声明名称,端点将以相同方式解析和配对:
字面量 base_url 优先于 base_url_env,因此只设置您需要的一个:

覆盖保持配对一致

当您使用 /auth 存储密钥时,您输入的端点(如果留空,则为提供者的默认端点)会与密钥一起应用。存储密钥时留空基础 URL 也会清除您环境中已设置的任何端点(例如,您的 shell 导出的网关 OPENAI_BASE_URL),因此您的密钥将发送到提供者的默认端点,而不是该网关。
Scope both the key and the endpoint to Deep Agents Code

托管网关

在配置了模型网关(例如 LangSmith 网关)的机器上,网关通常会一起导出网关密钥和匹配的端点变量(OPENAI_BASE_URL、ANTHROPIC_BASE_URL 或 GOOGLE_GEMINI_BASE_URL)。Deep Agents Code 默认使用该配对,因此无需配置。 要改用您自己的密钥,请使用 /auth 存储它(对于提供者默认值,将基础 URL 留空,或显式设置),或设置带 DEEPAGENTS_CODE_ 前缀的密钥和端点。两者都会覆盖网关配对,而不会留下不匹配的端点。

代理运行时限制

LangGraph 图步骤预算是 dcode 代理图在单轮中可执行的最大节点调用次数。使用 [runtime] 部分配置此递归限制:
~/.deepagents/config.toml
默认值为 2000。有效值为从 25 到 100000(含)的整数。超出此范围的值或非整数值会记录警告并回退到默认值。 优先级(从高到低):
  1. --recursion-limit CLI 标志
  2. DEEPAGENTS_CODE_RECURSION_LIMIT 环境变量
  3. config.toml 中的 [runtime].recursion_limit
  4. 内置默认值(2000)
使用 dcode config get runtime.recursion_limit 查看有效值及其来源。
goal_rubric 递归限制是独立的,不受此设置影响。

另请参阅