Skip to content

[Priority: Low] [Docs/Architecture] 记录 A2A、subtask、subagent 与 task tool 的拓扑关系 #342

@liujuanjuan1984

Description

@liujuanjuan1984

背景

当前关于 A2A Task、OpenCode subtasktask tool、subagent 之间的关系,存在明显概念重叠和命名歧义,尤其在讨论 #338 / #339 时容易混淆:

  • A2A Task 是协议层追踪对象;
  • subtask 是 OpenCode 输入 part;
  • task tool 是 OpenCode 内部执行子任务的工具;
  • subagent 才是真正被调起来干活的 agent。

如果没有一份明确的拓扑图和术语说明,后续继续设计 orchestration contract、workspace/worktree 绑定、授权边界时会不断重复解释,影响 issue/PR 讨论效率。

建议记录内容

建议在仓库文档或设计说明里补一份拓扑图,至少说明以下关系:

Human / Client
    |
    |  A2A core methods / JSON-RPC extensions
    v
opencode-a2a
    |
    |  session binding / identity / directory boundary
    v
OpenCode session
    |
    |  request.parts[]
    |  - text
    |  - file
    |  - agent
    |  - subtask
    v
OpenCode prompt runtime
    |
    |  subtask -> task tool execute
    v
task tool
    |
    |  input: prompt / description / subagent_type / command
    v
subagent
    |
    v
tool result / tool part
    |
    v
OpenCode stream events
    |
    v
opencode-a2a streaming adapter
    |
    v
Client sees A2A Task updates

并明确以下术语区分:

  • A2A Task:A2A 协议层执行单元
  • subtask:OpenCode provider-private 输入 part
  • task tool:OpenCode 内部用于执行 subtask 的 tool
  • subagent:真正执行子任务的 agent

期望行为

  • 后续讨论 #338 / #339 / #332 / #166 时,可以统一引用这份拓扑说明;
  • 减少“task 到底指哪个 task”的歧义;
  • 为后续批量/并行 subtask、workspace 绑定、授权边界讨论提供统一语义基线。

验收标准

  • 新增一份英文落库文档或 guide/design section,记录上述拓扑图与术语说明
  • 文档明确说明 subtask / task tool / subagent / A2A Task 的区别
  • 文档明确说明 A2A 层与 OpenCode runtime 层之间的映射关系
  • 在相关 issue/PR 讨论中可直接引用该文档

关联

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions