65 lines
1.9 KiB
Markdown
65 lines
1.9 KiB
Markdown
# 7-31 [done][bug] 页面 AI block_edit_workflow 丢弃读取类回答摘要 v1
|
||||
|
|
|
|||
|
|
> 发现时间:2026-05-18
|
|||
|
|
>
|
|||
|
|
> 状态:`[done]`
|
|||
|
|
>
|
|||
|
|
> 关联主线:`07-ai`
|
|||
|
|
|
|||
|
|
## 1. 用户可见症状
|
|||
|
|
|
|||
|
|
在页面 AI 使用 `ACP · Reasonix` 输入:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
检查你是否能读取到本页第一段,同时请修改第二段为:测试123
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
`block_edit_workflow` 即使完成写入,前端也只显示固定文案:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
已通过页面 markdown 编辑快路径完成写入。
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
用户要求中的“是否能读取到第一段”没有被回答。
|
|||
|
|
|
|||
|
|
## 2. 根因
|
|||
|
|
|
|||
|
|
`page_ai_workflow.rs` 的模型提示已经要求模型输出:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{"operations": [...], "summary": "..."}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
但路由只提取 `operations`,丢弃了 `summary`,并在成功响应中固定返回“已通过页面 markdown 编辑快路径完成写入。”。
|
|||
|
|
|
|||
|
|
这会让读写混合请求退化为纯写入反馈。
|
|||
|
|
|
|||
|
|
## 3. 修复
|
|||
|
|
|
|||
|
|
- 新增 `MarkdownEditPlan`,同时解析模型输出中的 `operations` 与 `summary`。
|
|||
|
|
- `block_edit_workflow` 成功响应优先返回模型 `summary`,缺失时才使用固定 fallback。
|
|||
|
|
- 系统提示明确要求:如果用户要求读取某段,`summary` 必须包含从 `page_text` 读取到的原文。
|
|||
|
|
- 新增回归测试 `block_edit_workflow_surfaces_model_summary_for_read_and_edit_request`,覆盖“读取第一段 + 修改第二段”的真实快路径响应。
|
|||
|
|
|
|||
|
|
## 4. 验证
|
|||
|
|
|
|||
|
|
RED:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cargo test --manifest-path rust/Cargo.toml -p mnote-web block_edit_workflow_surfaces_model_summary_for_read_and_edit_request -- --nocapture
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
旧实现失败,`payload.message` 不包含 `已读取第一段:第一段`。
|
|||
|
|
|
|||
|
|
GREEN:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cargo test --manifest-path rust/Cargo.toml -p mnote-web page_ai_workflow -- --nocapture
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
结果:`5 passed`。
|
|||
|
|
|
|||
|
|
## 5. 剩余边界
|
|||
|
|
|
|||
|
|
本修复只保证 fast workflow 成功响应不丢模型摘要;复杂多步推理、review session、流式 apply 仍属于 Phase C 冻结范围。
|