Commit b09b1aa78176c960348c9872a5beceff71693e51
1 parent
27964a73
docs: chat is an event stream — confirm result rendered by frontend (no LLM); Pr…
…oposeWrite ends turn on draft
Showing
1 changed file
with
2 additions
and
0 deletions
docs/agent-architecture.md
| ... | ... | @@ -109,6 +109,8 @@ |
| 109 | 109 | **谁过 LLM、谁不过(关键)**: |
| 110 | 110 | - **ProposeWrite(LLM 工具, immediate-return)**:授权校验 + 出 diff + 往 `ai_op_queue` 写一条 `draft`(payload 存服务端)→ 返回 `{diff, sId}` → **结束本轮,不执行**。 |
| 111 | 111 | - **确认端点(确定性 HTTP, 非工具/非 LLM)**:用户点【确认】→ `POST /op/{sId}/confirm` → status=confirmed → **同步调 ERP `/ai/execStaging/{sId}`** → 拿结果 → 回链接给用户 + **结果写入会话状态(供链式续跑)**。取消 → `POST /op/{sId}/cancel`。 |
| 112 | + - **结果怎么进对话(不过 LLM)**:对话框是**事件流**,不只是 LLM 文本。确认端点的 HTTP 响应 `{status, link, msg}` **由前端直接渲染成一张 op_result 卡片**(`✅ 已生成 [查看]`),无需 LLM 生成;同时该事件写进会话历史。ProposeWrite 的 diff、AskUser 选项、FormCollect 表单同理——工具返回结构化 payload,前端渲染卡片/控件。只有要 NL 收尾或**链式下一步**时才把结果喂进新的 LLM 轮次。 | |
| 113 | +- **ProposeWrite 写完 draft 即结束本轮**(immediate-return),agent 暂停 `pendingInteraction=awaiting_confirm:{sId}`,此刻 `ai_op_queue` 只有一条 `draft`、未执行;执行在"用户确认"独立事件里,链式则 resume 新一轮;久不确认按 `tExpireAt` 过期。 | |
| 112 | 114 | - **execStaging 不进任何工具、不新增工具** —— 它必须在"用户确认之后"这个独立事件里触发,塞进 immediate-return 的 ProposeWrite 会变成"确认前就执行"。工具仍是 6 个。 |
| 113 | 115 | - 报价即使已用 FormCollect 填完表单,**落暂存前仍要一份对话内最终确认**(确认 = 允许存起来的门)。 |
| 114 | 116 | - 落暂存后是 **ERP 的事、与 agent 无关**:ERP 对不同待办的策略(报价自动执行 `Sp_Ai_AddQuoQuoAfter` / copyto 让用户在 ERP 原生表单再确认→执行器执行)都在暂存之后。 | ... | ... |