deepseek-harness 学习手册
← 返回 8.3 把工程约定写成 AI 可执行的形式
工程文化 · 8.3›Skill 10 · dsh-translate-docs
10 min

dsh-translate-docs

双语工作流的完整版:更新走 briefing 驱动的小路,新文档走整篇翻译的大路。只允许用户显式调用。

最后核对于 v0.1.1-rc.2 · commit b150a551b8 · 2026-08-22

这是 .agents/skills/dsh-translate-docs/SKILL.md 的中文精读。它是双语工作流的「完整版」——注意它的 frontmatter 里有 disable-model-invocation: true:这个 skill 只允许用户点名调用,agent 不能自己选用它。

调用边界

只有用户按名字显式调用 dsh-translate-docs 时才运行这个扩展工作流。日常文档工作、从另一个 skill 里、或「推测出需要翻译」都不得选用它——例行翻译遵守 docs/AGENTS.md 的一次性单遍规则。

这个 skill 是什么

它是引导,不是翻译记忆库。它是让 foo.md ↔ foo.zh.md 配对在两种语言里都一致且自然的工作流地图。两种语言权威平等——改动可以在任一侧写作,那一侧就是这次更新的源。你是译者:下面的规则说什么必须成立,而不是某句话怎么措辞——措辞判断归你,术语不归你。

按改动类型分诊——它决定其他一切

.agents/notes/archived/ 下冻结的 Agent Note 不是翻译工作:三件套已被归档验证器封死,归档后永不更新、重录或修复任一侧。

更新路径(briefing 驱动)

这条路以小得多的成本达到指南语料级的质量;基准证据由「briefed-updates」Agent Note 持有。

  1. 生成 briefing:pnpm run gen-translation-brief <配对的任一文件>(无参数则为所有失同步的配对生成)。briefing 以最窄的安全对齐粒度映射改动——改动的 Markdown 单元(段落、表格行、列表项、标题),再到整个标题小节,再到整篇——并包含:写作侧自上次确认一致以来的 diff、每个改动单元的「上次确认源 / 当前源 / 当前对侧文本(带行号)」、改动触到的术语行、首次出现位置变动说明、以及约束性更新规则的摘要。
  2. 纯机械 diff?--apply 掉它。所有改动都落在两侧逐字节相同的代码围栏内时,briefing 会说明;pnpm run gen-translation-brief --apply <pair> 把改过的围栏拼进对侧并先做结构校验再写盘——不用 subagent,不用手编。
  3. 散文 diff?委派给 subagent,把 briefing(或生成它的命令)递过去。briefing 就是译者的全部工作集——subagent 不重读指南语料、不重新推导 diff。只有当 briefing 让某个决定真的做不出(周围文本没有先例的未列术语,或整篇级 briefing 即「两侧都改了」/单元和小节都对不齐)时,才升级到整篇路径的事实来源,在 translation-rules.md 下手工调和。
  4. 覆盖 diff 的最小编辑。保住 diff 没碰到的一切的已审措辞,然后逐子句对照源验证改动的块:无添加、无遗漏、术语按内联行、代码逐字。
  5. 记录与验证,范围化:pnpm run verify-translation-pairing --write <pair> 然后 pnpm run verify-translation-pairing <pair>。--write 只处理你点名确认的配对——它拒绝裸跑,所以批量重录必须显式 --all。全语料检查仍在 doc-sync/CI 里跑,不要每次更新都跑。

整篇路径(新配对)

需要从零写翻译时,编排的 agent 自己不翻:起一个 subagent 做翻译。译者先读下列事实来源,再整篇翻成另一语言——长文档逐节进行,每节的结构边走边对齐源,而不是最后再调结构。

事实来源(去读,不要复述):

翻译

找到待办

收尾一对配对

  1. 切换行:中文文件 H1 后立即放 [English](foo.md) | 中文,英文文件 H1 后放 English | [中文](foo.zh.md)——新配对两边都加;例外是生成器拥有的英文源保持与生成器输出逐字节一致、省略切换行,中文对侧仍然链接回去。
  2. 记录一致性:pnpm run verify-translation-pairing --write <pair> 重算并在 foo.i18n.yaml 里记录两侧完整 blob hash。PR 里的 yaml diff 就是那句可 review 的声明——「我确认过这两份说的是同一件事」——所以只在你真的确认过之后跑。
  3. 普通文档不需要清单条目:每个范围内源都必须有配对。只有当属主政策记录了真实的「生成的 / 指示性的 / 构造即双语」豁免时,才改 scripts/translation-pairing.manifest.json。
  4. PR 之前:触动的配对在范围化检查下全绿;pnpm run doc-sync(含全语料配对检查及 verify-md-wrap/verify-md-links)按 dsh-pre-push-checks 在 PR 级跑一次,不在每个翻译任务内部跑。
  5. 让 PR 可 review:说清哪些配对是新翻的、哪些是最小更新,把「待定术语」显著列出。

怎么回应翻译 review

按 dsh-code-review 的汇报指引:逐条按是非评估;对术语评论记住术语表才是契约——reviewer 的译法决定落进 terminology.md,而不是只改一个文件。

← 返回 8.3 把工程约定写成 AI 可执行的形式
目录

本页

Skill 10 · dsh-translate-docs