# 对话内轻量链路与刷新恢复
# 目标
将对话中的 Agent 执行展示从大面积状态卡收敛为轻量活动行,并使新产生的运行在页面刷新后仍能进入对应的轨迹工作页。
# 变更
SessionStore.appendRunMarker(traceId)在session.jsonl中追加type=run展示标记;该标记不属于模型消息,不会进入buildContext()。AgentChatService在用户消息写入后、主循环开始前持久化本次traceId。GET /api/history返回run条目及其traceId;前端历史重建为无工具项的完成运行,保留轨迹入口。RunCard改为无外框的run-activity行:状态、统计和“轨迹”入口同列展示;只有主动展开时才显示工具和回合细节。- 展开后的工具条取消额外外框,但保留工具输出的可复制代码区域。
# 契约
历史消息新增展示类型:
{ "type": "run", "traceId": "tr_<32位hex>", "timestamp": "2026-08-14T..." }
这是向后兼容的历史记录:旧会话没有 run 标记,因此不会凭空产生对话内入口;可继续从“轨迹”页查看已有轨迹。新会话和新运行会在刷新后恢复入口。
# 验证
web/:npm run build通过(TypeScript 检查 + Vite 构建)。- 后端:
mvn -pl pi-agent-v1 -am test -DskipTests=false通过(当前模块没有测试源)。 git diff --check通过。
# 后续
若要让“继续执行”的 ask_user 段也各自拥有独立轨迹入口,需要为 /api/chat/continue 建立并记录新的 TraceStore.Trace;本次不改变其现有的同步恢复语义。