Skip to main content
Deep Agents CLI 是一个基于 Deep Agents SDK 构建的开源终端编码智能体。 它保留持久记忆、跨会话维护上下文、学习项目约定、使用可自定义的技能,并通过审批控制执行代码。 Deep Agents CLI Deep Agents CLI 具有以下内置功能:
  • 文件操作 - 使用工具读取、写入和编辑项目中的文件,使智能体能够管理和修改代码及文档。
  • Shell 命令执行 - 执行 shell 命令以运行测试、构建项目、管理依赖项,并与版本控制系统交互。
  • 网络搜索 - 搜索网络获取最新信息和文档(需要 Tavily API 密钥)。
  • HTTP 请求 - 向 API 和外部服务发送 HTTP 请求,用于数据获取和集成任务。
  • 任务规划和跟踪 - 将复杂任务分解为独立步骤,并通过内置的待办事项系统跟踪进度。
  • 记忆存储和检索 - 跨会话存储和检索信息,使智能体能够记住项目约定和学到的模式。
  • 人机协同 - 对敏感工具操作要求人工审批。
  • 技能 - 使用存储在技能目录中的自定义专业知识和指令扩展智能体功能。

内置工具

智能体自带以下内置工具,无需配置即可使用:
工具描述人机协同
ls列出文件和目录-
read_file读取文件内容;支持以多模态内容形式读取图片(.png.jpg.jpeg.gif.webp-
write_file创建或覆盖文件必需1
edit_file对现有文件进行精确编辑必需1
glob查找匹配模式的文件(例如 **/*.py-
grep在文件中搜索文本模式-
shell执行 shell 命令(本地模式)必需1
execute在远程沙箱中执行命令(沙箱模式)必需1
web_search使用 Tavily API 搜索网络必需1
fetch_url获取网页并转换为 markdown必需1
task将工作委派给子代理以并行执行必需1
write_todos为复杂工作创建和管理任务列表-
1:潜在的破坏性操作在执行前需要用户审批。 要绕过人工审批,可以切换自动审批或使用 auto-approve 选项启动 deep agent:
deepagents --auto-approve
观看演示视频了解 Deep Agents CLI 的工作方式。

快速开始

设置模型凭证

选择要使用的模型提供商并将凭证设置为环境变量。
导出为环境变量:
export OPENAI_API_KEY="your-api-key"

运行 CLI

uv tool install deepagents-cli
deepagents

给智能体一个任务

> Create a Python script that prints "Hello, World!"
智能体在修改文件之前会提出带有差异对比的变更建议供你审批。
每个模型提供商都需要安装对应的 LangChain 集成包。安装 CLI 时可作为可选附加包一起安装:
# 安装单个提供商
uv tool install 'deepagents-cli[anthropic]'

# 同时安装多个提供商
uv tool install 'deepagents-cli[ollama,groq]'

# 稍后添加其他包
uv tool upgrade deepagents-cli --with langchain-xai
有关支持的提供商和配置选项的完整列表,请参阅自定义模型提供商首次启动时(未设置 [models].default[models].recent),CLI 会按以下顺序自动选择第一个可用的启动凭证:OPENAI_API_KEYANTHROPIC_API_KEYGOOGLE_API_KEY,然后是 GOOGLE_CLOUD_PROJECT(Vertex AI)。此启动回退故意范围较窄;其他支持的提供商(例如 Groq)仍然可以通过 --model/model 或已保存的默认模型使用。
deepagents --model anthropic:claude-opus-4-5
启用网络搜索(可选):
export TAVILY_API_KEY="your-key"
API 密钥可以设置为环境变量或在 .env 文件中设置。

使用 LangSmith 进行追踪

启用 LangSmith 追踪以在 LangSmith 仪表板中查看智能体操作:
  1. 启用 LangSmith 追踪:
    export LANGCHAIN_TRACING=true
    export LANGCHAIN_API_KEY="your-api-key"
    
  2. 为 deep agent 操作(如工具调用和智能体决策)配置智能体追踪:
    export DEEPAGENTS_LANGSMITH_PROJECT="my-deep-agent-execution"
    
  3. 如果你正在使用 deep agents 构建 LangChain 应用程序,并希望将智能体追踪与应用程序的追踪分开,还需配置 LANGSMITH_PROJECT
    export LANGSMITH_PROJECT="my-app-calls-to-langchain"
    
配置完成后,CLI 会显示:
 LangSmith tracing: 'my-project'

配置

每个智能体在 ~/.deepagents/<agent_name>/ 有自己的配置目录。 默认智能体名称为 agent。 启动智能体时,如果该智能体名称的文件夹不存在,则会在该路径 ~/.deepagents/<new_agent>/ 创建。
# 列出所有已配置的智能体
deepagents list

# 使用特定智能体配置
deepagents --agent mybot

# 使用特定模型(provider:model 格式或自动检测)
deepagents --model anthropic:claude-sonnet-4-5
deepagents --model gpt-4o

# 自动审批工具使用(跳过人机协同提示)
deepagents --auto-approve

# 在远程沙箱中执行代码
deepagents --sandbox modal        # 或 runloop、daytona
deepagents --sandbox-id dbx_123   # 重用现有沙箱
选项描述
-a, --agent NAME使用具有独立记忆的命名智能体(默认:agent
-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会话启动时自动提交的初始提示(交互式模式)
-n, --non-interactive TEXT非交互式地运行单个任务并退出。除非设置了 --shell-allow-list,否则 shell 被禁用
-q, --quiet用于管道的清洁输出——只有智能体的响应输出到标准输出。需要 -n 或管道标准输入
--no-stream缓冲完整响应并一次性写入标准输出,而不是流式传输。需要 -n 或管道标准输入
--auto-approve自动审批所有工具调用而不提示(禁用人机协同)。在交互式会话中可用 Shift+Tab 切换
--shell-allow-list LIST以逗号分隔的自动审批 shell 命令列表,或 'recommended' 使用安全默认值。适用于 -n 和交互式模式
--sandbox TYPE用于代码执行的远程沙箱:none(默认)、modaldaytonarunlooplangsmith
--sandbox-id ID重用现有沙箱(跳过创建和清理)
--sandbox-setup PATH创建沙箱后在其中运行的设置脚本路径
-v, --version显示版本
-h, --help显示帮助
命令描述
deepagents help显示帮助
deepagents list列出所有智能体
deepagents reset --agent NAME清除智能体记忆并重置为默认
deepagents reset --agent NAME --target SOURCE从另一个智能体复制记忆
deepagents skills list [--project]列出所有技能(别名:ls
deepagents skills create NAME [--project]使用模板 SKILL.md 创建新技能
deepagents skills info NAME [--project]显示技能的详细信息
deepagents skills delete NAME [--project] [-f]删除技能及其内容
deepagents threads list [--agent NAME] [--limit N]列出会话(别名:ls)。默认限制:20
deepagents threads delete ID删除会话

交互式模式

像在聊天界面中一样自然地输入。 智能体将使用其内置工具、技能和记忆来帮助你完成任务。
在 CLI 会话中使用以下命令:
  • /model - 打开交互式模型选择器
  • /model <provider:model> - 直接切换到特定模型(例如 /model anthropic:claude-sonnet-4-5
  • /model --default <provider:model> - 设置持久默认模型
  • /model --default --clear - 清除已保存的默认模型
  • /remember [context] - 回顾对话并更新记忆和技能。可选地传递额外上下文
  • /tokens - 显示当前上下文窗口的 token 使用情况
  • /clear - 清除对话历史并开始新线程
  • /threads - 浏览和恢复之前的对话线程
  • /trace - 在 LangSmith 中打开当前线程(需要 LANGSMITH_API_KEY
  • /changelog - 在浏览器中打开 CLI 更新日志
  • /docs - 在浏览器中打开文档
  • /feedback - 打开 GitHub issues 页面提交错误报告或功能请求
  • /version - 显示已安装的 deepagents-cli 和 SDK 版本
  • /help - 显示帮助和可用命令
  • /quit(或 /q)- 退出 CLI
通过 ! 前缀直接执行 shell 命令:
!git status
!npm test
!ls -la
通用
快捷键操作
Enter提交提示
Shift+EnterCtrl+JAlt+EnterCtrl+Enter插入换行符
Ctrl+A选择输入框中的所有文本
@filename自动补全文件并注入内容
Shift+TabCtrl+T切换自动审批
Ctrl+E展开/折叠最近的工具输出
Escape中断当前操作
Ctrl+C中断或退出
Ctrl+D退出

非交互式模式和管道

使用 -n 运行单个任务而不启动交互式 UI:
deepagents -n "Write a Python script that prints hello world"
你也可以通过标准输入管道传递输入。当输入被管道传递时,CLI 自动以非交互方式运行:
echo "Explain this code" | deepagents
cat error.log | deepagents -n "What's causing this error?"
git diff | deepagents -n "Review these changes"
当管道输入与 -n-m 结合使用时,管道内容会被添加到标志值的前面。
最大管道输入大小为 10 MiB。
使用 -q 获取适合管道传递到其他命令的清洁输出,使用 --no-stream 在写入标准输出之前缓冲完整响应(而不是流式传输):
deepagents -n "Generate a .gitignore for Python" -q > .gitignore
deepagents -n "List dependencies" -q --no-stream | sort
默认情况下,非交互式模式下 shell 执行被禁用。使用 --shell-allow-list 允许特定命令:
deepagents -n "Run the tests and fix failures" --shell-allow-list "pytest,git,make"
deepagents -n "Build the project" --shell-allow-list recommended

切换模型

你可以在不重启 CLI 的情况下使用 /model 命令在会话中切换模型,或在启动时使用 --model 标志:
> /model anthropic:claude-opus-4-5
> /model openai:gpt-4o
deepagents --model openai:gpt-4o
不带参数运行 /model 可打开交互式模型选择器,显示按提供商分组的可用模型。 有关切换模型、设置默认值、配置自定义提供商以及使用 ~/.deepagents/config.toml 配置文件的完整详情,请参阅自定义模型提供商

教导智能体项目约定

随着你使用智能体,它会自动将信息以 markdown 文件形式存储在 ~/.deepagents/<agent_name>/memories/ 中,使用记忆优先协议:
  1. 研究:在开始任务之前搜索记忆中的相关上下文
  2. 响应:在执行过程中不确定时检查记忆
  3. 学习:自动为未来会话保存新信息
智能体按主题组织记忆,使用描述性文件名:
~/.deepagents/backend-dev/memories/
├── api-conventions.md
├── database-schema.md
└── deployment-process.md
当你向智能体传授约定时:
uvx deepagents-cli --agent backend-dev
> Our API uses snake_case and includes created_at/updated_at timestamps
它会记住以供未来会话使用:
> Create a /users endpoint
# Applies conventions without prompting

自定义你的 deep agent

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

提供项目或用户上下文

AGENTS.md 文件提供在会话开始时始终加载的持久记忆。 你可以在 ~/.deepagents/<agent_name>/AGENTS.md 中为智能体提供全局用户记忆。 此文件在每次启动新 deep agent 会话时都会加载。 当你引用过去的工作或模式或询问项目特定问题时,智能体也可能读取其记忆文件。 对于项目特定记忆,只要项目使用 git,你就可以在任何项目根文件夹的 .deepagents/AGENTS.md 中添加上下文。 当你从项目文件夹内的任何位置启动 CLI 时,CLI 将通过检查包含的 .git 文件夹找到项目根文件夹。 全局和项目级 AGENTS.md 文件会一起加载,并在启动时附加到系统提示中。 当你使用智能体并向其提供关于其行为方式的额外信息、对其工作的反馈或记忆某些内容的指令时,智能体将更新它们。 如果智能体从你的交互中识别出模式或偏好,它也会更新其记忆。 如果你想明确提示 deep agent 根据线程的当前上下文更新技能和记忆,可以使用 /remember 命令,该命令会加载自定义指令以审查上下文并执行更新。 要在额外记忆文件中添加更结构化的项目知识,可以将它们添加到 .deepagents/ 中,并在 AGENTS.md 文件中引用它们。 你必须在 AGENTS.md 文件中引用额外文件,智能体才能知道这些文件的存在。 额外文件不会在启动时读取,但智能体可以在需要时引用和更新它们。
全局 AGENTS.md~/.deepagents/agent/AGENTS.md
  • 你的个性、风格和通用编码偏好
  • 通用语气和沟通风格
  • 通用编码偏好(格式化、类型提示等)
  • 随处适用的工具使用模式
  • 不随项目变化的工作流程和方法论
项目级 AGENTS.md(项目根目录的 .deepagents/AGENTS.md
  • 项目特定上下文和约定
  • 项目架构和设计模式
  • 此代码库特有的编码约定
  • 测试策略和部署流程
  • 团队指南和项目结构

使用远程沙箱

在隔离的远程环境中执行代码以确保安全性和灵活性。远程沙箱提供以下优势:
  • 安全性:保护你的本地机器免受潜在有害代码执行的影响
  • 清洁环境:使用特定依赖项或操作系统配置,无需本地设置
  • 并行执行:在隔离环境中同时运行多个智能体
  • 长时间运行的任务:执行耗时操作而不阻塞你的机器
  • 可重现性:确保跨团队的一致执行环境
使用远程沙箱,请按以下步骤操作:
  1. 配置你的沙箱提供商(RunloopDaytonaModal):
    # Runloop
    export RUNLOOP_API_KEY="your-key"
    
    # Daytona
    export DAYTONA_API_KEY="your-key"
    
    # Modal
    modal setup
    
  2. 使用沙箱运行 CLI:
    uvx deepagents-cli --sandbox runloop --sandbox-setup ./setup.sh
    
    智能体在本地运行,但在远程沙箱中执行所有代码操作。可选的设置脚本可以配置环境变量、克隆仓库并准备依赖项。
  3. (可选)创建 setup.sh 文件来配置你的沙箱环境:
    #!/bin/bash
    set -e
    
    # Clone repository using GitHub token
    git clone https://x-access-token:${GITHUB_TOKEN}@github.com/username/repo.git $HOME/workspace
    cd $HOME/workspace
    
    # Make environment variables persistent
    cat >> ~/.bashrc <<'EOF'
    export GITHUB_TOKEN="${GITHUB_TOKEN}"
    export OPENAI_API_KEY="${OPENAI_API_KEY}"
    cd $HOME/workspace
    EOF
    
    source ~/.bashrc
    
    将密钥存储在本地 .env 文件中供设置脚本访问。
沙箱隔离代码执行,但对于不受信任的输入,智能体仍然容易受到提示注入的影响。请使用人机协同审批、短期密钥,并且只使用可信的设置脚本。请注意,沙箱 API 正在快速发展,我们期望更多提供商支持有助于缓解提示注入和密钥管理问题的代理。

使用技能

技能是可重用的智能体功能,提供专业工作流程和领域知识。 你可以使用技能为你的 deep agent 提供新功能和专业知识。 Deep agent 技能遵循 Agent Skills 标准。 一旦你添加了技能,你的 deep agent 将自动使用它们,并随着你使用智能体并向其提供额外信息而更新它们。 如果你想明确提示 deep agent 根据线程的当前上下文更新技能和记忆,可以使用 /remember 命令,该命令会加载自定义指令以审查上下文并执行更新。

添加技能

  1. 首先创建一个技能:
    deepagents skills create test-skill
    
    这将在你的 ~/.deepagents/<agent_name> 文件夹中生成以下文件:
    skills/
    └── test-skill
        └── SKILL.md
    
  2. 打开生成的 SKILL.md 并编辑文件以包含你的指令。
  3. 可选地向 test-skill 文件夹添加额外的脚本或其他资源。 更多信息请参阅示例
如果你已经有一个包含技能文件的技能文件夹,也可以直接将其复制到智能体的文件夹中:
mkdir -p ~/.deepagents/<agent_name>/skills
cp -r examples/skills/web-research ~/.deepagents/<agent_name>/skills/
启动时,CLI 从 Deep Agents 和共享别名目录中发现技能:
`~/.deepagents/<agent_name>/skills/`
`~/.agents/skills/`
`.deepagents/skills/`
`.agents/skills/`
当存在重复技能名称时,优先级较高的目录会覆盖优先级较低的目录(参见应用数据)。 对于项目特定技能,项目根文件夹必须有一个 .git 文件夹。 当你从项目文件夹内的任何位置启动 CLI 时,CLI 将通过检查包含的 .git 文件夹找到项目根文件夹。 对于每个技能,CLI 从 SKILL.md 文件的前置内容中读取名称和描述。 当你使用 CLI 时,如果任务与技能描述匹配,智能体将读取技能文件并遵循其指令。

列出技能

要查看已安装的技能列表,请运行:
deepagents skills list
要获取特定技能的更多信息,请运行:
deepagents skills info test-skill