feat: 添加自动化任务(automation_jobs)功能模块
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# Bug: 前端未渲染 events 接口事件
|
||||
|
||||
## 日期
|
||||
|
||||
- 2026-03-24
|
||||
|
||||
## 现象
|
||||
|
||||
- 用户反馈:改动后前端无法获取/渲染 `/api/v1/agent/runs/{threadId}/events` 的事件。
|
||||
- 页面表现为消息流无事件增量或工具执行状态未更新。
|
||||
|
||||
## 本次背景
|
||||
|
||||
- 本次清理了前端死链路:
|
||||
- `ToolRegistry`
|
||||
- `RouteNavigationTool`
|
||||
- `AiDecisionEngine`
|
||||
- 当前主链路仍为 AG-UI SSE:`AgUiService -> AgUiEvent -> ChatBloc -> HomeChatItemRenderer`。
|
||||
|
||||
## 影响范围
|
||||
|
||||
- Chat 事件流渲染(运行状态、工具调用状态、文本完成事件)
|
||||
- 可能影响 Home 聊天视图实时反馈
|
||||
|
||||
## 初步判断
|
||||
|
||||
- 已清理的死链路不在当前主流程中,理论上不应直接导致 SSE 事件无法渲染。
|
||||
- 更可能的问题点:
|
||||
1. `runId` 绑定过滤导致事件被丢弃(`shouldDispatch` 为 false)
|
||||
2. `onEvent` 回调异常导致流提前停止
|
||||
3. SSE `data` 结构变化,`AgUiEvent.fromJson` 解析失败
|
||||
|
||||
## 关键代码位置
|
||||
|
||||
- `apps/lib/features/chat/data/services/ag_ui_service.dart`
|
||||
- `apps/lib/features/chat/data/models/ag_ui_event.dart`
|
||||
- `apps/lib/features/chat/presentation/bloc/chat_bloc.dart`
|
||||
- `apps/lib/features/home/ui/widgets/home_chat_item_renderer.dart`
|
||||
|
||||
## 待执行排查
|
||||
|
||||
1. 在 `_streamEventsFromApi` 增加临时诊断日志:`eventType`、`eventRunId`、`expectedRunId`、`shouldDispatch`
|
||||
2. 捕获并输出 `onEvent` 抛错栈,确认是否由 UI/Bloc 处理异常中断
|
||||
3. 抓取真实 SSE 帧,核对 `runId/threadId/type/data` 与解析模型一致性
|
||||
4. 复测 `RUN_STARTED -> TOOL_* -> TEXT_MESSAGE_END -> RUN_FINISHED/RUN_ERROR` 完整链路
|
||||
|
||||
## 当前状态
|
||||
|
||||
- 状态:待定位
|
||||
- 优先级:高
|
||||
@@ -171,6 +171,35 @@ data: <json>
|
||||
- `tool_call_args` 仅表示输入参数快照。
|
||||
- `result` 仅表示执行输出事实,不重复 `tool_call_args` 已包含的输入参数。
|
||||
|
||||
#### 3.3.1 tool 名称展示规范(前端本地化)
|
||||
|
||||
SSE 协议中的工具名字段保持后端原样,不做服务端翻译:
|
||||
|
||||
- `TOOL_CALL_START/ARGS/END.toolCallName`
|
||||
- `TOOL_CALL_RESULT.tool_name`
|
||||
|
||||
前端展示层统一通过工具名本地化映射进行中文渲染,要求兼容两类命名风格:
|
||||
|
||||
- dot 风格:`memory.write`、`calendar.read`
|
||||
- snake 风格:`memory_write`、`calendar_read`
|
||||
|
||||
当前规范映射(canonical -> 中文)如下:
|
||||
|
||||
- `calendar.read` -> `读取日程`
|
||||
- `calendar.write` -> `写入日程`
|
||||
- `calendar.share` -> `共享日程`
|
||||
- `user.lookup` -> `查找联系人`
|
||||
- `memory.write` -> `写入记忆`
|
||||
- `memory.forget` -> `清理记忆`
|
||||
|
||||
兼容策略:
|
||||
|
||||
1. 优先按 alias 归一化(例如 `memory_write` -> `memory.write`)
|
||||
2. 命中 canonical 映射后展示中文
|
||||
3. 未命中时回退显示原始工具名(保证向后兼容)
|
||||
|
||||
该规范只约束展示,不改变 wire event 字段定义与取值。
|
||||
|
||||
### 3.4 文本完成事件
|
||||
|
||||
#### `TEXT_MESSAGE_END`
|
||||
|
||||
Reference in New Issue
Block a user