跳到主要内容

委托

委托让 Anyy 把边界清晰的工作拆给子会话处理。子会话有自己的 transcript、运行状态、角色/工作区 scope 和工具视图;父会话继续保留面向用户的主对话。

适合委托的任务包括:并行调研、比较多个方案、检查仓库某个区域、执行一个可以独立总结的分析任务。

不要把普通追问、很快的查询、或长时间 shell 命令交给委托。快速工作留在当前轮;需要驻留后台继续跑的工作用 background_job;长 shell 命令用托管进程任务。

委托任务

主要的模型可见工具是 subagents toolset 里的 delegate_task。它会启动一个或多个子 Anyy 会话,并等待子会话完成后,把最终摘要返回给父会话。

常用参数:

参数含义
taskgoal单个子会话要完成的有界任务。
context附加给子任务的背景上下文。
label委托运行的短标签。
child_role_id可选的子会话 role id。
child_workspace_id可选的子会话 workspace id。
timeout_seconds子任务超时时间。
requested_model_id子任务的可选模型覆盖。
tasks批量模式,并行运行多个子任务。

批量模式受子任务并发上限约束。当前内置上限是每个父会话最多三个活跃子任务。

工具返回结构化 JSON,包含每个子任务的摘要、子会话 id 和 subagent run id。父会话应优先使用摘要回答用户,除非用户明确要求查看更详细的子会话内容。

子会话隔离

被委托的子任务是一个 source=subagent 的 Anyy 会话。它和其他会话一样会被存储和审计,但归属到父会话。

关键边界:

边界行为
Transcript子会话有独立 transcript。
深度子会话不能再创建下一层子会话。
并发一个父会话最多三个活跃子任务。
工具子会话工具来自父会话可见工具,并叠加 subagent deny 规则。
Messaging默认拒绝子会话使用 messaging toolset。
Memory 和 automation 写入默认拒绝 memory、automation mutation 等高影响工具。

delegate_taskbackground_jobsubagent_listsubagent_historysubagent_cancel 在子会话内部禁用。

后台子任务

当用户明确要求“后台继续做”或“完成后通知我”时,使用 background_job

background_job 会启动异步子会话,并立即返回:

字段含义
background_job_idGateway 后台任务句柄。
subagent_run_id子任务运行 id。
child_session_id子会话 id。
async这个路径固定为 true

运行时会把任务标记为完成后通知。用户可以继续在父会话里提问,而后台子任务继续运行。

准入控制

Anyy 也有自然语言准入路径:当请求明确表达后台、异步、长时间 agentic 工作时,运行时可以把它转为后台子任务。

分类器会把轻量查询留在前台。机械性的长时间 shell 工作会更倾向于托管进程任务。复杂的异步 agentic 工作可以转入后台子任务。

这个分类器有意保守。比如“查一下天气”不应该创建子会话;“在后台调研这个并完成后通知我”可以。

控制与历史

父会话可以查看和停止自己的子任务。

Surface入口
模型工具subagent_listsubagent_historysubagent_cancel
TUI/background <prompt>/agents
RPCsession.spawnsubagents.listsubagents.historysubagents.killsubagents.steer

subagent_history 返回某个子任务的有界 transcript 和状态摘要。subagent_cancel 会停止当前会话拥有的 running 或 accepted 子任务。

subagents.steer 当前支持 cancel。message 和 restart 在 RPC 边界被识别,但在这个版本会返回 unsupported-action conflict。

使用建议

  • 只委托能独立完成的任务。
  • 给子任务明确交付物,比如“总结 migration tests”比“看看代码”更好。
  • 只有当当前回复不依赖结果时,才使用 background_job
  • 敏感或会改变状态的工作应留在父会话,除非工具策略和审批路径很清楚。

任务跟踪见 后台任务。暴露委托工具的 toolset 见 Toolsets