指标口径参考(lecture-review)
动态发现优先(总原则):分析的主线是 agent 通读全文后对本场讲师的动态发现——包括任何没被词表、没被上一场历史预设过的模式。预设指标只做两件事:① 常见参考与兜底;② 跨场次对比所需的固定锚点(档案里每场都记这几个数,否则没法比)。如果通读发现的新模式与预设指标冲突,以通读发现为准,新模式量化后可沉淀进档案的「个人观察清单」,下次优先复查。
脚本的角色是计算器,不是分析器:agent 数数会幻觉(估频次不可靠),所以任何进入报告的数字必须出自脚本。流程 = 通读形成发现 → 用脚本量化验证。--count 词1,词2 支持对任意临时词按需计数(含每万字频与三分场分布),用于量化通读中的新发现。
统计脚本(scripts/analyze_stats.py)产出确定性数字,agent 负责解读与补充语义判断。本文档定义每个指标的计算口径与解读规则,两处必须一致。
分母与基础定义
- 可见字符:CJK + 字母数字,不含标点空白。所有频度、语速统一用这个分母。
- 段(block):一个
发言人N 时间戳锚点到下一个锚点之间的文本。 - 主讲:默认全场可见字符最多的发言人;
--speaker可指定编号或姓名(姓名会被 ASR 漂移成多个同音变体,如「王大为/王大维/王达为」,按各发言人文本前 120 字模糊匹配)。 - 前/中/后三分场:按墙钟时间等分主讲跨度(
thirds数组),用于看紧张/疲劳曲线。
口癖(话语标记词)
- 计数:最长优先去重叠——「也就是说」只计入自身,不再喂给「就是」。脚本已处理,解读时直接用
count/per_10k。 - 分类解读(类别见
config/marker_words.yaml):
| 类别 | 判读 |
|---|---|
| 指示填充(这个/那个) | 高频即为口癖强证据,无需辩护 |
| 连接填充(就是/就是说/等于说) | 高频即为口癖强证据 |
| 逻辑连接(然后/其实) | 正常用法占比高,仅当每万字频显著偏高(参考线:然后 > 40/万字、其实 > 30/万字)才报,且要抽例句确认多数是填充用法 |
| 解释填充(相当于/说白了/换句话说) | 中频即可报,律师讲课常见「相当于」癖 |
| 求确认(对吧/是不是/好不好…) | 双重身份:高频是口癖;同时也是互动信号。两个口径都出,报告里分开陈述,不互相抵消 |
- 参考基准:中文讲课每万字话语标记词总量 < 150 属干净;150–300 有明显痕迹;> 300(如本 skill 首跑样本 188/万字仅「这个」一项)属必须整改。基准仅供定位量级,报告以自身历史对比为主。
- thirds 分布:中段显著高于首段 → 进入正题后填充加剧;末段抬升 → 疲劳或赶进度。描述现象,不臆断原因。
语速与节奏
- 估算口径:单段语速 = 段可见字符 / (下一锚点时间 − 本锚点时间)。段间隙含静默与等待,整体略低估;跨场次同一估算口径,对比有效。
- 短确认句(≤20 字)不进语速样本。
- 中文讲课语速参考区间:180–260 字/分钟。持续 > 280 = 听众跟不上的风险;持续 < 160 = 拖。
- 长停顿(>90s 空档):脚本给出前后文与归属发言人。agent 判定性质——等待扫码/装软件/等人进群属操作等待,不扣分,计入「时间分配」的等待类;只有主讲中途的茫然冷场才算节奏问题。判定不了的标注「原因不明」。
- 起手式:
starter_top+starter_runs(连续 ≥3 段同词开头)。报 runs,top 里筛掉正常叙事词(「我们」作主语开场通常无害,「好」高频可能是推进习惯,看录像确认)。
结构信号
- 时间分配:结合
slides_ts(幻灯片锚点)、long_pauses、排除区发言人的时间跨度,把全场切成:开场寒暄调试 / 操作等待 / 正文演示 / 互动答疑。分类是语义判断,时间锚点来自脚本。输出每类的分钟数与占比。 - 承诺回收:
promise_candidates只是候选(脚本正则宽召回)。agent 三步:① 剔除误报(非承诺句);② 对每条真承诺,在后文找兑现证据(同主题内容出现);③ 输出「承诺 → 兑现 ✓/✗/存疑 + 后文时间戳」。存疑不判死刑。 - 互动密度:原始计数 =
audience_address+ 求确认类标记;agent 通读追加真互动(向听众提问并留出回应时间、请大家动手操作)。按三分场如实报分布。互动形态由课型决定(先讲后 QA 属正常设计),不作问题项、不生成整改提醒(2026-09-11 用户校准,SKILL.md 原则 7)。
课件对照(v1.1,需定稿 deck 输入;口径详见 SKILL.md Phase 4.5)
- 页表:
deck.count与deck.pages(label/title/text)出自脚本--deck,agent 不自数页数。text 为页面可见正文的压缩摘录(每页截 600 字、剔 canvas/style/script/注释/标签),用于内容匹配与覆盖度判断;摘录不够时 agent 直接 Read 原 HTML 的对应 section。 - 帧锚点:
slides_ts是关键帧时间戳,不是页码——重复拍、漏拍、无页号三种失真并存;帧-页映射 = 帧附近口述内容 ↔ 页面标题+正文的内容匹配(通读判断)。「某页无帧出现」只是弱证据,不能单独判跳页,须有口述佐证。 - 兑现分类(每页恰归一类):实讲 / 半讲 / 跳过 / 挪位回收(标时间戳,主动取舍可标亮点)/ 主动宣判(引讲者原话)。分类不扣分,如实报告;判定依据 = 口述内容对页面正文要点的覆盖度(半讲 = 部分要点覆盖或讲了内容未立页面框架),不是标题沾边、也不是讲者态度。
- min/页 双口径:粗口径 = 模块实讲总时长 ÷ 页数;净口径 = 扣除现场实演与操作等待后 ÷ 页数。两口径都报(只报粗口径会掩盖静态页超载:实测案例 73min/28 页粗看 2.6,扣实演后实为 1.4)。超载预警:净口径 < 1.5 min/页 且 跳过+主动宣判 ≥ 2 页。
- 找位置摩擦:「看一下顺序 / 翻到 / 在哪一页」类话语,通读发现 +
--count量化;≥2 次即报(页序与讲者心智顺序不一致信号)。 - 档案字段(跨场次趋势,长期超载 = 课件设计习惯问题):
deck: {pages, taught, skipped, 半讲, moved, declared_skip, min_per_page, flip_hunts}。
课件自检(v1.2,deck 单侧;高级模式 Phase 6 第 1 步的输入)
module_distribution:按 chrome label 首个「·」前分组的页数——原始分组很细(每个不同 label 一组),agent 负责归并为大模块(如「第一步/第二步/…」各 4–6 页归入模块三)。near_dup_pages:页正文 char-bigram Jaccard ≥ 0.25 的页对(降序)。只是候选——实测命中"同主题双视图"页对(检索双页/短信双页/套件相邻页),也含目录页↔模块 hero 的良性误报,agent 逐对判读后定性。title_term_index:标题与 label 分词 → 页号索引(保留多页命中或 ≥4 字词)。查概念归属重叠时还要全文检索deck.pages[].text——只查索引会漏"正文提及"型重叠(实测:「失败回写」挂在 P60 label,但 P39 总览正文也定义了一次)。- 脚本不做路线假设检测(手写 vs 生成路线属语义判断),agent 读页表 text 自判。
高级模式(课程结构复盘,v1.2)
- 触发铁律:用户显式说"课程结构复盘/复盘课程设计/课件与实讲对照找结构问题"才启动;常规复盘输出中发现了结构问题的迹象,也只能建议升级高级模式,不得自行越界(D7)。
- 输入:转录稿 + 定稿 deck 缺一不可(只有 deck → 仅课件体检;只有转录稿 → 退常规模式)。
- 产物:按 structural-review-template.md 写入项目目录;archive 存副本 + stats.json;讲师档案只追加
deck:字段组,课程评价不进档案(评课与评人分离)。 - 证据纪律:每条诊断 = 页码 + 时间戳 +(涉讲者意图时)原话引文;结构诊断与执行事故分行;修改建议可执行到页号;回流建议只指去向不替项目做决定。
判断红线
- 每条发现必须带原话例句 + 时间戳,否则不进报告。
- 只评表达与结构,不评内容质量(逻辑是否成立、深浅是否合适、观点对错);课件对照只报"设计与交付的结构落差"事实,不诊断方法论该不该改(归项目复盘与讲者)。
- 频度、占比只对主讲的可见字符计算,排除区数据只用于时间分配。
- 数字一律取自脚本输出,agent 不心算词频;语义补充要标注「agent 通读发现」(min/页的除法由 agent 用脚本产出的页数与时间锚点计算,算式写进报告)。
- 语气填充音(呃/嗯/啊)不在统计范围——ASR 引擎吞语气音,计数不可信。报告首页声明此盲区;用户需要该维度时应换保留语气音的引擎重新转录,本 skill 不补。
降级规则
| 输入缺陷 | 降级行为 |
|---|---|
| 无时间戳 | 跳过语速/停顿/三分场;出口癖 + 句式 + 结构信号(时间分配降为「承诺回收 + 互动密度」),报告标注 |
_corrected / _polished 稿 |
警告「口癖证据已被转录纠错流程删除」,口癖统计标注不可信,其余照跑;raw 缺失即接受缺失(用户 2026-09-11 确认「错过就行」),报告降级声明即可,不推动补录 |
| 单发言人无标记 | 全文视为主讲,警告无隔离校验 |
| 讲师占比 < 50% | 警告可能选错主讲,请求用户确认 |
| 无 deck 文件 | 跳过课件对照段,报告声明缺省,其余照跑 |
deck.parse: failed(非 section.slide 结构的 HTML / 文件不可读) |
降级为手工页表:agent 逐页读 deck(HTML 直接读 / PDF 分页读)自建页清单,报告标注「页表为 agent 手工提取」;帧-页映射与后续步骤不变 |
转录稿无幻灯片帧锚点(slides_ts 为空) |
课件对照退化为「口述内容 ↔ 页标题」匹配(无帧时间轴),min/页不可算,只报兑现分类与找位置摩擦,报告标注 |