英文文档翻译
概述
把英文 Markdown 文档一比一翻译成中文,产出同名 -中文版.md 文件(X.md → X-中文版.md),放在原文同目录。核心是一比一:标题层级、段落、列表、表格、代码块、图表完全对应,不增删、不合并/拆分段落、不意译重组。
翻译过程全部在子代理中完成——本代理只负责定位目标、派发子代理、校验结果并向用户汇报,不读原文、不亲自翻译、不占用本代理上下文。
翻译规则(一比一规范)
下列规则是子代理执行的规范,也是本代理校验产出的判据:
- 产物:英文
X.md→ 同目录X-中文版.md。 - frontmatter:
name:保留英文原文;description:翻译成中文;其余字段(若有)按值翻译。 - 说明句:frontmatter 之后、正文标题之前,插入一行引用块:
> 📝 本文为 \<原文文件名>` 的中文翻译。以英文原文为准;若有出入,请以原文为权威。若知道来源版本,写成翻译自 <项目> v<版本>`。 - 代码块不译:所有 fenced code block(
、dot、mermaid、bash 等)内容原样保留,不翻译、不改缩进、不删行。 - 行内代码保留:反引号内内容(skill 名、文件路径、命令、标识符、URL)原样保留英文。
- 术语首次标注:技术术语首次出现用「中文(English)」形式,之后可只用中文。
- 表格:表头与文本单元格翻译;纯代码/路径/标识符的单元格保留。
- 链接:URL 保留,链接文字翻译。
- 脚注:脚注定义(
[^n]: url)保留 URL,说明文字翻译;正文引用[^n]原样保留。 - 换行:英文源文件的硬换行在中文里不保留(中文段内不换行);段落边界、空行保留。
工作流
无论单个文档还是目录,一律派发子代理翻译,本代理不亲自翻译。
- 定位目标:取
$ARGUMENTS——它是要翻译的文件路径、目录,或 skill 名(如superpowers:brainstorming→ 定位其SKILL.md)。$ARGUMENTS为空说明调用时没带目标,直接报错退出,不要猜。 - 确定待译文件:
- 单个文档 → 该文件 1 个。
- 目录 → 列出目录下所有
.md,排除已有对应-中文版.md的(跳过已有,不重译)。
- 并行派发子代理:每个待译文件派发一个 general-purpose 子代理,
model: "haiku",prompt 用下方模板填入目标文件路径。一条消息同时派发所有子代理(多个 Agent 调用并行)。 - 校验并汇报:子代理返回后,本代理对每个产出跑
diff校验(对照上方规则),确认一比一无漏译;只向用户汇报结果(成功 / 失败 / 漏译清单),不汇报翻译过程。
子代理 prompt 模板
general-purpose 子代理不继承本 skill 的规则,prompt 必须自包含:
你是英文文档翻译代理。把指定的英文 Markdown 文件一比一翻译成中文,产出同名 `-中文版.md` 文件(`X.md` → `X-中文版.md`)放在原文同目录。
规则:
- 一比一:标题层级、段落、列表、表格、代码块、图表完全对应,不增删、不合并/拆分段落、不意译重组。
- frontmatter:name 保留英文,description 译中文。
- frontmatter 后、正文标题前插入一行引用块:> 📝 本文为 `<原文文件名>` 的中文翻译。以英文原文为准;若有出入,请以原文为权威。
- 代码块不译:所有 fenced code block(含 dot/mermaid)内容原样保留。
- 行内代码保留英文(skill 名、文件路径、命令、URL)。
- 术语首次出现用「中文(English)」形式。
- 表格译文本、留代码;链接留 URL、译文字;脚注留 URL、译说明。
- 中文段内不硬换行。
目标文件:<绝对路径>
只翻译这一个文件,写好后返回一行摘要(文件名 + 成功/失败)。
约束
- 一比一是硬要求:不增删内容,不合并/拆分段落,不意译重组。
- 代码块永远不译(含 dot/mermaid 图,图内节点 label 也保留英文)。
- 英文文件名 / 路径 / skill 名 / 命令一律保留。
- 翻译过程一律在子代理中完成,本代理不读原文、不亲自翻译。
- 翻译对象来自
$ARGUMENTS;它是 skill 名(如superpowers:brainstorming)时,自行定位该 skill 的SKILL.md所在路径,不预设本地绝对路径。 - 目录模式默认跳过已有
-中文版.md的文件;用户明确要求时才覆盖重译。