Skip to content

任务 ​

概览
是什么Agent 之间可追踪的工作请求,带结果和汇报
Agent 工具task_*(需要 task_collaboration)
CLIagt tool call ... task_*
Web 控制台会话标题栏的任务;交互观察
设置scheduler.parallel_work
存储runtime/runtime.db
Crateagt-service、agt-runtime

作用 ​

任务是一个 Agent(请求者)向另一个 Agent(执行者)发出的请求,agt 会一直追踪到它结束:排队、执行、把结果送回请求者,再由请求者向原会话提交汇报。任务在重启后依然保留,可以相互等待;声明了共享对象后还可以并行执行。

对话用消息,结果重要的工作用任务。工作流程见任务协作。

怎么用 ​

  1. 把 task_collaboration 交给请求者(通常是 lead)。执行者只需已绑定。
  2. 确认请求者和执行者在同一个会话中(direct_create 或群聊)。
  3. 请求者调用 task_request,之后用 task_get 审阅结果,再调用 task_report。
bash
agt tool call --principal lead task_list --args '{"queued_only":true}'
agt tool call --principal lead task_get --args '{"task_id":"<id>"}'

常用参数 ​

参数含义
assignee、conversation、input谁做什么,以及双方都在的会话
request_key重复使用同一个 key 会返回同一个任务
expected_revision每次修改都需要;从 task_get 获取

全部参数 ​

请求与汇报 ​

工具参数含义
task_requestassignee, conversation, input, request_key, priority?, execution_policy?, source_message?为任务排队。返回 queued,不代表完成。input 最多 120 KiB。source_message 供人从 CLI 调用时使用:授权讨论的那条消息。
task_gettask_id状态、结果、阻塞原因、汇报和通知状态、revision
task_listconversation?, queued_only?, limit?, before?你发出和收到的任务,从新到旧。把最后的 list_cursor 作为 before。
task_reporttask_id, expected_revision, body向任务的原会话发布汇报。收到结果后必须执行;普通消息不算。

管理队列 ​

工具参数含义
task_reprioritizetask_id, expected_revision, priority, reasonlow、normal、high;只有人可以设为 urgent
task_defertask_id, expected_revision, reason,以及 not_before 或 after_task + deadline 之一不早于某个时间开始,或等同一执行者的另一个任务结束后再开始
task_execution_policytask_id, expected_revision, reason, execution_policy为排队中的任务声明并行和互斥资源
task_canceltask_id, expected_revision, reason取消任务及它创建的子任务
task_retrytask_id, expected_revision, request_key, reason基于失败、取消或中断的任务创建新任务(请求者或人)
task_resolvetask_id, expected_revision, outcome(succeeded 或 failed), evidence仅限人:记录 outcome_unknown 任务的实际结果
task_replytask_id, input_request_id, expected_revision, answer, request_key答复任务通过 task_input 提出的问题
task_attentionlimit?, before?仅限工作空间负责人:需要人处理的任务

任务内等待 ​

只在 Agent 处理任务期间可用。

工具参数含义
task_awaitdeadline(必填)、task_id 或 task_ids(1–20 个)保存检查点,等待这些任务结束或截止时间到达。必须是这一步中唯一的调用。
task_yieldnot_before, reason保存检查点,暂停到指定时间
task_inputquestion, deadline向请求者提问,等待 task_reply 或截止时间

时间使用本地时间,例如工作空间时区(scheduler.timezone)下的 2026-11-01T09:00,也可以带偏移,例如 +08:00;task_defer 同样适用。早期版本要求的 Unix 毫秒仍然可用。等待期间 Agent 的执行槽会被释放给其他工作。截止时间到达不会取消被等待的任务,也不会编造结果。

定时任务 ​

定时任务随 task_collaboration 一起提供。行为说明见定时任务。

工具参数含义
timer_createtext,after_seconds / at / cron 三选一,mentions?、name?、timezone?、discussion_seconds?、conversation?稍后把 text 发到会话里,只发一次或按 cron 周期发送。Agent 只能在当前会话设置;人从 CLI 调用时必须指定会话。返回换算后的本地时间 next_at。
timer_listconversation?, include_finished?你所在会话中等待触发的定时任务;include_finished 同时列出已触发和已取消的
timer_canceltimer_id, reason?Agent 只能取消自己设置的;人可以取消所在会话里的任何定时任务

execution_policy ​

json
{ "parallel": true, "exclusive_resources": ["repo:frontend"] }
字段默认值含义
parallelfalse允许该任务与同一 Agent 的其他并行任务同时运行。需要 scheduler.parallel_work: true。
exclusive_resources[]任务会修改的共享对象的键。键有重叠的任务永远不会同时运行,即使属于不同 Agent。

设置 ​

键默认值含义
scheduler.parallel_workfalse允许单个 Agent 并行处理任务。调度器重启后生效。

任务状态 ​

状态含义
queued等待开始
running正在处理
waiting_dependency通过 task_await 等待
waiting_until通过 task_yield 等待
waiting_input等待 task_input 的答复
succeeded、failed、canceled已结束
interrupted因崩溃或重启而停止,且已确认停止。可用 task_retry 重试。
outcome_unknown被中断;不确定工作是否已发生。永远不会自动重试。

blocked_reason 说明排队中的任务为什么没有开始,例如执行者被停用或设为 manual、讨论已过期、任务被延后或在等待依赖。

执行顺序 ​

排队中的任务按优先级(urgent、high、normal、low)执行,同级按入队顺序。任务每等待五分钟提升一个优先级,最高到 high。正在运行的任务不会被抢占。

相关模块 ​

基于 MIT 许可发布