2.3 KiB
2.3 KiB
知识库摘要缓存专项回归
日期:2026-09-16。
结论
两目录都存在同一个已复现缺陷:_apply_config_response 将服务端 knowledge 放入 knowledge_summary,但 default_settings 缺少此字段。save_settings 和 load_settings 都按默认字段过滤,因此摘要在保存时就被丢掉,桌面 UI 持续显示数量 0、未启用。
最小实测使用临时配置文件,模拟同步 {published:1234, enabled:true},经过真实保存、重读和 _console_ai_state,修复前显示 0,修复后显示 1,234 且知识连接状态为启用;没有 mock 设置读取函数来绕过落盘路径。
修改
- 两目录
backend_client.py在默认配置中加入knowledge_summary。 - 同步、保存和读取都规范化摘要:
published为非负整数,坏值归零;enabled仅明确布尔true视为启用;updated_at必须为字符串。空或非对象摘要恢复为空对象。 - 保留旧后端未下发
knowledge时的已有缓存;退出账号继续清空缓存,避免显示上一账号的数量。 - 两目录新增
test_knowledge_cache_audit.py,含 8 项缓存、旧配置兼容、坏类型、登出清理及真实 UI 状态回归。
备份分别为:
C:/wechat_rpa/backups/recognition-audit-20260916/backend_client.pyC:/kefu/wechat_rpa/backups/recognition-audit-20260916/backend_client.py
文件哈希见 knowledge-cache-changes.json。
验证
| 目录 | 执行模块 | 结果 |
|---|---|---|
| C:/wechat_rpa | test_backend、test_knowledge_cache_audit | 80/80 通过 |
| C:/kefu/wechat_rpa | test_backend、test_knowledge_cache_audit | 80/80 通过 |
共 160 次测试执行,0 失败、0 错误、0 跳过。隔离器记录的实际外部操作尝试为 0。配置、AI 设置和数据库均写入临时目录,没有改真实账号配置或发送消息。
证据文件:knowledge-cache-target-before.json/.log、knowledge-cache-source-before.json/.log、knowledge-cache-target-after.json/.log、knowledge-cache-source-after.json/.log。
这项修复恢复的是桌面端缓存和显示,下次成功同步才会读到服务器当前摘要;没有启用知识库、发布知识或修改服务端业务设置,也不能将修复后的显示逻辑当作实际知识命中的证明。