一句话结论
OpenPI 的三类后台能力各自都有严谨的并发上限和并发预留,但它们互相看不见。一个 Session 可以同时占用 Direct Subagent、多个 Workflow run 和 Background Terminal 的全部局部额度。
建议研究 package-wide admission leases:各 owner 继续拥有自己的 lifecycle 和局部策略,共享层只负责总资源事实、排队/拒绝、释放和可观测性。不要把三种能力合并成一个 orchestration runtime。
固定证据
对比固定在:
- OpenPI
main@2a69d3f32994da4123f1312b7fa84ef3d6119be1
- OMP
main@151dc754e8cd9314721aa6c78a168a205a4b0e4c
OMP 当前提供了一个有用但不完整的参照:
- process/session 的
AsyncJobManager 统一登记 bash | task | eval,并带 owner identity、query/cancel、delivery 和总 running-job limit:job model, admission check
- task 另有 Session-scoped semaphore、request budget、wall-clock 和 recursion gate:task limits
- queued task job 不占 manager running slot,直到调用方
markRunning();这说明 OMP 也不是完整的统一资源 governor,不能原样复制:queued boundary, mark running
OpenPI 当前:
为什么值得讨论
局部上限都正确,不代表组合后安全。典型风险包括:
- 两个并行 Workflow 各自使用 8 个 child,同时还有 4 个 Direct Subagent;
- 8 个 Background Terminal 全量写 spill log,同时 Workflow/child 写 artifacts;
- provider 并发、文件描述符、内存、worktree 和磁盘在多个 owner 间叠加;
- 某个能力排满资源后,其他更高优先级的交互式请求没有保留槽位;
- operator 只能看到各自列表,无法解释“为什么整套 Agent 变慢/被 429”。
这属于 runtime invariant,不应交给 prompt 提醒模型“少开一点”。
OpenPI 应保留的优势
- Subagent、Workflow、Background Terminal 仍各自拥有状态机、取消、清理和 artifacts;
- 不引入 OMP 式全局 Agent OS 或统一 job lifecycle;
- 模型仍决定 decomposition 和 fan-out;runtime 只接受、排队或拒绝;
- 普通回合保持 zero-resident,admission 不需要模型工具;
- setup 仍只有
/openpi-setup 一个入口。
建议的最小机制
先从 lease 接口研究,不预设全局 scheduler:
acquire({
owner,
kind: "model-session" | "process" | "worktree" | "artifact-bytes",
units,
signal,
}): Promise<Lease>
需要进一步决定:
- 是排队还是立即 fail closed;
- interactive Direct Subagent、Workflow child、terminal 的公平性/优先级;
- Session scope、process scope与 provider scope的边界;
- owner 丢失、abort、exception、resume 后如何回收 lease;
- live configuration 缩小时,已持有 lease 怎么处理;
- 是否需要 weighted units,而不只是任务数。
非目标
- 不把三套 manager 合并;
- 不让 admission 决定模型策略;
- 不根据任务关键词硬编码优先级;
- 不用一个“最大并发数”假装覆盖内存、磁盘和 provider rate limit;
- 不默认提高现有上限;
- 不依赖 prompt 释放资源。
完成条件
与现有 Issue 的关系
一句话结论
OpenPI 的三类后台能力各自都有严谨的并发上限和并发预留,但它们互相看不见。一个 Session 可以同时占用 Direct Subagent、多个 Workflow run 和 Background Terminal 的全部局部额度。
建议研究 package-wide admission leases:各 owner 继续拥有自己的 lifecycle 和局部策略,共享层只负责总资源事实、排队/拒绝、释放和可观测性。不要把三种能力合并成一个 orchestration runtime。
固定证据
对比固定在:
main@2a69d3f32994da4123f1312b7fa84ef3d6119be1main@151dc754e8cd9314721aa6c78a168a205a4b0e4cOMP 当前提供了一个有用但不完整的参照:
AsyncJobManager统一登记bash | task | eval,并带 owner identity、query/cancel、delivery 和总 running-job limit:job model, admission checkmarkRunning();这说明 OMP 也不是完整的统一资源 governor,不能原样复制:queued boundary, mark runningOpenPI 当前:
为什么值得讨论
局部上限都正确,不代表组合后安全。典型风险包括:
这属于 runtime invariant,不应交给 prompt 提醒模型“少开一点”。
OpenPI 应保留的优势
/openpi-setup一个入口。建议的最小机制
先从 lease 接口研究,不预设全局 scheduler:
需要进一步决定:
非目标
完成条件
与现有 Issue 的关系