Deep Agents CLI 是一个基于 Deep Agents SDK 构建的开源终端编程智能体。它具有持久化记忆,可跨会话维护上下文,学习项目规范,使用可定制的技能,并在人工审批控制下执行代码。文档索引
在以下地址获取完整的文档索引:https://docs.langchain.org.cn/llms.txt
在进一步探索之前,请使用此文件发现所有可用页面。

- 文件操作 - 通过允许智能体管理和修改代码及文档的工具来读取、写入和编辑文件。
- Shell 执行 - 执行命令以运行测试、构建项目、管理依赖项以及与版本控制系统交互。
- Web 搜索 - 在网上搜索最新信息和文档(需要 Tavily API 密钥)。
- HTTP 请求 - 向 API 和外部服务发出 HTTP 请求,以执行数据获取和集成任务。
- 任务规划与跟踪 - 将复杂任务分解为离散步骤并跟踪进度。
- 记忆存储与检索 - 跨会话存储和检索信息,使智能体能够记住项目规范和学到的模式。
- 上下文压缩与卸载 - 总结旧的对话消息并将原始消息卸载到存储中,从而在长时间会话中释放上下文窗口空间。
- 人机回环 (Human-in-the-loop) - 对敏感的工具操作需要人工批准。
- 技能 - 通过自定义专业知识和指令扩展智能体能力。
- MCP 工具 - 从 模型上下文协议 (Model Context Protocol) 服务器加载外部工具。
- 追踪 - 在 LangSmith 中追踪智能体操作,以进行可观测性和调试。
内置工具完整列表
内置工具完整列表
内置工具
智能体自带以下内置工具,无需配置即可使用| 工具 | 描述 | 人机回环 (Human-in-the-Loop) |
|---|---|---|
ls | 列出文件和目录 | - |
read_file | 读取文件内容;针对特定模型支持多模态内容 | - |
write_file | 创建或覆盖文件 | 必选1 |
edit_file | 对现有文件进行针对性编辑 | 必选1 |
glob | 查找匹配模式的文件 | - |
grep | 跨文件搜索文本模式 | - |
execute | 在本地或远程沙箱中执行 shell 命令 | 必选1 |
web_search | 使用 Tavily 搜索网页 | 必选1 |
fetch_url | 获取网页并将其转换为 Markdown | 必选1 |
task | 将工作委托给子智能体进行并行执行 | 必选1 |
ask_user | 向用户询问开放式或多项选择题 | - |
compact_conversation | 总结旧消息,将原始消息卸载到后端存储,并在上下文中用摘要替换它们 | 混合2 |
write_todos | 为复杂工作创建和管理任务列表 | - |
在以非交互方式运行 CLI(通过
-n 或管道 stdin)时,即使使用了 -y/--auto-approve,默认也会禁用 shell 执行。使用 -S/--shell-allow-list 将特定命令加入白名单(例如 -S "pytest,git,make"),使用 recommended 采用安全默认设置,或使用 all 允许任何命令。还支持 DEEPAGENTS_CLI_SHELL_ALLOW_LIST 环境变量。有关更多详细信息,请参阅 非交互模式与管道。/conversation_history/{thread_id}.md),在上下文中用摘要替换。如果需要,智能体仍可以从卸载的文件中检索完整历史。compact_conversation 工具允许智能体(或您)按需触发卸载。当作为工具调用时,默认需要用户批准。Deep Agents CLI 尚未正式支持 Windows。Windows 用户可以尝试在 Windows Subsystem for Linux (WSL) 下运行。
快速入门
设置模型凭据
将您的提供商 API 密钥导出为环境变量,或将其添加到 该 CLI 适用于任何支持工具调用的 LLM。OpenAI、Anthropic 和 Google 默认已安装。对于其他提供商(Ollama、Groq、xAI 等),请参阅 提供商。
~/.deepagents/.env 中- OpenAI
- Anthropic
- Google
- 其他
安装并运行
启用追踪(可选)
要在 LangSmith 中查看智能体操作、工具调用和决策,请将以下内容添加到 有关设置详情和用法,请参阅 使用 LangSmith 追踪。
~/.deepagents/.env 或在您的 shell 中导出变量~/.deepagents/.env
提供商
OpenAI、Anthropic 和 Google 是开箱即用的。其他提供商需单独安装,以便您仅拉取所需的资源。交互模式
像在聊天界面中一样自然地输入。智能体将利用其内置工具、技能和记忆来帮助您完成任务。斜杠命令
斜杠命令
在 CLI 会话中使用这些命令
/model- 切换模型或打开交互式模型选择器。详情请参阅 切换模型/agents- 在预配置的智能体之间热切换而无需重新启动。详情请参阅 切换智能体/remember [context]- 复盘对话并更新记忆和技能。可选地传递额外的上下文/skill:<name> [args]- 通过名称直接调用技能。该技能的SKILL.md指令以及您提供的任何参数都将注入到提示词中/skill-creator [args]- 创建高效智能体技能的指南/offload(别名/compact) - 通过将消息卸载到带有摘要占位符的存储中来释放上下文窗口空间。如果需要,智能体可以从卸载的文件中检索完整历史/tokens- 显示当前上下文窗口 token 使用情况的详细分解/clear- 清除对话历史并开始新线程/threads- 浏览并恢复之前的对话线程/mcp- 显示活跃的 MCP 服务器和工具/reload- 重新读取.env文件,刷新配置,并重新发现技能而无需重启。对话状态将被保留。覆盖行为请参阅DEEPAGENTS_CLI_前缀/theme- 打开交互式主题选择器以切换颜色主题。可以使用内置主题以及任何 用户定义的主题/update- 在线检查并安装 CLI 更新。自动检测您的安装方法(uv、Homebrew、pip)并运行相应的升级命令/auto-update- 开启或关闭自动更新/trace- 在 LangSmith 中打开当前线程(需要LANGSMITH_API_KEY)/editor- 在您的外部编辑器 ($VISUAL/$EDITOR) 中打开当前提示词。请参阅 外部编辑器/changelog- 在浏览器中打开 CLI 更新日志/docs- 在浏览器中打开文档/feedback- 打开 GitHub issues 页面以提交错误报告或功能请求/version- 显示已安装的deepagents-cli和 SDK 版本/help- 显示帮助和可用命令/quit- 退出 CLI
Shell 命令
Shell 命令
输入
! 进入 shell 模式,然后输入您的命令。键盘快捷键
键盘快捷键
常规
| 快捷键 | 操作 |
|---|---|
Enter | 提交提示词 |
Shift+Enter, Ctrl+J, Alt+Enter, 或 Ctrl+Enter | 插入新行 |
Ctrl+A | 全选输入框文本 |
@文件名 | 自动补全文件并注入内容 |
Shift+Tab 或 Ctrl+T | 切换自动批准 |
Ctrl+U | 删除至行首 |
Ctrl+X | 在外部编辑器中打开提示词 |
Ctrl+O | 展开/折叠最近一次工具输出 |
Escape | 中断当前操作 |
Ctrl+C | 中断或退出 |
Ctrl+D | 退出 |
非交互模式与管道
使用-n 运行单个任务而无需启动交互式 UI
-n 或 -m 结合使用时,管道内容会首先出现,随后是您传递给标志的文本。
最大管道输入大小为 10 MiB。
-S/--shell-allow-list 启用特定命令(例如 -S "pytest,git,make"),使用 recommended 采用安全默认设置,或使用 all 允许任何命令。
使用 `--max-turns` 限制轮次
使用 `--max-turns` 限制轮次
CI/CD 管道中长时间运行或异常的智能体可能会无限循环。
--max-turns N 为操作人员提供了一个强制上限,而无需触及 SDK 内部机制N 必须是正整数,并且会覆盖限制失控循环的内部安全默认值。当超出预算时,以退出代码 124(与 GNU timeout 一致)退出,以便 CI 可以区分预算耗尽与常规故障。需要 -n 或管道 stdin;否则以代码 2 退出。干净输出与缓冲
干净输出与缓冲
使用 在非交互模式下,智能体被指示做出合理的假设并自主进行,而不是询问澄清问题。它还倾向于使用非交互式命令变体(例如
-q 获取适合管道传输到其他命令的干净输出,并使用 --no-stream 在写入 stdout 之前缓冲完整响应(而不是流式传输)npm init -y, apt-get install -y)。Shell 执行示例
Shell 执行示例
启动时运行命令
使用--startup-cmd 在会话接受第一个提示词之前运行一次 shell 命令。输出将显示在会话顶部,这对于在输入第一个提示词之前检查 git status、列出文件或验证环境设置非常方便。
-m 提示词或 --skill 调用分发之前运行,并遵循您的 shell 环境。非零退出和超时会发出警告,但不会中止会话。在非交互模式下,该命令有 60 秒的超时限制。
输出不会注入到智能体的消息历史中 —— LLM 看不到它。要将命令输出传递给智能体,请通过 stdin 管道传入(例如
git diff | deepagents -n "Review these changes")。切换模型
您可以在会话期间使用/model 命令切换模型而无需重启 CLI,或者在启动时使用 --model 标志切换
/model 打开交互式模型选择器,按提供商分显示可用模型。 有关切换模型、设置默认值以及添加自定义模型提供商的完整详情,请参阅 模型提供商。模型参数
通过在启动时向--model-params 传递 JSON 或在会话中向 /model --model-params 传递 JSON,可以覆盖模型调用参数(例如推理努力/reasoning effort、思考预算、最大输出 token 等)
--model-params 不能与 --default 结合使用。有关持久的提供商级默认值、每模型覆盖以及特定提供商的示例,请参阅提供商页面上的 模型参数。
切换智能体
运行/agents 打开智能体选择器,在 ~/.deepagents/ 中的智能体之间热切换而无需重新启动。切换会重置对话线程并刷新技能发现。选择会被持久化,因此下次直接启动 deepagents 会恢复相同的智能体。-a/--agent 始终具有最高优先级;-r/--resume 则恢复线程原始的智能体。
配置
CLI 将所有配置存储在~/.deepagents/ 下。在该目录中,每个智能体都有自己的子目录(默认:agent)
| 路径 | 目的 |
|---|---|
~/.deepagents/config.toml | 模型默认值、提供商设置、构造函数参数、配置文件覆盖、主题、更新设置、MCP 信任库 |
~/.deepagents/.env | 全局 API 密钥和机密信息。请参阅 配置 |
~/.deepagents/hooks.json | 生命周期事件钩子(会话开始/结束、任务完成等) |
~/.deepagents/<agent_name>/ | 每个智能体的记忆、技能和对话线程 |
.deepagents/ (项目根目录) | 项目特定的记忆和技能,在 git 仓库内运行时加载 |
config.toml 模式、提供商参数、配置文件覆盖和钩子配置),请参阅 配置。
内存
定制任何智能体主要有两种方式-
记忆 (Memory):
AGENTS.md文件和跨会话持久存在的自动保存记忆。使用记忆来存储通用编码风格、偏好和学习到的规范。 - 技能 (Skills):全局和项目特定的上下文、规范、指南或指令。对于仅在执行特定任务时才需要的上下文,请使用技能。
/remember 显式提示智能体从当前对话中更新其记忆和技能。
自动记忆
当您使用智能体时,它会使用记忆优先协议自动将信息以 Markdown 文件形式存储在~/.deepagents/<agent_name>/memories/ 中
- 研究:在开始任务前搜索记忆以获取相关上下文
- 响应:在执行过程中不确定时检查记忆
- 学习:自动为未来的会话保存新信息
AGENTS.md 文件
AGENTS.md 文件 提供在会话开始时始终加载的持久上下文
- 全局:
~/.deepagents/<agent_name>/AGENTS.md—— 每个会话都会加载。 - 项目:任何 git 项目根目录下的
.deepagents/AGENTS.md—— 从该项目内运行 CLI 时加载。
记忆如何工作
记忆如何工作
智能体在回答项目特定问题或当您提及过去的工作或模式时,也可能会读取其记忆文件。当您提供有关其行为方式的信息、对其工作的反馈或要求记住某事的指令时,智能体将更新
AGENTS.md。如果它从您的交互中识别出模式或偏好,它也会更新其记忆。要在额外的记忆文件中添加更多结构化的项目知识,请将它们添加到 .deepagents/ 中并在 AGENTS.md 文件中引用它们。您必须在 AGENTS.md 文件中引用其他文件,智能体才能感知到它们。其他文件不会在启动时读取,但智能体可以在需要时引用和更新它们。何时使用全局 vs. 项目 AGENTS.md
何时使用全局 vs. 项目 AGENTS.md
全局
AGENTS.md (~/.deepagents/agent/AGENTS.md)- 您的个性、风格和通用的编程偏好
- 通用的语气和沟通风格
- 通用的编程偏好(格式化、类型提示等)
- 随处适用的工具使用模式
- 不会随项目改变的工作流和方法论
AGENTS.md (项目根目录下的 .deepagents/AGENTS.md)- 项目特定的上下文和规范
- 项目架构和设计模式
- 特定于此代码库的编码规范
- 测试策略和部署流程
- 团队指南和项目结构
使用技能
技能是可重复使用的智能体能力,提供专门的工作流和领域知识。您可以使用 技能 为您的 Deep Agent 提供新的能力和专业知识。Deep Agent 技能遵循 Agent Skills 标准。添加技能后,您的 Deep Agent 将自动利用它们,并随着您使用智能体并提供额外信息而更新它们。 使用/remember 显式提示智能体从当前对话中更新技能和记忆。添加技能
添加技能
-
创建技能
这会生成
-
打开生成的
SKILL.md并编辑文件以包含您的指令。 -
(可选)向
test-skill文件夹添加额外的脚本或其他资源。有关更多信息,请参阅 示例。
安装社区技能
安装社区技能
您可以使用 Vercel 的 Skills CLI 等工具在您的环境中安装社区 Agent Skills,并将其提供给您的 Deep Agent 使用全局安装 (
-g) 会将技能软链接到 ~/.deepagents/agent/skills/ —— 这是默认智能体的用户级技能目录。项目级安装(省略 -g)会将技能放置在相对于当前目录的 .deepagents/skills/ 中,使其可供该项目中运行的任何智能体使用,无论智能体名称为何。全局安装仅针对默认的
agent 目录。如果您使用自定义名称的智能体,请使用项目级安装或手动将技能软链接到 ~/.deepagents/{your-agent}/skills/。技能发现
技能发现
启动时,CLI 会从 Deep Agents 和共享别名目录中发现技能当存在重复的技能名称时,优先级较高的目录会覆盖较低的(请参阅 应用数据)。对于项目特定技能,项目根文件夹必须包含
.git 文件夹。当您从项目文件夹内的任何位置启动 CLI 时,CLI 将通过检查包含的 .git 文件夹来查找项目的根文件夹。对于每个技能,CLI 从 SKILL.md 文件的前置元数据 (Frontmatter) 中读取名称和描述。当您使用 CLI 时,如果任务与技能的描述匹配,智能体将读取技能文件并遵循其指令。您也可以使用 /skill:<name> [args] 直接调用技能。技能发现在启动时运行,并在 /reload 时再次运行。从命令行调用技能
从命令行调用技能
在启动时使用
--skill 调用技能,而无需以交互方式键入斜杠命令--skill 同样适用于非交互模式--skill 配合 --quiet 或 --no-stream 需要 -n(非交互模式)。列出技能
列出技能
子代理
将自定义 子智能体 (Subagents) 定义为 Markdown 文件,以便 CLI 智能体可以将专门任务委派给它们。每个子智能体位于其自己的文件夹中,并带有一个AGENTS.md 文件
name 和 description(与 SubAgent 字典规范 相同)。Markdown 正文将成为子智能体的 system_prompt。除了基础规范外,AGENTS.md 文件还支持可选的 model 前置字段,该字段会覆盖此子智能体的主智能体模型。使用 provider:model-name 格式(例如 anthropic:claude-opus-4-6, openai:gpt-5.5)。省略则继承主智能体的模型。其他
SubAgent 字段(tools, middleware, interrupt_on, skills)目前无法通过 AGENTS.md 前置元数据进行配置 —— 如此定义的自定义子智能体将继承主智能体的工具。若需完全控制,请直接使用 SDK。文件格式
文件格式
子智能体
AGENTS.md 文件使用 YAML 前置元数据,后接 Markdown 正文示例:高性价比子智能体
示例:高性价比子智能体
使用 MCP 工具
使用外部 MCP (模型上下文协议) 服务器的工具扩展 CLI。在您的项目根目录下放置.mcp.json,CLI 会自动发现它。需要 OAuth(Slack, GitHub, Linear, Notion, ...)的服务器可以使用 deepagents mcp login <server> 进行一次性身份验证;Token 会持久化到 ~/.deepagents/mcp-tokens/ 并自动刷新。有关配置格式、OAuth 登录、自动发现和故障排除,请参阅 MCP 工具指南。
使用远程沙箱
CLI 使用 沙箱即工具 (sandbox as tool) 模式:CLI 进程(LLM 循环、记忆、工具分发)在您的机器上运行,但智能体工具调用(read_file, write_file, execute 等)针对的是远程沙箱,而非您的本地文件系统。要将文件放入沙箱,请使用 启动脚本 或提供商的文件传输 API(请参阅 处理文件)。 有关沙箱架构、集成模式和安全最佳实践的深入探讨,请参阅 沙箱。CLI 默认包含 LangSmith 沙箱支持。AgentCore、Modal、Daytona 和 Runloop 需要安装扩展。
沙箱标志与示例
沙箱标志与示例
| 标志 | 描述 |
|---|---|
--sandbox TYPE | 要使用的沙箱提供商:langsmith, agentcore, modal, daytona, 或 runloop (默认: none) |
--sandbox-id ID | 通过 ID 复用现有沙箱,而不是创建新沙箱。跳过创建和清理。更多信息请参考您的沙箱文档 |
--sandbox-setup PATH | 沙箱创建后在其内部运行的设置脚本路径 |
设置脚本
设置脚本
使用 CLI 使用您的本地环境变量扩展设置脚本中的
--sandbox-setup 在沙箱创建后运行 shell 脚本。这对于克隆仓库、安装依赖和配置环境变量非常有用。setup.sh
${VAR} 引用。将机密信息存储在本地 .env 文件中供设置脚本访问。使用 LangSmith 追踪
启用 LangSmith 追踪,在 LangSmith 项目中查看智能体操作、工具调用和决策。 将您的追踪密钥添加到~/.deepagents/.env,以便在每个会话中启用追踪,无需每次 shell 导出:~/.deepagents/.env
.env。有关完整加载顺序,请参阅 环境变量。 如果您愿意,也可以将这些设置为 shell 环境变量。Shell 导出始终优先于 .env 值,因此这是临时覆盖或测试的好选择:将智能体追踪与应用追踪分离
将智能体追踪与应用追踪分离
当通过编程方式从 LangChain 应用程序调用 CLI(例如作为 非交互模式 中的子进程)时,您的应用和 CLI 都会产生 LangSmith 追踪。默认情况下,这些都会进入同一个项目。要将 CLI 追踪发送到专门的项目,请设置 然后为父级应用的追踪配置 这样可以保持应用级可观测性的整洁,同时仍在单独的项目中捕获智能体的内部执行。您还可以使用
DEEPAGENTS_CLI_LANGSMITH_PROJECT:~/.deepagents/.env
LANGSMITH_PROJECT~/.deepagents/.env
DEEPAGENTS_CLI_ 前缀(例如 DEEPAGENTS_CLI_LANGSMITH_API_KEY)将 LangSmith 凭据作用域限制在 CLI。/trace 打印 URL 并在浏览器中打开。
命令参考
命令行选项
命令行选项
| 选项 | 描述 |
|---|---|
-a, --agent NAME | 使用带有独立记忆的具名智能体。覆盖 config.toml 中的 [agents].recent。默认值:agent(或 [agents].recent 设置的最近使用的智能体) |
-M, --model MODEL | 使用特定模型 (provider:model) |
--model-params JSON | 作为 JSON 字符串传递给模型的额外参数(例如 '{"temperature": 0.7}') |
--default-model [MODEL] | 设置默认模型 |
--clear-default-model | 清除默认模型 |
-r, --resume [ID] | 恢复会话:-r 恢复最近一次会话,-r <ID> 恢复特定线程 |
-m, --message TEXT | 会话开始时自动提交的初始提示词(交互模式) |
--skill NAME | 启动时调用技能 |
--startup-cmd CMD | 启动时、第一个提示词前运行的 shell 命令。输出会渲染在记录中供参考,但不会添加到智能体的消息历史。非零退出和超时会警告但不会中止;非交互模式适用 60 秒超时。请参阅 启动时运行命令 |
-n, --non-interactive TEXT | 非交互式运行单个任务并退出。除非设置了 --shell-allow-list,否则禁用 Shell |
--max-turns N | 限制非交互模式下的智能体轮次。超过时以代码 124 退出。需要 -n 或管道 stdin。请参阅 使用 --max-turns 限制轮次 |
-q, --quiet | 用于管道传输的干净输出——只有智能体的响应会发送到 stdout。需要 -n 或管道 stdin |
--no-stream | 缓冲完整响应并一次性写入 stdout,而不是流式传输。需要 -n 或管道 stdin |
--stdin | 显式从 stdin 读取输入而不是自动检测。当 stdin 不可用或为 TTY 时报错 |
-y, --auto-approve | 自动批准所有工具调用而无需提示(禁用人机回环)。交互式会话中可使用 Shift+Tab 切换 |
-S, --shell-allow-list LIST | 逗号分隔的自动批准 shell 命令列表,'recommended' 为安全默认值,或 'all' 允许任何命令。适用于 -n 和交互模式 |
--json | 管理子命令(agents, threads, skills, update)生成机器可读的 JSON。输出封装:{"schema_version": 1, "command": "...", "data": ...} |
--sandbox TYPE | 用于代码执行的远程沙箱:none (默认), langsmith, agentcore, modal, daytona, runloop。包含 LangSmith;AgentCore/Modal/Daytona/Runloop 需要扩展 |
--sandbox-id ID | 复用现有沙箱(跳过创建和清理) |
--sandbox-setup PATH | 创建沙箱后运行的设置脚本路径 |
--mcp-config PATH | 添加显式 MCP 配置作为最高优先级源(与自动发现的配置合并) |
--no-mcp | 禁用所有 MCP 工具加载 |
--trust-project-mcp | 信任带有 stdio 服务器的项目级 MCP 配置(跳过批准提示) |
--profile-override JSON | 以 JSON 字符串形式覆盖模型配置文件字段(例如 '{"max_input_tokens": 4096}')。合并在配置文件覆盖之上 |
--acp | 通过 stdio 作为 ACP 服务器运行,而不是启动交互式 UI |
-v, --version | 显示版本 |
-h, --help | 显示帮助 |
CLI 命令
CLI 命令
| 命令 | 描述 |
|---|---|
deepagents help | 显示帮助 |
deepagents agents list | 列出所有智能体(别名:ls) |
deepagents agents reset --agent NAME | 清除智能体记忆并重置为默认值。支持 --dry-run |
deepagents agents reset --agent NAME --target SOURCE | 从另一个智能体复制记忆 |
deepagents update | 检查并安装 CLI 更新 |
deepagents skills list [--project] | 列出所有技能(别名:ls) |
deepagents skills create NAME [--project] | 使用模板 SKILL.md 创建新技能。幂等操作 —— 重新创建现有技能会打印信息性消息而不是报错 |
deepagents skills info NAME [--project] | 显示技能的详细信息 |
deepagents skills delete NAME [--project] [-f] | 删除技能及其内容。支持 --dry-run |
deepagents threads list [--agent NAME] [--limit N] | 列出对话(别名:ls)。默认限制:20。-n 是 --limit 的简短标志。其他标志:--sort {created,updated},--branch TEXT(按 git 分支过滤),-v/--verbose(显示所有列,包括分支、创建时间和初始提示词),-r/--relative(相对时间戳) |
deepagents threads delete ID | 删除会话。支持 --dry-run |
deepagents mcp login NAME [--config PATH] | 为标记为 auth: "oauth" 的 MCP 服务器运行 OAuth 登录流程。请参阅 MCP 工具 |
deepagents deploy | 将您的智能体部署到 LangSmith。请参阅 使用 CLI 部署 |
--json 以生成机器可读输出。详情请参阅 命令行选项。破坏性命令(agents reset, skills delete, threads delete)支持 --dry-run 以在不进行更改的情况下预览结果。在 JSON 模式下,--dry-run 返回带有 dry_run: true 字段的相同封装。将这些文档连接到 Claude、VSCode 等,以获得实时答案。

