Deep Agents Code (dcode) 是一个基于 Deep Agents SDK. 构建的开源编程代理。它可与任何大型语言模型配合使用,并支持在会话中切换提供商或模型。 持久记忆在对话间携带上下文,可自定义技能塑造其行为,审批控制则对代码执行进行把关。
快速入门
Install and launch
curl -LsSf https://langch.in/dcode | bash
Add provider credentials
Deep Agents Code 可与任何工具调用 LLM 配合使用。OpenAI、Anthropic 和 Google 开箱即用。
使用 /auth 命令连接提供商。请参阅 提供商 获取完整列表和凭据详情。
Choose a model (optional)
运行 /model 在会话中打开交互式切换器,或使用启动 --model:
dcode --model anthropic:claude-opus-4-8
dcode --model openai:gpt-5.5
dcode --model fireworks:accounts/fireworks/models/deepseek-v4-pro
dcode --model baseten:moonshotai/Kimi-K2.7-Code
请参阅 模型提供商 获取完整提供商列表、开放权重选项和凭据详情。
Give the agent a task
Create a Python script that prints "Hello, World!"
代理会解释查询并通过差异对比提出修改建议供您审批,然后再修改文件。如有需要,它可以运行 shell 命令来测试代码、查阅文档或搜索网络获取最新信息。
Enable tracing (optional)
要在 LangSmith 中记录代理操作、工具调用和决策,请将以下内容添加到 ~/.deepagents/.env 或在 shell 中导出变量:
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=lsv2_...
LANGSMITH_PROJECT=optional-project-name # Specify a project name or default to "deepagents-code"
更多详情和使用方法,请参阅 使用 LangSmith 进行追踪.
功能
Deep Agents Code 具有以下内置功能:
- * **文件操作** - 读取、写入和编辑磁盘上的文件。
- * **Shell 执行** - 执行命令以运行测试、构建项目、管理依赖项和与版本控制交互。
- * **远程沙箱** - 远程运行代理工具,而非在本地机器上运行。
- * **网络搜索** - 搜索网络获取最新信息和文档。需要 Tavily API 密钥.
- * **任务规划与跟踪** - 将复杂任务分解为离散的步骤并跟踪进度。
- * **子代理** - 将工作委托给特定任务的子代理。
- * **记忆存储与检索** - 跨会话存储和检索信息,使智能体能够记住项目约定和学习到的模式。
- * **上下文压缩与卸载** - 总结较早的对话消息并将其原文卸载到存储中。
- * **Human-in-the-loop** - 敏感工具操作需要人工审批。
- * **技能** - 通过自定义专业知识和指令扩展智能体能力。
- * **MCP 工具** - 从加载外部工具 模型上下文协议 servers.
- * **追踪** - 在 LangSmith 中追踪智能体操作以实现可观测性和调试。
Full list of built-in tools
内置工具
智能体附带了以下内置工具,无需配置即可使用:
| 工具 | 描述 | 人工介入 |
|---|---|---|
ls | 列出文件和目录 | - |
read_file | 读取文件内容;返回图像、音频、视频和 PDF 的多模态块 | - |
write_file | 创建或覆盖文件 | 必需<sup>1</sup> |
edit_file | 对现有文件进行定向编辑 | 必需<sup>1</sup> |
glob | 查找匹配模式的文件 | - |
grep | 跨文件搜索文本模式 | - |
execute | 在本地或远程沙箱中执行 shell 命令 执行 shell 命令 | 必需<sup>1</sup> |
web_search | 使用 Tavily 搜索网络(参见 启用网络搜索) | 必需<sup>1</sup> |
fetch_url | 获取并转换网页为 markdown | 必需<sup>1</sup> |
task | 将工作委托给 子智能体 以并行执行<sup>3</sup> | 必需<sup>1</sup> |
ask_user | 向用户提出自由形式或多项选择题 | - |
compact_conversation | 总结较早的消息,将原文卸载到后端存储,并在上下文中用摘要替换 | 混合<sup>2</sup> |
write_todos | 创建和管理复杂工作的任务列表 | - |
get_current_thread_id | 返回 LangSmith 或 MCP 工具的当前线程 ID | - |
<sup>1</sup>:潜在破坏性操作需要在执行前获得用户批准。要跳过人工审批,您可以切换自动批准(shift+tab)或使用以下选项启动:
dcode --auto-approve
# shorter alias:
dcode -y
<sup>2</sup>:深度智能体代码在 token 使用量超过模型感知阈值时自动在后台卸载对话。卸载通过 LLM 总结较早的消息,并将原文弹出到存储(/conversation_history/{thread_id}.md),在上下文中用摘要替换。智能体在需要时仍可以从卸载的文件中检索完整历史。 compact_conversation 工具允许智能体(或您)按需触发卸载。当作为工具调用时,它默认需要用户批准。
命令参考
# Use a specific agent configuration
dcode --agent mybot
# Use a specific model (provider:model format or auto-detect)
dcode --model anthropic:claude-opus-4-8
dcode --model gpt-5.5
# Auto-approve tool usage (skip human-in-the-loop prompts)
dcode -y
# list directory contents, then summarize directory as first prompt—the command runs first, then the prompt is submitted
# the prompt does NOT have access to the command output
dcode --startup-cmd "ls -la" -m "Summarize what's in this directory"
# Non-interactive with startup command: show git status before the task runs
# the task does NOT have access to the command output
dcode --startup-cmd "git diff --stat" -n "Review these changes"
Command-line options
| 选项 | 描述 |
|---|---|
-a, --agent NAME | 使用指定的代理并使用独立内存。覆盖 [agents].recent in config.toml。默认值: agent (如果设置了 [agents].recent ,则为最近使用的代理) |
-M, --model MODEL | 使用指定的模型(provider:model) |
--model-params JSON | 要以 JSON 字符串形式传递给模型的额外 kwargs(例如, '{"temperature": 0.7}') |
--max-retries N | 覆盖临时模型错误的最大重试次数 |
--default-model [MODEL] | 设置 默认模型 (省略 MODEL 以查看当前默认值) |
--clear-default-model | 清除 默认模型 |
-r, --resume [ID] | 恢复会话: -r 使用最近一次, -r 使用指定线程 |
-m, --message TEXT | 会话启动时自动提交的初始提示(交互模式) |
--skill NAME | 启动时调用技能 |
--startup-cmd CMD | 启动时运行的 shell 命令,在首次提示之前。输出显示在记录中供你参考,但 **不会** 添加到代理的消息历史记录中。如需将命令输出传递给代理,请改用 stdin 管道(例如, `git diff \ |
-n, --non-interactive TEXT | 以非交互方式运行单个任务并退出。除非设置 --shell-allow-list ,否则禁用 shell |
--max-turns N | 限制非交互模式中的代理轮数。超过时以代码 124 退出。需要 -n 或管道 stdin。请参阅 使用 --max-turns |
--timeout SECONDS | 非交互模式的硬性时钟超时。超过时以代码 124 退出。需要 -n 或管道 stdin。请参阅 使用 --timeout |
-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 | 从管理子命令发出机器可读的 JSON(agents, threads, skills, update)。输出信封: {"schema_version": 1, "command": "...", "data": ...} |
--sandbox TYPE | 用于代码执行的远程沙箱: none (默认), langsmith, agentcore, daytona, modal, runloop, e2b。包含 LangSmith;AgentCore、Daytona、Modal 和 Runloop 需要额外包;E2B 需要 langchain-e2b 作为包安装 |
--sandbox-id ID | 复用现有沙箱(跳过创建和清理) |
--sandbox-snapshot-name NAME | 要使用或创建的沙箱快照名称(仅限 LangSmith) |
--sandbox-setup PATH | 沙箱创建后要运行的设置脚本路径 |
--mcp-config PATH | 添加显式 MCP 配置作为最高优先级源(与自动发现的配置合并) |
--no-mcp | 禁用所有 MCP 工具加载 |
--trust-project-mcp | 信任项目级 MCP 配置中的 stdio 服务器(跳过批准提示) |
--interpreter | 在主代理上启用 JS 解释器(js_eval)中间件。仅本地模式;需要 quickjs 可选额外包 |
--interpreter-tools VALUE | 的 PTC 白名单或逗号分隔的工具名称列表。默认:无 PTC(纯 REPL) |
--profile-override JSON | 覆盖模型配置字段为 JSON 字符串(例如, '{"max_input_tokens": 4096}')。在配置文件配置覆盖之上合并 |
--acp | 通过 stdio 作为 ACP 服务器运行,而非启动交互式 UI |
--update | 检查并安装更新,然后退出 |
--auto-update | 开启或关闭自动更新,然后退出 |
--install NAME | 安装可选额外包(例如 quickjs, daytona, fireworks),然后退出。添加 --package 将 NAME 视为通过 uv --with 安装的自定义提供商包,而非额外包(参见 自定义提供商),以及 --yes 跳过确认提示 |
-v, --version | 显示版本 |
-h, --help | 显示帮助 |
CLI commands
| 命令 | 描述 |
|---|---|
dcode help | 显示帮助 |
dcode agents list | 列出所有代理(别名: ls) |
dcode agents reset --agent NAME | 清除代理内存并重置为默认值。支持 --dry-run |
dcode agents reset --agent NAME --target SOURCE | 从另一个代理复制内存 |
dcode update | 检查并安装 Deep Agents Code 更新 |
dcode skills list [--project] | 列出所有技能(别名: ls) |
dcode skills create NAME [--project] | 使用模板创建新技能 SKILL.md。幂等——重新创建现有技能会打印信息消息而非错误 |
dcode skills info NAME [--project] | 显示技能详细信息 |
dcode skills delete NAME [--project] [-f] | 删除技能及其内容。支持 --dry-run |
dcode threads list [--agent NAME] [--limit N] | 列出所有会话(别名: ls)。默认限制:20。 -n 是 --limit的短标志。附加标志: --sort {created,updated}, --branch TEXT (按 git 分支过滤), --cwd [PATH] (按工作目录过滤;裸标志使用当前目录), -v/--verbose (显示所有列,包括分支、创建时间和初始提示), -r/--relative (相对时间戳) |
dcode threads delete ID | 删除会话。支持 --dry-run |
dcode mcp login NAME [--mcp-config PATH] | 为标记的 MCP 服务器运行 OAuth 登录流程 auth: "oauth"。参见 MCP 工具 |
dcode mcp config | 显示 MCP 配置发现路径 |
dcode config show | 显示每个配置选项的有效值及其解析来源。参见 检查配置 |
dcode config list | 列出所有可用配置选项及其类型、默认值和可设置位置(别名: ls) |
dcode config get KEY | 显示一个选项的有效值和来源(例如 interpreter.memory_limit_mb) |
dcode config path | 显示配置文件位置及每个文件是否存在 |
所有管理子命令支持 --json 以获取机器可读的输出。参见 命令行选项 了解更多详情。
破坏性命令(agents reset, skills delete, threads delete)支持 --dry-run 以在不进行更改的情况下预览会发生什么。在 JSON 模式下, --dry-run 返回相同的信封,其中包含 dry_run: true field.
配置
完整的参考信息——包括 config.toml 架构、提供商参数、配置文件覆盖和钩子配置——请参见 配置.
Deep Agents Code 将所有配置存储在 ~/.deepagents/下。在该目录中,每个代理都有自己的子目录(默认: agent):
| 路径 | 用途 |
|---|---|
~/.deepagents/config.toml | 模型和代理默认值、提供商设置、构造函数参数、配置文件覆盖、主题、更新设置 |
~/.deepagents/.env | 全局 API 密钥和密钥。参见 配置 |
~/.deepagents/hooks.json | 生命周期事件钩子 (session start/end, task complete, etc.) |
~/.deepagents/<agent_name>/ | 每个代理的内存、技能和对话线程 |
.deepagents/ (项目根目录) | 项目特定的内存和技能,在 git 仓库内运行时加载 |
交互模式
像在聊天界面中一样自然地输入。 代理使用其内置工具、技能和内存来帮助你完成任务。
Slash commands
在 Deep Agents Code 会话中使用以下命令:
- /model - 切换模型或打开交互式模型选择器。 - /agents - 在不重新启动的情况下热切换预配置的代理。参见 命令参考 了解更多详情 - /auth - 管理模型提供商和服务的已存储 API 密钥(如 Tavily 网络搜索)。参见 提供商凭证 了解更多详情 - /remember [context] - 回顾对话并更新内存和技能。可选择传递额外的上下文 - /skill:<name> [args] - 按名称直接调用技能。该技能的 SKILL.md 指令会连同你提供的任何参数一起注入到提示中 - /skill-creator [task] - 创建有效代理技能的指南 - /offload (别名 /compact) - 通过将消息卸载到存储并带有摘要占位符来释放上下文窗口空间。如有需要,代理可以从卸载的文件中检索完整历史记录 - /tokens - 显示当前上下文窗口的 token 使用细分 - /clear - 清除对话历史并开始新对话 - /copy - 将最新助手消息复制到剪贴板 - /threads - 浏览并恢复之前的对话 - /mcp [login <server> | reconnect] - 显示活动的 MCP 服务器和工具 login <server> 为服务器运行 OAuth 流程 reconnect 加载延迟登录 - /notifications - 配置启动警告偏好设置 - /reload - 重新读取 .env 文件、刷新配置并重新发现技能而无需重启。对话状态会被保留。参见 DEEPAGENTS_CODE_ 前缀 了解覆盖行为 - /theme - 打开交互式主题选择器以切换颜色主题。可用内置主题以及任何 用户自定义主题 - /update - 检查并内联安装 Deep Agents Code 更新。检测您的安装方式(uv、Homebrew、pip)并运行相应的升级命令 - /auto-update - 切换自动更新开关 - /install - 安装可选的额外组件(例如, quickjs, daytona, fireworks) - /trace - 在 LangSmith 中打开当前对话(需要 LANGSMITH_API_KEY) - /editor - 在外部编辑器中打开当前提示词($VISUAL / $EDITOR)。参见 外部编辑器 - /timestamps - 切换消息时间戳页脚 - /changelog - 在浏览器中打开 Deep Agents Code 更新日志 - /docs - 在浏览器中打开文档 - /feedback - 打开 GitHub 问题页面以提交错误报告或功能请求 - /version - 显示已安装的 deepagents-code 和 SDK 版本 - /help - 显示帮助和可用命令 - /quit - 退出应用程序
Shell commands
输入 ! 进入 shell 模式,然后输入您的命令
git status
npm test
ls -la
Keyboard shortcuts
常规
| 快捷键 | 操作 | |-|-| | Enter | 提交提示词 | | Shift+Enter, Ctrl+J, Alt+Enter, or Ctrl+Enter | 插入换行 | | @filename | 自动补全文件并注入内容 | | Shift+Tab or Ctrl+T | 切换自动批准 | | Ctrl+X | 在外部编辑器中打开提示词 | | Ctrl+N | 查看待处理通知 | | Ctrl+O | Expand/collapse the most recent tool output | | Escape | 中断当前操作 | | Ctrl+C | 中断或退出 | | Ctrl+D | 退出 |
提示词中的文本编辑
聊天输入使用标准的 readline 风格绑定:
| 快捷键 | 操作 | |-|-| | Ctrl+A or Home | 将光标移动到行首 | | Ctrl+E or End | 将光标移动到行尾 | | Ctrl+U | 从光标处删除到行首 | | Ctrl+K | 从光标处删除到行尾 | | Ctrl+W or Ctrl+Backspace | 删除左侧单词 | | Ctrl+Left / Ctrl+Right | Move cursor one word left/right |
非交互模式和管道传输
使用 -n 运行单个任务而不启动交互式 UI:
dcode -n "Write a Python script that prints hello world"
每次非交互运行都会启动一个新线程——对话历史记录不会在调用之间保留。基于文件的状态(内存、技能、配置)会被保留。
你也可以通过 stdin 管道输入。当输入被管道传输时,Deep Agents Code 会自动以非交互方式运行:
echo "Explain this code" | dcode
cat error.log | dcode -n "What's causing this error?"
git diff | dcode -n "Review these changes"
git diff | dcode --skill code-review -n 'summarize changes'
当将管道输入与 -n or -m结合时,管道内容会先显示,然后是你传递给该标志的文本。
在非交互模式下,Shell 执行默认被禁用。使用 -S/--shell-allow-list 来启用特定命令(例如, -S "pytest,git,make"), recommended 获取安全默认值,或 all 允许任意命令。
Cap turn count
Long-running or misbehaving agents in CI/CD pipelines can loop indefinitely. --max-turns N 为操作员提供硬上限,而无需接触 SDK 内部结构:
dcode -n "fix the failing tests" --max-turns 10
N 必须为正整数,并覆盖内部安全默认值(否则会限制失控循环)。当超过预算时以代码 124 退出(与 GNU timeout匹配),以便 CI 可以区分预算超支和通用故障。需要 -n 或管道式 stdin;否则以代码 2 退出。
有关基于时间的限制(而非或除了轮次限制),请参见 使用 --timeout.
Cap wall-clock time
--timeout SECONDS 对非交互运行强制执行硬性挂钟时间限制。它补充了 --max-turns (轮次计数)限制与基于时间的预算——无论哪个限制先达到都会取消代理。
# Fail fast in CI if the task takes more than 2 minutes
dcode -n "run the test suite and summarise failures" --timeout 120
# Combine with --max-turns—whichever limit is hit first stops the agent
dcode -n "refactor auth module" --timeout 300 --max-turns 20
到期时代理被取消,进程以代码 124 退出,这是 --max-turns使用的相同代码,以便 CI 统一处理这两种预算超支情况。需要 -n 或管道式 stdin;否则以代码 2 退出。
Clean output and buffering
使用 -q 获取适合管道传输到其他命令的干净输出,以及 --no-stream 在写入 stdout 之前缓冲完整响应(而非流式传输):
dcode -n "Generate a .gitignore for Python" -q > .gitignore
dcode -n "List dependencies" -q --no-stream | sort
在非交互模式下,代理被指示做出合理假设并自主继续,而不是提出澄清问题。它还倾向于使用非交互式命令变体(例如, npm init -y, apt-get install -y).
Shell execution examples
# Allow specific commands (validated against the list)
dcode -n "Run the tests and fix failures" -S "pytest,git,make"
# Use the curated safe-command list
dcode -n "Build the project" -S recommended
# Allow any shell command
dcode -n "Fix the build" -S all
使用 LangSmith 追踪
启用 LangSmith 追踪以在 LangSmith 项目中查看代理操作、工具调用和决策。
将您的追踪密钥添加到 ~/.deepagents/.env ,以便在每个会话中启用追踪,无需每次 shell 导出:
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=lsv2_...
LANGSMITH_PROJECT=optional-project-name # Specify a project name or default to "deepagents-code"
要为特定项目覆盖,请将相同的密钥添加到 .env 中的项目目录。请参阅 环境变量 了解完整的加载顺序。
如果愿意,您也可以将这些设置为 shell 环境变量。Shell 导出始终优先于 .env 值,因此这是临时覆盖或测试的好选择:
Separate agent traces from app traces
Deep Agents Code 可以生成两种类型的 LangSmith 追踪:
- -
Agent traces是 Deep Agents Code 自身的模型调用、工具调用、编排和中间件。 - -
Shell-command traces是 Deep Agents Code 在 shell 中为您运行的代码所发出的追踪,如测试、脚本或本地 LangGraph 应用。
要将 Deep Agents Code 自身的追踪发送到专用项目,请设置 DEEPAGENTS_CODE_LANGSMITH_PROJECT:
# Example value; use any LangSmith project name you want.
DEEPAGENTS_CODE_LANGSMITH_PROJECT=deepagents-code
然后为您的应用追踪配置 LANGSMITH_PROJECT :
LANGSMITH_PROJECT=customer-support-agent
例如,假设您让 Deep Agents Code 调试一个失败的 LangGraph 测试:
uv run pytest tests/test_escalation_flow.py
如果该测试使用启用了 LangSmith 追踪的应用运行,那些应用追踪由 shell 进程创建并发送到 customer-support-agent。Deep Agents Code 自身的推理和工具使用追踪发送到 deepagents-code.
您也可以使用 DEEPAGENTS_CODE_ 前缀将 LangSmith 凭据限定为 Deep Agents Code 专用。 (e.g., DEEPAGENTS_CODE_LANGSMITH_API_KEY).
Dual-write traces to a second project
要将代理追踪镜像到第二个 LangSmith 项目,请设置 DEEPAGENTS_CODE_LANGSMITH_REPLICA_PROJECTS。这对于将相同追踪同时发送到个人项目和共享团队项目很有用。
DEEPAGENTS_CODE_LANGSMITH_REPLICA_PROJECTS=team-shared
设置后且追踪处于活跃状态时,每次代理运行都会写入主项目(DEEPAGENTS_CODE_LANGSMITH_PROJECT, or deepagents-code 默认为此)和您在此命名的项目。如果不设置该变量,则照常写入单个项目。
配置后,Deep Agents Code 会显示一个状态行,其中包含指向 LangSmith 项目的链接。在支持的终端中,点击链接可直接打开。您也可以使用 /trace 来打印 URL 并在浏览器中打开。
✓ LangSmith tracing: 'my-project'