Workflows
Workflows 是 Anyy 用于分组后台工作的父级记录。一个 workflow job 可以拥有子 agent 或进程 jobs,汇总完成状态,并在分组工作结束后通知父会话。
它不是可视化 workflow builder。在当前运行时,workflow 是一个持久 background-job record,加上 child-job metadata 和通知投递。
Workflow Jobs
Workflow job 保存为 kind 为 workflow 的 background_jobs 记录。
它包含:
| 字段 | 含义 |
|---|---|
background_job_id | 持久父级 job 句柄。 |
workflow_job_id | 附加到子 jobs 的共享 workflow key。 |
session_id / turn_id | 启动 workflow 的父会话和轮次。 |
channel_binding_id | 可用时用于完成通知投递的 channel binding。 |
status | running、succeeded、failed、cancelled 或 lost。 |
title / summary | 面向用户的标签和完成摘要。 |
当 metadata 设置 workflow_background: true 或 background_mode: workflow 时,会启动显式 workflow background turn。
后台执行
Workflow 启动时,Anyy 会:
- 保存持久父级 workflow job。
- 为请求的任务派生内部子会话。
- 返回一条前台助理消息,说明 workflow 正在后台运行。
- 用父级
workflow_job_id标记子工作。 - 子工作结束后完成父级 job。
子 jobs 默认使用 internal visibility,这样用户看到的是一条 workflow 级完成通知,而不是重复的子任务通知。
引用
Workflow background 请求会保留用户消息里的上下文引用元数据。例如,包含 @file:README.md 的请求可以把展开后的引用元数据带入存储轮次和 workflow 子上下文。
引用仍然受上下文引用中记录的同样限制和安全检查约束。
投递
Workflow 进入终态时,Anyy 会写入:
| 目标 | 内容 |
|---|---|
| Session inbox | 父会话下一次构建上下文时可见的 pending background update。 |
| Job outbox | Workflow 有 channel binding 时的渠道投递事件。 |
完成标题使用父级 title 加上 completed、failed 或 cancelled。
Payload 包含 source: background_job、background_job_id、job_kind: workflow、job_status 和 workflow_job_id。
查看 Workflow Jobs
使用和其他后台工作相同的 job surfaces:
| Surface | 入口 |
|---|---|
| TUI | /jobs、/job <id> |
| RPC | jobs.list、jobs.status |
| Dashboard | Gateway 提供时的后台/运行时视图。 |
jobs.status 会为 workflow jobs 返回子 job 信息。
失败处理
如果取消发生在父 job 保存之后、子任务启动之前,父 workflow 会被标记为 failed,并带上取消错误。子任务启动失败时,父 workflow 也会标记为 failed。
Workflow jobs 是 session-scoped 的。如果看不到某个 workflow,请确认你正在查看启动它的父会话。