国际化
范围
国际化有四个表面:
- CLI 显示语言;
- 经验卡内容语言;
- 跨语言召回匹配;
- 公开文档语言。
运行时语言策略
语言不写入 config.json。
- CLI 人类输出固定英文,以符合国际开源工具的预期。
- JSON 输出字段名保持稳定英文。
- Prompt-time recall 的固定框架使用英文。用户创建的卡片内容保留该卡自己的语言; 注入给 Agent 的英文规则会要求它在用户回复语言为英文或中文时,用该语言输出可见的 recall 提醒和使用披露。
- 经验卡内容和用户可见的 recall 输出目前只支持英文和中文,因为当前主流大模型在编码 Agent 工作流里对这两种语言最稳定。
策略分层
OME 按表面拆分语言责任:
| 层级 | 策略 | 原因 |
|---|---|---|
| 框架 | 英文 | 稳定 Agent 指令、CLI 行为、JSON contract、测试和文档路由。 |
| 证据 | 原文 | 用户纠正、验收话术和反例需要保真,方便审计。 |
| 卡片内容 | 英文或中文 | 卡片应贴近用户未来最可能再次发起任务的语言。 |
| Agent 输出 | 英文或中文用户回复语言 | 最终提醒和使用披露是用户可见 prose,不是机器 contract。 |
这套分层避免运行时翻译。比如中文用户用中文纠正 Agent,未来也大概率用中文发起相似任务, 那么审批后的卡片通常应该保持中文。这样能保留原始触发短语,减少翻译偏差,也更利于后续 lexical recall 命中。
CLI
CLI help 和人类可读结果固定英文。不要为 CLI 人类界面增加运行时语言切换。
经验卡语言
每张卡片都应该声明内容语言。title、summary、criteria、triggers、topics 和 rule 等字段 跟随创建或审批这张卡时选择的语言;该语言只能是英文或中文。命令、包名、路径、API 和 技术术语保持原文。
auto 和 mixed 可能仍出现在旧卡或内部检测输出中,但新审批卡片应该收敛到 en 或 zh 内容。
Hook 注入给 Agent 的固定框架始终使用英文:标签和说明属于框架文本。卡片内容仍可以以卡片 自己的语言出现。Agent 给用户看的 reminder 和最终 used-card disclosure 在用户回复语言为英文 或中文时跟随该语言。不要依赖 hook-time 翻译;hook 热路径保持本地执行,不调用 LLM。
召回语言
召回引擎必须支持跨语言匹配信号,但不能在 hook 热路径中做翻译。
推荐做法:
- reflect candidate creation 阶段根据用户偏好、主要来源语言和未来召回可用性,在英文和中文之间选择卡片语言;
- 原始用户话术保留在 evidence 和 source archive 中;
- 每张卡片允许维护 aliases;
- 保留命令、包名、路径和代码 token;
- 使用中文短语和 bigram 匹配;
- 在
ome eval recall中评估双语 fixture。
文档语言
面向用户的公开文档使用路径式 locale:
- 英文:
/ - 简体中文:
/zh/
每种语言保持同构目录:
docs/guides/quickstart.md
docs/zh/guides/quickstart.md未来新增语言时,新增一个顶层 locale 目录,并在 docs/.vitepress/config.ts 的 locales 中增加对应配置。不要再创建 quickstart.zh-CN.md 这类语言后缀路由。
命令、路径、配置键、frontmatter 字段、API 字段和包名不能翻译。应该翻译它们周围的说明文字。
原始来源归档和用户原话记录可以保持原语言,但公开入口应该链接到对应语言 版本。
