本页内容

本页内容

自动化

自动化有效负载

作业运行什么以及在哪里运行:四种有效负载类型、它们的标志以及四种会话执行样式。 Automations 指南的一部分。

载荷

每个作业都恰好携带一种载荷类型,由标志位决定:

有效载荷 标志 跑步
系统事件 --system-event <text> 入队到主会话,本身不调用模型
代理消息 --message <text> 一个由模型支持的代理轮次
命令 --command <shell> 或 --command-argv <json> Gateway 主机上的 shell/process,不调用模型
脚本 --script <file|-> 使用所属 agent 工具的无头代码模式脚本

系统拥有的监控作业是网关聚合的,无法通过 CLI 或 API 创建或编辑。 heartbeat 类型为每个启用心跳的代理创建一个心跳监视器作业(请参阅 Heartbeat)。监控作业出现在openclaw cron list中;使用 --all 包含禁用的行。

每周技能研讨会馆长(声明密钥 skill-collection-review:<agentId> 和较旧的 skillCollectionReview 有效负载类型)已退休。网关在加载 cron 存储时删除这些存储的行并且不创建替换;声明键命名空间保持保留。习得技能清理现在无需时间表即可运行;请参阅 未使用技能清理 。

代理轮次选项

--messagestring必填

提示文本(isolated/current/custom-session 作业必需)。

--modelstring

模型覆盖;必须解析为允许的模型,否则运行将因校验错误而失败。

--fallbacksstring

每个作业的后备模型列表,例如 --fallbacks openai/gpt-6-astra,openrouter/meta-llama/llama-3.3-70b-instruct:free。通过 --fallbacks "" 进行严格运行,没有后退。

--clear-fallbacksboolean

在 automations edit 中,移除每个作业的回退覆盖,使作业遵循已配置的回退优先级。不能与 --fallbacks 组合使用。

--clear-modelboolean

在 automations edit 上,删除每个作业模型覆盖,以便作业遵循正常的自动化模型优先级(存储的自动化会话覆盖,否则 agent/default 模型)。不能与 --model 结合。

--thinkingstring

思考级别覆盖(off|minimal|low|medium|high|xhigh|adaptive|max|ultra)。可用级别仍取决于所选模型和 agent 运行时。

--clear-thinkingboolean

在 automations edit 中,移除每个作业的思考级别覆盖。不能与 --thinking 组合使用。

--light-contextboolean

跳过工作区引导文件注入。

--toolsstring

限制作业可以使用哪些工具,例如 --tools exec,read。传递 --tools "" 以获得空允许列表,该列表将禁用所有代理工具,包括条件触发器使用的工具。

可以运行工具的新作业始终存储显式的工具策略。不使用 --tools(或使用 *)创建的作业存储 *:每次运行都使用所有者会话的当前工具策略,包括其组、代理、沙箱和运行时限制。请求有限列表的代理仅限于其创建回合可用的工具,并且无法扩大存储的列表。 automations edit --clear-tools 恢复 *。早于显式工具策略的现有作业将保留其当前行为,直到显式编辑其工具策略或重新创建作业。代理创建的脚本有效负载、条件触发器以及其创建者捕获了 Codex 应用程序权限的作业改为存储创建回合的工具:脚本仅通过其列表名称的服务器到达 MCP,并且应用程序权限绑定到该列表。

早期版本在代理创建的代理轮次上保存了创建轮次的工具列表的副本。该副本可能会缺少创建者拥有的工具,例如本机 shell。这些作业现在使用其所有者对话的工具运行,例如 * 作业;存储的副本保持原样。创建者获得了 Codex 应用程序权限的作业将继续使用其副本。

将帐户绑定作业更改为不运行工具的有效负载,然后再更改回代理轮流会保留其帐户限制。有效负载转换不会将该作业重新授权为操作员创建的作业。

Doctor 仅检查代理轮次、脚本有效负载和带有条件脚本的作业的计划工具权限。没有条件脚本的命令负载不需要代理工具出处;其保留账户限制保持不变。

管理编辑无法将丢失的策略元数据恢复为操作员权限。对于丢失策略的遗留作业,经过身份验证的操作员可以明确地重新授权它,或者经过身份验证的创建者可以使用新的工具上限重新创建它。

当创建者的 exec 功能固定到网关时,自动化也会保留该目标。对于 tools.exec.host: "auto",保存的目标决定放置。冲突的当前显式主机设置或所需的沙箱隔离会阻止该命令,而不是将其移动到另一台主机。当前的工具和审批政策仍然适用。

借助工具帽中的 message,计划的座席轮次可以读取支持的通道插件上的消息和通道信息,而无需入站聊天。操作员创建的作业使用当前操作员读取策略。代理创建的作业保留其记录的创建者来源和帐户,并且通道的委派读取限制仍然适用。传送设置不授予读取访问权限。

即使没有交互式发送者,预定的代理轮流也可以检查自己的作业并在完成后将其删除。此自我范围的 automations 工具不会授予管理员访问权限或对其他作业的控制权,并且明确的工具策略拒绝仍然适用。

请求通过准入后,手动运行使用与计时器触发运行相同的计划执行上下文。结束开始运行的聊天回合或工具调用不会使作业的工具访问权限过期。该作业仍使用其存储的权限和当前的工具限制;手动启动它不会授予调用者对该作业的额外权限。

当每个新的计划消息调用开始时,将检查当前的全局、代理、配置文件和提供程序工具策略。配置更改适用于以后的调用;已接受的调用保留其配置。禁用或删除作业、撤销其 message 功能或撤销其调用者或插件权限会阻止该事件进一步受影响的读取,包括在另一个提供程序请求或结果交付之前的待处理读取。重新启用作业不会恢复事件被撤销的访问权限。

由经过验证的本地管理员创建的新帐户绑定作业会保留经过身份验证的本地源,从而允许提供商允许通过其保存的创建者帐户进行读取。从同一本地源编辑其 toolsAllow 上限会明确重新授权现有作业。描述、显示标签和精确的无操作编辑保留记录的源。对面向模型的名称、提示、工具、计划或其他可执行行为的更改需要新的源授权,并在不存在时清除旧源。单独的远程管理无法提供本地源授权,并且没有可证明来源的旧作业仍会被阻止,直到重新授权或从新的授权源重新创建为止。

计划轮次还可以发送 edit、delete、pin 和 unpin Discord 消息。代理创建的作业使用其记录的创建者帐户和 Discord 的委派目标限制。操作员创建的作业使用 Discord 的操作员目标策略。可信操作员作业还可以使用 channel-edit,包括现有的通道和线程编辑选项;帐户创建的作业不继承操作员管理。

对于这些写入,作业的工具策略中需要 message、启用的帐户和操作以及机器人所需的 Discord 权限。使用更新的 Discord 插件和 计划写入支持 。

当经过身份验证的 Discord 轮流授权其当前定义时,帐户绑定作业可以使用 Discord channel-edit。 OpenClaw 私下保留该请求者的 Discord 帐户和发送者身份,并且 Discord 的当前频道或线程权限必须允许编辑。原始会话创建者和配置的 OpenClaw 所有者不能替代这些本机权限。

来自作业所属对话和帐户的可执行编辑将作业绑定到当前授权的编辑者。这包括提示、模型、名称、计划、交付和工具策略。没有匹配的经过身份验证的 Discord 请求者的可执行编辑会清除此权限并停止旧事件中的进一步本机操作。描述和显示标签的更改保留了它。

较旧的作业、由较早的作者编辑的作业以及请求者授权被清除的作业需要新的授权才能运行 channel-edit。从原始 Discord 对话和帐户中,要求代理使用包含 message 的显式有限 toolsAllow 列表编辑作业,或在那里重新创建它。如果其执行授权也丢失,则从该对话中重新创建它;管理访问本身并不能恢复丢失的授权。编辑者必须已经具有自动化管理访问权限。其他工作行为维持现有政策; CLI 编辑无法发明 Discord 请求者。这些请求者事实从公共作业结果中被省略,并且不需要新的设置。

通道名称查找和后续写入请求保留当前作业和插件权限。配置更改适用于下一次消息调用;禁用或缩小作业本身会停止以后的请求并在当前调用中重试。如果授权在响应挂起时结束,则已确认的写入仍会返回其结果。

推断账户连续性

新的隔离代理轮转作业私下保留其选择的存储推理帐户和兼容的身份验证路由。 OAuth 和 API 密钥可以一起保持启用状态:更改交互默认值、配置文件顺序或作业的普通模型选择不会切换作业的帐户或计费路线。自动所有权与明确的用户个人资料 pin 仍然不同。允许同一授权内的Token刷新;删除、替换或撤销该授权会停止作业,而不是退回到另一个帐户。模型和路线兼容性仍然适用。

要有意更改帐户,请使用 model/profile 选择更新作业,例如 --model "openai/gpt-4.1@work"。这获得了新的授权。对于没有记录推理所有者的旧作业,openclaw doctor --fix 记录作业下一次未绑定运行将使用的帐户:显式选择,或者运行正常帐户顺序中的第一个帐户,忽略临时速率限制冷却时间。设置 auth.order 后,这是每次早期运行使用的帐户;如果没有它,则根据上次使用情况在相同类型的帐户之间轮换运行,Doctor 会记录其中一个。当多个帐户符合条件时,Doctor 会命名其他帐户并发出更改选择的命令。 Doctor 使用正常的自动化模型选择,保留继承的默认值和后备列表,保持现有绑定不变,并在提交之前备份 cron 状态。丢失的帐户以及需要所有者授权的个人帐户将与特定于工作的采用说明保持不变。

托管更新和标准容器入口点在激活之前运行修复 Doctor。在启动网关之前,手动源升级必须包括 openclaw doctor --fix。 Startup 在调度之前报告可能未迁移的主机帐户作业;它不会捕获凭据或重写作业。

环境或提供程序配置中的密钥没有可记录的存储帐户。此类路线上的作业保持未绑定状态并在该键上运行;一旦存储的帐户符合其路线的条件,作业就会根据采用指令停止,而不是切换到该帐户。创造就业机会也遵循同样的规则。帐户拒绝会结束运行;它永远不会退回到另一个模型或提供商。无凭据模型无需帐户即可使用。本机运行时拥有的作业保留其运行时的现有授权检查,并且本机连接无法默默地替换作业记录的主机管理推理帐户。来自授权本机创建者的显式更新可以采用其运行时权限。将作业转移给具有不同凭证所有者的代理需要明确采用帐户。工具和交付帐户与推理帐户保持分离。

--model 会设置作业的主模型;它不会替换会话中的 /model 覆盖,因此已配置的回退链仍会叠加其上。无法解析或不被允许的模型会使运行以显式校验错误失败,而不会悄悄回退到默认值。如果某个作业有 --model 但没有显式或已配置的回退列表,OpenClaw 会传入一个空的回退覆盖,而不是悄悄把 agent 主模型追加为隐藏的重试目标。

提供者超时后的回退将继续相同的计划轮次并重用其保存的用户输入。失败的尝试不会完成转弯或重复预定的提示。

选择适合工作难度的模型,而不是代理的默认模型。例行自动化(摘要、分类、分类、状态检查)在较轻的模型上运行良好,每次运行更便宜、更快,并且在整个计划中累计。为需要深度推理的作业保留默认模型,并在轻型主节点因故障而升级时使用 --fallbacks。

孤立作业的模型选择优先级,从高到低:

  1. 每个作业载荷中的 model(显式配置;不允许的模型会使运行失败)
  2. Gmail hook 模型覆盖(仅当运行来自 Gmail 且该覆盖被允许时)
  3. 用户选择的已存储自动化会话模型覆盖
  4. Agent/default模型选择

Fast 模式遵循解析后的实时选择。孤立自动化按以下顺序解析:已存储会话中的 fastMode、每个 agent 的 agents.entries.*.fastModeDefault、全局的 agents.defaults.fastModeDefault,然后是所选模型的 params.fastMode。自动模式使用模型的 params.fastAutoOnSeconds 截止时间,默认为 60 秒。

当运行时报告令牌使用情况而不产生成本时,自动化估算将使用所选代理的本地 models.json 价格以及为该运行保留的模型元数据。

如果运行遇到实时模型切换切换,调度程序会使用切换后的 provider/model 重试,并为活动运行保留该模型选择。具有记录的推理帐户的作业保留该帐户及其兼容的身份验证路由;交换机不能采用不同的帐户。重试次数是有限的:在初始尝试加上 2 次切换重试后,调度程序将中止而不是循环。

在隔离运行开始之前,OpenClaw 检查已配置的 api: "ollama" 和 api: "openai-completions" 提供程序(其 baseUrl 为环回、专用网络或 .local)的可访问本地端点。此预检会遍历作业配置的后备链,并且仅在每个候选者均无法访问时才标记运行 skipped; --fallbacks "" 严格限制主要模型。关闭端点将运行记录为 skipped,并出现明显错误,而不是启动模型调用。结果每个端点(不是每个作业或模型)缓存 5 分钟,因此共享死机本地 Ollama/vLLM/SGLang/LM Studio 服务器的许多到期作业只需要一次检查而不是请求风暴。跳过预检运行不会增加执行错误退避。他们使用现有的故障警报策略,而不需要failureAlert.includeSkipped;重复作业保持启用状态,并在稍后的预检发现可以访问提供程序时自动恢复。

客户端预检超时不会被缓存。下一次计划的运行会再次检查端点,而不是从另一次运行继承超时。

本地检查打开和关闭 TCP 连接,而不发送 HTTP 请求或提供者凭据,因此经过身份验证的本地服务器不会记录虚假的 /models 授权失败。 TLS,认证和模型错误通过推理处理。通过托管代理路由的端点将连接检查推迟到推理,而不是测试直接连接。

命令载荷

命令有效负载在网关调度程序内运行脚本,而无需启动模型支持的轮次。它们在网关主机上执行,捕获 stdout/stderr,在作业的运行历史记录中记录运行,并重用相同的 announce、webhook 和 none 交付模式作为代理轮流作业。

bash
openclaw automations create "*/15 * * * *" \  --name "Queue depth check" \  --command "scripts/check-queue.sh" \  --command-cwd "/srv/app" \  --announce \  --channel telegram \  --to "-1001234567890"

--command <shell> 会存储为 argv: ["sh", "-lc", <shell>]。使用 --command-argv '["node","scripts/report.mjs"]' 可进行精确的 argv 执行,而无需 shell 解析。可选的 --command-env KEY=VALUE(可重复)、--command-input、--timeout-seconds(默认 10 分钟)、--no-output-timeout-seconds 和 --output-max-bytes 用于控制进程环境、stdin 和输出边界。

投递的文本源自进程输出:非空 stdout 优先;如果 stdout 为空而 stderr 非空,则投递 stderr;如果两者都存在,调度器会发送一个简短的 stdout:/stderr: 区块。退出代码为 0 时,运行记录为 ok;非零退出、信号中断、超时或无输出超时会记录为 error,并可能触发失败告警。仅打印 NO_REPLY 的命令会使用常规自动化静默标记抑制机制,不会向聊天发送任何内容。

当运行截止时间停止命令时,运行历史记录在有界进程清理后保留其捕获的输出和命令超时原因。该截止日期后不会开始完成交付。

脚本载荷

脚本有效负载在与触发脚本相同的代码模式执行器中无头运行,无需启动会话代理轮次。它们默认可用;设置 cron.triggers.enabled: false 将禁用脚本有效负载以及条件触发脚本和流计划的创建和执行。脚本作业仅支持 main 和 isolated 会话目标。

脚本仅获取自作用域的 automations 操作(状态、列表、获取、删除、运行和 next_check),而没有添加、更新、运行或唤醒。要稍后恢复对话,请改为安排 agentTurn。

bash
openclaw automations create "0 * * * *" \  --name "Hourly queue check" \  --script ./automation/check-queue.js \  --script-timeout-seconds 300 \  --script-tool-budget 50 \  --session isolated \  --announce

使用 --script <file|-> 从文件或标准输入读取 JavaScript。 CLI 保留文件路径中的前导和尾随空格;将路径引用为一个 shell 参数。超时默认为 300 秒,上限为 900;工具预算默认为 50 次调用,上限为 200 次。这些有效负载预算与较小的触发门评估预算是分开的。

脚本有效负载可以将配置的 MCP 服务器工具调用为 MCP.<server>.<tool>({ ...input }),就像交互式代码模式一样。 MCP 是按服务器选择加入的:使用精确工具(例如 wispr-flow__search_meetings)或服务器范围的 glob(例如 wispr-flow__*)来命名作业 toolsAllow (--tools) 中的每个服务器。通配符 *、缺失的 toolsAllow、没有服务器前缀的 glob 或从未提及 MCP 的脚本不会启动服务器。在指定服务器内,拥有代理的工具策略仍然适用。每次运行都会为指定服务器启动自己的运行时,根据脚本超时计算连接时间,根据工具预算计算每次调用,并在运行结束时退出运行时。 MCP 中不存在无法启动的命名服务器;如果脚本失败,则运行错误以 MCP server "<name>" is unavailable: <reason> 结束。有关共享详细信息,请参阅 事件触发器。

脚本可以返回一个包含以下可选字段的对象:

  • notify:通过作业的 announce、webhook 或 none 投递模式发送的文本。若省略,则不发送任何内容。对于 main 作业,该文本会变成一个系统事件。
  • wake:"now" 会在入队 notify(或一个紧凑的完成事件)后立即请求一次 heartbeat;"next-heartbeat" 会将事件安排到下一次 heartbeat。
  • state:JSON 状态,上限为 16 KB,且仅在成功运行后持久化。下一次运行会收到其冻结副本作为 trigger.state,与触发脚本一致。由于该命名空间只有一个持久化拥有者,因此脚本载荷不能与同一作业上的条件触发器组合使用。
  • nextCheck:例如 "15m" 这样的持续时间。它仅对启用了 pacing 的作业有效,并使用与代理轮次提议相同的 pacing 限制。

抛出异常、超时、工具预算耗尽、结果无效,以及未启用 pacing 却使用 nextCheck,都属于正常的自动化运行错误:它们会进入运行历史,触发退避和失败告警处理,但不会持久化返回的状态。

插件重新加载会使缓存的脚本准备无效。如果插件在安装过程中退出,OpenClaw 在启动脚本之前会在原始截止日期内刷新工具一次。脚本启动后的失败永远不会触发此设置重试。如果刷新失败,运行历史记录和失败警报将说明自动安装恢复失败并且脚本未运行。

更改正在运行的作业的脚本有效负载或保存的状态可以保护旧脚本返回状态的编辑,包括网关重新启动后恢复完成时的情况。完整的运行仍然保留着它的历史。

创作重复作业

重复作业会在每次火灾时重新运行相同的指令,因此模型从头开始计算的任何内容每次运行都会花费相同的时间和令牌。保留模型进行判断,将可重复的部分移入代码中:

  • 将列表和比较、重复数据删除以及检查点或水印放入有效负载在单个 exec 调用中运行的工作区脚本中。
  • 将详细说明保留在脚本旁边的工作区文件中,并让消息引用它(例如,“遵循 scripts/<job>.md”),因此大多数修复只需要编辑工作区文件,而不需要更新作业。
  • 让消息名称包含运行应使用的确切工具 ID 和参数形状,而不是要求模型发现它们。
  • Cap toolsAllow 运行实际需要的工具。
  • 当脚本可以决定无事可做时,请使用条件触发器、命令有效负载或脚本有效负载,以便安静的火灾跳过模型。仅当 toolsAllow 命名(<server>__<tool> 或 <server>__*)时,脚本才能调用已配置的 MCP 服务器。当 cron.triggers.enabled 为 false 时,触发器和脚本负载不可用。
  • 当运行失败时,使其失败,而不是自己发布错误:从触发器或脚本有效负载 JavaScript 抛出,或从命令有效负载退出非零值。返回错误字段的脚本仍然会成功。调度器拥有失败统计:只有失败警报等待连续失败的运行;运行自己的输出仍然遵循作业的交付设置。

执行样式

计划自动化中的 Codex apps

Codex-created 自动化可以保留经过身份验证的创建者线程可用的应用程序 ID 和权限上限。在执行时,OpenClaw 需要相同准备的 Codex 配置文件和帐户,然后根据当前应用程序策略缩小存储的上限。撤销的应用程序、account/runtime 更改和交互式审批要求停止执行并显示恢复消息;他们永远不会退回到更广泛或不同的凭据。没有捕获的应用程序信封的旧作业将继续其普通的非应用程序行为;仅当需要 Codex 应用程序访问权限时才重新创建或重新授权。请参阅 Native Codex 插件。

样式 --session 值 运行于 最适合
主会话 main 业主智能体主要会话 提醒、系统事件
隔离会话 isolated 专用 cron:<jobId> 报告、后台例行任务
当前会话 current 分离;致力于与创作相关的对话 上下文感知的重复性工作
自定义会话 session:custom-id 持久化的命名会话 基于历史记录构建的工作流

当创建请求携带会话上下文时,Agent-turn 作业默认使用创建它们的对话。没有会话键的调用方(包括未提供会话键的 CLI 和 API 调用方)会回退到 isolated。系统事件和心跳仍默认使用 main;命令和脚本负载仍默认使用 isolated。

对于 announce,代理、命令和脚本结果属于接收它们的聊天或主题。不同的传递目标得到结果而不是创建对话;如果没有外部路由,则创建会话会接收它。孤立的运行仍然不会读取该对话的历史记录。请参阅 自动化交付 以进行生成检查和重复预防。

主会话、当前会话、独立会话、自定义会话

主会话作业将系统事件排队到所属代理的主会话中,并可选择唤醒心跳(--wake now或--wake next-heartbeat)。该事件使用该会话的现有上下文和上次传递上下文进行处理。内部自动轮换不会延长每日或闲置重置的新鲜度;只有可见的用户活动才会更新会话新鲜度。 Current-session 作业在分离的运行会话中执行,读取创建作业时捕获的对话的有界尾部,并将最终可见的辅助结果传递到解析的目标(未配置外部路由时的创建对话)。 Isolated 作业通过新会话运行专用代理轮流。 自定义会话 (session:xxx) 在运行过程中保留上下文,从而实现基于先前摘要的每日站会等工作流程。

current 绑定会话上下文,而不是原始代理执行或其工作树;宣布结果属于已解决的交付目标。分离运行具有自己的会话标识,并使用计划代理的工作区和捕获的工具限制。它不会继承对话的云工作人员放置。发送到作业的 cron 会话的消息会处理其最新的分离运行,与绑定的对话无关。如果重新分配该密钥,则通过该稳定 cron 密钥发送的飞行轮次将被取消。提示中特定于任务的签出路径不会授予对其的访问权限。在使用作业继续存储库工作之前,请验证其执行环境是否可以访问所需的签出和工具;否则,将工作保留给其现有执行所有者。提交给对话的结果本身并不恢复原始代理。

自定义会话代理在准备或重置其上下文之前会等待该会话中的活动工作,因此计划的蜱不能使正在进行的压缩无效。

要稍后返回此对话(例如,重新检查 CI),请使用 payload: { kind: "agentTurn", message: "Instructions for your next turn" } 和 sessionTarget: "session:<your session key from Runtime>" 添加一次性 at 作业。它在具有相同历史记录的现有对话中运行并保存了 workspace/worktree.

自定义会话代理轮流使用现有会话的已保存工作区和工作目录,包括其托管工作树。请求者范围内的作业只能将已保存的工作空间用于其所属的对话;受信任的操作员安排的作业可以针对另一个对话的已保存工作空间。丢失、停用或不匹配的工作树会停止运行,而不是返回到代理的默认工作区。文件系统遏制和作业工具限制仍然适用;作业提示中的路径不授予访问权限。持久会话翻转保留已保存的工作区绑定、权限模式、包含根和继承的工具限制;分离的运行不会继承此工作空间上下文。没有现有会话的新 session:custom-id 在已配置的代理工作区中启动。使用 delivery: { mode: "none" } 无需外部目标即可进行安静的命名会话工作,无需运行程序回退公告。

主会话自动化事件是自包含的系统事件提醒。它们不会自动包含默认的心跳提示或心跳监视器草稿;如果提醒应参考这些上下文,请在自动化事件文本中明确说明。

主会话作业使用所属会话的传递上下文,而不是单独的聊天公告目标。启用宣布交付或设置聊天目标但未明确选择不交付的编辑将被拒绝,而不更改作业。使用 --message 和 --announce 的独立作业进行聊天传送。主会话作业仍支持主 Webhook 传递。

“新会话”对于孤立的作业意味着什么

每次运行一个新的 transcript/session id。 OpenClaw 携带安全首选项(thinking/fast/verbose 设置、标签、显式用户选择的 model/auth 覆盖),但不会从较旧的自动化会话行继承环境对话上下文:channel/group 路由、发送或队列策略、提升、起源或 ACP 运行时绑定。当重复作业应刻意构建在相同的对话上下文上时,请使用 current 或 session:<id>。

无人值守运行合同

孤立的自动化和挂钩代理轮流显然是无人值守的:没有人在场进行澄清或批准。最终回复必须是可交付成果,而不是计划、确认或输入请求。当无需执行任何操作时,代理会返回 NO_REPLY。当任务失败或被阻止时,回复会用普通的散文解释失败的原因以及尝试的内容。

完成的模型运行并不能证明所请求的任务成功。调度程序不会将助理散文归类为执行错误:阻止程序报告仍然是普通输出,包括子代理确定的最终答案。它遵循作业的交付策略,并且本身不会触发重试、错误回退、故障警报或所有者对话修复。运行时故障(例如提供程序错误或执行超时)仍然会使运行失败并使用正常的调度程序故障策略。所需的交付失败单独跟踪;请参阅 故障通知 。

对于受信任的计划作业,如果作业自身的指令明确要求提出问题或制定计划,则以作业指令为准;如果某个作业已不再需要,Agent 可以将其删除。外部钩子回合只会接收通用的无人值守契约;跨越外部内容边界时,它们不会接收该覆盖规则或自行删除指导。

分代理及Discord发货

当隔离自动化运行编排子代理时,交付更喜欢最终的后代输出而不是陈旧的父临时文本。如果后代任务仍在运行或解决,OpenClaw 会抑制部分父级更新而不是宣布它。这包括等待其后继者启动的已生成协调器以及其结果交付仍待处理的已完成后代。等待共享现有的运行截止日期并在取消时停止。一个 delivery.mode: "none" 运行,其轮流只将工作交给子进程,在相同的截止日期内等待子进程,并将子进程的最终答复记录为运行输出,而不发送它。即使交付是 none,子代理也必须返回有意义的结果或具体的阻止程序。仅返回 NO_REPLY 的子项进入 missing-answer recovery;如果仍然没有产生结果或超时,则自动化失败。

对于纯文本 Discord 宣布目标,OpenClaw 发送最终助理文本一次,而不是重播 streamed/intermediate 文本和最终答案。媒体和结构化 Discord 有效负载仍单独交付,因此附件和组件不会丢失。

本页有帮助吗?