Files
WeChat-AI/docs/e2e-checklist.md
T

5.5 KiB
Raw Blame History

E2E 验收清单

环境:已配置 .env、完成 db:migrate + db:seed、至少一个 Bot 登录、LLM 可用。

A. 安装与诊断

  • pnpm install 成功
  • pnpm db:migrate / pnpm db:seed 成功
  • pnpm diag 在配置正确时 PASS(弱 token / 无 bot 仅警告)
  • pnpm test 全部通过

B. Admin

  • 打开 http://127.0.0.1:8787/admin 可加载
  • 填入正确 Token 后总览卡片有数据
  • 可见默认人设 catgirl / girlfriend
  • 可创建新人设并出现在列表
  • 可发布人设新版本

C. Bot 与多人

  • pnpm ilink:login 扫码成功,Admin → Bot 可见账号
  • 微信用户 A 发消息后,Admin → 用户出现 pending
  • 批准 A 后,A 收到角色扮演回复(默认猫娘风格)
  • 用户 B 同时发消息:会话与记忆不与 A 串味
  • Admin 将 A 分配为女友人设,A 回复风格变化
  • A 发送 /角色 xxx 收到「仅后台分配」提示
  • 未批准用户收到开通引导(或被忽略)

D. 记忆

  • A 陈述偏好(如「我叫小明」)后,多轮后记忆列表出现相关事实(每 N 轮抽取)
  • 重启 pnpm dev 后 A 的记忆仍在
  • Admin 重置 A 记忆后列表清空

E. 多 Bot(可选)

  • 第二次 pnpm ilink:login -- --name bot2 增加第二个 Bot
  • 两个 Bot 的 peer 互不混淆

F. 限流与体验

  • 同一用户短时间连发超限,收到「发得太快」提示
  • typing 调用失败不影响正常回复(best-effort

F.1 输入状态(getconfig + status 1/2

  • 发消息后微信显示「对方正在输入中」
  • 回复送达后指示器消失(不是等服务端超时)
  • 多气泡回复期间指示器在气泡之间持续显示
  • 被限流 / 未批准被拒 / 用户互聊中继后,指示器也停止
  • 抓包确认每个 peer 只有一次 getconfig(票据缓存生效),之后只有 sendtyping
  • sendtyping 携带 typing_ticketstatus
  • 人为让 getconfig 失败(改 baseUrl)→ 回复仍正常送达

F.2 入站媒体

  • VISION_ENABLED=false 时发图 → 回「看不了图片」,且没有产生 LLM 调用
  • VISION_ENABLED=true 且模型支持视觉时发图 → 回复据实描述图中内容
  • 发图 + 文字说明 → 两者一起进入同一轮对话
  • 一条消息发 3+ 张图 → 只识别 VISION_MAX_IMAGES 张,其余按「看不了」告知
  • 超过 INBOUND_MEDIA_MAX_BYTES 的图 → 降级为「看不了」,回复不失败
  • 发视频 / 文件 → 按类型回话,且模型没有编造内容
  • 发带转写的微信语音 → 按文字正常对话,不出现「我听不到」
  • VOICE_TRANSCRIPT_ENABLED=false 后同一条语音 → 回「没听清,麻烦打字」,且不走 LLM
  • 该开关与 VISION_ENABLED 互不影响(图片关、语音开是默认组合)
  • 发图后下一轮追问 → 历史里是 [图片] 占位符,上下文没丢
  • chatflow 模式人设收到图 → 看到 [图片] 占位符,不报错

G. 安全

  • 无 Token 访问 /api/v1/* 返回 401
  • Token 不出现在审计全文中;仅存 Redis wa:bot:{id}:creds

H. 用户对话(@LINUX DO

  • 用户中心可生成绑定码;微信 /绑定 CODE 成功;/我的身份 显示用户名
  • 双方均绑定且各聊过机器人后,A 发 @B用户名B 收到请求
  • B /同意 后互发文字,内容带 [用户名] 前缀
  • /断开 后普通消息恢复 AI 角色扮演
  • 未绑定 / 无 context_token 的目标:发起方收到明确错误提示
  • hello @user 不触发请求(整条消息匹配)

I. AI 网关(自定义模型 / 联网搜索)

前置:已部署 huggingface/wechat-ai-tools,主站配置 TOOLS_BASE_URL / TOOLS_API_KEY / LLM_PROVIDER_SECRET

  • /app我的模型:可添加连接(名称 / Base URL / Key / 模型),列表显示掩码 Key
  • 可停用 / 启用 / 删除连接
  • 未配置 LLM_PROVIDER_SECRET 时页面提示明确、不落库
  • 人设选择「我的连接」后对话正常;抓包确认主站 直连该 base_url(仅打 TOOLS
  • 人设开启联网搜索 + WEB_SEARCH_ENABLED=true:问时事类问题触发 /v1/web-search
  • 审计日志 / 应用日志中 不含 upstream api_key 明文
  • Fork 他人人设:新人设 llmProviderId 为空(不继承作者密钥)

J. Chatflow

  • 人设编辑器切「Chatflow 流程」保存后,卡片显示 Chatflow 徽章
  • /chatflow?persona=<id> 可加载(未保存图时显示默认 start→llm→answer
  • 拖拽节点、连线、编辑属性后「保存并启用」成功
  • 非本人人设打开为只读(保存按钮禁用)
  • 微信对该人设发消息,回复由流程产出
  • 网页试聊 chatflow 人设可正常回复(走平台模型,不消耗作者额度)
  • search 节点在人设未开搜索 / 未配 TOOLS 时报错清晰
  • http 节点填非 allowlist 域名 → 被拒(http_blocked
  • chatflow 人设不触发主动联系(skip: chatflow_no_proactive
  • 图校验:无 answer / 多个 start / 超 CHATFLOW_MAX_NODES → 400

验收结论

全部关键项(A–D、F–G)通过即可判定:系统已完成并可验收
E 为多 Bot 增强项;H 为用户对话增强项;真机扫码依赖本机微信与 iLink 可用性。
I / J 需先部署 HF 工具服务(docs/ai-gateway.mddocs/chatflow.md);未部署时这两节整体跳过。