Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions HANDOFF.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

- 更新:2026-11-15 / Claude Code(**air 本机**)。阶段:**已发布 1.3.0 / build 43**(tag `v1.3.0`,Release、站点已上线);
air 与 pro 均已装发版产物(执行 `9cb738c9…`),30/30 样本、性能、内存、IT-22 A 档 / N1–N5 全部 PASS。
- 分支:`main` = `7014346`(PR #314 86 专注 + 标准变体已合入);`dev` = 本轮 D2 字形别名(ADR-359/报告 285)待开 PR。
- 分支:`main` = `7b95ba6`(PR #314 86 专注 + 标准变体、PR #315 D2 字形别名均已合入);`dev` = `8aa77f4`(与 origin 同步)。
- 版本:`Cargo.toml` = **1.3.0**、`packaging/build-number` = **43**;最新 tag **`v1.3.0`**。**下次正式发版前必须重新绑定候选身份。**
- 最近验证:`make verify` PASS(528 产物零网络符号)、`make macos-offline-tests` **67 文件 / 335 例 PASS**、`build.sh --strict` PASS、
`tools/check-level3-codes.py` PASS(3,362 条)。
- 最近验证:`make verify` PASS(538 产物零网络符号)、`make macos-offline-tests` **67 文件 / 336 例 PASS**、`validate_b0.py` PASS(1,000 条)、
`build.sh --strict` PASS、`tools/check-level3-codes.py` PASS(3,362 条)。
- 1.2.1 身份:提交 `168115e`、ZIP `102f4928…`、DMG `a6f4bdbd…`、更新程序 `b04049e3…`、appcast `40`、包内执行 `3eeeb0aa2ae4be0facd0120c854ea822ad1ba749dd3a22611f39a97db6fc32d9`(`docs/releases/1.2.1.md`)。
- 1.2.0 候选身份:提交 `31fdbcd`、ZIP `64eeb90f…`、源码 `3dc6f717…`、宿主执行 `ef25e92ba085ea3f556e12d477fb1b6a6cd08ebbc3b74897fdb7b2d9f6eead64`(`docs/releases/1.2.0.md`)。

Expand All @@ -16,7 +16,7 @@
| 设备 | 已装包与执行 SHA | 数据 / 输入源 | 恢复点 |
|---|---|---|---|
| **air**(arm64 / macOS 27.2 / Xcode 27,用户 `joker`;本会话已有辅助功能/事件投递权限) | **1.3.0 / build 43**(2026-11-13 装机,报告 270),ZIP `a191b60d…`,宿主执行 `bda6f0903f95e07f9800577083eee452d46b0b9f3ca9520caab23d298a790df9`(U1-4 候选 `b8dd20f`,2026-11-14 装机;
备份 `updates/install-backup-20261114T084240Z/`);输入源 `Lampyris.default` 已启用并选中;**`mode=wubi`** | config `3aea2bca…`、`practice.tsv` `2512f4…` 在样本前后不变;词库 1838 行 `8fa18a7d…`(build 41/42 隔离失效与性能/内存门禁的键入学习所致,行数 1784→1838) | build 42 `5d75e2fd…` 在 `updates/install-backup-20261113T051338Z/`;build 41 `aa040adc…` 在 `updates/install-backup-20261113T044337Z/`;`main` 候选 `2610d1f` 在 `updates/install-backup-20261113T041111Z/` |
备份 `updates/install-backup-20261114T084240Z/`);输入源 `Lampyris.default` 已启用并选中;**`mode=wubi`** | 2026-11-15 01:19 采集:config `888ed018…`(mode=wubi / punctuation=chinese / full_width=half / chinese_variant=simplified,显式 hotkey 8 项)、词库 2046 行 `182ee41c…`;与 2026-11-14 样本时的 `3aea2bca…`/1838 行不同,属用户日常使用,非本轮改动 | build 42 `5d75e2fd…` 在 `updates/install-backup-20261113T051338Z/`;build 41 `aa040adc…` 在 `updates/install-backup-20261113T044337Z/`;`main` 候选 `2610d1f` 在 `updates/install-backup-20261113T041111Z/` |
| **pro**(Intel / macOS 13.7.8,用户 `bot`,SSH 别名 `pro`) | **1.3.0 / build 43**,宿主执行 `9cb738c9…`(2026-11-13 用户经 `upgrade.py` 从 1.2.0/39 升级) | config `b8c7a351…` 未变、词库 963 行(962→963,真实键入;`show_wubi_learning=true` 是用户有意设置) | `updates/upgrade-2026-11-13T11-40-50Z-AE6D4E61/`;更早备份见 `updates/` |

## 2. 本轮完成
Expand Down Expand Up @@ -67,7 +67,7 @@
初版清单误用 D3 BMP PUA,已更正为 D2 补充区;可定位 79 个 PUA,按 `(PUA, 键位)` 核验 66 条,
状态 `verified 58 / partial 8 / unresolved 13`。B0 1,000 字 `full` 735→919;运行时 3,000 字 `full` 1,904→2,454;
D3 不再作 `componentsSource`;未解决项仍以 `?:键` 占位,不猜。
- **P1 · 数据与方案**:corpus M2-1 调研 ✅、N1-d ✅、N2/N3/N4 ✅(ADR-355)、cjk-decomp 扩量 ✅(ADR-357)、标准 v1 ✅(ADR-358)、D2 字形别名 ✅(ADR-359);余项是覆盖扩量(87.1%→98%,受许可数据限制)、13 个语境歧义 PUA、P1-5 拆字说明同步、多方案码表(TBD-2,98/新世纪暂不实现)。
- **P1 · 数据与方案**:corpus M2-1 调研 ✅、N1-d ✅、N2/N3/N4 ✅(ADR-355)、cjk-decomp 扩量 ✅(ADR-357)、标准 v1 ✅(ADR-358)、D2 字形别名 ✅(ADR-359);覆盖已到许可数据上限(87.1%),P1-5 已关闭;余项仅 13 个语境歧义 PUA(可选)与多方案码表(TBD-2,98/新世纪暂不实现)。
- **P2 · 有证据才做**:排序观察期、位置记忆、冷首键、拼音后端评估、n-gram(均写触发条件)。
- **明确不做**:云/账号/广告/统计/剪贴板/语音;平台扩展单独立项,不与 macOS 同批。

Expand All @@ -87,10 +87,14 @@
| 8 | ~~宿主内完整引导真机目视~~:候选 `b8dd20f`(执行 `bda6f090…`)菜单入口/翻页/首次自动弹窗 PASS;标记恢复、探针窗口与临时文档已清理 | ✅ 2026-11-14(报告 276) |
| 9 | ~~U3-1 整句模型~~:原型未达 +5pp,**已关闭**(ADR-352,报告 278);不再投入 | ✅ 2026-11-14 关闭 |
| 10 | ~~U3-4/N1-d~~:已更正数据源并接入 66 条 `(PUA, 键位)` 核验;运行时 `full` 1,904→2,454,`partial` 876→326;剩余 13 个 PUA 保持占位 | ✅ 2026-11-14(报告 280) |
| 11 | ~~N2/N3/N4 数据地基~~:56 个成字字根真实笔顺、结构覆盖 2,766、8 个 D2 漏拆补齐;schema v6 | ✅ 2026-11-14(ADR-355,报告 281;待提交 PR) |
| 11 | ~~N2/N3/N4 数据地基~~:56 个成字字根真实笔顺、结构覆盖 2,766、8 个 D2 漏拆补齐;schema v6 | ✅ 2026-11-14(ADR-355,报告 281) |
| 12 | ~~标准 v1 + 86 专注~~:schema v7、241 条 root/key、98/新世纪仅留 profile | ✅ 2026-11-15(ADR-358/359,报告 284/285;PR #314/#315) |
| 13 | **集成验收(不发版)**:用当前 `main` 构建候选包,做自闭环验收(热键/上屏、TextEdit 实键入、性能/零外联、学习区数据回读),确认已合入改动无回归 | ⏳ 待授权换包 |

剩余开发项:高频字拆解仅剩 13 个未解决 PUA(保持占位,后续才需要 Academia Sinica/自绘);
整句模型、多方案码表(依赖外部数据/许可)。符号 / emoji(U3-5)已真机 PASS。
**发版决策(2026-11-15)**:功能迭代较多,**先不发版**,先做集成验收。
剩余开发项:86 覆盖率已到**许可数据上限**——3,000 字 `full` 2,614(87.1%)/ `partial` 232 / `unknown` 154;
继续提升需要 canonical 五笔根序数据(公开可用的没有),或接入 CDP(GPL-3,结构/笔数,不补根序)。
98/新世纪按用户要求暂不实现,只保留 `schemes/*.toml` 扩展点。整句模型已关闭。

## 4.1 换到 air 后怎么开工

Expand Down Expand Up @@ -132,6 +136,9 @@ make macos-offline-tests

## 9. 会话日志(最近)

- 2026-11-15 / Claude Code(air):**PR #314、#315 已合入 main(`7014346`、`7b95ba6`)**。PR #314 = 86 专注 +
标准变体(240→241 条 root/key,98/新世纪仅留 profile);PR #315 = D2 字形别名(ADR-359,报告 285)。
当前 B0 3,000 `full` 2,614(87.1%)/ `partial` 232 / `unknown` 154;1,000 `full` 928。CI 全绿后均为 merge commit。
- 2026-11-15 / Claude Code(air):**D2 字形别名归一化(ADR-359,报告 285)**。逐条复查标准 v1 的
73 条 `positionMismatch`,把 D2 用假名/注音符号代替部件的同形写法归一化(`リ→刂`、`ㄗ→卩`、`ク→夕`),
另补 `彑`(X)到标准字根清单、`ノ` 作撇笔画。B0 1,000 字 `full` 916→**928**、`partial` 80→**68**;
Expand Down
2 changes: 1 addition & 1 deletion docs/MVP后执行计划.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
| **D 排序观察期** | 1.1.x 补丁 或 1.2.0 | ADR-304 P2:误选不学习、时间衰减、MRU;P3:位置记忆/「固定顺序」开关 | 只有 C 之后样本集仍显示明显非首选率才做;**一次一项**,便于归因 | C 的样本集对比数据 | 单变量对比显示改善,且无"越用越乱"回归 |
| **E 拼音深化** | 独立立项 | 拼音后端质量评估 → 是否自研 FSA 的 ADR → 整句/长词(很可能不做) | 风险面与五笔排序无关,不能搭车 | 质量评估报告 | 有证据支持才立 ADR |
| **F 平台扩展** | 独立项目 | R3 Windows(TSF spike 限 1–2 周,失败退 C++ 薄壳)→ R4 Linux → R5 移动端 | 各平台宿主互不影响,但会分散维护精力,**串行** | macOS 维护有余力 | 各自平台真实应用验收 |
| **G 数据/教学** | 随数据批次 | 拆字说明扩充(现状 104 条完整解释)、`TBD-2` 五笔98/新世纪/郑码 | 纯数据,无行为变化,可跟在任何发布后面 | 数据许可与核验 | 覆盖率提升且抽样核验 100% |
| **G 数据/教学** | 随数据批次 | ~~拆字说明扩充~~(已由 B0 运行时 2,614 条解释取代,2026-11-15 关闭)、`TBD-2` 五笔98/新世纪/郑码(暂缓) | 纯数据,无行为变化,可跟在任何发布后面 | 数据许可与核验 | 覆盖率提升且抽样核验 100% |

## 2. 能合 / 不能合的判断

Expand Down
15 changes: 9 additions & 6 deletions docs/待办与积压.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
| P1-2 | ~~corpus M2-1:来源与许可调研~~ ✅ 2026-11-14(ADR-353,报告 279);主候选中央研究院「漢字構形資料庫」(GPL-3/GFDL/CC BY-SA 2.5 TW)+ cjk-decomp(MIT/Apache-2.0)交叉校验;未下载数据 | `docs/research/root-glyph-sources.md`;官方站点证书过期需离线核对 | S | — | ✅ 已调研 |
| P1-3 | **字根字形身份库(N1)**:N1-d 已解掉可定位的 D2 补充区 PUA;剩余 13 个未解决项与字形绘制 | ADR-353:N1-d 核验表已接入(报告 280);剩余 13 个(如 U+F005A 氏/卯、U+F001B 才/亅、U+F0145 乚/匕)保持占位。后续才需要 Academia Sinica / 自绘;不再需要全量自绘 251 个 | M–L | N1-d ✅ | 数据入库 |
| P1-4 | ~~真笔顺(N2)/ 结构标注(N3)/ 完整拆字(N4)~~ ✅ 2026-11-14(ADR-355/356,报告 281/282) | D18 56 个成字字根真实笔顺;结构覆盖 2,766/3,000(识别码优先/IDS 参考,146 条冲突记录);8 个 D2 漏拆字补成 full。标准 v1 + 字形别名后 B0/runtime full 2,614(87.1%);剩余 232 partial / 154 unknown;D24 cjk-decomp(Apache-2.0)已接入,未用 D3 作来源 | M–L | P1-3 ✅ | 数据入库 |
| P1-5 | **拆字说明扩充** | B0 已有 2,759 条 `full` 结构化解释(运行时 2,602);D14 旧表仍是 104 条,尚未同步/扩写 | L | P1-4 ✅ | 数据入库 |
| P1-5 | ~~拆字说明扩充~~ ✅ 2026-11-15 关闭(被 B0 运行时取代) | 学习区已改为读包内 `B0-runtime.tsv`(3,000 字,`full` 2,614 条结构化解释,由 `render_explanation` 生成);D14 旧表(`wubi86-verified.tsv`)只作「资源缺失」兜底,不再逐条扩写 | — | P1-4 ✅ | 不再单独排期 |
| P1-6 | **多方案支持**(五笔 98 / 郑码 / 仓颉) | **当前不实现**:先把 86 做透;标准 v1 已留 `schemes/*.toml` profile 扩展点,98/新世纪需各自字根/码表许可数据 | M(含数据) | 用户暂缓 | 暂缓 |
| P1-7 | ~~客户端自动回读缺口~~ ✅ 2026-11-14 关闭 | 用户决定收敛外部依赖:Safari/Chrome/Xcode 自动化、探针、fixture 与客户端矩阵已移除;验收只保留系统自带 TextEdit(质量样本)与自建 imetype 窗口 | — | — | 已闭环 |

Expand Down Expand Up @@ -101,7 +101,9 @@

### P3 · 长期/研究性

- **corpus 全量**(3,000 字 ≥98% 可解释):依赖 P1-3/P1-4。
- **corpus 全量**(3,000 字 ≥98% 可解释):**已到许可数据上限**——标准 v1(ADR-358)+ 字形别名(ADR-359)后
`full` 2,614(87.1%)/ `partial` 232 / `unknown` 154。继续提升需要公开许可的 canonical 五笔根序数据(当前没有),
或接入 CDP(GPL-3,仅结构/笔数,不补根序)。不降标准、不猜;暂不排期。
- **D3 oracle 替代**(TBD-5):D3 已降级为"未声明许可、仅构建期"。
- 平台扩展(Windows TSF / Linux Fcitx5 / Android / iOS):单独立项,不与 macOS 质量批次同期,见 `ROADMAP.md`。

Expand All @@ -115,11 +117,12 @@
|---|---|---|---|
| **A · 收尾(已清零)** | P0 全部完成 | — | — |
| **B · 产品可感(已完成)** | U2-3 扩展词库、U3-5 符号 / emoji 均已真机 PASS | — | — |
| **C · 数据地基(本轮完成 N1-d/N2/N3/N4)** | N1-d 已接入;N2 真实笔顺/N3 结构/N4 完整拆字已落地;余项是覆盖扩量(86.3%→98%)、13 个语境歧义 PUA、P1-5 说明同步 | 2–3 周+ | 长期数据正确性;短期用户不可见 |
| **C · 数据地基(已完成到许可上限)** | N1-d/N2/N3/N4 + cjk-decomp + 标准 v1 + 字形别名全部落地;`full` 2,614(87.1%)。剩余 232 partial / 154 unknown 需 canonical 根序数据;13 个语境歧义 PUA 属可选收尾 | — | 长期数据正确性;短期用户不可见 |
| **D · 验收收敛(已完成)** | 移除 Safari/Chrome/Xcode 自动化、探针与 fixture;只保留 TextEdit + imetype | — | 已闭环 |
| **E · 小版本发货** | 把新 B0 数据(运行时 full 2,454)装进 1.3.1/build 44;可顺带确认练习错题加权外观 | 1–2 天 + 换包/发布授权 | 让用户实际看到学习区改善 |
| **E · 小版本发货(暂缓)** | 把新 B0 数据(运行时 `full` 2,614)装进 1.3.1/build 44;可顺带确认练习错题加权外观。**用户 2026-11-15 决定先不发版**,先做集成验收 | 1–2 天 + 换包/发布授权 | 让用户实际看到学习区改善 |

**建议**:先把 PR #307 合入 main;然后在 C(继续数据地基)与 E(小版本发货)之间选。若近期要发版,E 的收益最直接;若继续做长线,C 里优先 N2 笔顺(需先定数据源)。验收侧的 P1-7 已随“自闭环”收敛关闭。
**建议**:C 已到许可数据上限,暂不继续投数据;E 暂缓发版。当前主线是先做**集成验收**(确认已合入的改动在候选包里行为正常),
再决定 1.3.1 的发版时机。验收侧的 P1-7 已随“自闭环”收敛关闭。

## 4. 需要你现在决定的事

Expand All @@ -129,7 +132,7 @@
4. ~~U3-4/N1-d 是否按样本字逐条确认~~ ✅ 2026-11-14 已完成可定位部分:66 条 `(PUA, 键位)` 核验接入,
运行时 `full` 1,904→2,454;剩余 13 个未解决项保持占位。清单见
`modules/hanzi-structure/corpus/pua-inventory.tsv`,核验表见 `pua-supplementary.tsv`。
5. **下一步二选一**:C(继续覆盖扩量/P1-5)或 E(把新数据做成 1.3.1 小版本发货)。
5. ~~下一步二选一~~ ✅ 2026-11-15:C 已到许可数据上限、P1-5 关闭;E **暂不发版**,先做集成验收。
6. ~~N2/N3/N4 是否继续~~ ✅ 2026-11-14 完成数据地基(ADR-355,报告 281);覆盖率门槛仍待扩量。

## 5. 已完成(存档,便于对账)
Expand Down
9 changes: 9 additions & 0 deletions docs/数据来源与许可.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,15 @@ D2(`aardio/wubi-lex`,MIT)把部分五笔字根写成补充区私有码位
- **N4 完整拆字**:`data/learning/wubi86-complete-decomp.tsv`(D18)补 D2 漏拆的 8 个字(没 城 余 代 件 凭 俄 浠),组件全部为可读字形、键位与全码逐位对齐。只在这 8 个字上启用,`componentsSource=D18`;其余仍用 D2。
- B0 schema 升到 **v6**;机器登记见 `data/sources.toml` 的 D18;回归见 `test-hanzi-structure-b0.py`、`validate_b0.py`。

### 五笔拆字标准 v1 与 D2 字形别名(ADR-358/359,2026-11-15)

- `data/learning/wubi86-root-inventory.tsv`(项目自编 CC-BY-SA-4.0,**241 条** root/key):86 标准字根清单,
用于 `full` 的逐组件键位校验;来源是官方 86 字根表、D14 键位事实与码位佐证,不复制任何未许可字形。
- `modules/hanzi-structure/corpus/d2-glyph-aliases.tsv`(项目自编 CC-BY-SA-4.0):D2 用假名/注音符号
代替汉字部件的**同形归一化**(`リ→刂`、`ㄗ→卩`、`ク→夕`),不新增字根/键位;归一化后仍走标准校验。
- 结果:B0 3,000 字 `full` 2,614(87.1%)/ `partial` 232 / `unknown` 154;1,000 字 `full` 928。
剩余条目缺公开许可的 canonical 五笔根序数据,不降标准、不猜。

### D15 自编输入验收集与核心词表扩充(ADR-227)

`data/input-quality.tsv` 为本项目独立编写的433项聊天、工作、开发及长词验收集,作者为项目贡献者,自产编排CC-BY-SA-4.0。292项训练,69项探索验证与新增72项冻结后保留均不参与生成;训练项仅作为D4/D5/D10已有词条的选择条件,不创造读音、编码或频次。SHA见sources.toml。两核心表改为前20,000条加训练词,原始权重保持;个人词与未入选长尾不混作系统覆盖。
Expand Down
Loading