Task
了解智能体的一次执行如何排队、运行、停止和重试。
每次智能体开始工作,Multica 都会创建一条task。它记录这次执行由什么触发、交给了哪个智能体、当前进行到哪里,以及最后是否成功。
任务与 Task
任务保存一项工作的目标、讨论、负责人和最终状态;task 记录智能体对这项工作的一次执行。
| 任务 | task | |
|---|---|---|
| 记录什么 | 一项持续推进的工作 | 智能体的一次执行 |
| 持续多久 | 可以反复讨论、补充和重新分配 | 从触发开始,到完成、失败或取消为止 |
| 数量关系 | 一个任务可以包含多次执行 | 每次执行都有独立记录 |
因此,同一个任务可以先后交给不同的智能体,也可以在一次失败后重新执行。每次都会产生新的 task,之前的记录不会被覆盖。
触发来源
以下操作都可能触发一次执行:
- 把任务分配给智能体或小队。
- 在评论中提及智能体。
- 在对话中向智能体发送消息。
- 由自动化按计划或外部事件触发。
不同入口提供的上下文不同,但执行方式相同:Multica 创建 task,运行时领取它,再调用智能体配置的 AI 编程工具。
执行过程
一条 task 通常会经过以下状态:
| 状态 | 表示什么 |
|---|---|
deferred | 已安排稍后触发,到达指定时间后进入队列 |
queued | 正在等待运行时领取 |
dispatched | 运行时已经领取,正在启动 AI 编程工具 |
waiting_local_directory | 目标本地目录正被另一条执行占用,等待目录锁释放 |
running | AI 编程工具正在执行 |
completed | 这次执行已正常结束 |
failed | 执行出错或中断 |
cancelled | 执行被手动停止 |
运行时在线时,新 task 通常会很快开始;如果 task 入队后运行时离线,它会留在队列中等待恢复。排队本身不会导致过期——运行时只要还在心跳就说明它是忙,不是没了,它的积压可以排多久就排多久。只有同时满足两个条件,排队中的 task 才会失败:绑定的运行时心跳缺席超过重连宽限期,并且该 task 自己也已经排队满这么久。第二个条件针对的是「指派给一台已经休眠的机器」——这种情况下 task 仍然会获得完整的一个宽限期供你把机器唤醒,而不是立刻失败。
如果系统在触发前已经知道目标运行时离线,部分即时操作会直接提示当前无法运行,而不是继续创建一条无法领取的 task。
心跳正常的运行时可以执行长时间 task,服务器不会仅因为运行时间较长就强制结束它。运行时会根据实际活动判断进程是否已经卡住;相关设置见环境变量。
查看执行记录
任务产生的所有 task 都列在任务右侧栏的 执行日志里,不需要跳转到单独的页面或标签页。这一段默认展开:进行中的运行固定在最上面,已结束的收在 **显示历史运行(N)**下面。每一行会显示触发来源、执行智能体、状态和时间。如果没看到这一段,用任务顶部的面板按钮打开右侧栏;窗口较窄时它默认是收起的。
页面保持打开时,执行日志通过实时连接自动更新 —— 新的运行、状态变化和智能体的评论都会直接出现,不需要手动刷新。
智能体工作期间,任务顶部还会出现一个实时状态条,例如 "Engineer 在工作"。悬停就能看到同样的进行中运行,不用离开当前页面。
你可以在这里:
- 点击某一行的 查看记录,查看智能体的消息、工具调用和错误信息。运行还在进行时,弹窗打开期间内容会持续实时追加,也可以用 最新在前切换事件顺序。
- 停止已安排稍后触发、排队、启动、等待本地目录或运行中的 task。
- 对失败或已取消的 task 发起重试。


修改任务的负责人或状态不会停止已经开始的执行。需要中断时,在执行日志中停止对应的 task。删除任务时,关联的活动 task 才会一并取消。
失败与自动重试
运行时短暂离线、守护进程重启、执行超时或 AI 编程工具网络中断等临时故障,可以触发自动重试。普通 task 默认最多执行两次;工具网络中断最多执行三次。
智能体自身返回的错误通常不会自动重试。例如鉴权失效、额度不足、配置错误或模型无法完成请求,都需要先处理原因,再手动重试。
自动化的仅运行模式不会自动重试,以免和下一次计划执行重叠。创建任务模式产生的是普通任务 task,基础设施故障仍按上面的规则重试。两种模式都可以在自动化运行历史中查看最终结果。
当一条任务上没有其他活动 task,也没有新的重试等待执行时,失败会让处于 in_progress 的任务回到 todo。
失败原因参考
执行日志和用量统计中常见的失败原因分两类:不带前缀的原因码由平台记录;agent_error.* 由 AI 编程工具的报错归类而来。
平台侧
| 原因 | 含义 | 处理 |
|---|---|---|
runtime_offline | 执行期间运行时离线 | 恢复运行时后重试,见守护进程与运行时 |
queued_expired | 运行时心跳缺席超过重连宽限期,且该 task 也已排队满这么久 | 确认运行时在线后重试 |
runtime_recovery | 守护进程重启后回收了中断的执行 | 直接重试 |
environment_prepare_failed | 守护进程没能准备好本次执行的运行环境——工作目录,或写入其中的本地运行时配置 | 先看原始错误定位是哪一步失败,再检查那台机器:磁盘空间、权限、目录是否仍被占用,或 AI 编程工具的本地配置 |
cancelled | 被手动停止,或随归档、删除一并取消 | 无需处理 |
timeout | 超过守护进程配置的执行时长上限 | 缩小任务范围,或调整守护进程的 agent_timeout |
iteration_limit | 达到执行轮次上限 | 缩小任务范围 |
agent_blocked | 智能体主动报告无法继续 | 按它在评论中的说明补充信息 |
api_invalid_request | 平台 API 拒绝了非法请求 | 重试;反复出现时报告问题 |
codex_semantic_inactivity | Codex 长时间无有效输出被判停滞 | 重试,或调整 Codex 停滞超时 |
工具侧(agent_error.*,前缀省略)
| 原因 | 含义 | 处理 |
|---|---|---|
provider_auth_or_access | 模型服务认证失败或无访问权限(401/403) | 在该 AI 编程工具中重新登录,或检查 API key |
provider_quota_limit | 配额或余额用尽(402) | 充值或更换账号 |
provider_capacity_or_rate_limit | 限流或容量不足(429/529) | 稍后重试 |
provider_server_error | 模型服务端错误(5xx) | 稍后重试 |
provider_network | 到模型服务的网络故障 | 会自动重试;持续出现时检查执行电脑的网络 |
model_not_found_or_unavailable | 模型不存在或当前不可用 | 在智能体设置中改选可用模型 |
context_overflow | 上下文超出模型窗口 | 缩小任务范围或减少输入内容 |
missing_config | 缺少 API key 等必需配置 | 补齐智能体环境变量或工具配置 |
runtime_missing_executable | 找不到 AI 编程工具的可执行文件 | 重新安装该工具,见安装 AI 编程工具 |
runtime_version_unsupported | AI 编程工具版本过旧 | 升级该工具 |
process_failure | 工具进程异常退出 | 查看执行日志定位后重试 |
empty_or_unparseable_output | 工具无输出或输出无法解析 | 重试;反复出现时检查工具安装 |
agent_timeout | 工具长时间无响应被终止 | 重试或缩小任务范围 |
unknown | 未能归类的失败 | 查看执行日志中的原始报错 |
手动重试
在执行日志中点击某一行的重试按钮,会再次调用当时执行这条 task 的智能体。即使任务后来换了负责人,也不会改用新负责人。
重试会尽量保留上一次已经写入本地目录的文件。如果原会话仍然安全,并且由同一个运行时领取,也会继续之前的会话。上下文溢出或无效请求等会污染会话的错误,则会在原工作目录上开启新会话。原目录已经不存在时,会改用新的工作目录。
也可以通过 CLI 重新运行当前任务:
multica issue rerun <issue-id>这种方式没有指定某一条历史 task,因此会使用任务当前的智能体负责人,并从新的会话和工作目录开始。
执行完成与任务完成
completed 只表示这一次执行正常结束,不代表任务的目标已经得到确认。你仍然可以检查结果、继续讨论、补充要求或再次触发智能体。
任务是否完成,以实际工作进展和它的状态为准。
状态与超时速查
以下数字对应服务器的默认配置,供排查时快速对照。
| 状态 | 含义 | 超时与后果 |
|---|---|---|
deferred | 已安排稍后触发 | 到达预定时间后进入 queued,再按下面的规则计时 |
queued | 等待运行时领取 | 只要运行时还在心跳就一直等待,并且无论如何都会在入队后至少保留一个重连宽限期;两个窗口都过去才会失败,且不会自动重试 |
dispatched | 运行时已领取,正在启动工具 | 停留超过 5 分钟按失败处理 |
waiting_local_directory | 等待本地目录锁释放 | 没有独立超时;目录释放后回到启动流程 |
running | AI 编程工具正在执行 | 不设固定时长上限;以运行时心跳判定存活,心跳每 15 秒一次,失去心跳的运行时最迟约 3 分钟被判为离线,其上的 task 随之失败 |
自动重试只覆盖以下临时故障,且仅适用于挂在任务或对话上的 task(自动化仅运行模式除外):
| 可自动重试的失败原因 | 执行次数上限 |
|---|---|
| 运行时离线 | 默认 2 次(首次执行 + 1 次重试) |
| 守护进程重启后回收 | 默认 2 次 |
| 平台判定执行超时 | 默认 2 次 |
| Codex 长时间无有效输出 | 默认 2 次 |
| Skill 包下载失败 | 默认 2 次(此时智能体进程尚未启动,已下载的包走本地缓存) |
| 工具网络中断 | 最多 3 次,最后一次延迟约 5 秒发起 |
其余失败原因(鉴权、额度、配置、模型等)都不会自动重试,需要先处理原因再手动重试。