主题
10 · 近义词辨析 / 搭配 reseed 交接(RVH → RB)
RVH 段一交付:接 RB 消费契约
~/reading-browser/docs/cross-end/10-synonym-differentiation-handoff.md, 在预装库 pipeline 离线生成pos_definitions的differentiation+collocations两键,烤进reading_vocab.db。 日期:2026-06-14 · RVH Schema v54 不变 / 预装 v18→v19 · 优先级 P3(纯展示增强,不阻塞匹配/同步)
TL;DR(RB 要做的 2 件事)
- 复制预装库:
reading_vocab.db整包覆盖(新 SHAe180784393…),VOCABULARY_SEED_VERSION升 v19。 走 RB/vocab-reseed(merge 路径即可,无 PK 变化、无 prune)。 - 接段二渲染(另起 RB 会话):
dictionary.rs解析两新键、PosGroupBlock加「用法区别」收起态 chip。 详见 RBdocs/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保证 ∈ 该 defsynonyms[](apply 阶段强校验,配不上的条目已在源头丢)。 RB 渲染时按此与近义行配对;理论上不会出现孤立辨析,但 RB 仍可保留「配不上静默丢」防御。
§2 预装库变更
| 旧(v18) | 新(v19) | |
|---|---|---|
reading_vocab.db SHA256 | ef7a7297cb0ea118db15d58053a7250aafa14c01fb9fd39a41fb2b0467644125 | e180784393f4ffe72f770488cb62a46a0c817041d9deb4b1af815bda5f541d38 |
_preinstalledVocabVersion | 18 | 19 |
| 总词数 | 18899 | 18899(不变) |
| Schema 版本 | v54 | v54(不变,纯 pos_definitions JSON 内容增量) |
| tag 分布 / CEFR / 例句 / emoji / canonical_surface | — | 全不变(仅 pos_definitions 加两键) |
覆盖统计(DB 实测):
| 维度 | 词(vocabulary 行) | 义项(sense) |
|---|---|---|
含 differentiation | 5329 | 9237 |
含 collocations | 5600 | 9759 |
| 生成宇宙(带非空 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.rs:Sense解析differentiation/collocations,聚合到 POS 级(同 synonyms 的push_unique)。types/index.ts:PosGroup加两字段。WordSenses.tsxPosGroupBlock:近义行下方加收起态 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.dbbyte-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 + 提交缓存)— 同纹理