# Agent 历史消息获取重构 ## Bug 描述 `_build_recent_context_messages` 函数需要重构。 ## 问题 当前实现直接使用 SQL 查询 `AgentChatMessage` 模型,但存在以下问题: 1. **数据格式复杂**:落库后的消息包含多种角色(user/assistant/tool),content 可能是 dict 或 str 2. **需要转换**:需要将数据库模型正确转换为 Agent 可用的消息格式(符合 AG-UI Message 规范) 3. **Service 缺失**:没有使用 Repository/Service 模式,直接操作数据库 ## 当前代码(已清空) 位置:`src/core/agentscope/runtime/tasks.py` ```python async def _build_recent_context_messages( *, session: Any, thread_id: str, current_run_id: str, max_messages: int = 20, ) -> list[dict[str, Any]]: # TODO: 重新设计 # 问题:落库后的消息包含多种角色(user/assistant/tool),需要正确转换为 Agent 可用的消息格式 # 方案:使用 AgentRepository 或新建专门的 Service 方法来处理 return [] ``` ## 预期方案 1. 在 `AgentRepository` 中添加 `get_recent_messages` 方法 2. 或创建专门的 `AgentMessageService` 3. 需要处理: - 消息角色转换(user/assistant/tool -> AG-UI 格式) - content 可能是 dict(包含 attachments 等)或 str - 排除当前 run 的消息 - 限制返回数量 ## 状态 - [ ] 待处理