feat(v3): T27 会话式智能体(多轮上下文/停止/对话式 UI,对齐 dsh 范式)

- ToolLoop 增 history 参数(既往轮次折叠为对话上下文,近 6 轮)
- 会话制:AgentSession/SessionStore 持久化 agent_runs/sessions/{sid}.json,
  /agent/sessions CRUD + /agent 带 session_id(继承会话工作区与执行者配置,busy 并发控制)
- POST /agent/{id}/cancel:取消运行中任务
- AgentView 重构为对话式:会话列表 + 居中消息流(用户蓝气泡/助手白卡)+ 底部 composer
  (工作区/执行者/命令 chips,Enter 发送,运行中红色停止钮),工具过程折叠收纳
- 工具步数统计统一至事件写入层并透出 status.tool_calls
- fix(tests): 会话存储测试隔离,防测试数据泄漏进真实 sessions 目录
- 测试 +4,全量 281 passed
This commit is contained in:
tzt
2026-09-01 22:30:26 +08:00
parent 943eecc5ef
commit 7d11ae2644
20 changed files with 973 additions and 473 deletions
@@ -109,3 +109,17 @@
ToolLoop 内层循环 `emit_final=False`,终态事件由外层编排统一发出(防前端 SSE 提前收口)。
- **事件**:新增 `phase`plan/execute/review,带模型名)与 `message`planner/executor 正文)
两类事件,前端以阶段徽标 + 双色消息卡渲染。
## 8. 增补:会话式智能体(D8,T27)
- **决策 D8(对齐 dsh 的会话范式)**:智能体从"一次性任务"升级为**多轮会话**——
`POST /agent/sessions` 建会话(绑定工作区/执行者配置),后续任务带 `session_id`
递交,既往轮次折叠为对话历史注入模型(近 6 轮,每条截断 1500 字);
轮次(任务/答复/工具步数/token)持久化到 `agent_runs/sessions/{sid}.json`
- **停止**`POST /agent/{id}/cancel` 取消运行中任务(asyncio cancel + 状态标记
cancelled_by_user)。
- **前端**AgentView 重构为 dsh 式对话界面——左侧会话列表、居中消息流
(用户蓝气泡 / 助手白卡)、底部 composer(工作区/执行者/命令开关收为 chips,
Enter 发送,运行中变红色停止钮);工具过程折叠收纳,历史轮次仅显示步数摘要。
- **工程**ToolLoop 增 history 参数;工具步数统一在事件写入层统计;
会话存储测试隔离(防泄漏进真实 agent_runs/sessions/)。