以编程方式使用文档

Deep Agents Code 使用 沙箱作为工具 模式: dcode 进程(LLM 循环、内存、工具调度)在您的机器上运行,但代理工具调用(read_file, write_file, execute等)指向远程沙箱,而不是您的本地文件系统。要将文件放入沙箱,请使用 设置脚本 或提供商的文件传输 API(请参阅 使用文件).

要深入了解沙箱架构、集成模式和安全性最佳实践,请参阅 沙箱.

Install provider dependency

每个提供商都作为可选扩展提供。在会话中使用 /install安装,或从 shell 使用 dcode --install:

LangSmith

安装时默认包含 deepagents-code。无需额外安装。

AgentCore

                    /install agentcore
                    
                    dcode --install agentcore
                    

Daytona

                    /install daytona
                    
                    dcode --install daytona
                    

Modal

                    /install modal
                    
                    dcode --install modal
                    

Runloop

                    /install runloop
                    
                    dcode --install runloop
                    

Vercel

                    /install vercel
                    
                    dcode --install vercel
                    

要一次性安装所有沙箱提供商的支持,请在会话中使用 all-sandboxes extra: /install all-sandboxes ,或 dcode --install all-sandboxes 从 shell。

Set provider credentials

LangSmith

                

AgentCore

                # Only when using temporary/STS credentials:

                

Daytona

                

Modal

                modal setup
                

Runloop

                

Vercel

                

在 Vercel 上运行时, OIDC 凭据会自动使用。

Run Deep Agents Code with a sandbox

LangSmith

                dcode --sandbox langsmith
                

AgentCore

                dcode --sandbox agentcore
                

Daytona

                dcode --sandbox daytona
                

Modal

                dcode --sandbox modal
                

Runloop

                dcode --sandbox runloop
                

Vercel

                dcode --sandbox vercel
                

沙箱标志和示例

标志描述
--sandbox TYPE要使用的沙箱提供商。内置: langsmith, agentcore, daytona, modal, runloop, vercel (默认: none). Third-partyconfig-declared 也接受提供商。传递 --sandbox 不带值以使用 [sandboxes].default 来自您的配置
--sandbox-id ID按 ID 重用现有沙箱,而不是创建新的。跳过创建和清理。仅适用于支持按 ID 重新连接的提供商。请参阅您的沙箱文档了解更多
--sandbox-snapshot-name NAME使用或创建沙箱快照。支持 langsmithrunloop (以及任何宣传快照支持的第三方提供商)。不能与 --sandbox-id
--sandbox-setup PATH创建时在沙箱内运行的设置脚本路径

每个提供商都在沙箱中公开一个默认工作目录。设置脚本和 execute 命令从该目录运行,除非被覆盖:

提供商工作目录
LangSmith/root
AgentCore/tmp
Daytona/home/daytona
Modal/workspace
Runloop/home/user
Vercel/vercel/sandbox

Examples:

# Create a new LangSmith sandbox
dcode --sandbox langsmith

# Reuse an existing sandbox (skips creation and cleanup)
dcode --sandbox runloop --sandbox-id dbx_abc123

# Run a setup script after sandbox creation
dcode --sandbox modal --sandbox-setup ./setup.sh

# Use the provider set as [sandboxes].default in config
dcode --sandbox

可插拔提供商

上述六个内置提供商并非唯一选项。Deep Agents Code 从三个来源发现沙盒提供商,因此您可以使用其他软件包提供的提供商,或声明您自己的提供商而无需更改 Deep Agents Code:

  1. **内置提供商** — 上述精选集合,安装为 deepagents-code extras.
  2. **第三方提供商** — 通过 Python 入口点由其他已安装的包发布。
  3. **配置声明的提供商** — 在您的中定义 ~/.deepagents/config.toml.

当两个来源定义相同的提供商名称时, **配置优先于第三方入口点,第三方入口点优先于内置**,因此您的配置文件始终可以覆盖发现。

第三方提供商

包可以在 deepagents_code.sandbox_providers 入口点组下发布沙盒提供商。安装这样的包后,其提供商可供 --sandbox 自动使用——无需配置:

# Install the package that publishes the provider, then use it
dcode --sandbox acme

例如, langchain-e2b 包发布了一个 e2b 提供商(参见 沙盒集成)。将其作为包安装,设置您的凭证,然后选择它:

dcode --install langchain-e2b --package

dcode --sandbox e2b

如果您传递的 --sandbox 名称未安装或未声明,Deep Agents Code 会列出可用的提供商并解释如何安装或配置缺失的提供商。

Publishing a sandbox provider

要分发提供商以便用户安装您的包后可以运行 dcode --sandbox <name> ,请实现一个 SandboxProvider 子类并将其注册到 deepagents_code.sandbox_providers 入口点组下。

重写 metadata 属性,以便 Deep Agents Code 可以在不实例化提供商的情况下显示您的工作目录和功能标志:

    from deepagents_code.integrations.sandbox_provider import (
        SandboxInstallHint,
        SandboxProvider,
        SandboxProviderMetadata,
    )


    class AcmeProvider(SandboxProvider):
        @property
        def metadata(self) -> SandboxProviderMetadata:
            return SandboxProviderMetadata(
                name="acme",
                working_dir="/workspace",
                install=SandboxInstallHint(kind="package", name="acme-dcode-sandbox"),
                supports_sandbox_id=True,
                supports_snapshot_name=False,
            )

        def get_or_create(self, *, sandbox_id=None, **kwargs):
            ...  # return a SandboxBackendProtocol

        def delete(self, *, sandbox_id, **kwargs):
            ...
    

实现 get_or_createdelete;异步调用者由基类处理。然后在您包的 pyproject.toml:

    [project.entry-points."deepagents_code.sandbox_providers"]
    acme = "acme_sandbox.provider:AcmeProvider"
    

中注册入口点 metadata 属性被省略时,使用通用默认值(/workspace,不支持快照)。

配置声明的提供商

对于您不想打包的内部或本地提供商,请在 [sandboxes.providers] in ~/.deepagents/config.toml下声明它。这类似于 任意模型提供商 并使用相同的 class_path 信任模型。

[sandboxes]
# Used when you run `dcode --sandbox` with no value.
default = "acme"

[sandboxes.providers.acme]
# Required: the provider class to import, in module.path:ClassName format.
class_path = "acme_sandbox.provider:AcmeProvider"
# Default working directory inside the sandbox.
working_dir = "/workspace"
# Package suggested when the provider's dependencies are missing.
package = "acme-dcode-sandbox"
# Capability flags (defaults: supports_sandbox_id = true, supports_snapshot_name = false).
supports_sandbox_id = true
supports_snapshot_name = false

# Extra keyword arguments forwarded to the provider's get_or_create().
[sandboxes.providers.acme.params]
region = "us-east-1"

格式的完全限定提供商类名。Deep Agents Code 导入并实例化此类作为提供商。 module.path:ClassName 沙盒内的默认工作目录。默认为

沙盒内的默认工作目录。默认为 /workspace.

当提供商的依赖缺失时,在错误消息中建议的包名。

是否 --sandbox-id 允许此提供商的重新附加。默认为 true.

是否 --sandbox-snapshot-name 允许此提供商。默认为 false.

转发到提供商的额外关键字参数 get_or_create().

重复使用内置提供程序名称的配置项 **会覆盖** 该内置提供程序,同时保留其依赖项预检。格式错误的条目会跳过并发出警告,而不是导致启动崩溃。

设置脚本

使用 --sandbox-setup 可在沙箱创建后在其中运行 shell 脚本。这对于克隆仓库、安装依赖项和配置环境变量很有用。

#!/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'


cd $HOME/workspace
EOF
source ~/.bashrc

Deep Agents Code 使用本地环境变量展开 ${VAR} 在设置脚本中的引用。请将密钥存储在本地 .env 文件中,以便设置脚本访问。