Skip to content
LangChain 文档版本 跟随上游 源快照 bee1dc67 更新于 2026-10-08

审批模式

选择 Deep Agents Code 通过 Manual、Auto 和 YOLO 模式审查受控工具调用的方式

默认情况下,Deep Agents Code 在运行可能产生重大影响的动作之前会先征求你的批准。这些动作被称为受控动作(gated actions),包括:

  • 编辑或删除文件(write_file、edit_file、delete)
  • 运行 shell 命令(execute)
  • 发起网络请求(web_search、fetch_url)
  • 把工作委派给子智能体(task)

只读工具(例如 ls、read_file、glob 和 grep)始终无需提示即可运行。审批模式让你选择每个会话需要对这些受控动作施加多大程度的监督。

选择模式

模式作用
Manual(默认)每个受控动作执行前都会征求批准
Auto自动批准例行动作;让模型审查不确定的部分;在多次拒绝或失败之后回退为交由你决定
YOLO完全不经审查地运行受控动作

WARNING

Auto 是面向本地编码智能体的一种授权启发式机制。它不是沙箱隔离,不是操作系统边界,也不保证模型生成的动作是安全的。

启用 Auto

Auto 仅在交互式、非沙箱会话中可用。

Launch with Auto

bash
dcode -y

或者在 ~/.deepagents/config.toml 中将其设为默认值:

toml
[startup]
mode = "auto"

你也可以在会话中途通过 Shift+Tab 循环切换到 Auto。

启用 YOLO

YOLO 会在完全不经审查的情况下运行受控动作。仅当你接受智能体可以不经询问就采取任何动作时,才使用它。

Launch with YOLO

bash
dcode --yolo

在收到提示时接受一次性的风险确认。该确认会保存在本地,因此之后再次启动时不会再看到它。

或者在 ~/.deepagents/config.toml 中将其设为默认值:

toml
[startup]
mode = "yolo"

按 Shift+Tab 可在 YOLO → Manual → Auto → YOLO 之间循环切换。设置 startup.yolo_switcher = false 可将 YOLO 从循环中去掉。

Auto 的工作原理

Auto 沿用了与 Manual 相同的受控动作规则,但改变了这些动作的审查方式。它分为两个阶段:

  1. 例行动作自动运行。 写入 src/parser.py 这类源文件,或执行 git status 这类只读 Git 命令,都无需提示即可继续。而 .github/workflows/ci.yml 这类敏感目标,或 git commit 这类会改变状态的命令,则进入下一阶段。
  2. 其余动作交由模型审查。 对于任何明显不属于例行范围的动作,当前模型会检查该动作是否符合你所要求的结果。即使你没有逐一指明实现细节,为达成该结果所合理必需的常规步骤也可以继续执行。高风险影响(例如把本地内容发送到未配置的目的地)仍然需要显式授权。如果模型拒绝某次调用,智能体会收到一条错误结果,并可以据此修改自己的计划。

在多次拒绝或分类器失败之后,Auto 会停止,并针对下一批动作显示常规的批准提示,然后继续以 Auto 模式运行。

Auto 决策流程
flowchart TD
    A[Model proposes tool calls] --> B{Covered by the approval policy?}
    B -->|No| X[Existing tool behavior is unchanged]
    B -->|Yes| S{Still in Auto, with readable history?}
    S -->|No| J[Open the approval UI]
    S -->|Yes| C{Narrow deterministic allow?}
    C -->|Yes| R[Execute without a classifier call]
    C -->|No| D[Build one structured decision batch]
    D --> H{Already reviewed, or earlier denials or failures require human review?}
    H -->|Yes| J
    H -->|No| E[Active model reviews effects against the user request]
    E -->|Allow| R
    E -->|Deny| Q{Total-denial threshold reached?}
    Q -->|No| F[Return a sanitized error result]
    Q -->|Yes| J
    E -->|Unavailable or invalid| G[Return a compact unavailable result]
    F --> I[Agent can revise its plan]
    G --> I
    J -->|Approve| R
    J -->|Reject| K[Return a rejection result]
    J -->|Switch to Manual| L[Persist Manual, then review the full gated batch]
    R --> M[Reconcile the result and continue]
    K --> M
    I --> M
    L --> M

    classDef trigger fill:#F6FFDB,stroke:#6E8900,stroke-width:2px,color:#2E3900
    classDef process fill:#E5F4FF,stroke:#006DDD,stroke-width:2px,color:#030710
    classDef decision fill:#FDF3FF,stroke:#7E65AE,stroke-width:2px,color:#504B5F
    classDef output fill:#EBD0F0,stroke:#885270,stroke-width:2px,color:#441E33
    classDef alert fill:#F8E8E6,stroke:#B27D75,stroke-width:2px,color:#634643

    class A trigger
    class B,S,C,H,Q decision
    class J output
    class X,R,M process
    class D,E,I,L process
    class F,G,K alert

选择分类器模型

如果你没有配置 Auto 分类器,Deep Agents Code 会根据主模型的服务商选择一个延迟更低的默认模型:

主模型服务商默认分类器
Anthropicanthropic:claude-sonnet-5
Google AIgoogle_genai:gemini-3.8-flash
Google Vertex AIgoogle_vertexai:gemini-3.8-flash
OpenAIopenai:gpt-5.6-luna
OpenAI Codexopenai_codex:gpt-5.6-luna

对于其他服务商,分类器会使用主智能体模型。你可以选择不同的模型,以便在 Auto 审查过程中控制成本和延迟。

可以通过以下任一来源设置分类器模型:

运行 /auto model 打开交互式模型选择器,并为当前会话选择一个分类器模型。若要直接指定模型,请把它作为参数传入:

txt
/auto model openai:gpt-5.6-luna
/auto model clear

使用 /auto model clear 可恢复为继承主模型。


优先级顺序
  1. /auto model TUI 命令:对当前会话立即生效。
  2. --auto-classifier-model 参数:在启动时设置分类器(仅限交互式 TUI 会话)。
  3. DEEPAGENTS_CODE_AUTO_CLASSIFIER_MODEL 环境变量:在启动时生效。
  4. config.toml 中的 [models].auto_classifier:你的持久化默认值。
  5. 服务商默认值:当主模型使用受支持的服务商时,采用上面列出的低延迟模型。
  6. 继承:对于没有内置默认值的服务商,使用主智能体模型。

未设置的值会向下落到下一个来源。使用 /auto model clear 或空的 CLI 参数显式清除分类器时,会选择主智能体模型,而不是服务商默认值。

当 Auto 开启时,TUI 会显示正在由哪个模型进行审查,/auto model 的输出中同样会显示。

在产生副作用之前重新校验

决策计划与线程、模式、批次以及确切的受控调用绑定。状态缺失或无效、模式竞态或重放都会回退为人工审查。例如,如果你在分类器审查进行过程中切换到 Manual,那么此前的 Auto 决策不会静默执行,而是会打开常规的批准界面。

了解适用范围与限制

  • Manual 批准菜单可以为当前线程启用 Auto。阈值回退可以永久切换到 Manual,也可以在保持 Auto 启用的同时只做一次一次性审查。
  • 当前模型并不是独立的安全权威。MCP 只读注解 是作为一种经过权衡的 beta 取舍而被信任的。
  • 父级别的 Auto 审查不覆盖委派的子智能体内部执行的动作,也不覆盖范围更广、显式配置的 js_eval 扇出。即使 TUI 隐藏了分类器的输入与输出,模型服务商和追踪后端仍可能观察到它们。

Auto 和 YOLO 的可用范围

Auto 和 YOLO 都是交互模式下的功能。Auto 仅在交互式、非沙箱会话中可用;远程 --sandbox 会强制回退为 Manual。YOLO 同样仅限交互模式,并且无论是否处于沙箱都需要风险确认。无头运行使用 fail-closed 的 MCP 路由和 --shell-allow-list 来访问 shell。

在非交互模式下(-n 或通过管道传入 stdin),-y/--auto-approve 和 --yolo 会被忽略。无头运行使用 fail-closed 的 MCP 路由和 --shell-allow-list 来访问 shell。

跨会话记住上一次的模式

当没有任何参数或已配置模式适用时,Deep Agents Code 会恢复上一次选择的 Manual 或 Auto 模式。YOLO 必须显式选择。参见启动审批模式。

关于参数与配置的优先级,参见启动审批模式。

另请参阅


BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。