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 Agent 的 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 字符串传递给模型的额外 kwargs(例如,'{"temperature": 0.7}'
--default-model [MODEL]设置默认模型
--clear-default-model清除默认模型
-r, --resume [ID]恢复会话:-r 为最近一次,-r <ID> 为特定线程
-m, --message TEXT会话开始时自动提交的初始提示(交互模式)
-n, --non-interactive TEXT以非交互方式运行单个任务并退出。Shell 被禁用,除非设置了 --shell-allow-list
-q, --quiet用于管道传输的干净输出 —— 只有代理的响应会转到 stdout。需要 -n 或管道传输的 stdin
--no-stream缓冲完整响应并一次性写入 stdout,而不是流式传输。需要 -n 或管道传输的 stdin
--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 - 显示当前上下文窗口令牌使用情况
  • /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+Enter, Ctrl+J, Alt+Enter, 或 Ctrl+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"
您还可以通过 stdin 管道传输输入。当输入被管道传输时,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 在写入 stdout 之前缓冲完整响应(而不是流式传输):
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

切换模型

您可以在会话期间使用 /model 命令切换模型而无需重新启动 CLI,或者在启动时使用 --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
# 应用惯例而无需提示

自定义您的 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
    
    # 使用 GitHub 令牌克隆存储库
    git clone https://x-access-token:${GITHUB_TOKEN}@github.com/username/repo.git $HOME/workspace
    cd $HOME/workspace
    
    # 使环境变量持久化
    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 文件的 frontmatter 中读取名称和描述。 当您使用 CLI 时,如果任务与技能的描述匹配,代理将读取技能文件并按照其说明进行操作。

列出技能

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