主题
服务商凭据
为模型服务商、Tavily 网络搜索与 LangSmith 追踪添加和管理 API 密钥
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 不是机密,可能会被记录到日志;与之配对的密钥则永远不会记录。
NOTE
密钥的作用范围限于本机上的你的用户账户 —— 除发送给所配置服务商的 API 之外,Deep Agents Code 从不把它们传输到任何地方。
使用 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>(别名 rm、delete) | 删除已存储的凭据 |
dcode auth path | 打印凭据存储文件(auth.json)的解析路径 |
set 默认从 stdin 读取密钥,因此它绝不会出现在 shell 历史或 argv 中。可通过管道传入密钥,或使用 --from-env VAR 从进程环境变量复制:
bash
# Pipe the key in (stdin)
echo "$ANTHROPIC_API_KEY" | dcode auth set anthropic
# Copy it from an existing environment variable
dcode auth set openai --from-env OPENAI_API_KEYNOTE
set 拒绝在交互式终端中运行,以免误调用时挂起等待输入 —— 请通过 stdin 传入密钥,或使用 --from-env VAR。已存储的密钥与 /auth 走同一个存储,因此相关警告(例如关于 auth.json 文件权限的警告)会打印到 stderr。
移除已存储的密钥或打印存储位置:
bash
dcode auth remove anthropic
dcode auth pathNOTE
dcode auth set 只管理 API 密钥。openai_codex 服务商使用 ChatGPT 浏览器登录而非 API 密钥,因此请改为运行 /auth 并选择 openai_codex 来登录。不过 dcode auth remove openai_codex 确实会让你退出登录。
环境变量(CI 与无界面场景)
对于非交互式运行、CI/CD 流水线,或任何无法使用 TUI 的环境,请在 shell 中导出该服务商的环境变量:
bash
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
# Prefix with DEEPAGENTS_CODE_ to scope a key to Deep Agents Code only,
# leaving a shared key used by other CI steps untouched
export DEEPAGENTS_CODE_OPENAI_API_KEY="sk-..."若想把密钥保存在文件中,可在 .env 文件中定义它们。
密钥解析顺序
当某个服务商的密钥在多处设置时,Deep Agents Code 使用其中第一个已设置的值:
- 带
DEEPAGENTS_CODE_前缀的环境变量 —— 例如以内联 shell 导出方式设置的DEEPAGENTS_CODE_OPENAI_API_KEY。DEEPAGENTS_CODE_前缀表示明确「在 Deep Agents Code 中使用此密钥」的覆盖。 - 应用内存储的密钥 —— 在
/auth凭据管理器中输入。 - 服务商的普通环境变量 —— 例如来自 shell 或
.env文件的OPENAI_API_KEY。
对于同一个服务商,应用内存储的密钥优先于普通环境变量密钥,而带 DEEPAGENTS_CODE_ 前缀的密钥又优先于应用内存储的密钥。该前缀的用途是仅对单次运行覆盖已存储的密钥,而无需清除它:
bash
# With a key already stored via /auth, a plain env var does not override it.
# dcode still uses the app-stored key for this run:
OPENAI_API_KEY=sk-xxxx dcode -n "..."
# The DEEPAGENTS_CODE_ prefix does override it, for this run only:
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 环境变量。
从 tavily.com 获取密钥(以 tvly- 开头;免费额度足以满足大多数 Deep Agents Code 使用场景),然后把它存入凭据管理器:
txt
/auth从列表中选择 Tavily 并粘贴密钥。你也可以在「Web search disabled」提示中通过选择 Enter API key 直接进入该提示。