epic: Pipeline 编排层原语 — run / parallel / judge / transform / foreach #8

Open
opened 2026-06-12 08:45:36 +08:00 by orion · 0 comments
Owner

概述

Pipeline 新增编排层原语后,需要界定它的能力边界、补齐文档和校验,并决定与 DSL/Compiler 体系如何对接。

之前已实现(commit eb21a49):

  • run — 按角色驱动 Agent(AgentCapability 契约)
  • parallel — 并行分支
  • judge — context 值条件分支
  • transform — 字段映射
  • foreach — 列表迭代
  • 底层原语(start/wait/send)向后兼容

待办

1. 原语语义定义(需要讨论)

  • judge 的条件表达式语法:仅等值匹配?还是支持 > / < / regex / expr?
  • foreach 的 context 隔离:子步骤修改 context 会影响外层吗?还是写时复制?
  • parallel 的结果合并策略:同名 key 冲突时怎么处理?
  • 错误处理:一个分支挂了,其他分支继续还是整体回滚?
  • 输入输出:runinputoutput_key 是约定还是强制校验?

2. 引擎性能优化

  • 事件驱动调度器:当前 _wait_for_stateasyncio.sleep(0.1) 轮询 Agent 状态,改为 asyncio.Event 事件驱动,Agent 完成时触发事件,Pipeline 等待事件而非轮询
  • StepRun 可观测性:PipelineRun 目前只记录 statuserrors,扩展为每步记录 start_time / end_time / input_snapshot / output_snapshot / error,方便调试编排层逻辑

3. 模板注册机制

  • DSL 模板应该注册到哪?(文件目录?配置中心?策略库?)
  • 怎么加载和发现?(Scan 目录?注册表?)
  • 是否需要版本管理?(流模板版本迭代 #2 的一部分)

4. 与 Compiler 对接

  • compiler/ 目录下的代码是否要消费编排层原语?
  • 还是 compiler 只处理底层原语,编排层在运行时由 Pipeline 处理?

5. 契约系统归属

  • AgentCapability 是 Agent 端声明还是 Pipeline 端声明?
  • Agent 能否在注册时声明自己的 Capability?
  • 如果角色和能力分属不同模块,谁负责匹配?
## 概述 Pipeline 新增编排层原语后,需要界定它的能力边界、补齐文档和校验,并决定与 DSL/Compiler 体系如何对接。 之前已实现(commit `eb21a49`): - `run` — 按角色驱动 Agent(AgentCapability 契约) - `parallel` — 并行分支 - `judge` — context 值条件分支 - `transform` — 字段映射 - `foreach` — 列表迭代 - 底层原语(start/wait/send)向后兼容 ## 待办 ### 1. 原语语义定义(需要讨论) - `judge` 的条件表达式语法:仅等值匹配?还是支持 > / < / regex / expr? - `foreach` 的 context 隔离:子步骤修改 context 会影响外层吗?还是写时复制? - `parallel` 的结果合并策略:同名 key 冲突时怎么处理? - 错误处理:一个分支挂了,其他分支继续还是整体回滚? - 输入输出:`run` 的 `input` 和 `output_key` 是约定还是强制校验? ### 2. 引擎性能优化 - **事件驱动调度器**:当前 `_wait_for_state` 用 `asyncio.sleep(0.1)` 轮询 Agent 状态,改为 `asyncio.Event` 事件驱动,Agent 完成时触发事件,Pipeline 等待事件而非轮询 - **StepRun 可观测性**:PipelineRun 目前只记录 `status` 和 `errors`,扩展为每步记录 `start_time` / `end_time` / `input_snapshot` / `output_snapshot` / `error`,方便调试编排层逻辑 ### 3. 模板注册机制 - DSL 模板应该注册到哪?(文件目录?配置中心?策略库?) - 怎么加载和发现?(Scan 目录?注册表?) - 是否需要版本管理?(流模板版本迭代 #2 的一部分) ### 4. 与 Compiler 对接 - compiler/ 目录下的代码是否要消费编排层原语? - 还是 compiler 只处理底层原语,编排层在运行时由 Pipeline 处理? ### 5. 契约系统归属 - AgentCapability 是 Agent 端声明还是 Pipeline 端声明? - Agent 能否在注册时声明自己的 Capability? - 如果角色和能力分属不同模块,谁负责匹配?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bixiu/bixiweave#8
No description provided.