翻译即 Harness:一个非代码场景的 Harness Engineering 实践

日期:2026-04-14 关联:works/(11 篇翻译)、references/articles.md(18 篇文章索引)


问题描述

在两周内完成 11 篇高质量中文翻译(含 2 篇学术论文),总计超过 5 万字原文。单纯靠人工翻译不现实,纯 AI 翻译质量不可接受(术语不一致、欧化表达、丢失语境)。

核心挑战:如何让 AI 智能体在翻译场景中可靠工作,同时保持术语一致性和出版级质量?

回顾整个过程,我意识到我们的翻译工作流就是一个 Harness Engineering 实践——只是域从”代码”换成了”文本”。


翻译工作流 → Harness Engineering 映射

约束文件 = AGENTS.md

EXTEND.md 是翻译的 AGENTS.md:

target_language: zh-CN
default_mode: refined
audience: technical
style: technical
chunk_threshold: 4000
chunk_max_words: 5000

6 行配置,定义了翻译的目标语言、质量模式、受众、风格、分块参数。加上 40+ 条术语表(glossary)。这就是 HumanLayer 说的”控制在 60 行以内的 AGENTS.md”。

术语表 = Custom Linter

40+ 条术语对照表是翻译场景的”机械化执行”:

术语表规则Linter 类比
Harness → Harness(保留英文)命名约定规则
Feedforward → 前馈术语标准化规则
AGENTS.md → AGENTS.md(保留原样)不可修改的常量

和代码 linter 一样,术语表不告诉 AI “怎么翻译”,而是设置不变量:“无论你怎么翻,这些术语必须这样处理”。这是背压(back-pressure),不是规定(prescription)。

五轮流水线 = Feedback Flywheel

baoyu-translate 的 refined 模式有五个阶段:

01-analysis.md  → 分析原文(领域、语气、术语、翻译难点)
02-prompt.md    → 组装翻译指令(术语表 + 风格 + 上下文)
03-draft.md     → 初稿翻译
04-critique.md  → 批判性审查(诊断:准确性、欧化、策略执行、表达)
05-revision.md  → 根据审查修订
translation.md  → 最终版本(润色)

这就是 Rahul Garg 的反馈飞轮:观察失败(04-critique)→ 诊断根因 → 系统性修复(05-revision)→ 验证效果。每篇翻译都跑一遍这个闭环。

关键细节: 04-critique 只做诊断,不做修复。05-revision 才执行修复。这和 Anthropic #4 分离 Evaluator 的理念一致——评估者不应该同时是修复者,否则容易自我欺骗。

并行分块翻译 = 多智能体协调

Inside the Scaffold 论文(19,547 字)超过了单次翻译的质量阈值。处理方式:

  1. 分块:用 scripts/main.ts --max-words 5000 拆成 5 个 chunk(4989, 4740, 4847, 4444, 1817 字)
  2. 共享上下文:所有 chunk 共享同一个 02-prompt.md(包含术语表、语气分析、翻译难点)
  3. 并行翻译:5 个子智能体并行翻译各自的 chunk
  4. 合并清理:合并后清理 HTML 残留(<sup> 标签)和 LaTeX 符号($\rightarrow$

这就是 Anthropic #7 的”多大脑”架构的简化版:无状态的翻译智能体,通过共享的 02-prompt.md 保持一致性。和 Session 外部存储异曲同工——上下文不锁在单个智能体内,而是通过文件共享。

术语一致性 = 上下文一致性

跨 5 个独立翻译的 chunk 保持术语一致,靠的是 02-prompt.md 中内嵌的完整术语表。这和 OpenAI 的”仓库即记录系统”是同一个原理:所有智能体读同一份文件,就像所有开发者读同一个 AGENTS.md。

实际效果:5 个 chunk 合并后,术语一致性极高,主要的合并清理工作集中在 HTML/LaTeX 格式问题上,而不是翻译质量问题。


原因分析:为什么这套流程有效

有效的部分

  1. 约束够紧:术语表 + 模式 + 受众 + 风格,把 AI 的翻译自由度限制在可接受的范围内(Ashby 定律的应用——通过定义”拓扑”来削减多样性)

  2. 反馈有回路:不是一次性翻译然后验收,而是 draft → critique → revision 的闭环。critique 阶段专门检查欧化表达、术语一致性、语境理解——这些是 AI 翻译最容易犯的错

  3. 分治可扩展:19K 字论文拆成 5 × 4-5K 字的 chunk,每个 chunk 在 AI 的”甜点区”内。这和 OpenAI 的吞吐量理念一致——不是让一个智能体做所有事,而是把任务拆小

  4. 所有中间产物都持久化:analysis、prompt、draft、critique、revision——全部保存在文件系统中。三天后回来审查时,可以追溯每个翻译决策的理由。这就是”仓库即记录系统”

暴露的问题

  1. LaTeX/HTML 格式清理是手动的:合并后发现 $\rightarrow$<sup> 等残留,需要手动 sed 批量替换。这说明翻译 harness 缺少一个格式验证传感器——理想情况下应该有一个后处理步骤自动检测和清理这些

  2. critique 阶段的评估深度有限:04-critique 由同一个 LLM 完成,存在 self-eval 偏差(和 Anthropic #4 的发现一致)。理想情况下应该由不同模型做 critique,或者引入人类抽检

  3. 首篇翻译的术语表是空的:第一篇翻译时术语表还没建立,之后的翻译才逐步补充。这意味着早期翻译的术语一致性不如后期。一个改进是在开始翻译前先做一次全量术语扫描


解决方案(已实施 + 待改进)

已实施

  • EXTEND.md 配置:一次设定,所有翻译自动继承
  • 40+ 术语对照表:随翻译进度持续扩充
  • refined 模式:五轮流水线保证质量
  • 并行分块:大文档拆分 + 共享 prompt + 并行翻译 + 合并
  • 中间产物保存translate/ 目录保留完整工作记录

待改进

  • 格式后处理自动化:添加一个清理步骤,自动检测和修复 LaTeX/HTML 残留
  • 交叉模型 critique:用不同模型做审查(如 GPT 审查 Claude 的翻译)
  • 术语表前置扫描:在首篇翻译前,先对所有待翻译文章做一次术语提取
  • 翻译质量回归测试:保留几个已确认正确的翻译片段作为基准,检测模型更新后的翻译质量变化

收获

1. Harness Engineering 不限于代码

翻译流程证明了 harness engineering 的原理是通用的:约束 + 反馈 + 分治 + 持久化。域可以是代码、文本、设计、任何 AI 智能体需要可靠完成的任务。

核心不变量:人类定义”什么是好的”(术语表、风格、受众),AI 负责执行,harness 负责检查。

2. 术语表是翻译领域最高杠杆的 harness 组件

和代码场景中 linter 是最高杠杆的 harness 组件一样,术语表在翻译场景中的投入产出比最高。40 条术语规则消除了跨 11 篇翻译、跨 5 个并行 chunk 的绝大部分一致性问题。

3. 中间产物的价值超过最终产物

translate/ 目录中的 analysis、critique、revision 文件,比最终的 translation.md 更有价值——它们记录了翻译过程中的判断。当用户提出修改意见时,可以回溯到 critique 阶段看 AI 是否已经发现了同样的问题。

4. 五轮比一轮好,但不是线性好

refined 模式(五轮)比 quick 模式(一轮)质量明显更高,但边际收益递减:

  • analysis → translate(最大提升:理解上下文后翻译更准确)
  • critique → revision(中等提升:修复欧化表达和术语偏差)
  • polish(小幅提升:润色文字,但本质改进有限)

这和 Anthropic #4 的发现一致:“有趣的 harness 组合空间不会随模型改进而缩小——它会移动”。模型变好了,五轮中前几轮的价值可能降低,但最后几轮的价值反而增加(因为基线质量提高了,polish 才有意义)。