Skip to content

国际化

范围

国际化有四个表面:

  • 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 和 技术术语保持原文。

automixed 可能仍出现在旧卡或内部检测输出中,但新审批卡片应该收敛到 enzh 内容。

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/

每种语言保持同构目录:

text
docs/guides/quickstart.md
docs/zh/guides/quickstart.md

未来新增语言时,新增一个顶层 locale 目录,并在 docs/.vitepress/config.tslocales 中增加对应配置。不要再创建 quickstart.zh-CN.md 这类语言后缀路由。

命令、路径、配置键、frontmatter 字段、API 字段和包名不能翻译。应该翻译它们周围的说明文字。

原始来源归档和用户原话记录可以保持原语言,但公开入口应该链接到对应语言 版本。

面向 AI coding agents 的本地优先经验召回。