Skip to main content
Deep Agents CLI 是一个开源的终端编码代理,基于 Deep Agents SDK 构建。 它保留持久记忆,跨会话维护上下文,学习项目约定,使用可定制的技能,并在批准控制下执行代码。 Deep Agents CLI Deep Agents CLI 具有以下内置功能:
  • 文件操作 - 使用工具读取、写入和编辑项目中的文件,使代理能够管理和修改代码与文档。
  • Shell 命令执行 - 执行 shell 命令以运行测试、构建项目、管理依赖项以及与版本控制系统交互。
  • 网页搜索 - 搜索网页以获取最新信息和文档(需要 Tavily API 密钥)。
  • HTTP 请求 - 向 API 和外部服务发出 HTTP 请求,用于数据获取和集成任务。
  • 任务规划与跟踪 - 将复杂任务分解为离散步骤,并通过内置的待办事项系统跟踪进度。
  • 记忆存储与检索 - 跨会话存储和检索信息,使代理能够记住项目约定和学习到的模式。
  • 上下文压缩与卸载 - 总结较旧的对话消息并将原始消息卸载到后端存储,在长会话期间释放上下文窗口空间。
  • 人机协同 - 要求对敏感工具操作进行人工批准。
  • 技能 - 使用存储在技能目录中的自定义专业知识和指令扩展代理能力。
  • MCP 工具 - 通过自动发现或显式配置文件从模型上下文协议服务器加载外部工具。
  • 追踪 - 在 LangSmith 中追踪代理操作、工具调用和决策,以实现可观测性和调试。
观看演示视频了解 Deep Agents CLI 的工作原理。

快速开始

设置模型凭证

将您提供商的 API 密钥导出为环境变量。例如:
CLI 可与任何支持工具调用的 LLM 配合使用 — OpenAI、Anthropic、Google、Ollama 等等。有关设置详细信息,请参阅提供商

安装并运行

CLI 默认支持 OpenAI、Anthropic 和 Google。其他提供商(Ollama、Groq、xAI 等)作为可选附加组件安装 — 有关详细信息,请参阅提供商

给代理分配任务

代理会在修改文件前,提出带有差异的更改以供您批准。

启用追踪(可选)

LangSmith 中查看代理操作、工具调用和决策:

提供商

CLI 刻意保持轻量 — 它默认支持 OpenAI、Anthropic 和 Google。每个额外的模型提供商都是一个独立的依赖项,因此您只需引入所需的内容。
要使用特定提供商,请在启动时传递 --model 或在会话中使用 /model 切换。
有关支持提供商的完整列表,请参阅模型提供商

交互模式

像在聊天界面中一样自然地输入。 代理将使用其内置工具、技能和记忆来帮助您完成任务。
在 CLI 会话中使用以下命令:
  • /model - 切换模型或打开交互式模型选择器。有关详细信息,请参阅切换模型
  • /remember [context] - 回顾对话并更新记忆和技能。可选择传递额外上下文
  • /offload - 通过将消息卸载到后端存储并在对话中保留总结占位符来释放上下文窗口空间。如果需要,代理可以从卸载的文件中检索完整历史记录。
  • /tokens - 显示当前上下文窗口令牌使用情况明细
  • /clear - 清除对话历史并开始新线程
  • /threads - 浏览和恢复之前的对话线程
  • /reload - 刷新运行时配置(API 密钥、.env 更改、shell 允许列表),无需重启。会话状态得以保留
  • /trace - 在 LangSmith 中打开当前线程(需要 LANGSMITH_API_KEY
  • /editor - 在外部编辑器($VISUAL / $EDITOR)中打开当前提示。请参阅外部编辑器
  • /changelog - 在浏览器中打开 CLI 变更日志
  • /docs - 在浏览器中打开文档
  • /feedback - 打开 GitHub 问题页面以提交错误报告或功能请求
  • /version - 显示已安装的 deepagents-cli 和 SDK 版本
  • /help - 显示帮助和可用命令
  • /quit - 退出 CLI
输入 ! 进入 shell 模式,然后输入您的命令。
通用

非交互模式和管道

使用 -n 运行单个任务,无需启动交互式 UI:
您也可以通过 stdin 管道输入。当输入被管道化时,CLI 会自动以非交互方式运行:
当管道输入与 -n-m 结合时,管道内容会被前置到标志的值中。
最大管道输入大小为 10 MiB。
在非交互模式下,默认禁用 shell 执行。使用 -S/--shell-allow-list 启用特定命令(例如 -S "pytest,git,make"),使用 recommended 以获得安全默认值,或使用 all 以允许任何命令。
使用 -q 获得适合管道传输到其他命令的干净输出,使用 --no-stream 在写入 stdout 之前缓冲完整响应(而不是流式传输):
在非交互模式下,代理被指示做出合理假设并自主进行,而不是提出澄清问题。它也更倾向于非交互式命令变体(例如 npm init -yapt-get install -y)。
-S all / --shell-allow-list all 允许代理在没有人工确认的情况下执行任意 shell 命令。请谨慎使用。

切换模型

您可以在会话期间使用 /model 命令切换模型,而无需重启 CLI,或者在启动时使用 --model 标志:
运行不带参数的 /model 以打开交互式模型选择器,该选择器显示按提供商分组的可用模型。 有关切换模型、设置默认模型和配置自定义提供商的完整详细信息,请参阅模型提供商。有关 config.toml 参考和生命周期钩子,请参阅配置
选择器会显示高亮模型的详细信息页脚,包括上下文窗口大小、输入模态(文本、图像、音频、PDF、视频)和功能(推理、工具调用、结构化输出)。被 --profile-overrideconfig.toml 覆盖的值会以黄色 * 前缀标记。
在会话中途切换时,使用 --model-params 传递额外的模型构造函数参数:
这些是仅限会话的覆盖,具有最高优先级,会覆盖配置文件 params 中的值。--model-params 不能与 --default 结合使用。

配置

CLI 将所有配置存储在 ~/.deepagents/ 下。在该目录中,每个代理都有自己的子目录(默认:agent):
有关完整参考 — 包括 config.toml 模式、提供商参数、配置文件覆盖和钩子配置 — 请参阅配置

教您的代理项目约定

当您使用代理时,它会自动将信息存储在 ~/.deepagents/<agent_name>/memories/ 中,作为使用记忆优先协议的 markdown 文件:
  1. 研究:在开始任务之前搜索记忆以获取相关上下文
  2. 响应:在执行过程中不确定时检查记忆
  3. 学习:自动保存新信息以供将来会话使用
代理按主题组织其记忆,并使用描述性文件名:
当您教代理约定时:
它会记住以备将来会话使用:

自定义您的深度代理

有两种主要方法可以自定义任何代理:
  • 记忆:全局和项目特定的 AGENTS.md 文件,在会话开始时完整加载。 使用记忆来存储通用编码风格和偏好。
  • 技能:全局和项目特定的上下文、约定、指南或指令。 使用技能来存储仅在执行特定任务时才需要的上下文。

提供项目或用户上下文

AGENTS.md 文件提供持久记忆,在会话开始时始终加载。
  • 全局~/.deepagents/<agent_name>/AGENTS.md — 每个会话都加载。
  • 项目:任何 git 项目根目录中的 .deepagents/AGENTS.md — 当 CLI 从该项目内运行时加载。
这两个文件都会在启动时附加到系统提示中。使用 /remember 明确提示代理从当前对话更新其记忆和技能。
当回答项目特定问题或当您引用过去的工作或模式时,代理也可能会读取其记忆文件。当您提供关于代理应如何行为、对其工作的反馈或要记住某些内容的指令时,代理将更新 AGENTS.md。 如果它从您的交互中识别出模式或偏好,它也会更新其记忆。要在额外的记忆文件中添加更多结构化的项目知识,请将它们添加到 .deepagents/ 中,并在 AGENTS.md 文件中引用它们。 您必须在 AGENTS.md 文件中引用额外文件,以便代理知道它们的存在。 额外文件不会在启动时读取,但代理可以在需要时引用和更新它们。
全局 AGENTS.md~/.deepagents/agent/AGENTS.md
  • 您的个性、风格和通用编码偏好
  • 一般语气和沟通风格
  • 通用编码偏好(格式化、类型提示等)
  • 适用于所有地方的工具使用模式
  • 每个项目都不会改变的工作流程和方法论
项目 AGENTS.md(项目根目录中的 .deepagents/AGENTS.md
  • 项目特定的上下文和约定
  • 项目架构和设计模式
  • 特定于此代码库的编码约定
  • 测试策略和部署流程
  • 团队指南和项目结构

使用技能

技能是可重用的代理能力,提供专门的工作流程和领域知识。 您可以使用技能为您的深度代理提供新的能力和专业知识。 深度代理技能遵循代理技能标准。 一旦您添加了技能,您的深度代理将自动使用它们,并在您使用代理并为其提供额外信息时更新它们。 使用 /remember 明确提示代理从当前对话更新技能和记忆。
  1. 创建一个技能:
    这将生成:
  2. 打开生成的 SKILL.md 并编辑文件以包含您的指令。
  3. 可选择将其他脚本或资源添加到 test-skill 文件夹。有关更多信息,请参阅示例
您也可以直接将现有技能复制到代理的文件夹中:
您可以使用 Vercel 的 Skills CLI 等工具在您的环境中安装社区代理技能,并使它们可用于您的深度代理:
全局安装(-g)将技能符号链接到 ~/.deepagents/agent/skills/ — 默认代理的用户级技能目录。项目级安装(省略 -g)将技能放在相对于当前目录的 .deepagents/skills/ 中,使它们可用于在该项目中运行的任何代理,无论代理名称如何。
全局安装仅针对默认的 agent 目录。如果您使用自定义命名的代理,请使用项目级安装或手动将技能符号链接到 ~/.deepagents/{your-agent}/skills/
在启动时,CLI 会从 Deep Agents 和共享别名目录中发现技能:
当存在重复的技能名称时,优先级较低的目录会覆盖优先级较高的目录(请参阅应用数据)。对于项目特定的技能,项目的根文件夹必须包含一个 .git 文件夹。 当您从项目文件夹内的任何位置启动 CLI 时,CLI 将通过检查包含的 .git 文件夹来找到项目的根文件夹。对于每个技能,CLI 会从 SKILL.md 文件的前置元数据中读取名称和描述。 当您使用 CLI 时,如果任务与技能描述匹配,代理将读取技能文件并遵循其指令。

自定义子代理

将自定义子代理定义为 markdown 文件,以便 CLI 代理可以将专门任务委托给它们。每个子代理都位于自己的文件夹中,并包含一个 AGENTS.md 文件:
项目子代理会覆盖同名的用户子代理(请参阅优先级规则)。 前置元数据需要 namedescription(与 SubAgent 字典规范相同)。markdown 正文成为子代理的 system_prompt。除了基本规范外,AGENTS.md 文件还支持可选的 model 前置元数据字段,该字段会为此子代理覆盖主代理的模型。使用 provider:model-name 格式(例如 anthropic:claude-haiku-4-5-20251001openai:gpt-4o)。省略则继承主代理的模型。
其他 SubAgent 字段(toolsmiddlewareinterrupt_onskills)不能通过 AGENTS.md 前置元数据进行配置 — 以这种方式定义的自定义子代理会继承主代理的工具。如需完全控制,请直接使用 SDK。
子代理 AGENTS.md 文件使用 YAML 前置元数据,后跟 markdown 正文:
为简单的委托任务使用更便宜、更快的模型,同时让主代理使用功能更强大的模型:
这将覆盖内置的通用子代理,将所有委托任务路由到更便宜的模型。有关更多信息,请参阅覆盖通用子代理

使用 MCP 工具

使用来自外部 MCP(模型上下文协议)服务器的工具扩展 CLI。将 .mcp.json 放在项目根目录,CLI 会自动发现它。有关配置格式、自动发现和故障排除,请参阅 MCP 工具指南

使用远程沙箱

CLI 使用沙箱即工具模式:CLI 进程(LLM 循环、记忆、工具分发)在您的机器上运行,但代理工具调用(read_filewrite_fileexecute 等)目标是远程沙箱,而不是您的本地文件系统。要将文件放入沙箱,请使用设置脚本或提供商的文件传输 API(请参阅处理文件)。 有关沙箱架构、集成模式和安全最佳实践的更深入了解,请参阅沙箱
LangSmith 沙箱支持默认包含在 CLI 中。AgentCore、Modal、Daytona 和 Runloop 需要安装附加组件。

安装提供商依赖项

安装 deepagents-cli 时默认包含。无需额外安装。

设置提供商凭证

使用沙箱运行 CLI

示例:
使用 --sandbox-setup 在沙箱创建后在沙箱内运行 shell 脚本。这对于克隆仓库、安装依赖项和配置环境变量非常有用。
setup.sh
CLI 使用您的本地环境变量扩展设置脚本中的 ${VAR} 引用。将秘密存储在本地 .env 文件中,以便设置脚本访问。
沙箱隔离代码执行,但代理仍然容易受到不受信任输入的提示注入攻击。请使用人机协同批准、短期秘密和仅受信任的设置脚本。有关详细信息,请参阅安全考虑

使用 LangSmith 追踪

启用 LangSmith 追踪以在 LangSmith 项目中查看代理操作:
  1. 启用 LangSmith 追踪:
  2. 为深度代理操作(如工具调用和代理决策)配置代理追踪:
  3. 如果您正在使用 Deep Agents 构建 LangChain 应用,并希望将代理追踪与应用追踪分开,也请配置 LANGSMITH_PROJECT
配置后,CLI 会显示:
所有管理子命令均支持 --json 以输出机器可读格式。详见命令行选项