Replies: 2 comments
|
补两种真实 Pi 社区实现,作为本讨论 Provider / Agent / Proxy 边界的源码样本;本次只读检查,没有安装或运行。
这给最小互操作实验增加两项验收:调用方拿到的是纯生成还是可执行本地工具的Agent;已执行工具事件跨协议后是否仅作证据投影,绝不触发二次执行。Session/child身份必须显式传递,不能从消息相似度或内容hash推断。 另一个更小的边界样本是 以上项目均有 MIT 声明;版本约束/实际宿主身份不同,不能据源码观察宣布当前OpenPI互通验收完成。 研究记录:Pi 社区能力研究与候选清单(2026-09-08)。源码证据、运行验证与采用决策分别记录。 |
|
再补一个不是 Provider、也不是 ACP 的编辑器样本;本次只读浅克隆,没有安装或运行。
同日复检: 不要把 Codex / Claude Code 收成 Provider。ACP 保持 |
Uh oh!
There was an error while loading. Please reload this page.
这是 #314 Capability Shape and Harness Value 的运行时互操作专题。
OpenPI 如果以后要让一个 Agent 调用 Codex、Claude Code 或其他独立 Agent,需要先回答一个容易被忽略的问题:下游对象到底是什么?它是提供模型生成的 Provider、拥有独立上下文和生命周期的 Child Agent,还是只负责转发协议和事件的 Proxy?
如果把这三种对象都放在同一个 Provider 接口后面,父 Agent 就可能需要替下游 Agent 翻译 context、tool event、streaming、权限、steering、取消、重试和 Session 恢复。发生失败或迟到结果时,系统也很难判断那是一次模型 attempt、一个独立 child run,还是一次协议转发。
Goose #11384 讨论了类似问题。Goose 描述的
AcpProvider会把外部 Agent 放在普通 model-provider 的位置,于是出现两个 Agent loop 嵌套运行的情况。维护者在回复中区分了 Provider wrapper 和真正的 Agent-to-Agent orchestration。讨论也显示,不同外部 Agent 往往有不同的 Skill、Connector、订阅方式和知识边界,扁平化成一个模型名称会丢掉重要信息。ACP #690 提出了一个较小的 Subagent runtime surface。它把可用 Subagent 做成 Session-scoped catalog,用 capability gating 控制 delegation policy,在父 Session 的 tool call 中关联
childSessionId,并让 child 继续使用普通 Session 的恢复、取消和关闭语义。这个 RFD 仍然是设计信号,没有要求所有产品统一 manifest 文件、目录结构或 prompt syntax。问题场景
至少要覆盖以下情况:
先区分三种组合形态
model_provider它只提供模型生成,使用当前 Agent loop 的 context 和 lifecycle,不拥有第二套 Agent Session。
child_agent它拥有独立的 context、权限交集、预算、事件或 Session、取消边界和结构化结果。父子关系必须有稳定 identity,父 Agent 不能把 child 的真实执行成本压缩成一条普通模型调用。
agent_proxy它负责把下游 Agent 的协议或事件暴露给调用方。Proxy 不应偷偷替下游做 prompt、permission 或 retry 决策,也不应把下游的独立 Session 伪装成当前 Agent loop 的内部状态。
建议的最小 Runtime contract
child_agent使用 Session-scoped catalog,明确区分 catalog unknown 和 empty catalog;auto、disable、prefer和require。require不满足时应 typed-fail,不能静默 fallback;最小可证伪实验
选一个能够通过 ACP 调用的外部编码 Agent,分别以
model_providerwrapper、child_agentSession 和agent_proxypass-through 接入。使用同一个任务、同一个模型和同一组工具,比较:与现有工作的关系
#314 已经讨论 Child Session/Subagent 何时值得存在;其他相关工作已经覆盖委托身份与执行拓扑。这里新增的是:当下游本身是一个完整 Agent 时,Provider、Child Agent、Proxy 三种拓扑如何分类,以及最小互操作面应由谁拥有 lifecycle。
非目标
希望讨论的问题
prefer/require、foreground/background 和 parent-child identity 是否足以构成第一版最小互操作面?希望讨论最终回答:
All reactions