Skip to content

10 · 近义词辨析 / 搭配 reseed 交接(RVH → RB)

RVH 段一交付:接 RB 消费契约 ~/reading-browser/docs/cross-end/10-synonym-differentiation-handoff.md, 在预装库 pipeline 离线生成 pos_definitionsdifferentiation + collocations 两键,烤进 reading_vocab.db。 日期:2026-06-14 · RVH Schema v54 不变 / 预装 v18→v19 · 优先级 P3(纯展示增强,不阻塞匹配/同步)


TL;DR(RB 要做的 2 件事)

  1. 复制预装库reading_vocab.db 整包覆盖(新 SHA e180784393…),VOCABULARY_SEED_VERSION 升 v19。 走 RB /vocab-reseed(merge 路径即可,无 PK 变化、无 prune)。
  2. 接段二渲染(另起 RB 会话):dictionary.rs 解析两新键、PosGroupBlock 加「用法区别」收起态 chip。 详见 RB docs/plans/archive/synonym-differentiation-plan.md

纯 additive:只是 pos_definitions JSON 更丰富(沿 examples/synonyms 同址 precedent)。 无 schema 变更、无资产变更、无 PK 变更、无 prune、不进 Supabase 同步矩阵(红线 #10)。


§1 数据落点 & 形状(契约本体回执)

每个带非空 synonyms 的 definition 加两键,与 synonyms 同址同级(per-definition):

jsonc
{
  // ... gloss / examples / synonyms / antonyms ...
  "differentiation": [
    {"synonym": "large",
     "distinction_en": "Large is more formal; big is common in everyday speech.",
     "distinction_zh": "large更正式,big日常口语常用。"}
    // 3-5 条,synonym 必为该 def synonyms[] 里真实 surface(大小写以 synonyms 为准)
  ],
  "collocations": [
    {"pattern": "big difference", "note_zh": "大差异"}
    // 2-4 条,pattern 含 headword 形态
  ]
}
  • 两键序列化位置固定:synonyms/antonyms 之后、tags/translations 之前(byte-equal 保序)。
  • 两键均可选:某义项无可讲则省略该键(宁缺毋滥,反幻觉)。RB 据「键存在且非空」决定是否渲染入口。
  • differentiation[].synonym 保证 ∈ 该 def synonyms[](apply 阶段强校验,配不上的条目已在源头丢)。 RB 渲染时按此与近义行配对;理论上不会出现孤立辨析,但 RB 仍可保留「配不上静默丢」防御。

§2 预装库变更

旧(v18)新(v19)
reading_vocab.db SHA256ef7a7297cb0ea118db15d58053a7250aafa14c01fb9fd39a41fb2b0467644125e180784393f4ffe72f770488cb62a46a0c817041d9deb4b1af815bda5f541d38
_preinstalledVocabVersion1819
总词数1889918899(不变
Schema 版本v54v54(不变,纯 pos_definitions JSON 内容增量)
tag 分布 / CEFR / 例句 / emoji / canonical_surface全不变(仅 pos_definitions 加两键)

覆盖统计(DB 实测):

维度词(vocabulary 行)义项(sense)
differentiation53299237
collocations56009759
生成宇宙(带非空 synonyms 的 def)5966 词10745 义项
宁缺毋滥(已尝试空标记)933 义项
  • 短语覆盖 = 0(v1 范围):当前语料 0 条短语义项(word_tags 含 idiom/phrasal_verb)带 synonyms, 「仅 synonyms-def」范围下无短语进入生成。短语辨析/搭配整体留 v2(与契约 §3.1「纯搭配无 synonyms 留 v2」自洽)。 生成路径已防御性支持短语(canonical_surface 形态),未来某短语带 synonyms 时自动生效。

§3 生成方法(供 RB 对齐判断,无需复刻)

  • provider:deepseek-v4-flash,temperature 0(稳定事实解释 + prompt cache),json_object
  • 两遍:Pass 1 从噪声 synonyms(thesaurus dump,如 big 85 条含 yuge/Brobdingnagian)挑 3-5 个学习者 真正易混的高频近义词,讲「何时用这个不用那个」(语域/强度/搭配/语气);Pass 2 LLM 评审 drop 循环定义/ 不准/孤立条目。规则过滤:synonym 真实存在 + 长度门 + 循环定义粗检 + collocations 含 headword 形态。
  • 确定性(红线 #10):LLM 输出固化进提交进仓库的缓存 tools/vocabulary_builder_v3/data/differentiation.json (10745 sense 键,复用例句缓存口径 word|pos|gloss-hash)。pipeline 复用不重生成 → 连续重建 pos_definitions 内容 sha 一致(已双跑校验通过)。禁止每 build 调 LLM
  • 成本:一次性 $0.98(2984 calls)。

§4 RB 消费侧(段二,另起 RB 会话)

按 RB 契约 §5 / synonym-differentiation-plan.md

  • dictionary.rsSense 解析 differentiation / collocations,聚合到 POS 级(同 synonyms 的 push_unique)。
  • types/index.tsPosGroup 加两字段。
  • WordSenses.tsx PosGroupBlock:近义行下方加收起态 chip「用法区别」→ 点开本地展开(无网络、无 loading,数据已在卡里)。
  • 入口 v1 落 Library 详情 + 复习卡背面;查词弹窗 v2。不 opt-in(静态数据同 synonyms)。

§5 验证

  • ✅ 确定性双跑:pos_definitions 列 sha 跨重建一致(2f769820…)。
  • ✅ byte-equal:assets DB == output DB(e180784393…)。
  • ✅ 质量抽样(big/about 等):辨析讲「何时用」非循环、synonym 全真实 surface、zh 齐、collocations 含 headword。
  • ✅ synonym 校验:apply 阶段 0 条因「synonym 非真实 surface」被丢(generator 已在源头保证)。
  • RB 端:reseed 后 /cross-end-check 确认两端 reading_vocab.db byte-equal;抽查若干词两键落库形状匹配 §1。

关联

  • RB 契约(上游):~/reading-browser/docs/cross-end/10-synonym-differentiation-handoff.md
  • RVH 落地:本会话 commit · plan ~/.claude/plans/curried-wandering-steele.md + rvh/docs/plans/synonym-differentiation-rvh-plan.md
  • 红线 #10(预装库单点产出,三端 byte-equal)见 CLAUDE.md
  • 先例:v15 例句生成(generator/cache/generate/apply + 提交缓存)— 同纹理