Melso Docs

执行任务

了解智能体的一次执行如何排队、运行、停止和重试。

每次智能体开始工作,Melso 都会创建一条执行任务(task)。它记录这次执行由什么触发、交给了哪个智能体、当前进行到哪里,以及最后是否成功。

Issue 与执行任务

Issue 保存一项工作的目标、讨论、负责人和最终状态;执行任务记录智能体对这项工作的一次执行。

Issue执行任务
记录什么一项持续推进的工作智能体的一次执行
持续多久可以反复讨论、补充和重新分配从触发开始,到完成、失败或取消为止
数量关系一个 issue 可以包含多次执行每次执行都有独立记录

因此,同一个 issue 可以先后交给不同的智能体,也可以在一次失败后重新执行。每次都会产生新的 task,之前的记录不会被覆盖。

触发来源

以下操作都可能触发一次执行:

  • 把 issue 分配给智能体或小队。
  • 在评论中提及智能体。
  • 在对话中向智能体发送消息。
  • 由自动化按计划或外部事件触发。

不同入口提供的上下文不同,但执行方式相同:Melso 创建 task,运行时领取它,再调用智能体配置的 AI 编程工具。

执行过程

一条 task 通常会经过以下状态:

状态表示什么
deferred已安排稍后触发,到达指定时间后进入队列
queued正在等待运行时领取
dispatched运行时已经领取,正在启动 AI 编程工具
waiting_local_directory目标本地目录正被另一条执行占用,等待目录锁释放
runningAI 编程工具正在执行
completed这次执行已正常结束
failed执行出错或中断
cancelled执行被手动停止

运行时在线时,新 task 通常会很快开始;如果 task 入队后运行时离线,它会留在队列中等待恢复。排队超过 2 小时仍未被领取时,task 会以失败结束。

如果系统在触发前已经知道目标运行时离线,部分即时操作会直接提示当前无法运行,而不是继续创建一条无法领取的 task。

心跳正常的运行时可以执行长时间任务,服务器不会仅因为运行时间较长就强制结束它。运行时会根据实际活动判断进程是否已经卡住;相关设置见环境变量

查看执行记录

打开 issue,在 执行日志中可以看到它产生的所有 task。每一行会显示触发来源、执行智能体、状态和时间。

你可以在这里:

  • 打开执行记录,查看智能体的消息、工具调用和错误信息。
  • 停止已安排稍后触发、排队、启动、等待本地目录或运行中的 task。
  • 对失败或已取消的 task 发起重试。

执行记录:状态时间轴、智能体总结与逐条工具调用

修改 issue 的负责人或状态不会停止已经开始的执行。需要中断时,在执行日志中停止对应的执行任务。删除 issue 时,关联的活动 task 才会一并取消。

失败与自动重试

运行时短暂离线、守护进程重启、执行超时或 AI 编程工具网络中断等临时故障,可以触发自动重试。普通 task 默认最多执行两次;工具网络中断最多执行三次。

智能体自身返回的错误通常不会自动重试。例如鉴权失效、额度不足、配置错误或模型无法完成请求,都需要先处理原因,再手动重试。

自动化的仅运行模式不会自动重试,以免和下一次计划执行重叠。创建 issue模式产生的是普通 issue task,基础设施故障仍按上面的规则重试。两种模式都可以在自动化运行历史中查看最终结果。

当一条 issue 上没有其他活动 task,也没有新的重试等待执行时,失败会让处于 in_progress 的 issue 回到 todo

失败原因参考

执行日志和用量统计中常见的失败原因分两类:不带前缀的原因码由平台记录;agent_error.* 由 AI 编程工具的报错归类而来。

平台侧

原因含义处理
runtime_offline执行期间运行时离线恢复运行时后重试,见守护进程与运行时
queued_expired排队超过 2 小时无运行时领取确认运行时在线后重试
runtime_recovery守护进程重启后回收了中断的执行直接重试
cancelled被手动停止,或随归档、删除一并取消无需处理
timeout超过守护进程配置的执行时长上限缩小 issue 范围,或调整守护进程的 agent_timeout
iteration_limit达到执行轮次上限缩小 issue 范围
agent_blocked智能体主动报告无法继续按它在评论中的说明补充信息
api_invalid_request平台 API 拒绝了非法请求重试;反复出现时报告问题
codex_semantic_inactivityCodex 长时间无有效输出被判停滞重试,或调整 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上下文超出模型窗口缩小 issue 范围或减少输入内容
missing_config缺少 API key 等必需配置补齐智能体环境变量或工具配置
runtime_missing_executable找不到 AI 编程工具的可执行文件重新安装该工具,见安装 AI 编程工具
runtime_version_unsupportedAI 编程工具版本过旧升级该工具
process_failure工具进程异常退出查看执行日志定位后重试
empty_or_unparseable_output工具无输出或输出无法解析重试;反复出现时检查工具安装
agent_timeout工具长时间无响应被终止重试或缩小 issue 范围
unknown未能归类的失败查看执行日志中的原始报错

手动重试

在执行日志中点击某一行的重试按钮,会再次调用当时执行这条 task 的智能体。即使 issue 后来换了负责人,也不会改用新负责人。

重试会尽量保留上一次已经写入本地目录的文件。如果原会话仍然安全,并且由同一个运行时领取,也会继续之前的会话。上下文溢出或无效请求等会污染会话的错误,则会在原工作目录上开启新会话。原目录已经不存在时,会改用新的工作目录。

也可以通过 CLI 重新运行当前 issue:

melso issue rerun <issue-id>

这种方式没有指定某一条历史 task,因此会使用 issue 当前的智能体负责人,并从新的会话和工作目录开始。

执行完成与 issue 完成

completed 只表示这一次执行正常结束,不代表 issue 的目标已经得到确认。你仍然可以检查结果、继续讨论、补充要求或再次触发智能体。

Issue 是否完成,以实际工作进展和它的状态为准。

状态与超时速查

以下数字对应服务器的默认配置,供排查时快速对照。

状态含义超时与后果
deferred已安排稍后触发到达预定时间后进入 queued,再按下面的规则计时
queued等待运行时领取超过 2 小时未被领取即以失败结束,不会自动重试
dispatched运行时已领取,正在启动工具停留超过 5 分钟按失败处理
waiting_local_directory等待本地目录锁释放没有独立超时;目录释放后回到启动流程
runningAI 编程工具正在执行不设固定时长上限;以运行时心跳判定存活,心跳每 15 秒一次,失去心跳的运行时最迟约 3 分钟被判为离线,其上的 task 随之失败

自动重试只覆盖以下临时故障,且仅适用于挂在 issue 或对话上的 task(自动化仅运行模式除外):

可自动重试的失败原因执行次数上限
运行时离线默认 2 次(首次执行 + 1 次重试)
守护进程重启后回收默认 2 次
平台判定执行超时默认 2 次
Codex 长时间无有效输出默认 2 次
Skill 包下载失败默认 2 次(此时智能体进程尚未启动,已下载的包走本地缓存)
工具网络中断最多 3 次,最后一次延迟约 5 秒发起

其余失败原因(鉴权、额度、配置、模型等)都不会自动重试,需要先处理原因再手动重试。

接下来