mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-29 13:47:14 +00:00
feat(agent-runner): finalize 4.x processor integration
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# Agent 页面与事件编排产品设计
|
||||
# 处理器页面与事件编排产品设计
|
||||
|
||||
> 状态:实施稿(2026-06-23)
|
||||
>
|
||||
> 本文档修订 [07-agent-orchestration.md](./07-agent-orchestration.md) 中“Agent 替代 Pipeline”的表述。当前产品形态应保留两种同级处理单元:**Agent 编排**与**Pipeline**。Agent 页面是统一入口,但不是把 Pipeline 消除。
|
||||
> 本文档修订 [07-agent-orchestration.md](./07-agent-orchestration.md) 中“Agent 替代 Pipeline”的表述。当前产品形态保留两种长期并存的同级处理器:**Agent** 与 **Pipeline**。处理器页面只是共享入口,不改变二者各自的持久化模型和执行语义。
|
||||
|
||||
## 1. 产品边界
|
||||
|
||||
@@ -10,33 +10,33 @@ LangBot 的处理逻辑分成两种同级形态:
|
||||
|
||||
| 形态 | 定位 | 可处理事件 | 典型用户 |
|
||||
| --- | --- | --- | --- |
|
||||
| Agent 编排 | 面向 EBA 的事件优先处理单元,承载 AgentRunner / 外部 runner / 后续工作流 | `message.*`、`group.*`、`friend.*`、`bot.*`、`feedback.*`、`platform.*` 等 | 希望按事件类型配置不同智能处理逻辑的用户 |
|
||||
| Pipeline | 现有无代码消息流水线与向后兼容形态 | 仅 `message.*`,首版等价于 `message.received` | 已有 Pipeline 用户、只需要消息处理的用户 |
|
||||
| Agent | runner 驱动的事件优先处理器,承载 AgentRunner / 外部 runner | `message.*`、`group.*`、`friend.*`、`bot.*`、`feedback.*`、`platform.*` 等声明范围 | 需要直接处理多类平台事件或接入外部 agent runtime 的用户 |
|
||||
| Pipeline | 可视化、可控、可组合的消息处理流水线,执行完整 Stage 链 | 仅 `message.*`,首版等价于 `message.received` | 需要预处理、AI、后处理、扩展和输出控制的消息场景 |
|
||||
|
||||
Agent 页面负责统一管理这两种处理单元:
|
||||
处理器页面负责统一管理这两种处理单元:
|
||||
|
||||
- 创建时选择 **Agent 编排** 或 **Pipeline**;
|
||||
- 创建时选择 **Agent** 或 **Pipeline**;
|
||||
- 列表中清晰标注类型与事件能力;
|
||||
- Pipeline 的编辑、调试、监控继续复用现有能力;
|
||||
- Agent 编排保存 runner 配置与事件能力,并通过 Bot 事件绑定进入运行时执行。
|
||||
- Agent 保存 runner 配置与事件能力,并通过 Bot 事件绑定进入运行时执行。
|
||||
|
||||
## 2. 信息架构
|
||||
|
||||
### 2.1 Agent 页面
|
||||
### 2.1 处理器页面
|
||||
|
||||
路径:`/home/agents`
|
||||
|
||||
职责:
|
||||
|
||||
1. 展示所有可被事件绑定的处理单元,包括 Agent 编排与 Pipeline。
|
||||
1. 展示所有可被事件绑定的处理单元,包括 Agent 与 Pipeline。
|
||||
2. 创建时先选择类型:
|
||||
- Agent 编排:创建一条 Agent 配置对象,默认支持所有 EBA 事件;
|
||||
- Pipeline:创建现有 legacy pipeline,只能处理消息事件。
|
||||
- Agent:创建一条独立 Agent 配置对象,默认支持其 runner 声明的事件范围;
|
||||
- Pipeline:创建一条独立 Pipeline,执行完整消息 Stage 链。
|
||||
3. 编辑时按类型进入不同表单:
|
||||
- Pipeline:沿用原 Pipeline 配置页,包括 AI、触发、安全、输出、扩展、Debug、Monitoring;
|
||||
- Agent 编排:配置基础信息、runner、runner config 和事件能力。
|
||||
- Agent:配置基础信息、runner、runner config 和事件能力。
|
||||
|
||||
`/home/pipelines` 保留为兼容路由,但新导航入口使用 `/home/agents`。
|
||||
`/home/pipelines` 继续提供 Pipeline 直接编辑路径;共享处理器入口当前使用 `/home/agents`。URL 是实现路径,不代表 Agent 包含 Pipeline。
|
||||
|
||||
### 2.2 Bot 的事件编排
|
||||
|
||||
@@ -57,9 +57,9 @@ Pipeline 只能被绑定到 `message.*`。如果用户选择非消息事件,
|
||||
|
||||
## 3. 持久化模型
|
||||
|
||||
### 3.1 Agent 编排实例
|
||||
### 3.1 Agent 实例与 Pipeline 实例
|
||||
|
||||
新增 `agents` 表,只保存 Agent 编排形态。Pipeline 继续保存在 `legacy_pipelines`。
|
||||
`agents` 表只保存 Agent;Pipeline 继续保存在 Pipeline 表中。当前物理表名 `legacy_pipelines` 是既有存储名称,不代表 Pipeline 在产品架构中是遗留或过渡形态。
|
||||
|
||||
```python
|
||||
class Agent(Base):
|
||||
@@ -76,7 +76,7 @@ class Agent(Base):
|
||||
updated_at: datetime
|
||||
```
|
||||
|
||||
Agent 聚合 API 把 `agents` 与 `legacy_pipelines` 投影成同一个前端列表:
|
||||
处理器聚合服务把 `agents` 与 Pipeline 表投影成同一个前端列表:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -137,27 +137,27 @@ Bot 新增 `event_bindings` JSON 字段,首版作为轻量配置面。后续
|
||||
4. `priority` 数值高者优先
|
||||
5. 同优先级按列表顺序
|
||||
|
||||
## 5. 兼容策略
|
||||
## 5. 并存策略
|
||||
|
||||
1. 现有 `legacy_pipelines` 不迁移、不改语义。
|
||||
2. 现有 Bot 的 `use_pipeline_uuid` 仍作为消息事件默认 Pipeline。
|
||||
1. Pipeline 与 Agent 长期并存,各自保存配置并执行自己的运行链路。
|
||||
2. 现有 Bot 的 `use_pipeline_uuid` 转换为仍指向原 Pipeline 的消息事件绑定。
|
||||
3. 现有 `pipeline_routing_rules` 仍只作用于消息事件。
|
||||
4. 新增 `event_bindings` 是 EBA 事件编排配置,允许 Pipeline 目标但只限 `message.*`。
|
||||
5. `/api/v1/pipelines` 继续存在;新增 `/api/v1/agents` 作为聚合入口。
|
||||
4. `event_bindings` 允许 `target_type=pipeline|agent|discard`;Pipeline 目标只限 `message.*`。
|
||||
5. Pipeline 与 Agent 保留各自的持久化和编辑语义;处理器聚合入口只负责统一展示和选择。
|
||||
|
||||
## 6. 分阶段落地
|
||||
|
||||
### P0:产品入口统一
|
||||
### P0:处理器入口统一
|
||||
|
||||
- 新增 `/home/agents`。
|
||||
- 侧边栏显示“Agent”,但列表包含 Agent 编排与 Pipeline。
|
||||
- 创建时选择 Agent 编排或 Pipeline。
|
||||
- `/home/pipelines` 保留兼容。
|
||||
- 侧边栏显示“处理器”,列表包含平级的 Agent 与 Pipeline。
|
||||
- 创建时选择 Agent 或 Pipeline。
|
||||
- `/home/pipelines` 继续作为 Pipeline 直接编辑路径。
|
||||
|
||||
### P1:配置模型落地
|
||||
|
||||
- 新增 `agents` 表与 `/api/v1/agents`。
|
||||
- Agent 编排可保存 runner 与 runner_config。
|
||||
- Agent 可保存 runner 与 runner_config。
|
||||
- Pipeline 继续使用原 Pipeline 表单与 API。
|
||||
|
||||
### P2:事件编排配置面
|
||||
@@ -169,12 +169,13 @@ Bot 新增 `event_bindings` JSON 字段,首版作为轻量配置面。后续
|
||||
### P3:EventRouter 执行接入
|
||||
|
||||
- EBA 事件先广播插件 observer。
|
||||
- 然后按 `event_bindings` 的事件模式、filters、priority 和顺序选择 Agent 编排。
|
||||
- 消息事件继续优先保留现有 Pipeline / MessageAggregator 兼容路径。
|
||||
- 非消息事件只调用 Agent 编排,不调用 Pipeline;AgentRunner 输出有平台 reply target 时会投递回平台。
|
||||
- 然后按 `event_bindings` 的事件模式、filters、priority 和顺序选择一个处理器。
|
||||
- Pipeline 目标通过 MessageAggregator 进入完整 Pipeline Stage 链;Agent 目标直接进入 AgentRunner 链路。
|
||||
- 非消息事件只选择声明支持该事件的 Agent,不调用 Pipeline;AgentRunner 输出有平台 reply target 时会投递回平台。
|
||||
|
||||
## 7. 不做的事
|
||||
|
||||
- 不把 Pipeline 改名成 Agent,也不删除 Pipeline 的配置模型。
|
||||
- 不把 Pipeline 降级为兼容层、Agent 子类型或临时运行入口。
|
||||
- 不把非消息事件伪装成用户文本塞入 Pipeline。
|
||||
- 不在首版做多 Agent 串并联;需要多步骤处理时留给后续 workflow。
|
||||
|
||||
Reference in New Issue
Block a user