Skip to content

docs: declare subtask compatibility and extension boundaries#390

Merged
liujuanjuan1984 merged 3 commits intomainfrom
issue-333-umbrella-gap-assessment
Apr 3, 2026
Merged

docs: declare subtask compatibility and extension boundaries#390
liujuanjuan1984 merged 3 commits intomainfrom
issue-333-umbrella-gap-assessment

Conversation

@liujuanjuan1984
Copy link
Copy Markdown
Collaborator

@liujuanjuan1984 liujuanjuan1984 commented Apr 3, 2026

背景

本 PR 收敛最近一轮围绕 opencode.sessions.*subtask/subagent 与 extension 边界的文档/契约调整。

目标不是新增一套 A2A orchestration API,而是把当前已经存在的 upstream 兼容面正式声明清楚,并把 extension 暴露边界写成可引用的仓库原则。

变更内容

1. 显式声明 prompt_async 的 subtask 兼容面

  • src/opencode_a2a/contracts/extensions.py 中补齐 opencode.sessions.prompt_asyncrequest.parts[] machine-readable contract。
  • 明确当前接受的 provider-private part types:text / file / agent / subtask
  • subtask 补齐字段模型:
    • required: prompt / description / agent
    • optional: model / command
  • 明确其定位为 passthrough-compatible,执行语义仍属于 upstream OpenCode runtime,而不是新的 A2A orchestration API。

2. 同步 Agent Card / OpenAPI / guide / extension spec

  • 更新 Agent Card、OpenAPI example、docs/guide.mddocs/extension-specifications.md
  • 在 guide 中补充 topology 边界说明,明确:
    • A2A Task 是协议层对象
    • opencode.sessions.prompt_async 是 provider-private extension method
    • subtask 是 upstream-compatible 输入形状
    • task tool / subagent 属于 upstream 内部执行链路

3. 落库统一的 extension boundary principles

  • docs/guide.md 中新增统一原则,明确:
    • opencode.* 默认作为 provider-private extension 暴露
    • 优先只读发现、稳定兼容面与低风险控制
    • 仅在低歧义只读投影时映射为 A2A core object
    • 不默认把 upstream 内部 runtime 机制提升成 first-class A2A API

4. 回归与 issue 收敛

验证

  • ./scripts/doctor.sh
  • 结果:522 passed

Issues 关联

@liujuanjuan1984 liujuanjuan1984 marked this pull request as ready for review April 3, 2026 08:18
@liujuanjuan1984 liujuanjuan1984 merged commit 9fa070d into main Apr 3, 2026
3 checks passed
@liujuanjuan1984 liujuanjuan1984 deleted the issue-333-umbrella-gap-assessment branch April 3, 2026 08:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment