Skip to content

你使用的每个模型提供商,Deep Agents Code 都需要一个对应的 API 密钥。推荐通过 /auth 凭据管理器添加。对于非交互式运行,可以改用 shell 中的 dcode auth 管理相同的已存储密钥,或直接设置 环境变量

如果同一个密钥在多个位置都做了设置,哪个生效参见 密钥解析顺序

关于 .env 加载顺序与 DEEPAGENTS_CODE_ 前缀,参见 配置

使用 /auth(推荐)

在任意会话中打开凭据管理器:

txt
/auth

该管理器会列出已安装的 LLM 提供商及其是否设置了环境密钥、展示可以在应用内添加的已知提供商,并且包含诸如 Tavily 网络搜索之类的非模型服务。选择一个提供商即可添加或替换其密钥、安装尚未安装的提供商支持,或移除你已存储的提供商。你添加的密钥会跨会话保留。

提供商行标签

每一行都会显示提供商名称及其密钥来源:

| 标签 | 含义 |
|-------|---------|
| `[stored]` | 通过 `/auth` 保存在此管理器中的密钥 |
| `[env: VARNAME]` | 密钥来自环境变量 `VARNAME`(解析后的名称,例如 `DEEPAGENTS_CODE_OPENAI_API_KEY` 或 `OPENAI_API_KEY`) |
| `[missing]` | 未存储密钥且环境变量未设置;选择该行以粘贴一个 |

/auth 提示符还有一个可选的 base URL 字段。留空则使用提供商的默认端点,或设置一个自定义端点与该密钥配合使用。base URL 会与密钥一起保存。端点的解析方式(包括配合网关)参见 端点、密钥与网关

WARNING

已存储的 base URL 不是机密,可能会被记录;与之配对的密钥绝不会被记录。

INFO

密钥的作用域限定为你在这台机器上的用户账户——Deep Agents Code 绝不会把它们发送到除所配置提供商的 API 之外的任何地方。

使用 ChatGPT 登录

/auth 中选择 openai_codex 提供商会启动浏览器登录,而不是要求输入 API 密钥,让你可以用 ChatGPT 订阅来使用 OpenAI 模型。要重新认证或注销,再次选择 openai_codex 即可。完整流程参见 使用 ChatGPT 登录(Codex 模型)

/auth 管理 LLM 提供商凭据、Tavily 网络搜索密钥与 LangSmith 追踪。输入 Tavily 密钥即可在下次启动时启用网络搜索。输入 LangSmith 密钥即可启用追踪。密钥也可以从环境中读取。你可以~/.deepagents/.env 或你的 shell 中设置它们

从 shell 管理凭据(dcode auth

dcode auth 命令组是 /auth 管理器的可脚本化等价物:它管理相同的已存储凭据,但无需启动 TUI,因此可用于 dotfile 引导、CI/CD,以及在远程机器上通过 SSH 设置密钥。各子命令与弹窗界面的动词一一对应:

命令说明
dcode auth list(别名 ls列出每个已知提供商及其密钥的解析来源
dcode auth status <provider>打印单个提供商的解析来源
dcode auth set <provider>存储一个 API 密钥,默认从 stdin 读取
dcode auth remove <provider>(别名 rmdelete删除一个已存储的凭据
dcode auth path打印凭据存储(auth.json)的解析路径

set 默认从 stdin 读取密钥,因此它绝不会进入 shell 历史或 argv。通过管道传入密钥,或使用 --from-env VAR 从进程环境变量中复制:

bash
# 通过管道传入密钥(stdin)
echo "$ANTHROPIC_API_KEY" | dcode auth set anthropic

# 从现有的环境变量中复制
dcode auth set openai --from-env OPENAI_API_KEY

INFO

set 拒绝在交互式终端中运行,以免意外的调用挂起等待输入——请通过 stdin 管道传入密钥,或使用 --from-env VAR。存储的密钥走的是与 /auth 相同的存储,因此警告信息(例如关于 auth.json 文件权限的警告)会打印到 stderr。

删除已存储的密钥或打印存储位置:

bash
dcode auth remove anthropic
dcode auth path

INFO

dcode auth set 只管理 API 密钥。openai_codex 提供商使用的是 ChatGPT 浏览器登录而不是 API 密钥,因此要登录请运行 /auth 并选择 openai_codexdcode auth remove openai_codex 可以让你注销。

环境变量(CI 与无头环境)

对于非交互式运行、CI/CD 流水线或任何没有 TUI 的场景,请在 shell 中导出提供商的相应环境变量:

bash
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."

# 使用 DEEPAGENTS_CODE_ 前缀,把密钥限定为仅用于 Deep Agents Code,
# 不影响其他 CI 步骤使用的共享密钥
export DEEPAGENTS_CODE_OPENAI_API_KEY="sk-..."

如果想把密钥保存在文件中,请在 .env 文件中定义它们。

密钥解析顺序

当某个提供商的密钥在多个位置都做了设置时,Deep Agents Code 会使用以下按顺序第一个被设置的密钥:

  1. DEEPAGENTS_CODE_ 前缀的环境变量 —— 例如作为内联 shell 导出的 DEEPAGENTS_CODE_OPENAI_API_KEYDEEPAGENTS_CODE_ 前缀是显式的“在 Deep Agents Code 中使用此密钥”覆盖机制。
  2. 应用内存储的密钥 —— 在 /auth 凭据管理器中输入的密钥。
  3. 普通提供商环境变量 —— 例如来自你的 shell 或 .env 文件的 OPENAI_API_KEY

对于同一个提供商,应用内存储的密钥优先于普通环境变量的密钥;而带 DEEPAGENTS_CODE_ 前缀的密钥优先于应用内存储的密钥。该前缀是在不删除已存储密钥的情况下、为单次运行覆盖它的方式:

bash
# 已通过 /auth 存储密钥时,普通环境变量不会覆盖它。
# 本次运行 dcode 仍会使用应用内存储的密钥:
OPENAI_API_KEY=sk-xxxx dcode -n "..."

# DEEPAGENTS_CODE_ 前缀会覆盖它,但仅限本次运行:
DEEPAGENTS_CODE_OPENAI_API_KEY=sk-xxxx dcode -n "..."

这种分层是为了应对常见场景:你的机器已经出于其他目的导出了某个普通提供商变量——例如被其他工具、脚本或 CI 使用的共享 OPENAI_API_KEY——而你不希望 Deep Agents Code 复用它。应用内存储的密钥或带 DEEPAGENTS_CODE_ 前缀的变量为 Deep Agents Code 提供其自己的值,同时让不带前缀的变量为其他所有用途保持原样,因此两者永远不会混淆。

每个提供商的 API 密钥与其端点(base_url)作为一对从同一来源解析。参见 端点、密钥与网关

使用 Tavily 启用网络搜索

内置的 web_search 工具使用 Tavily。在你提供密钥之前,Deep Agents Code 会在启动时显示“Web search disabled(网络搜索已禁用)”通知。你可以把密钥存储在 /auth 凭据管理器中(Tavily 在其中作为非模型服务出现),或设置 TAVILY_API_KEY 环境变量。

使用 /auth(推荐)

    从 [tavily.com](https://tavily.com) 获取一个密钥(以 `tvly-` 开头;免费额度足以满足大多数 Deep Agents Code 的使用场景),然后存储在凭据管理器中:
txt
/auth
    从列表中选择 **Tavily** 并粘贴密钥。你也可以在“Web search disabled”通知中选择 **Enter API key**,直接到达该提示符。

设置环境变量

获取密钥

            在 [tavily.com](https://tavily.com) 注册并复制密钥(以 `tvly-` 开头)。免费额度足以满足大多数 Deep Agents Code 的使用场景。

将其添加到你的环境中

            把密钥添加到 `~/.deepagents/.env`,这样每个会话都会读取到它:
bash
TAVILY_API_KEY=tvly-...
            shell 导出优先于 `.env` 值(参见 [加载顺序与优先级](/oss/deepagents/code/configuration#loading-order-and-precedence))。如果只想把密钥限定在 Deep Agents Code 内而不影响读取 `TAVILY_API_KEY` 的其他工具,请使用 [`DEEPAGENTS_CODE_` 前缀](/oss/deepagents/code/configuration#deepagents_code_-prefix):`DEEPAGENTS_CODE_TAVILY_API_KEY=tvly-...`。

重新加载或重启

            在现有会话中运行 `/reload` 以重新读取 `.env` 文件。下次启动时,“Web search disabled”通知会消失,智能体即可调用 `web_search`。

另请参阅