词库整理 · Vocabulary Store
规范词库是单一事实来源:一份 vocabulary.json 持有你的全部词条,其它 App 只是它的下游视图。本模块负责这份文件的结构、去重合并与导入导出。
Triggers
Activate when
- 用户要建立、读取或维护一份统一词汇表。
- 用户给了外部词条(文件、粘贴、口述)要求合并去重进规范词库。
- The user asks to create, merge, or export the canonical vocabulary.
Do not activate when
- 用户只关心某款具体 App 的词库读写(交给 app-adapters)。
- 用户要制定跨 App 同步策略(交给 sync-plan)。
Canonical shape
vocabulary.json:
{
"version": 1,
"updated_at": "2026-08-21T00:00:00+00:00",
"entries": [
{
"phrase": "手工川工作室",
"note": null,
"category": "general",
"lang": "zh-CN",
"enabled": true,
"hits": 0,
"source": "manual",
"created_at": "2026-08-21T00:00:00+00:00",
"updated_at": "2026-08-21T00:00:00+00:00"
}
]
}
字段约定:phrase 唯一键;category 取 general/company/person/product/place/other;lang 用 BCP-47 标签;hits 只增不手动清;source 记录 manual/import/openless/typeless 等来源。
Workflow
- 定位
vocabulary.json:优先用records.canonical_path,其次当前工作目录,最后workspace下的默认路径。没有则新建。 - 用
scripts/vocab_cli.py merge导入新词条:按phrase精确去重,已存在则保留已有条目,仅在缺失时追加。 - 导出到某 App 格式时用
render子命令,仅做字段映射,不改 canonical。
Merge / render examples
python3 "$KIT_DIR/scripts/vocab_cli.py" merge \
--canonical vocabulary.json \
--import source.json \
--from-app openless
python3 "$KIT_DIR/scripts/vocab_cli.py" render \
--app openless \
--canonical vocabulary.json \
--output openless-dictionary.json
脚本不访问网络、不写目标 App;合并与渲染都是纯文本、幂等。
Dependencies
- Python 3.9+,仅标准库。