Deep Agents Code 总览
基于 Deep Agents SDK 构建的终端编码 Agent
从"手动写代码"到"AI 自主编程"的生产力飞跃编码工具链短
你有没有试过让 AI 帮你写代码,却发现工具链不够用?
普通 AI 编码助手
- 只能生成代码片段,不能读取和编辑项目文件
- 无法运行测试或构建命令,没有执行能力
- 对话一长就忘记之前说的,没有持久记忆
- 复杂任务无法拆分,一个 Agent 搞定所有
- 想换个模型?重启重来,不能中途切换
Deep Agents Code 的解法
- 内置
read_file、write_file、edit_file,直接操作项目文件 - 内置
execute工具,运行测试、构建、部署一条龙 - 跨会话持久记忆 + 技能系统,越用越聪明
- 内置
task工具生成子 Agent,并行处理复杂任务 - 对话中随时
/model切换,一个会话用多个模型
开始之前
你需要会什么
- 基本的命令行操作(cd、ls、cat 等)
- 了解 LLM 的基本概念(prompt、token、tool calling)
- 至少有一个 LLM API 密钥(OpenAI、Anthropic 或 Google)
- 了解文件系统操作的基本概念
读完后你应该能
- 安装并启动 Deep Agents Code
- 理解 dcode 的核心能力和内置工具
- 熟练使用交互模式的斜杠命令
- 掌握非交互模式用于 CI/CD 集成
- 配置 LangSmith 追踪进行调试
本章不会深入
- 记忆与技能的详细配置(第 27 章)
- 远程沙箱的具体使用(第 28 章)
- 子 Agent 的高级编排(第 29 章)
- 完整配置文件参考(第 31 章)
什么是 dcode
一个兼容任何 LLM、拥有持久记忆、可切换模型的终端编码 Agent
Deep Agents Code(dcode)是一个基于 Deep Agents SDK 构建的开源编码 Agent。它的核心特性是:
兼容任意 LLM
只要支持 tool calling,就能用。OpenAI、Anthropic、Google 默认内置,Ollama、Groq、xAI 等可选安装。
跨会话持久记忆
保留对话中学到的内容,下次启动时仍然记得你的项目约定和偏好。
可自定义技能
通过 Skills 系统扩展 Agent 能力——添加专业知识、工作流指令或自定义行为。
审批控制
敏感操作(写文件、执行命令)默认需要人工确认,安全可控。
# 脚本安装(推荐)
curl -LsSf https://langch.in/dcode | bash
# 或使用 uv 安装
uv tool install 'deepagents-code'
# 启动
dcode
DEEPAGENTS_CODE_EXTRAS="fireworks,nvidia" curl -LsSf https://langch.in/dcode | bash
或 uv tool install 'deepagents-code[fireworks,nvidia]'
快速上手
四步从安装到运行——给 Agent 分配你的第一个任务
1. 安装并启动
curl 安装,一行命令搞定
2. 添加凭证
/auth 设置 API 密钥
3. 分配任务
自然语言描述需求
4. 审查确认
Agent 以 diff 展示更改
# 启动后,添加提供商凭证
dcode
> /auth # 交互式引导设置 API 密钥(OpenAI、Anthropic 等)
# 给 Agent 分配任务——用自然语言描述即可
> Create a Python script that prints "Hello, World!"
# Agent 会自动:理解意图 → 调用工具生成文件 → 以 diff 展示更改 → 等待你确认
# 如果需要,它会调用 execute 工具运行 shell 命令测试代码
# 或调用 web_search 工具搜索网络获取最新信息
TAVILY_API_KEY=tvly-... 添加到 ~/.deepagents/.env,然后运行 /reload。
核心能力
dcode 内置了丰富的能力——文件、Shell、搜索、记忆、子 Agent 一应俱全
文件操作
读取、写入和编辑文件,Agent 能管理和修改代码与文档。
read / write / edit
Shell 执行
运行命令来执行测试、构建项目、管理依赖和版本控制。
execute
远程沙箱
在 LangSmith、Daytona、Modal 等平台运行工具,而非本地。
--sandbox
网络搜索
搜索网络获取最新信息和文档,基于 Tavily API。
web_search
子 Agent
用 task 工具委派工作,并行处理复杂任务。
task
持久记忆
跨会话存储和检索信息,记住项目约定和学到的模式。
memory
fetch_url)、任务规划与跟踪(write_todos)、上下文压缩(compact_conversation)、人在回路审批、可自定义技能、MCP 工具加载、LangSmith 追踪。
内置工具
dcode 附带的完整工具集——无需配置即可使用
| 工具 | 描述 | 审批要求 |
|---|---|---|
ls |
列出文件和目录 | 不需要 |
read_file |
读取文件内容(特定模型支持多模态) | 不需要 |
write_file |
创建或覆盖文件 | 必需 |
edit_file |
对现有文件进行针对性编辑 | 必需 |
glob |
查找匹配模式的文件 | 不需要 |
grep |
跨文件搜索文本模式 | 不需要 |
execute |
在本地或远程沙箱中执行 shell 命令 | 必需 |
web_search |
使用 Tavily 搜索网络 | 必需 |
fetch_url |
获取网页并转换为 markdown | 必需 |
task |
将工作委派给子 Agent 并行执行 | 必需 |
ask_user |
向用户提出开放式或多选问题 | 不需要 |
compact_conversation |
总结较早消息,将原始内容卸载到存储,在上下文中替换为摘要 | 混合 |
write_todos |
创建和管理任务列表 | 不需要 |
dcode -y 或 dcode --auto-approve 自动审批所有工具调用。交互模式中可用 Shift+Tab 切换。
上下文压缩
长对话自动压缩,上下文窗口永不溢出
dcode 内置 compact_conversation 机制,当 token 使用量超过阈值时自动触发:
压缩前
- 对话越来越长,token 开销持续增长
- 早期对话的完整内容占据大量上下文空间
- 最终可能触及模型上下文窗口上限
压缩后
- 较早的消息被 LLM 自动摘要
- 原始内容卸载到
/conversation_history/{thread_id}.md - 上下文中替换为摘要占位符,释放窗口空间
- Agent 仍可从卸载文件中检索完整历史
# 手动触发上下文压缩(在交互模式中)
> /offload # 别名:/compact,将较早消息总结并卸载
# 或让 Agent 在 token 使用量超过阈值时自动触发 compact_conversation 工具
# 压缩流程:LLM 总结较早消息 → 原始内容写入文件 → 上下文中替换为摘要
# 这样即使对话很长,Agent 仍有足够的上下文窗口处理当前任务
命令行选项
dcode 提供丰富的命令行参数——从模型选择到沙箱配置
| 选项 | 说明 |
|---|---|
-a NAME | 使用具名 Agent 及其独立记忆 |
-M MODEL | 使用特定模型(provider:model) |
--model-params JSON | 传递给模型的额外参数(如 '{"temperature": 0.7}') |
--default-model [MODEL] | 设置默认模型 |
--clear-default-model | 清除默认模型 |
-r [ID] | 恢复会话(不传 ID 恢复最近) |
-m TEXT | 启动时自动提交的初始提示 |
--skill NAME | 启动时调用技能 |
--startup-cmd CMD | 第一个提示之前运行的 shell 命令 |
-y | 自动审批所有工具调用(禁用人在回路) |
-q / --quiet | 干净输出,仅输出 Agent 响应(适合管道) |
--no-stream | 缓冲完整响应后一次性输出(非流式) |
--stdin | 显式从 stdin 读取输入 |
| 选项 | 说明 |
|---|---|
-n TEXT | 非交互模式,运行后退出 |
-S LIST | Shell 命令白名单(逗号分隔 / recommended / all) |
--max-turns N | 限制 Agent 轮次(超出以代码 124 退出) |
--sandbox TYPE | 远程沙箱类型 |
--sandbox-id ID | 复用现有沙箱 |
--sandbox-setup PATH | 沙箱创建后运行的设置脚本路径 |
--mcp-config PATH | 添加 MCP 配置(最高优先级) |
--no-mcp | 禁用所有 MCP 工具加载 |
--trust-project-mcp | 信任项目级 MCP 配置(跳过审批) |
--profile-override JSON | 覆盖模型配置文件字段 |
--acp | 作为 ACP 服务器通过 stdio 运行 |
--json | 管理子命令输出机器可读 JSON |
-v / --version | 显示版本号 |
-h / --help | 显示帮助 |
# 常见用法
dcode --agent mybot # 使用特定 Agent
dcode --model anthropic:claude-opus-4-7 # 使用特定模型
dcode -y # 自动审批
dcode --startup-cmd "ls -la" -m "Summarize" # 启动时先运行命令
dcode --startup-cmd "git diff --stat" -n "Review these changes" # 非交互
管理命令
dcode 的管理子命令——Agent、技能、会话管理
Agent 管理
| 命令 | 说明 |
|---|---|
dcode agents list | 列出所有 Agent |
dcode agents reset --agent NAME | 清除 Agent 记忆并重置 |
dcode agents reset --agent NAME --target SOURCE | 从另一个 Agent 复制记忆 |
技能管理
| 命令 | 说明 |
|---|---|
dcode skills list | 列出所有技能 |
dcode skills create NAME | 创建新技能(SKILL.md 模板) |
dcode skills info NAME | 显示技能详情 |
dcode skills delete NAME | 删除技能 |
会话管理
| 命令 | 说明 |
|---|---|
dcode threads list | 列出会话(默认 20 条) |
dcode threads delete ID | 删除指定会话 |
dcode mcp login NAME | MCP OAuth 登录 |
dcode update | 检查并安装更新 |
agents reset、skills delete、threads delete)支持 --dry-run 预览操作而不实际执行。所有管理子命令支持 --json 获取机器可读输出。
配置结构
所有配置统一存储在 ~/.deepagents/ 目录下
| 路径 | 用途 |
|---|---|
~/.deepagents/config.toml |
模型和 Agent 默认设置、提供商配置、主题、更新设置 |
~/.deepagents/.env |
全局 API 密钥和密钥(如 OPENAI_API_KEY) |
~/.deepagents/hooks.json |
生命周期事件钩子(会话开始/结束、任务完成等) |
~/.deepagents/<agent_name>/ |
每个 Agent 的记忆、技能和对话线程 |
.deepagents/(项目根目录) |
项目特定的记忆和技能,在 git 仓库内运行时加载 |
# 列出所有已配置的 Agent
dcode agents list
# 添加 API 密钥
# 方式一:交互模式中使用 /auth
dcode
> /auth
# 方式二:直接写入 .env 文件
echo "OPENAI_API_KEY=sk-..." >> ~/.deepagents/.env
config.toml 结构、提供商参数、配置文件覆盖和钩子配置,请参阅 第 31 章:配置参考。
交互模式
像聊天一样使用——斜杠命令是提升效率的关键
常用斜杠命令
| 命令 | 说明 |
|---|---|
/model | 切换模型或打开选择器 |
/auth | 管理 API 密钥 |
/agents | 热切换 Agent |
/remember | 回顾并更新记忆 |
/offload | 压缩对话释放上下文(别名 /compact) |
/tokens | 查看 token 使用量 |
/clear | 清除对话开启新线程 |
工具与调试命令
| 命令 | 说明 |
|---|---|
/threads | 浏览和恢复历史对话 |
/mcp | 显示活跃 MCP 服务器 |
/reload | 重载配置和技能 |
/trace | 在 LangSmith 打开追踪 |
/theme | 切换颜色主题 |
/update | 检查并安装更新 |
/auto-update | 开启或关闭自动更新 |
/skill:NAME | 直接调用技能 |
/skill-creator | 创建新技能的向导 |
/editor | 在外部编辑器中打开当前提示 |
/changelog | 在浏览器中打开更新日志 |
/docs | 在浏览器中打开文档 |
/feedback | 打开 GitHub Issues 提交反馈 |
/version | 显示已安装版本号 |
/help | 显示帮助和可用命令 |
/quit | 退出 Deep Agents Code |
@filename 自动补全文件并注入内容;使用 /skill:NAME 按名称调用技能并传入参数;使用 /skill-creator 向导创建新技能。
Shell 与快捷键
Shell 模式和键盘快捷键——高效操控你的编码 Agent
Shell 模式
输入 ! 进入 shell 模式,然后输入命令:
! git status
! npm test
! ls -la
命令在 Agent 环境外独立执行,适合快速检查项目状态。
键盘快捷键
| 快捷键 | 操作 |
|---|---|
Enter | 提交提示 |
Shift+Enter / Ctrl+J / Alt+Enter / Ctrl+Enter | 插入换行 |
Ctrl+A | 选择输入框中的所有文本 |
@filename | 自动补全文件并注入内容 |
Shift+Tab / Ctrl+T | 切换自动审批 |
Ctrl+U | 删除至行首 |
Ctrl+X | 在外部编辑器中打开提示 |
Ctrl+O | 展开/折叠最近的工具输出 |
Escape | 中断当前操作 |
Ctrl+C | 中断或退出 |
Ctrl+D | 退出 |
$VISUAL 或 $EDITOR 环境变量后,Ctrl+X 会在外部编辑器中打开当前提示,适合编辑长文本。
非交互模式
CI/CD 管道中的编码 Agent——单次运行,自动退出
交互模式
- 启动 UI,持续对话
- 人工审批敏感操作
- 随时切换模型、Agent
- 适合日常开发
非交互模式
-n运行单个任务后退出- Shell 执行默认禁用
- 使用
-S白名单启用命令 - 适合 CI/CD、脚本、自动化
# 基本非交互用法:-n 指定任务,运行完自动退出
dcode -n "Write a Python script that prints hello world"
# 管道输入:stdin 内容自动注入为上下文(自动进入非交互模式)
echo "Explain this code" | dcode
git diff | dcode -n "Review these changes" # 让 Agent 审查代码差异
cat error.log | dcode -n "What's causing this error?" # 分析错误日志
# 限制轮次防止 Agent 陷入无限循环(CI/CD 中强烈推荐)
dcode -n "fix the failing tests" --max-turns 10
# 干净输出 + 缓冲模式(适合管道处理和脚本集成)
dcode -n "Generate a .gitignore" -q > .gitignore # -q 仅输出结果
dcode -n "List dependencies" -q --no-stream | sort # --no-stream 等完整响应后输出
npm init -y)。
Shell 白名单
在非交互模式中精确控制 Agent 能执行哪些命令
指定命令列表
只允许特定命令,按列表严格验证。
dcode -n "Run tests" -S "pytest,git,make"
推荐安全列表
使用 recommended 获取策划的安全命令集合。
dcode -n "Build project" -S recommended
允许所有命令
all 允许任意 shell 命令——请谨慎使用。
dcode -n "Fix the build" -S all
-S all 允许 Agent 在无需人工确认的情况下执行任意 shell 命令。仅在你完全信任任务和环境的场景下使用。
DEEPAGENTS_CODE_SHELL_ALLOW_LIST 环境变量设置白名单,适合在 CI/CD 中统一配置。
LangSmith 追踪
启用追踪后在 LangSmith 中查看 Agent 的每一步操作和决策
# 方式一:写入 .env 文件(推荐,每次会话自动启用)
cat >> ~/.deepagents/.env << 'EOF'
LANGSMITH_TRACING=true # 开启追踪
LANGSMITH_API_KEY=lsv2_... # LangSmith API 密钥
LANGSMITH_PROJECT=optional-project-name # 项目名称,默认 "deepagents-code"
EOF
# 方式二:shell 环境变量(适合临时覆盖或 CI/CD)
export LANGSMITH_TRACING=false
# 配置后,dcode 启动时会显示追踪状态
# ✓ LangSmith tracing: 'my-project'
项目级覆盖
在项目目录的 .env 文件中设置相同变量,可覆盖全局设置。Shell 导出始终优先于 .env 值。
分离追踪
使用 DEEPAGENTS_CODE_LANGSMITH_PROJECT 将 dcode 追踪发送到专用项目,与应用追踪分离。也可用 DEEPAGENTS_CODE_ 前缀限定所有凭证。
# 将 dcode 的追踪发送到专用项目(与父应用追踪分离)
DEEPAGENTS_CODE_LANGSMITH_PROJECT=my-deep-agent-execution
# 父应用的追踪使用独立项目
LANGSMITH_PROJECT=my-app-traces
# 也可用 DEEPAGENTS_CODE_ 前缀限定凭证,避免与父应用凭证冲突
DEEPAGENTS_CODE_LANGSMITH_API_KEY=lsv2_...
DEEPAGENTS_CODE_LANGSMITH_PROJECT 将 Agent 追踪路由到独立项目,既保持应用级可观测性整洁,又能捕获 Agent 内部执行细节。
/trace 命令在浏览器中打开当前线程的追踪。dcode 启动后会显示指向 LangSmith 项目的链接,支持的终端可直接点击。
本章回顾
到这里,你已经掌握了 Deep Agents Code 的全貌
你学到了什么
- Deep Agents Code 是一个终端编码 Agent,兼容任意支持 tool calling 的 LLM
- 内置12 个工具:文件操作、Shell 执行、网络搜索、子 Agent 等
- 两种运行模式:交互模式(日常开发)和非交互模式(CI/CD)
- 持久记忆 + 技能系统,跨会话保持上下文
- 上下文自动压缩,长对话不爆窗口
- LangSmith 追踪提供完整的可观测性
后续章节预告
- 记忆与技能(第 27 章):深入理解记忆存储和技能创建
- 远程沙箱(第 28 章):在云端运行 Agent 工具
- 子 Agent(第 29 章):并行任务委派的高级用法
- 提供商(第 30 章):配置 Ollama、Groq 等额外模型
- 配置参考(第 31 章):config.toml 的完整结构
- MCP 工具(第 32 章):集成外部工具服务器
延伸阅读
官方资源
- Deep Agents SDK 文档 -- 完整的 API 参考和教程
- LangSmith -- 可视化追踪和部署平台
- 演示视频 -- 观看 dcode 实际工作方式
相关章节
- 第 1 章:认识 Deep Agents -- 框架整体架构
- 第 2 章:快速上手 -- 第一个 Deep Agent
- 第 32 章:MCP 工具 -- 集成外部工具服务器