Files
kefu/deploy/recognition-audit-20260916/TEST_REPORT.md
T
2026-09-21 10:34:06 +08:00

7.6 KiB

视觉识别、协议识别、上下文与知识库测试

测试日期:2026-09-16。范围为 C:/kefu/wechat_rpa 与 C:/wechat_rpa。

主要结论

  1. 发现了实际缺陷,修复已写入两份本地代码并备份。 两目录功能不同:C:/wechat_rpa 有企业微信协议引擎,C:/kefu/wechat_rpa 没有,后者只能验证视觉、数据库读取与模型链路,不能称为协议测试通过。
  2. 上下文开关已开启,当前配置为最近 7 轮,但原来的 Dify 网关适配会丢弃历史。 线上主模型 gpt-5.6-sol 实际使用 Dify 协议,两次真实合成多轮测试都回答“未提供取件码”,同请求的 DeepSeek 均正确。使用修复后的上下文拼装格式再发一次,两个模型均正确。
  3. 原来的 Dify 图片请求也有遗漏。 同一张合成测试图,线上主模型要求上传图片,DeepSeek 正确识别。已在本地补齐消息内图片转上传文件、MIME、文件用户一致性、多图和错误隔离;这些修复尚未发布到线上网关。
  4. 已连接账号目前没有使用线上知识库。 C:/kefu/wechat_rpa 对应服务器实时配置返回 enabled=false, published=0。草稿和待发布内容不会参与检索。没有为了测试启用或发布真实知识。
  5. 知识检索及引用能力可用。 临时知识库的已发布知识经过真实本地检索、注入模型请求及引用记录测试;另用独立合成知识和修复后的请求格式调用真实模型,主模型与 DeepSeek 均准确返回参考资料中的随机校验码。这是隔离验收,不代表线上账号已经启用知识库。

测试层次与结果

项目 原目录 C:/kefu/wechat_rpa 协议目录 C:/wechat_rpa 说明
视觉链路回归 625/625 625/625 临时配置、模拟桌面输入,无真实微信操作
本机真实 RapidOCR 24/24 24/24 合成中文图片,1×/2×/3×,明暗主题;两目录使用同一组场景
AI 上下文/路由/规则 137/137 137/137 真实请求拼装,模拟外部模型
知识库生命周期/检索/网关 126/126 126/126 含最终视觉角色路由、上传异常和知识检索组合回归
协议及共享数据库 35/35 142/142 原目录仅数据库与读取优先级;协议版含收信、审核、模拟发送回执
视觉知识引用追加回归 526/526 526/526 与视觉基础集合重合431项,合并每目录720项;与AI路由组仍有交集
知识状态缓存与后台连接 80/80 80/80 含8项新增,验证同步、保存、重读及界面实际显示

不同组之间可能有重叠覆盖,不把上述数字简单相加作为独立场景数量。最后追加测试与最终文件哈希见本目录 final-verification.json。

已修复问题

视觉和身份识别

  • 相差一个字的客户昵称被模糊合并,可能串用会话身份;限制了自动归并范围。
  • 两个客户使用相同头像时,升级 OCR 缓存可能复用前一人的昵称;缓存现在同时绑定当前昵称裁片,裁片无效时不复用。
  • NaN/Infinity OCR 置信度或坐标可能被接受或触发异常;过滤无效结果。

协议和数据库

  • 图片/语音后紧跟文字时,只检查最后一条类型,可能忽略媒体直接回答;现在整个未回复批次包含媒体就保留人工处理。
  • 发送回执不确定后重启,暂停状态未恢复;恢复当前账号对应的暂停状态。
  • 超过 100 条连续未回复消息被截断后仍自动作答;增加边界探针,资料不完整时转人工。
  • 异常时间戳可能导致解析、排序或格式化异常;拒绝非有限值与无法表示的日期。

模型接口、上下文和知识

  • Dify 只发送最后一条用户消息,丢失系统规则、历史和部分参考资料;按角色整理进请求,并保持会话隔离。

  • MCP 工具循环丢失调用方指定模型;沿调用链保留明确指定的模型。

  • 上下文轮数为字符串、零或无效值时可能崩溃或意外不截断;归一化轮数,过滤损坏历史条目。

  • 多模态 customer_text 把图片 Base64 转成字符串,干扰检索、裁判和记录;只提取文本,原图仍保留在消息附件中。

  • 网关收到只有多模态 messages 的请求时无法提取检索问题;补齐文本提取并优先使用当前消息。

  • Dify 消息内附件没有上传;补齐多图转换、文件类型、上传与问答用户一致性、已有附件去重。

  • 上传失败、网络异常、非法 JSON 或错误响应结构可能使所有并行模型一起失败;限制为对应出口失败,保留其他候选。

  • 界面识别 purpose=guard 原本忽略专用视觉角色,调用客服答题模型和裁判;本地修复为视觉角色单出口,无视觉角色时兼容主出口,普通客服问答不变。

  • 视觉任务丢弃网关知识引用元数据,无法关联模型任务;现保留有限的来源编号、版本、相关度,重启恢复与新轮清理通过,正文不入本地待回复状态。

  • knowledge_summary 被配置保存/读取白名单丢弃,界面可能一直显示0;补齐字段及类型规范化。用合成服务端摘要1234条经真实临时JSON同步、重读后,界面正确显示1,234。真实摘要需下次成功配置同步后刷新。

真实接口证据

  • config-source.json:实时服务端配置、协议类型与知识库开关,不包含密钥。
  • config-target-recheck.json:协议目录保存的登录凭证仍被服务器拒绝;用户表示准备重新登录,尚未取得重新登录成功后的验证结果。
  • live-context-source.json、live-context-source-repeat.json:原线上 Dify 多轮请求连续失败,DeepSeek 成功。
  • live-context-compatible.json:修复后的上下文格式经原线上网关验证,两模型成功。此测试预先拼装请求,不代表服务器代码已更新。
  • live-vision-source.json:原线上 Dify 看不到图,DeepSeek 成功;输入为生成的合成图片。
  • live-knowledge-compatible.json:临时合成知识检索后注入真实模型,两模型引用成功;线上知识库配置未改。

边界与发布状态

  • 本次没有向真实客户发消息,没有做企业微信原生注入或真实发送回执测试;协议测试使用模拟客户端。因此不能宣称所有企业微信版本、实机弹窗、媒体、网络条件均已验收。
  • OCR 真机引擎测试用合成图;完全同名的不同客户仍无法仅凭昵称可靠区分,协议中的账号及会话唯一 ID 更可靠。
  • 上下文按轮数裁剪,不是无限长度,也没有按各模型 token 窗口自动摘要。协议单个当前未回复批次超过 100 条转人工。
  • 生产账号知识库仍关闭且无已发布项;必须审核、发布并启用后才能用于真实业务。
  • 修改位于用户指定的两个本地目录,备份在各自 backups/recognition-audit-20260916。没有重建安装包、替换线上镜像、修改线上模型角色或重启线上服务。只读 SSH 检查被服务器关闭连接,因此没有通过 SSH 进行线上补丁验收。
  • 重启对应客户端可加载桌面端修复;服务器侧 model_protocol.py、model_gateway.py 修复需要随下一次网关发布上线后再复测,不能仅靠重启桌面客户端解决线上 Dify 问题。

详细分项报告:visual-report.md、protocol-report.md、ai-context-report.md、knowledge-cache-report.md。Dify 文件接口格式参考官方 API 模板。