75 lines
7.6 KiB
Markdown
75 lines
7.6 KiB
Markdown
# 视觉识别、协议识别、上下文与知识库测试
|
|
|
|
测试日期: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 模板](https://github.com/langgenius/dify/blob/main/web/app/components/develop/template/template_chat.en.mdx)。
|