用途:在真实 tmux TUI 会话中以真实用户方式运行 Qwen Code,导航对话框、触发 slash 命令、走查工作流,并保存维护者可复查的可读日志。适合不仅需要 pass/fail 断言,还需要展示屏幕过程的叙述性证据的场景,如 TUI 渲染、对话框、键盘导航、slash 命令、认证流程、回归测试与用户可见流程(/auth、/model、/manage-models、MCP 设置、权限、引导、交互式错误恢复)。若只需工具执行或模型 API 的结构化断言,应改用 headless JSON E2E。
主要能力:用真实的键盘操作驱动 TUI;在每次有意义的状态变化后用 tmux capture-pane -p 保存逐步可读快照;按时间戳目录组织产物,避免覆盖历史运行;通过文本轮询判断完成,而非盲目等待;生成 report.md 汇总结果与证据指针。
必要用法:产物目录形如 tmp/<scenario>-tmux-YYYYMMDD-HHMMSS/,包含 tmux-readable-full.log(主报告)、tmux-final-capture.log、current-pane.txt、report.md。可用辅助脚本 scripts/tmux-real-user-log.sh,通过 start、snapshot、send、type-submit、wait-for、finish 等子命令操作;启动时用 eval 设置 $SESSION、$OUTDIR、$LOG,例如: eval "$(bash .qwen/skills/tmux-real-user-testing/scripts/tmux-real-user-log.sh start <scenario> . npm run dev -- --approval-mode yolo)" 运行新场景前先查看用法:bash .qwen/skills/tmux-real-user-testing/scripts/tmux-real-user-log.sh help 手动流程包括:启动 TUI 并使用较大 tmux 视口;发送按键时分开输入与 Enter,避免提交被吞;用屏幕文本轮询完成;最后捕获最终画面并 kill-session。
限制与注意:不要依赖 tmux pipe-pane 作为主报告,其原始 ANSI 流在纯文本中常显示为乱码,仅作可选取证产物。tmux-final-capture.log 只是最后一屏,不是完整过程。capture-pane 记录当前渲染状态,不记录瞬时闪烁。搜索框和输入框有时忽略批量文本,需逐字符发送。删除日志或回滚设置前先询问用户;日志可能外发时提供单独的脱敏副本,不修改原始日志。启动前应提示可能的副作用,如 OAuth 打开浏览器、写入 Qwen 设置、设置 API key 配置、更新模型提供商条目。每次运行使用带时间戳的目录,避免覆盖证据。