跳到主要内容

Workflows

Workflows 是 Anyy 用于分组后台工作的父级记录。一个 workflow job 可以拥有子 agent 或进程 jobs,汇总完成状态,并在分组工作结束后通知父会话。

它不是可视化 workflow builder。在当前运行时,workflow 是一个持久 background-job record,加上 child-job metadata 和通知投递。

Workflow Jobs

Workflow job 保存为 kind 为 workflowbackground_jobs 记录。

它包含:

字段含义
background_job_id持久父级 job 句柄。
workflow_job_id附加到子 jobs 的共享 workflow key。
session_id / turn_id启动 workflow 的父会话和轮次。
channel_binding_id可用时用于完成通知投递的 channel binding。
statusrunningsucceededfailedcancelledlost
title / summary面向用户的标签和完成摘要。

当 metadata 设置 workflow_background: truebackground_mode: workflow 时,会启动显式 workflow background turn。

后台执行

Workflow 启动时,Anyy 会:

  1. 保存持久父级 workflow job。
  2. 为请求的任务派生内部子会话。
  3. 返回一条前台助理消息,说明 workflow 正在后台运行。
  4. 用父级 workflow_job_id 标记子工作。
  5. 子工作结束后完成父级 job。

子 jobs 默认使用 internal visibility,这样用户看到的是一条 workflow 级完成通知,而不是重复的子任务通知。

引用

Workflow background 请求会保留用户消息里的上下文引用元数据。例如,包含 @file:README.md 的请求可以把展开后的引用元数据带入存储轮次和 workflow 子上下文。

引用仍然受上下文引用中记录的同样限制和安全检查约束。

投递

Workflow 进入终态时,Anyy 会写入:

目标内容
Session inbox父会话下一次构建上下文时可见的 pending background update。
Job outboxWorkflow 有 channel binding 时的渠道投递事件。

完成标题使用父级 title 加上 completedfailedcancelled

Payload 包含 source: background_jobbackground_job_idjob_kind: workflowjob_statusworkflow_job_id

查看 Workflow Jobs

使用和其他后台工作相同的 job surfaces:

Surface入口
TUI/jobs/job <id>
RPCjobs.listjobs.status
DashboardGateway 提供时的后台/运行时视图。

jobs.status 会为 workflow jobs 返回子 job 信息。

失败处理

如果取消发生在父 job 保存之后、子任务启动之前,父 workflow 会被标记为 failed,并带上取消错误。子任务启动失败时,父 workflow 也会标记为 failed

Workflow jobs 是 session-scoped 的。如果看不到某个 workflow,请确认你正在查看启动它的父会话。