Files
social-app/docs/plans/2026-02-25-agent-chat-gap-closure-design.md
T

50 lines
2.8 KiB
Markdown
Raw Normal View History

# Agent Chat Gap Closure Design
**Goal:** 在不重做已完成任务的前提下,按既定 Task 顺序补齐 Agent Chat Core 的缺口,实现可验证、可审计的端到端闭环。
## Current State
- 已完成:Task 2/3/4 的核心数据层、静态配置、模板加载;Task 6/7 的部分骨架(`event_bridge``v1/agent_chat``storage_adapter``asr_fun_asr`)。
- 未完成或缺口:Task 1 的 spike 结论文档;Task 5 编排与成本追踪;Task 6 `agui_adapter` 与缺失测试;Task 7 `multimodal`Task 8 会话审计与 recent 规则;Task 9 E2E 与运行文档闭环。
## Design Decisions
- 以“缺口优先”方式执行:仅新增/修改缺失能力,已稳定模块不重构。
- 严格遵循顺序:Task 1 -> 5 -> 6 -> 7 -> 8 -> 9。
- 每个 Task 均采用 TDD:先写失败测试,再做最小实现,通过后再小步重构。
- 统一事件与持久化顺序:以 `session.id + seq` 为唯一顺序锚点,避免流式输出与落库顺序漂移。
- 工具调用成本仍归集到 `messages(role=tool)`,会话总成本由增量聚合维护。
## Component Plan
- Task 1: 新增 spike notes,记录 CrewAI/AG-UI/FunASR 依赖可用性与兜底策略。
- Task 5: 新增 `orchestrator.py``cost_tracker.py``events.py`,完成三阶段执行与 usage/cost 归一。
- Task 6: 新增 `agui_adapter.py`,对接现有 `event_bridge.py``v1/agent_chat/service.py`
- Task 7: 新增 `multimodal.py`,衔接附件校验、存储元数据、ASR 文本提取。
- Task 8: 增强会话标题策略、recent session 查询、审计字段与限流保护。
- Task 9: 补齐 E2E 与 runbook,执行 bootstrap gate + 分层测试验证。
## Data Flow
1. 路由接收 AG-UI 请求并解析输入文本/附件。
2. `agui_adapter` 生成内部命令并触发编排器三阶段执行。
3. 每阶段产出内部事件,经 `event_bridge` 映射为 AG-UI 标准事件。
4. `service` 在事务内写入 `messages` 并更新 `sessions` 汇总字段。
5. 流式事件向外输出,顺序与 `messages.seq` 保持一致。
## Error Handling
- 配置/模板错误:启动前校验并快速失败,返回可追踪错误码。
- 第三方调用错误(LLM/ASR/Storage):记录标准化失败事件与审计元数据,不泄露敏感信息。
- 持久化冲突:对 `session_id + seq` 冲突执行有限重试并记录告警。
## Testing Strategy
- Unit`cost_tracker``orchestrator``agui_adapter``multimodal``title strategy`
- Integration`agent_chat` 路由、事件落库、recent session 选择、会话成本聚合。
- E2E:文本、图片+文本、音频+ASR、文档问答、首页最近会话默认选中。
## Approval Note
该设计基于用户确认的“仅按未完成 Task 顺序推进”执行策略。