用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/infometa/workbuddyskills --skill academic-translation命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
快速生成公司一页纸概览(Tearsheet),涵盖业务描述、关键财务、估值、股东结构和近期催化。 触发词:公司速览、tearsheet、公司概况、一页纸、公司简介、company overview、快速了解、公司画像
构建DCF现金流折现模型和三表财务模型(利润表、资产负债表、现金流量表联动)。 触发词:DCF、现金流折现、财务建模、三表模型、估值模型、WACC、自由现金流、financial model、valuation model
盈利分析技能,支持两种模式: - Preview 模式:业绩发布前的前瞻分析、情景假设、关键观测指标 - Analysis 模式:业绩发布后的深度解读、Beat/Miss 分析、估计修正 触发词:earnings analysis、earnings preview、业绩分析、业绩前瞻、财报分析、季报解读、pre-earnings、post-earnings、Q1/Q2/Q3/Q4 results
基于 SOC 职业分类
正在显示 SKILL.md
| name | academic-translation |
| display_name | 学术翻译 |
| display_name_en | Academic Translation |
| description | 当用户需要学术论文中英互译、润色、Chinglish 修复时使用。三步法(直译→反思→雅化),公式/cite 零损伤,顶会术语库,双栏对照,不动原文件。 |
| category | Education |
| description_zh | 学术翻译——中英互译+三步雅化,公式零损伤,顶会术语库,双栏对照 |
| description_en | Academic paper translation and polishing with formula-safe three-step refinement and conference terminology |
| version | 1.0.0 |
| author | TPD |
直译 → 反思 → 雅化 · 公式零损伤 · 顶会术语库 · 双栏对照
flowchart LR
A[用户输入] --> P[Preflight<br/>P1 完整性 / P2 模式三选项 / P3 路由]
P --> R[输入路由<br/>PDF · arXiv · LaTeX · text]
R --> S1[Step 1 直译<br/>保术语 · 逐句对应]
S1 --> S2[Step 2 反思<br/>学术规范 + Chinglish 校正]
S2 --> CK{精翻模式?<br/>中途检查点}
CK -->|继续| S3[Step 3 雅化<br/>信达雅 + 顶会风格]
CK -->|停在 Step 2| OUT
S3 --> OUT[输出 7 文件<br/>三档对照 + 双栏 MD/LaTeX/HTML + self-check]
主流程的所有可控参数集中在 Preflight P1(输入完整性)和 P2(三选项)。下表是机器可读的契约规格——用户没显式说时按"默认"列处理,并以「⚙️ 已应用配置」展示给用户一次回退机会。
| 参数 | 类型 | 必填 | 默认 | 取值 / 说明 |
|---|---|---|---|---|
input_kind | enum | ✅ | 自动检测 | pdf / arxiv_id / latex / markdown / text;P1 完整性检查决定 |
direction | enum | 否 | 按输入语言推断 | zh2en 中→英(投稿)/ en2zh 英→中(理解)/ bilingual 双向对照 |
depth | enum | 否 | standard | quick(仅 Step 1,~1× 时间)/ standard(Step 1+2,~2.5×,日常推荐)/ full(Step 1+2+3,~4×,投稿必选) |
glossary_mode | enum | 否 | builtin | builtin 仅内置顶会术语库 / user 仅用户上传术语库 / merged 双方合并(推荐有领域术语时) |
target_venue | string | 否 | 自动推断或 ml | ml / nlp / cv / ir 之一;决定 Step 1 加载哪份 glossary/{venue}.md |
output_dir | path | 否 | translation-output/{ISO-time}-{paper-slug}/ |
| 用户可指定,但绝不写入用户原始文件路径 |
输出契约(参考下方 §「输出 — 三档对照 + 双栏对照」详细 schema):
| 字段 | 类型 | 默认存在的模式 |
|---|---|---|
output_files | list[str] | quick→{01,06} / standard→{01,02,04,06,07} / full→{01,02,03,04,05,06,07} |
provenance.coverage_pct | float [0,1] | 全模式存在;理想 ≥ 0.95 |
preserve_latex.verify_passed | bool | 含 LaTeX 输入时存在;false → 阻断输出 |
terms_hit_rate | float [0,1] | 全模式存在;术语库命中率 |
异常时的输出形态:见下方 §「异常与边界条件」表格。所有阻断场景都会额外生成 ERROR.md,把原始输入 + 失败原因写入 output_dir,绝不静默退出。
学术翻译追求"术语精确 + 公式零损伤 + 投稿规范",因此对以下场景故意做得不好——它们各自有更合适的工具。遇到下表场景时立即拒绝并推荐对应工具,不要尝试翻译:
| 场景类型 | 典型输入 | 推荐替代工具 | 拒绝原因 |
|---|---|---|---|
| 通用文本 / 邮件 / 新闻 | "尊敬的 X 总" / "Today's headline" | DeepL / 沉浸式翻译 | 学术 Skill 会强行套用顶会风格表达(如 "We propose"),破坏商务/口语语气 |
| 代码注释 / Commit msg / i18n | // Calculate sum of array | 通用机翻或代码翻译工具 | 短上下文,本 Skill 的 Provenance 三维度 + 6 文件输出是过度设计 |
| 产品 UI / 营销文案 | "Buy now! Save 50%" | 通用 i18n 工作流工具 | 需要 i18n 工作流 + 文化适配 |
| 视频字幕 | 含时间码 00:01:23 | 字幕专用工具 | 时间码处理 + 口语风格 |
| 扫描件 PDF(无文本层) | 纯图片论文 PDF | 先用 OCR 工具,再回本 Skill | OCR 在公式/数字上幻觉率高,输出会"看似合理但数据错乱" |
| 法律 / 医学专业级 | 合同 / 病例 / 处方 | AI + 人工 verify 工具 | 法律医学错译有真实代价,需人工校对 |
| 诗词 / 文学押韵 | 王维"空山新雨后" | 诗词专用工具 | 本 Skill 的"信达雅"针对论文,不针对意境 / 押韵 |
关键自检:用户输入命中上表任一行时,绝不进入 Preflight P2 / 三步翻译流程,直接展示"这属于 X 类场景,建议用 Y 工具,原因是 Z"。
读取本 Skill 后,按以下顺序完成 Preflight。这一段看起来繁琐,但跳过其中任何一步都意味着接下来 4 倍时间的精翻可能跑偏方向,得不偿失。
| 输入类型 | 检查项 | 失败处理 |
|---|---|---|
| PDF 文件 | 路径存在 + 文本层可提取(非扫描件) | 跑 scripts/extract_pdf.py --check {path} 提示用户 |
| arXiv ID | 格式 YYMM.NNNNN 或旧式 arch-ive/YYMMNNN | 失败 → 询问用户重新提供 |
| LaTeX 源 | 含 \documentclass 或 \begin{document} | 失败 → 当作普通文本处理但提示 |
| 粘贴文本 | 字符数 ≥ 50 | 失败 → 询问是否要翻译这么短的内容 |
| Markdown | 文件存在或粘贴 | — |
学术翻译的成本差异很大——快速模式只跑直译(≈1× 时间),精翻模式三步全跑(≈4× 时间)。模型不能替用户决定花多少时间。所以这里必须让用户自己选;用户没说时给出默认值并展示「⚙️ 已应用配置」让对方有一次回退机会。
✋ 翻译前请确认 3 个选项:
1. 翻译方向:
[a] 中 → 英(投稿 / 国际期刊)
[b] 英 → 中(理解 / 文献综述)
[c] 双向(生成中英对照版)
2. 输出深度:
[a] 快速(仅 Step 1 直译,约耗 1×时间,适合快速理解原意)
[b] 标准(Step 1+2 直译+反思,约耗 2.5×时间,**推荐日常使用**)
[c] 精翻(Step 1+2+3 直译+反思+雅化,约耗 4×时间,投稿/发表必选)
3. 术语库:
[a] 仅用内置顶会术语库(refs/glossary/)
[b] 用户上传自定义术语库(粘贴 / 文件)
[c] 内置 + 自定义合并(推荐有领域术语时)
用户不指定时默认 1=按输入语言推断 / 2=标准 / 3=仅内置,但要在输出前以「⚙️ 已应用配置」展示给用户。
如果用户选
2c 精翻,额外提示一句:"精翻会在 Step 2 → Step 3 之间暂停一次,让你确认术语和直译质量"——这呼应下文的中途检查点。
⚠️ 路由 = 加载触发器:进入对应分支前,必须通过 Read 工具读取标
📖 MANDATORY的文件再开始执行;标📖 按需的仅在该子情境出现时加载。 不读 = 走的是空壳分支,下游所有"按 references 规则"的判断都没有依据。
| 用户意图 | 路由模块 + 加载触发器 |
|---|---|
| "翻译这个 PDF / arxiv 论文" | 📖 MANDATORY: modules/input-router.md → 三步翻译 |
| "把这段中文翻成英文" / "translate to English" | 📖 MANDATORY: modules/input-router.md text 分支 |
| "翻译并保留公式" / "保留 latex 翻译" | 📖 MANDATORY: modules/input-router.md latex 分支 + 📖 MANDATORY: refs/formula-preservation.md |
| "中英对照" / "bilingual" | 三步翻译 + 📖 MANDATORY: modules/bilingual-export.md |
| "精翻" / "投稿翻译" / "雅化" | 三步翻译全开 + 📖 MANDATORY: modules/academic-polish.md + 📖 按需: refs/anti-ai-patterns.md |
| "快翻" / "快速翻译" / "粗翻" | 仅 Step 1(不加载 polish / chinglish-patterns) |
| "用我的术语库翻" / "自定义术语" | 📖 按需: config/user-glossary.template.yaml |
| "校对译文" / "review my translation" | 跳 Step 1,从 Step 2 进入 + 📖 MANDATORY: refs/chinglish-patterns.md |
设计思路:把翻译流水线拆为「直译 → 反思 → 雅化」三步,每一步都有独立的目标和检查点,是学术翻译领域的成熟范式。
三步法的关键洞察是把"忠实"和"流畅"解耦——人脑同时追求两者会让 LLM 在某一句"为了流畅丢了精度"。先逐句忠实直译(Step 1),再以全文视角校学术规范和术语一致性(Step 2),最后才追求文笔(Step 3)。中间产物全部保留,便于 diff 和回退。
📖 加载触发器:进入 Step 1 前,MANDATORY 读取与目标会议匹配的术语库一份(按用户输入推断或 P2 选择):
- ML 顶会 → refs/glossary/ml-venues.md
- NLP 顶会 → refs/glossary/nlp-venues.md
- CV 顶会 → refs/glossary/cv-venues.md
- IR/Web/Data → refs/glossary/ir-data-venues.md
用户未指定会议时默认加载
ml-venues.md(最通用)。同时检测 LaTeX 标记 → 触发📖 MANDATORY: refs/formula-preservation.md。
目标:忠实传达原意,保留所有专业术语、公式、引用,不追求流畅。
强制规则及理由:
$...$ / \\begin{equation} / \\[...\\])原样保留——它们是 LaTeX 编译产物,翻译会破坏排版且没有"译法"\\cite{} / \\ref{} / \\eqref{} / \\autoref{} 原样保留——这些是引用键,翻译后会让交叉引用全部断裂| col1 | col2 | / |---|---| 的分隔符行、列对齐、表格行数列数全部原样保留Table N: ... caption 或紧邻段落属于自然语言,只翻译 captionparagraph_kind == "table" 的 segment 整段绕过翻译模型,仅 paragraph_kind == "caption" 走三步流程\begin{table}...\end{table} 块整段被 <TABLE_n> 占位符替换(见 refs/formula-preservation.md)<MDTABLE_n> 占位符,仅 caption 走翻译;输出阶段还原manual_review输出格式:每段译文带 Provenance 标注:
- segment_id: §3.2-p1
source_page: 7
source_section: "3.2 Method"
source_excerpt: "We propose a novel..."
step1_literal: "我们提出一种新颖的..."
preserved:
formulas: ["$\\mathbf{x}_t = f(\\mathbf{x}_{t-1})$"]
citations: ["\\cite{vaswani2017attention}"]
terms_kept_en: ["embedding", "MLP"]
📖 加载触发器(中→英 翻译方向时 MANDATORY;英→中 时 📖 按需):
- MANDATORY: refs/chinglish-patterns.md(中→英反思阶段唯一权威)
- MANDATORY: refs/section-conventions.md(学术规范替换)
- 按需: refs/anti-ai-patterns.md(精翻模式才必读)
目标:检查直译产生的不自然表达,应用学术规范,确保术语一致。
4 个反思维度(每段都要逐项检查):
| 维度 | 规则来源 | 典型问题 → 修正 |
|---|---|---|
| 学术规范 | refs/section-conventions.md | "我们做了实验显示..." → "实验结果表明..." |
| Chinglish 校正(中→英时) | refs/chinglish-patterns.md | "in recent years" 滥用 → "recently" / 删除 |
| 去 AI 味 | refs/anti-ai-patterns.md | "在本文中,我们..." 滥用 → 视语境精简 |
| 术语一致性 | refs/glossary/ + 用户术语库 | 同一术语在 §1 译"嵌入"、§3 译"嵌入向量" → 全文统一 |
两条硬约束的理由:
详见 modules/three-step-translation.md 的反思阶段算法。
📖 加载触发器(精翻模式 2c MANDATORY,标准模式 2b 不进 Step 3 不加载):
- MANDATORY: refs/word-choice-table.md(顶会动词替换表)
- MANDATORY: refs/anti-ai-patterns.md(去 AI 味规则,雅化阶段最易引入 AI 腔)
- 按需: 与目标会议匹配的
refs/glossary/{venue}.md(已在 Step 1 加载,复用即可)
目标:在 Step 2 已规范的基础上,提升流畅度、紧凑度、可读性,达到投稿级。
3 个雅化维度:
| 维度 | 规则来源 | 例 |
|---|---|---|
| 信达雅 | 译文要"信"(忠实)、"达"(通顺)、"雅"(优美) | "本研究展示了..." → "本研究表明..." |
| 顶会风格(CS 顶会偏好) | refs/word-choice-table.md | "utilize" → "use", "demonstrate" → "show", "a plethora of" → "many" |
| 段落级流动 | refs/section-conventions.md | 加逻辑连接词(however / thus / nonetheless),消除"句子的水滴" |
目标会议适配(用户指定时):
| 会议域 | 风格特点 | 引用此 Glossary |
|---|---|---|
| ML(NeurIPS/ICLR/ICML/AAAI/IJCAI) | 简洁、公式重、数学化语言 | glossary/ml-venues.md |
| NLP(ACL/EMNLP/NAACL) | 语言学精度、相关工作详尽 | glossary/nlp-venues.md |
| CV(CVPR/ICCV/ECCV) | 视觉术语精确、benchmark 表达规范 | glossary/cv-venues.md |
| IR/Web/Data(SIGIR/WWW/KDD/CIKM) | 问题动机、实用 impact 强 | glossary/ir-data-venues.md |
Step 3 收尾自检(理由:雅化阶段最容易"改过头改丢内容",这五项是底线):
\\cite{}、\\ref{} 一字未改07-bilingual.html 必须存在且 scripts/preserve_latex.py --verify --html 通过——HTML 是双栏对照的默认主交付物,缺失 = 输出失败触发:用户在 Preflight P2 选了 2c 精翻。
位置:Step 2 完成后、Step 3 开始前。
为什么需要它:精翻三步成本接近快速模式 4 倍。如果 Step 2 的术语和直译方向已经偏了,再花 1.5× 的成本跑 Step 3 雅化只会把错误"包装得更精美"。前移检查点的代价远小于事后重跑。
step1_literal vs step2_academic 并排对照✋ Step 2 完成。是否进入 Step 3 雅化?
[a] 继续雅化(采用当前术语和直译)
[b] 修订后再雅化(你给我术语/段落级修改意见,我应用后再问你一次)
[c] 就停在 Step 2(不雅化,只输出 01 + 02 两份文件)
output_files = [01, 02, 04, 06, 07](跳过 03 雅化和 05 LaTeX 投稿版;07 HTML 仍生成,顶栏标 "学术规范版(未雅化)"),并在 06-self-check.md 注明"用户在 Step 2 后停止"。\\cite{} / Provenance(这些是不变量,下文会展开)标准模式(2b)不强制本检查点,但建议在 Step 2 完成后主动展示一次 diff 摘要供用户参考;快速模式(2a)不进入本检查点。
⚠️ 强约束:standard / full 模式下
07-bilingual.html必须生成——它是双栏对照的默认主交付物(用户最常打开的就是 HTML,因为有公式渲染 + 视图切换 + 段落复制)。
跳过 07 = 输出残缺 = 视为生成失败。常见误区:模型只产 Markdown 就停手;本 Skill 显式禁止此行为。
若运行环境不支持写 HTML(极少见),必须在06-self-check.md顶部红字标注"HTML 未生成,原因 = X",不允许静默跳过。
每次精翻调用都生成 7 个文件(默认放在 translation-output/{timestamp}-{paper-id}/):
| 文件 | 用途 | 必出模式 |
|---|---|---|
01-step1-literal.md | Step 1 直译初稿 | quick / standard / full |
02-step2-academic.md | Step 2 学术规范版 | standard / full |
03-step3-polished.md | Step 3 信达雅终稿 | full |
04-bilingual.md | 双栏对照(左原文 / 右终稿) | standard / full |
05-bilingual.tex | LaTeX 双栏(投稿用) | full |
06-self-check.md | 自检报告(术语命中率 / 公式保留率 / 表格保留率 / Provenance 完整性 / HTML 生成状态) | quick / standard / full |
07-bilingual.html | 双栏 HTML(浏览器即开 + MathJax + 视图切换 + 复制 + 表格原样渲染) | standard / full(必出) |
生成顺序:先 01→02→03 三档对照 → 再衍生 04(双栏 MD)→ 05(双栏 LaTeX)→ 07(双栏 HTML,必出) → 最后 06(自检报告,含 07 是否生成的状态)。
收尾断言:所有应出文件未出齐时,模型必须显式向用户报错「输出不完整:缺少 X」并给出补救方案,不允许沉默交付。
模板见 assets/templates/。HTML 渲染契约详见 modules/bilingual-export.md。
读取原文 + 写到独立目录是基本契约。即使用户说"在原文上改",也要写到 translation-output/ 后告知用户——他们随时可能想回头比较译稿和原文,原地改会让这个动作不可逆。
每段译文必须可追溯到:
§3.2 Method)为什么三维度都要:单靠"页码"会被分页错位干扰、单靠"章节"无法定位到段、单靠 excerpt 在长论文里可能多次匹配。三维度组合让 hallucination 几乎无处遁形。
公式、\\cite{}、\\ref{}、\\eqref{}、算法块、数据集名、数字——这些是论文中"不存在译法"的元素。Step 3 输出前 scripts/preserve_latex.py --verify 会自动校验;校验失败 → 阻断输出,回退到 Step 2 重跑。这是底线,因为一旦这些被翻动,整篇论文的 LaTeX 编译和交叉引用全会崩。
本文件只做路由 + 原则 + 三步法概述。详细工作流在 modules/*.md,术语库 / 模式表在 refs/,通用脚本在 scripts/。
支持多个 LLM provider 互为兜底,并保留对外部"AI + 人工 verify"工具的转交路径:
| Provider | 用法 | 强项 |
|---|---|---|
| Claude(默认) | 当前 Skill 的执行环境 | 长文本 + 学术语境 |
| OpenAI GPT | 用户指定时 fallback | 通用翻译 |
| Gemini | 用户指定时 fallback | 多模态(PDF 图) |
| DeepL API | 用户提供 key 时 | 欧洲语言对 |
| AI + 人工校对工具 | 用户指定时 | 法律 / 医学 / 投稿前最终把关 |
详见 modules/provider-fallback.md(按需创建,当前默认 Claude)。
\\cite{}、数字、算法名属于"非自然语言"——动它们 = 编译失败| ... | 经过翻译模型会被改写成纯文本段落、表头变成中文、行列对不齐——必须按 Step 1 强制规则第 6 条整段占位符化,仅 caption 走翻译;输出阶段还原07-bilingual.html 是默认主交付物,模型常误以为"只产 Markdown 就够了"——跳过 = 视为输出失败,必须在 06-self-check 中显式标注或补出translation-output/——保留原文是事后审计和回退的前提文字描述容易让模型"知道但做不到"——下面 4 条配对示例是真实踩坑后总结出来的,看一眼差异就能记住边界。
❌ Bad — 翻译 \cite{}:
原文:following \cite{vaswani2017attention}, we adopt the Transformer architecture.
输出:参照 Vaswani 等(2017)提出的方法,我们采用了 Transformer 架构。
问题:\cite{} 引用键被拆解为「Vaswani 等(2017)」,原 LaTeX 文档此处的交叉引用全部断裂,编译后 PDF 的引用列表会缺失这一条。
✅ Good — 保留 \cite{} 原样 + 自然语序整合:
原文:following \cite{vaswani2017attention}, we adopt the Transformer architecture.
输出:参照 \cite{vaswani2017attention},我们采用了 Transformer 架构。
关键:引用键作为不可见占位符整体保留,BibTeX 编译后自然显示为正确的引用形式。
❌ Bad — 解释公式语义:
原文:The loss is $\mathcal{L} = -\sum_{t=1}^T \log p(y_t|y_{<t}, x; \theta)$.
输出:损失函数 $\mathcal{L} = -\sum_{t=1}^T \log p(y_t|y_{<t}, x; \theta)$(即对所有时间步 t=1 到 T,对条件概率取对数后求和再取负)。
问题:括号内的语义解释属于"模型自作主张的注释",原文没有,会污染 source-of-truth;并且数学符号读者本就懂,注释是冗余。
✅ Good — 公式零修饰:
原文:The loss is $\mathcal{L} = -\sum_{t=1}^T \log p(y_t|y_{<t}, x; \theta)$.
输出:损失函数为 $\mathcal{L} = -\sum_{t=1}^T \log p(y_t|y_{<t}, x; \theta)$。
关键:公式只搬运不解释,需要解释时让原文作者在另起的"释义段"里写。
❌ Bad — 中→英翻译保留 Chinglish 重复:
原文:近年来,大语言模型展示了显著的能力。然而,近年来其计算成本依然高昂。
输出:In recent years, large language models have demonstrated remarkable capabilities. However, in recent years their computational cost remains high.
问题:原文两次「近年来」是中文写作的允许重复,但英文学术写作中 "in recent years" 重复出现是典型 Chinglish 标志,会被审稿人扣分。
✅ Good — Step 2 反思阶段消除重复:
原文:近年来,大语言模型展示了显著的能力。然而,近年来其计算成本依然高昂。
输出:Recently, large language models have shown remarkable capabilities. However, their computational cost remains high.
关键:保留首句的「Recently」(用 recently 替代啰嗦的 in recent years),第二句省略时间状语让转折更紧凑——这是 refs/chinglish-patterns.md 中明确列出的高频修正项。
❌ Bad — 直接翻译商务邮件(超范围):
用户输入:"帮我翻译这封邮件给客户:尊敬的张总,您好!感谢您百忙之中..."
错误处理:直接走 Preflight P2 三选项 → Step 1 直译 → 输出英文邮件
问题:本 Skill 的"信达雅 + 顶会风格"会强行套用学术语气(如把"百忙之中"翻成 "in your busy schedule of important matters"),破坏商务邮件的礼貌客套,反而不如 DeepL 自然。
✅ Good — 范围检测先行:
用户输入:"帮我翻译这封邮件给客户:尊敬的张总..."
正确处理:识别"邮件"+"尊敬的"为「不在范围内」表格第 1 行的命中信号 → 立即拒绝并展示:
「这属于通用商务文本,建议用 DeepL 或沉浸式翻译。
原因:本 Skill 的顶会风格规则会破坏商务礼貌语气,反而不如通用机翻自然。」
关键:超范围拒绝不是失败,是设计——拒绝后用户得到正确推荐,比强行翻译更有价值。
流程假设环境理想,但翻译实操常遇异常。以下预定义 fallback,保证 skill 不会"一跑就卡住",也不会静默失败误导用户。
| 场景 | 触发条件 | 处理动作 |
|---|---|---|
| PDF 文本层为空 / 扫描件 | scripts/extract_pdf.py --check 文本字符数 < 200 或图像比 > 80% | 阻断翻译,告知用户「检测到扫描件,OCR 在公式/数字上幻觉率高」,给三选项:[a] 你提供文本层 PDF [b] 你确认接受 OCR 风险(标注 provenance.ocr_warning=true)[c] 终止 |
| PDF 加密 / 受密码保护 | pdfplumber / pypdf 抛 PdfReadError | 询问用户密码并临时解密到内存,不写回原文件;用户拒绝则终止本次任务 |
| arXiv 下载失败 | scripts/arxiv_fetch.sh 非 0 退出 / 网络超时 / 404 | 重试 1 次(指数退避);仍失败询问 [a] 用户改贴 abs URL [b] 用户上传 PDF 替代 [c] 终止;不要静默切到 PDF 兜底 |
preserve_latex --verify 失败 | 译文中占位符未还原 / 数字被改写 / 公式被翻译 | 阻断输出。展示具体失败 token 给用户,回退到 Step 2 重跑反思阶段(最多 2 次);2 次仍失败 → 标注 output_files += [ERROR.md],让用户人工修订 |
| 段落 1:1 对应失败 | Step 1 输出段落数 ≠ 输入段落数(合并/拆分句子) | 该段单独重跑 Step 1,强化 Prompt 中"保持句子边界"约束;连续 2 次失败 → 标记该段 paragraph_kind="manual_review",跳过 Step 2/3 等用户处理 |
| 术语库加载失败 | YAML 解析错误 / 文件不存在 / 内置 + 自定义有冲突 | 不要静默继续。明确提示「术语库加载失败:{原因}」;冲突时展示冲突术语列表让用户选 keep [内置] / [自定义] / [双语并列];解析错误 → 退化为不带术语库运行并在 06-self-check.md 标注 |
translation-output/ 目录已存在同 paper-id 产物 | 同 ISO-time 内重复触发 / 同 paper-id 翻译过 | 不覆盖。在目录后追加 -r2 / -r3 后缀新建;同时在新目录 00-history.md 写明上次产物路径,便于用户 diff |
| LLM 上下文超限 | 单段 + glossary + 系统 prompt 超 token 上限 | 自动按句号切分该段为子段,分别翻译后拼接;拼接后重跑 Step 1 自动校验;若切分后仍超限 → 标记该段 manual_review 并告知用户 |
config/user-glossary.template.yaml schema 不符 | 用户上传的术语表缺必需字段 / 字段类型错 | 不要静默丢弃整个文件。逐条校验,合法条目正常加载,非法条目集中报告给用户「以下 N 条术语被忽略:{list}」 |
| 输出体积超 150% 警戒 | 三档对照 + 双栏总字符数 > 原文 1.5× | 多数为正常(学术英文译中文常 1.3-1.5×);> 2.0× 才告警,提示用户检查是否雅化阶段过度添加了解释 |
| 表格丢失 / 表格被翻译 | 译文中表格行数 < 原文 80% / 表格分隔符行 |---| 缺失 / 表头被中文替换(数据列名通常应保持原文) | 阻断该段输出。回退到 Step 1 重跑该段时强制走"表格整段占位符化"路径(仅翻译 caption);连续 2 次失败 → 标 manual_review,并在 06-self-check 列出所有受影响表格 |
07-bilingual.html 未生成 | standard / full 模式下 output_dir/07-bilingual.html 不存在 | 视为输出失败。先尝试基于 04-bilingual.md + 模板 assets/templates/bilingual-html.html 重新渲染一次;仍失败 → 在 06-self-check.md 顶部红字标"HTML 生成失败:{原因}",并提示用户「请明确说『生成 HTML』后我可重试」,不允许沉默交付 |
原则:异常先告知用户、再按规则处理;任何 fallback 路径都要在 06-self-check.md 中留痕,便于用户审计。
| 模块 | 职责 | 文件 |
|---|---|---|
| 输入路由 | 分流 PDF / arXiv / LaTeX / text,章节切片 + Provenance | modules/input-router.md |
| 三步翻译 | 直译 → 反思 → 雅化的算法实现 | modules/three-step-translation.md |
| 学术润色 | 顶会风格 + Chinglish 校正 + 去 AI 味 | modules/academic-polish.md |
| 双栏导出 | 中英对照 / 三档对照 / LaTeX 渲染 | modules/bilingual-export.md |
| 类别 | 文件 |
|---|---|
| 顶会术语库 | refs/glossary/ |
| Chinglish 模式 | refs/chinglish-patterns.md |
| Word Choice 替换表 | refs/word-choice-table.md |
| 去 AI 味规则 | refs/anti-ai-patterns.md |
| 公式 / 引用保留 | refs/formula-preservation.md |
| 章节惯例 | refs/section-conventions.md |
translation-output/{ISO-time}-{paper-slug}/(自动创建)⛔ Do NOT pre-load all refs/ files ——
refs/下共 5 份规则库 + 5 份会议术语库(合计 ~26K Token),全部预读会让 Skill 启动 Token 翻倍且与本次任务无关。加载顺序铁律:
- 仅本文件(SKILL.md,~360 行)默认读入;
- 进入 Preflight P3 路由后,按 📖 MANDATORY 标记逐条触发加载(最多 3 个文件即可覆盖任何输入类型);
- Step 1/2/3 中的 inline 加载触发器仅在该 Step 启动时激活(标准模式 2b 永远不读 word-choice-table.md / anti-ai-patterns.md,因为不进 Step 3)。