Files
Cyrene/docs/debug_log/2026-05-22-round5-iot-edge-cases.md
T
AskaEth b123a36aae fix: 第四轮调试 — 回复去重/消息时序/UI布局/自主思考深度优化 + 文档重整
后端修复:
- main.go: 恢复 /api/v1/chat 路由中丢失的 handleChat 调用 (空响应回归)
- orchestrator.go: splitChatByLines 改为双换行分割, 避免单换行误拆
- chat_handler.go: multi_message 增加 !hasReview 守卫, 消息延迟 200→800ms
- thinker.go: RecordUserMessage 追踪活跃会话ID, 推送主动消息到正确会话
- thinker.go: 增强思考提示词 — 禁止在用户休息/离开时发送主动消息

前端修复:
- useWebSocket.ts: stream_segments 不再创建消息气泡, 消除重复回复
- MessageBubble.tsx: 动作消息居左对齐无头像, 时间戳移至气泡外侧 hover 显示
- ChatInput.tsx: 昔涟输入提示移至输入框上方, 波点动画效果
- MessageList/TypingIndicator/ChatContainer: 清理冗余 isTyping 传递
- MemoryPanel.tsx: 新增记忆面板组件

文档重整:
- docs/debug/ → docs/debug_log/ 重命名统一
- 新增 debug_log/README.md 索引
- .gitignore: 新增 android/ 排除规则

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 13:09:18 +08:00

3.6 KiB
Raw Blame History

Cyrene 第五轮修复报告 — IoT 边界情况 + 快速通道完善

报告日期2026-05-22
分支dev
涉及文件数2 个
E2E 测试:全部通过


一、修复项

# 类别 问题 涉及文件
1 🟡 功能 IoT 快速通道遗漏 "关掉"/"关上" 关键词 intent_analyzer.go
2 🟡 功能 IoT 多设备命令上下文窗口过小(±15字节) iot_provider.go

二、详细说明

2.1 IoT 快速通道关键词补充

问题isStrongIoTCommand() 的控制词列表缺少 "关掉"、"关上",导致 "关掉客厅灯" 等常见命令无法命中快速通道,浪费 2-3s LLM 意图分析。

修复:在 controlWords 中新增 "关掉", "关上"

修复前: controlWords := []string{"打开", "关闭", "调到", "设置", ...}
修复后: controlWords := []string{"打开", "关闭", "关掉", "关上", "调到", "设置", ...}

验证

"关掉客厅灯" → 修复前: LLM路径 5.12s → 修复后: 快速通道 2.57s (节省 2.55s)

2.2 IoT 多设备上下文窗口扩展

问题:多设备命令如 "帮我把卧室灯和卧室空调都关掉" 中,"卧室灯" 与 "关掉" 之间间隔超过 15 字节,导致操作判断错误(将 "off" 误判为 "query"),设备未被实际控制。

根因分析

msgLower = "帮我把卧室灯和卧室空调都关掉"  (42 bytes)
"卧室灯" 起始偏移 = 9
contextEnd = 9 + 9 + 15 = 33
nearbyContext = msgLower[0:33] = "帮我把卧室灯和卧室空调"  ← 缺少 "都关掉"!

修复

  1. 上下文窗口从 ±15 扩展至 ±30 字节
  2. 新增全文回退逻辑:附近上下文无法判断时,搜索整条消息
  3. 调整判断逻辑为先计算 hasOpen/hasClose 布尔值,避免级联 if-else 误判

验证

"帮我把卧室灯和卧室空调都关掉" → 
  修复前: IoT 子会话完成: 卧室灯当前状态: on; 已帮你关闭卧室空调~  (灯仅查询,未关闭)
  修复后: IoT 子会话完成: 卧室空调已经是关闭状态啦~; 已帮你关闭卧室灯~  (两个设备都正确匹配)

三、E2E 验证

场景 输入 预期 结果
"关掉" 快速通道 关掉客厅灯 fast path, <3s 2.57s, fast path
多设备打开 打开客厅灯和卧室灯 两设备均匹配 已帮你打开客厅灯♪; 卧室灯已经是打开状态啦~
多设备关闭 帮我把卧室灯和卧室空调都关掉 两设备均 match "off" 卧室空调关闭 + 已帮你关闭卧室灯~
设备状态查询 看看家里设备状态怎么样 返回全部设备 家里设备状态:8 台设备
长消息拆分 讲星星故事 action + 多段 chat 1 action + 2 chat (69+16 chars at sentence break)
审查消息格式 所有场景 action/chat 分离 msg_type 正确

四、构建流程修正

本次调试中发现 DevTools 构建产物名为 main.exe 而非 ai-core.exe。后续所有编译应通过 DevTools 的 /api/services/:id/build 接口执行,避免手动构建到错误文件名。


五、性能总结

场景 Round 4 Round 5 改善
"打开" IoT 命令 ~3.4s ~2.6s -0.8s
"关掉" IoT 命令 ~6.2s (LLM路径) ~2.6s (快速通道) -3.6s
多设备 IoT 命令 仅执行第一个 全部执行 功能修复
一般聊天 ~3.9s ~3.9s 持平