# 贾维斯语音黑盒测试报告（fan-xian）

- 测试时间：2026-08-29 23:03:05 ~ 23:10:42（时长 456.8 秒）
- 证据来源（三方对齐）：
  - 麦克风轨（你实际说的话）：`Wireless Mic Rx` 录音转写
  - 音箱回放轨（贾维斯实际播放）：`Xiaomi Speaker Mini-6004` 系统回环录音转写
  - 后台事件：gateway.log 意图/声纹/模式时间轴
- 网关进程：pid 62844（本轮重启后加载的干净代码）

## 一、验证正常的部分（模式框架已修好）

| 你说的话 | 贾维斯回复 | 后台事件 | 结论 |
|---|---|---|---|
| 进入会议模式 | 进入会议模式，开始录音了 | mode.enter meeting | 正常 |
| 记一下，明天上午安排项目会议 | 已为您创建明天上午的项目会议提醒 | intent chat（会议内容被录） | 正常 |
| 退出会议模式 | 已退出会议模式，恢复常规操作状态 | mode.exit | 正常 |
| 进入头脑风暴模式 | 进入头脑风暴，想法我都给你记着，随便说 | mode.enter brainstorm | 正常 |
| 进入编程模式 | 进入编程模式，给你开终端 | mode.enter coding + coding_door | 正常（进编程=开终端，设计如此） |
| 退出编程模式 | 已退出编程模式，回到常规语音管家状态 | mode.exit | 正常 |

结论：上一轮重启网关后，三大模式的进入/退出、变色、语音确认全部正常。

## 二、澄清：两个“看起来是问题”其实不是 bug

### 1. “进编程模式多触发一个动作” = 设计如此
- gateway L2353：编程模式带 needCodingDoor 标记，进入时本就会顺带开 dsh 终端。
- 日志 `mode.enter coding → coding_door → open_result` 是一次正常进入，不是重复触发。
- 建议：不改。

### 2. “记任务卡敷衍/没记真内容” = 功能其实正常，是回复话术落差
- 实际生成的想法本（信息简报）准确抓到你三个点子：
  1. 新项目点子孵化（快速捕获、即时封存、不卡）
  2. 测试文档标准化建议
  3. 任务卡化工作流落地
- 任务卡也结构完整生成（背景、需求要点、技术约束、待确认问题）。
- 你觉得敷衍的原因：当下语音回复是“请告诉我您的想法内容”这类反问，让你以为没记；实际后台已记录并生成卡。
- 根因：头脑风暴里“记成任务卡”这句的语音回复被 s2s 自由对话接管，没有由 handoff 分支给出确定的“已记好”确认语。
- 建议：改回复话术/时序（低风险），而非改记录功能。

## 三、确认的真实 BUG（第三项）

### 查/开任务卡：指令错位 + 整段回复重复播报
实录时间轴：

- 07:28 “能查到我新建的任务卡吗” → 判 open_recent → 去开了 `贾维斯-会议记录-2026082.md`（答非所问）
- 07:44 “打开对话框” → llm_router.error → chat_door
- 08:14 “帮我打开最新的一个” → open_recent
- 08:26 “打开你的对话框” → open_app
- 回放轨证据：“已为你打开撰写测试文档任务的对话框……需要我帮你先生成一个标准测试文档框架吗”整段播了两遍。

根因方向（待改）：
- “查任务卡/打开任务卡”这类口语被 LLM 路由分散判成 open_recent / open_app / chat，指令与动作错位。
- open_recent 门触发后回复被重复播报（疑似 onResult 与门内自身播报叠加）。

## 四、附带发现：声纹在长回复期间挡掉本人

- 09:15 “打断一下” → 声纹 sim=0.58、0.73 两次 allow=False 被拒（阈值 0.75）
- 直到 sim=0.77 才放行
- 后果：你想打断时它不理，仍在自顾自重复播报，形成“它一直说、你插不进话”。
- 说明：这不是模式 bug，是逐轮声纹阈值（VOICEPRINT_TURN_THRESHOLD=0.75）在长回复期间对本人偏严。

## 五、建议的修复优先级（待帆哥确认）

1. 高价值·低风险：头脑风暴“记成任务卡”给确定确认语（消除“敷衍”体感）。
2. 真 bug：查/开任务卡指令错位 + 重复播报（需改 gateway open_recent 分支，属核心，改前需你确认）。
3. 体验：声纹逐轮阈值在长回复期间放宽/支持“打断一下”硬打断。
4. 不改：进编程模式开终端（设计如此）。
