# aichat 中断根治 + 样式走查 进度 > 任务来源:飞书群派工「根治三类执行中断」+ 12 张截图样式走查 > 约束:改完打包换装(静默安装),**不提交攒批等通知** ## 三类中断根因与修复 | 中断 | 根因 | 修复 | 状态 | |------|------|------|------| | ① 工具执行完后续回复中断 | 后端 loop 静默死亡(panic/conv删除等)无终止事件 → 心跳停 → 前端 90s 判死 → 用户点继续时后端已 Idle 双重死亡 | 前端探测式续跑:onStreamTimeout 先 ai_resume_interrupted 三分支探测(generating/resumed 静默重挂+自动续跑上限3次/finished 轻收敛) | ✅ 前后端已落盘并独立核查 | | ② G2 重复调用误判 | 「写→grep验证」节奏下唯一率分支无写间隔豁免(与单点分支不对称);警示文案 pinned_goals 全列拼接 | helpers.rs 唯一率有效唯一数算法(夹写豁免);fetch_goal_summary 超3条截断 | ✅ 已落盘,11+1 测试过 | | ③ 复制为图片失败 | html2canvas@1.4.1 不支持 color-mix()/oklch() | 换 html2canvas-pro ^2.5.0 + CSS.escape | ✅ 已落盘,vue-tsc 0 | ## 已完成 - [x] 前端 7 文件:useAiStream.ts(探测式续跑+per-conv看门狗)、api/ai.ts(resumeInterrupted)、i18n×2、package.json/lock、MessageList.vue(html2canvas-pro) — vue-tsc EXIT=0 - [x] Rust 代理①:chat.rs ai_resume_interrupted 三分支命令 + lib.rs 注册 + helpers.rs 唯一率写间隔豁免+4测试 — cargo check/test 独立核验过 - [x] 主代理微调:mod.rs fetch_goal_summary 目标>3条截断;i18n×2 加 streamAutoResuming;useAiStream.ts 首次自动续跑补提示气泡(防无反馈期误点继续) - [x] 12 张截图全部读取分析(shot-10/11/12 压缩后重读完成) - [x] 走查代理:agent loop 静默死亡分支全量走查报告已交付 ## 走查报告修复分流 本批修(rust-audit-fix 代理进行中): - P1-2 per_conv permit 入口 30s 超时(治 UI 永远转圈) - P0-1 审批执行窗口补心跳(execute_with_heartbeat 复用或内联心跳) - P2-1 AiMaxRoundsReached 幽灵事件修正(补发事件或删死 case,代理核查后择一) 登记待办(高风险/需设计,进 docs/todo.md): - P0-2 run_agentic_loop 包 catch_unwind(panic 静默死亡根治,核心 loop 需谨慎) - P1-1 conv 删除类静默退出族 6 处补终态事件 - P2-2 审批超时惰性收敛改主动任务 - 前端 AiMaxRoundsReached 死 case(随 P2-1 决策) ## 样式问题清单(12 张截图) | 图 | 页面 | 问题 | |----|------|------| | shot-1 | 灵感页 | 无异常 | | shot-2 | 知识库待处理 | 「拒绝」按钮右缘疑似裁切 | | shot-3 | 任务队列 | 列表条目重复渲染(同任务名两条)+「全选」复选框右缘裁切 | | shot-4 | 对话侧栏 | 标题=消息原文截断充当(大量「新对话」重名) — 观察项 | | shot-5 | 审批历史 | 「决策者」列竖排逐字换行;「参数摘要」贴右缘截断 | | shot-6/7 | AI 对话 | 中断 UI 实证(G2 警示 5 目标全列) — 已由源头截断修复 | | shot-8 | 设置-安全 | 「信任所有目录」描述与开关重叠 | | shot-9/10/11 | 设置-高级 | 「应用数据目录」标签与路径重叠;「文件上传服务端点」标签竖排逐字换行(窄列病根) | | shot-12 | AI 面板 | G2 警示三条堆叠实证 — 已由 G2 豁免修复 | 样式修复决策:**本批不修**(用户指令聚焦中断根治,样式属新一批工作),清单待用户定夺后派工。 ## 待办 - [x] 收 rust-audit-fix 代理结果并独立核查 — 三项全过:P1-2 permit 30s 超时(范式对齐 provider 先例)/P0-1 审批窗口 execute_with_heartbeat 复用(ai_approve+ai_authorize_dir,附带 run_command 流式+超时分档改善)/P2-1 删前端死 case+修后端注释(git show 365af55 证实补发案会重引卡死 bug) - [x] 统一门禁:cargo check 0 error(1 既有 warning) + cargo test 620 过 + vue-tsc EXIT=0 - [x] 打包换装 — 本侧 bmsu6xr9e 实际完成(exit 0,产物 02:04:14,含全部功能改动与注释修正;并行会话 devflow-b9 停机重启后曾误判其死亡并接手,已 SendMessage 告知事实与其收口) → 杀进程 → /S 静默安装 EXIT=0 → 启动验证进程稳定 - [x] 飞书回报 — 本侧统一回报(见下)