# 听记发言人内容匹配

> 返回入口：[DingTalk Minutes Skill](../SKILL.md) · [Reference 与脚本索引](minutes.md) · [确认后替换发言人](11-minutes-speaker-correct.md)

只在用户要求“总结某人在这场会议里说了什么”，但逐字稿中的发言人标注仍需核对时读取本文件。只要用户要的是整场会议摘要，直接使用根 Skill 的 `+detail`；不要进入本流程。

## 稳定流程

1. **锁定听记**：已有 `taskUuid` 或 URL 时直接解析；只有标题/时间时使用 `+search --scope all --page-all`。零命中、多候选或分页不完整时停止，不默认第一条。
2. **读取完整逐字稿**：使用 `dws minutes +transcript --id <taskUuid>`，只有 `complete=true` 才进入人物归集；后页失败时不能用前几页代表整场发言。
3. **检查现有标注**：逐字稿已经稳定标注目标姓名时，按真实 speaker/segment 归集；不要仅在正文中搜索姓名，因为“别人提到某人”不等于“此人发言”。
4. **处理匿名发言人**：把匿名发言人的代表性原话和时间段作为候选证据。只有用户明确要求协助识别时，才可按会议时间查询日程参会人，并用通讯录补充候选的组织信息。
5. **要求用户消歧**：没有唯一、可验证的身份映射时展示候选并让用户选择。职位、部门、语言风格、发言顺序或某一条聊天/文档都不能单独证明真实身份。
6. **输出总结**：只总结已确认人物的真实发言，区分核心观点、问题、承诺/行动项和明确立场；源数据没有的责任人、数字或结论不得补写。

## 身份与隐私边界

- 日程参与人只是候选集合，不等于实际发言人，也不等于发言顺序。
- 不为识别发言人而默认检索其私人聊天或个人文档；用户明确要求跨产品核对时，才分别加载对应产品 Skill，并保留来源边界。
- 不暴露内部 speaker ID 作为人物身份结论。展示候选时使用逐字稿中可见的昵称或“匿名发言人 1/2”。
- 置信度分数不是身份凭证。即使模型判断“很像”，在没有稳定证据或用户确认时也只能给候选，不能写回。

## 后续替换

总结任务本身是只读。只有用户明确要求修改标注，并确认“当前昵称 → 目标姓名”的对应关系后，才读取 [11-minutes-speaker-correct.md](11-minutes-speaker-correct.md)；不能把“帮我总结某人说了什么”自动扩大为替换发言人。

## 失败与不完整

- 逐字稿不完整：返回 `data.complete/data.pages`、`meta.pagination` 或失败信封等证据，停止人物级完整总结。
- 目标姓名未出现在稳定标注中：说明无法直接确认，展示匿名候选或询问用户。
- 同一姓名对应多人或跨组织结果：要求用户选择，保持当前 profile，不跨组织复用 UID。
- 没有足够发言内容：如实说明样本不足，不用其他人的发言补齐。
