Files
goodbuddy/docs/features/task-and-job/job-and-subjob-prd.md
T
mesalogo 2f1881a414 docs: organize product design by feature
Define repository and feature-scoped documentation rules for PRDs, User Stories, logic, UI, technical design, and progress evidence.

Move feature-owned documents under docs/features, add one entry point per feature, remove the redundant docs index, and update all affected cross-references. Expand the local tool environment design with explicit product, story, logic, UI, technical, and progress documents.
2026-09-01 14:52:22 +08:00

3.3 KiB
Raw Blame History

Job 与 Subjob PRD

文档信息

项目 内容
状态 设计中,未来能力
版本 0.1
日期 2026-08-19
依赖 Task 与 Job 统一领域模型

1. 目标

在不创建额外顶层 Task 或 Conversation 的前提下,让一个 Task 能够分解、串行、并行和委派 多个执行单元,并将进展和结果有序汇入 Task 的同一 Conversation。

2. Job 类型

首期只使用有限类型:

  • step:Task 内一个明确步骤。
  • scheduled_occurrence:Scheduled Task 的一次到期执行。
  • delegated:交给 Subagent 或远程执行器。
  • parallel_branch:并行方案或分工。
  • aggregation:汇总多个前置 Job。

类型描述执行方式,不创造新的产品对象层级。

3. 并行模型

关联 Conversation
  └─ Coordinating Job
       ├─ Parallel Job A
       ├─ Parallel Job B
       ├─ Parallel Job C
       └─ Aggregation Job
  • 并行 Job 使用同一个 taskId 和 conversationId。
  • 每个 Job 有独立输入快照、状态、Run、预算和输出缓冲。
  • 并行 Job 不直接同时追加助手消息。
  • Aggregation Job 或 Task 协调器按确定顺序生成一条进展或结果消息。
  • 用户可以按 Task 查看有界活动和聚合状态,但不选择或展开单个 Job;主 Conversation 保持可读。

4. Subjob

Job 可以创建有界 Subjob:

  • 默认最大深度 2。
  • 默认最大并发 3。
  • 默认最大子项数、模型调用、Token、耗时和输出大小由父 Job 预算限制。
  • 子级只能使用父级已授权能力的子集。
  • 父级取消、失败或超时后,活动子级必须取消。

5. Subagent

Subagent 是 Job 的执行者:

  • 专家选择和路由记录在 Job 上。
  • Subagent 的原始流式输出进入有界 Job 缓冲和活动记录。
  • 完成、失败和部分输出都返回父 Job。
  • Subagent 不获得独立 Task Center 条目或 Conversation。

6. 状态与恢复

Job 状态至少包括:

queued → running → waiting_approval → completed
                 ↘ failed | cancelled | interrupted | budget_exceeded
  • 重试创建新 Run,不覆盖失败 Run。
  • 应用退出将活动 Job 标记为 interrupted。
  • 有外部副作用且结果未知的 Job 不自动重试。
  • 聚合 Job 必须明确处理部分成功、全部失败和取消。

7. 界面

当前产品 UI 的对象层级止于 Task,不提供 Job/Subjob 树、独立页面或导航入口。

关联 Conversation 和 Task Center 只显示:

  • 当前总体进展。
  • 并行执行数量和聚合状态。
  • 需要审批或用户输入的 Task 状态。
  • 完成后的统一结果。

活动与 Runtime 可以按 Task 显示执行者、工具、耗时、预算、错误、审批和成果事件,但不把 Job、Subjob 或 Run 暴露为可选择、可展开或可操作的产品对象。内部标识只用于关联与审计。

8. 验收标准

  • 并行 Job 通过所属 Task 写入同一关联 Conversation。
  • Job 不创建顶层 Task。
  • 并行输出不会无序污染消息时间线。
  • Subjob 深度、并发、预算和输出有界。
  • Subagent 失败能够返回部分输出和明确状态。
  • 父级取消传播到所有活动子级。
  • 当前 UI 只展示到 Task,不显示 Job/Subjob/Run 层级。