Laborany paper-editor
git clone https://github.com/laborany/laborany
T=$(mktemp -d) && git clone --depth=1 https://github.com/laborany/laborany "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/paper-editor" ~/.claude/skills/laborany-laborany-paper-editor && rm -rf "$T"
skills/paper-editor/SKILL.md论文修改助手
核心设计原则
本技能采用自主执行架构 + 检查点机制,全程自动流转:
┌─────────────────────────────────────────────────────────────────┐ │ 自主执行 + 检查点机制 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 每一步自动进入下一步 │ │ 模型自主判断修改质量是否达标 │ │ 未达标则自动迭代修改,直至通过 │ │ Diff 由代码计算,不依赖大模型标记 │ │ 每步执行时输出简短进度提示 │ │ **每步结束必须生成检查点文件** │ │ **下一步必须读取检查点文件继续** │ │ **原始论文贯穿所有步骤,始终可用** │ │ │ └─────────────────────────────────────────────────────────────────┘
修改范围原则:
┌─────────────────────────────────────────────────────────────────┐ │ 修改范围边界 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ✅ 修改:理论框架、逻辑结构、段落衔接、论证深度、学术规范 │ │ │ │ ❌ 不改:文件名、函数名、变量名、类名、专有名词、缩写 │ │ │ └─────────────────────────────────────────────────────────────────┘
进度提示原则:
- 每进入一个新步骤,输出一句简短的"正在进行 X..."提示
- 提示要简洁,使用 emoji 图标增强识别度
- 不输出中间结果,只输出执行状态
- 让用户始终知道模型在工作
检查点文件机制(防止跳步的核心):
┌─────────────────────────────────────────────────────────────────┐ │ 检查点文件命名规则 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 步骤1 → `step1_understanding.md` (论文理解报告) │ │ 步骤2 → `step2_feedback.md` (修改意见) │ │ 步骤3 → `step3_revision.md` (修改后论文) │ │ 步骤4 → `step4_verification.md` (验证报告) │ │ 步骤5 → `step5_proofread.md` (校对后论文) │ │ 步骤6 → HTML 输出文件 │ │ │ └─────────────────────────────────────────────────────────────────┘
每一步必须:
- 读取当前步骤所需的输入数据(原始论文 + 相关检查点文件)
- 执行当前步骤的工作
- 生成当前步骤的检查点文件
- 只有当前步骤文件生成成功后才能进入下一步
工作流程
┌─────────────────────────────────────────────────────────────────┐ │ 论文修改工作流 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 📁 步骤0:初始化论文文件(第一步) │ │ (生成 paper_original.md + step0_original.md) │ │ │ │ │ ▼ │ │ 📖 步骤1:论文理解与分类 ──→ 🔍 步骤2:提出宏观修改意见 │ │ (生成 step1_understanding.md) (生成 step2_feedback.md) │ │ │ │ │ │ ▼ ▼ │ │ ✏️ 步骤3:论文修改 ──→ 🔬 步骤4:对照验证与迭代 │ │ (生成 step3_revision.md) (生成 step4_verification.md) │ │ │ ┌───────────┐ │ │ │ │ 达标 → 继续 │ │ │ │ └───────────┘ │ │ │ │ │ │ └──────────┬───────────────┘ │ │ ▼ │ │ 📝 步骤5:细节校对 │ │ (生成 step5_proofread.md) │ │ 着重:语法、标点、格式 │ │ │ │ │ ▼ │ │ 📄 步骤6:代码计算 Diff 与输出 │ │ (读取 → 保存临时文件 → 运行脚本 → 输出HTML) │ │ │ └─────────────────────────────────────────────────────────────────┘
进度提示总览:
| 步骤 | 进度提示 | 图标 | 输入文件 | 输出文件 | 关键约束 |
|---|---|---|---|---|---|
| 步骤0 | 正在初始化论文文件... | 📁 | 用户输入的原始论文 | paper_original.md + step0_original.md | 第一步必须执行,写入原文 |
| 步骤1 | 正在分析论文内容... | 📖 | paper_original.md | step1_understanding.md | 必要时进行网络搜索 |
| 步骤2 | 正在分析论文并制定修改方案... | 🔍 | paper_original.md + step1_understanding.md | step2_feedback.md | 只提宏观问题,不动专业名词 |
| 步骤3 | 正在修改论文内容... | ✏️ | paper_original.md + step1_understanding.md + step2_feedback.md | step3_revision.md | 不确定时主动搜索 |
| 步骤4 | 正在验证修改质量... / 正在进行第 N 轮优化修改... | 🔬 / 🔄 | paper_original.md + step2_feedback.md + step3_revision.md | step4_verification.md | 对照意见+文章,可提新意见 |
| 步骤5 | 正在进行细节校对... | 📝 | paper_original.md + step3_revision.md + step4_verification.md | step5_proofread.md | 语法、标点、格式检查 |
| 步骤6 | 正在生成最终 HTML 文件... | 📄 | paper_original.md + step5_proofread.md | {论文标题}.html | 使用脚本计算 diff |
文件说明:
:原始论文(流程开始时立即写入,贯穿所有步骤)paper_original.md
:原始论文副本(用于步骤6的diff计算)step0_original.md
:论文理解报告step1_understanding.md
:修改意见step2_feedback.md
:修改后论文step3_revision.md
:验证报告step4_verification.md
:校对后论文step5_proofread.md
检查点文件读取机制
重要约束:每一步开始时,必须先读取上一步生成的检查点文件。
┌─────────────────────────────────────────────────────────────────┐ │ 步骤间数据流向 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 用户输入的原始论文 │ │ │ │ │ ▼ │ │ 步骤0 ──→ paper_original.md (原文持久化,贯穿全程) │ │ │ step0_original.md (原文副本,供步骤6使用) │ │ │ │ │ ├─────────────────────────────────────────────┐ │ │ ▼ │ │ │ 步骤1 ──→ step1_understanding.md │ │ │ │ (被步骤2、3读取) │ │ │ ▼ │ │ │ 步骤2 ──→ step2_feedback.md │ │ │ │ (被步骤3、4读取) │ │ │ ▼ │ │ │ 步骤3 ──→ step3_revision.md │ │ │ │ (被步骤4、5读取) │ │ │ ▼ │ │ │ 步骤4 ──→ step4_verification.md │ │ │ │ (被步骤5读取) │ │ │ ▼ │ │ │ 步骤5 ──→ step5_proofread.md │ │ │ │ (被步骤6读取) │ │ │ ▼ │ │ │ 步骤6 ──→ 最终 HTML ─────────────────────────────┘ │ │ (读取 paper_original.md + step5_proofread.md) │ │ │ └─────────────────────────────────────────────────────────────────┘
步骤 0:初始化论文文件(第一步必须执行)
目标:将用户输入的原始论文立即持久化为文件,确保后续所有步骤都能读取。
进度提示(在执行步骤0之前输出):
📁 正在初始化论文文件...
操作:
- 获取原文:从用户输入中获取原始论文内容
- 写入原文文件:使用
工具将原文写入Writepaper_original.md - 写入副本:使用
工具将原文写入Write
(供步骤6使用)step0_original.md
重要约束:
- 这是流程的第一步,必须最先执行
- 两个文件内容完全相同,都是原始论文
- 完成后直接进入步骤1,无需等待用户确认
- 后续所有步骤需要原文时,都读取
文件paper_original.md
检查点文件格式(
paper_original.md 和 step0_original.md):
直接写入用户输入的原始论文内容,不做任何修改。
步骤 1:论文理解与分类
目标:全面理解论文主题、结构和内容,确定论文类别。
输入:
(使用paper_original.md
工具读取原始论文)Read
操作:
- 论文分类:判断论文属于哪个学术领域(计算机科学、生物学、经济学等)
- 深度阅读:逐段通读论文,理解研究问题、方法、结果和结论
- 网络搜索(必要时):针对论文主题搜索,获取前沿知识、相关论文、术语解释
- 输出理解报告:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 论文理解报告 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【论文分类】 领域:[如:计算机科学/人工智能/深度学习] 子领域:[如:自然语言处理/图像识别] 【核心信息】 研究问题/假设:[一句话概括] 研究方法:[简要说明] 主要发现:[列出2-3个关键发现] 【结构评估】 完整度:[摘要/引言/方法/结果/讨论/结论] 逻辑连贯性:[评估并说明] 【关键词】 [列出3-5个核心关键词] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
进度提示(在执行步骤1之前输出):
📖 正在分析论文内容...
重要约束:
- 完成本步骤后直接进入步骤2,无需等待用户确认
- 不得在步骤1中完成步骤2的任何工作
- 必须生成
检查点文件step1_understanding.md
检查点文件格式(
step1_understanding.md):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 论文理解报告 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【论文分类】 领域:[如:计算机科学/人工智能/深度学习] 子领域:[如:自然语言处理/图像识别] 【核心信息】 研究问题/假设:[一句话概括] 研究方法:[简要说明] 主要发现:[列出2-3个关键发现] 【结构评估】 完整度:[摘要/引言/方法/结果/讨论/结论] 逻辑连贯性:[评估并说明] 【关键词】 [列出3-5个核心关键词] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
步骤 2:提出修改意见
目标:基于学术写作标准和领域专业知识,提出宏观层面的系统性修改建议。
输入:
(使用paper_original.md
工具读取原始论文)Read
前置操作:
- 使用
工具读取Read
文件,获取论文理解报告step1_understanding.md - 使用
工具读取Read
文件,获取原始论文内容paper_original.md
核心原则:聚焦宏观问题,不触及英文专业名词。
🚫 不应修改的内容:
- 文件名、函数名、变量名、类名等代码标识符
- 专有名词、缩写(如 API、CNN、Transformer)
- 数据库名称、框架名称、工具名称
- 引用中的原始内容
- 数学公式中的符号
✅ 应重点检查的宏观问题:
| 检查项 | 内容 |
|---|---|
| 理论框架 | 理论基础是否扎实,框架选择是否恰当,是否存在概念错位 |
| 逻辑连贯 | 段与段之间、节与节之间的逻辑衔接是否自然,论证链条是否完整 |
| 问题陈述 | 研究问题是否清晰、有价值,研究缺口是否准确定位 |
| 方法匹配 | 研究方法是否适合研究问题,是否有理论支撑 |
| 结果解释 | 结果是否被充分解读,是否与假设/理论框架呼应 |
| 讨论深度 | 是否深入探讨结果的意义、局限性和影响 |
| 结论力度 | 结论是否由证据充分支撑,是否避免了过度推论 |
| 学术规范 | 引用是否规范、是否有缺失的关键文献 |
| 结构完整性 | 摘要、引言、方法、结果、讨论、结论是否齐全且比例合理 |
输出格式:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 论文修改意见 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【优先级:高】 1. [具体问题] → [修改建议] 位置:第X段/第Y节 【优先级:中】 2. ... 【优先级:低】 3. ... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 统计:高优先级 X 条,中优先级 Y 条,低优先级 Z 条 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
进度提示(在执行步骤2之前输出):
🔍 正在分析论文并制定修改方案...
重要约束:
- 完成本步骤后直接进入步骤3,无需等待用户确认
- 不得在步骤2中开始修改论文内容
- 不应对英文专业名词(文件名、函数名、变量名、专有缩写等)提出任何修改意见
- 必须生成
检查点文件step2_feedback.md
检查点文件格式(
step2_feedback.md):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 论文修改意见 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【优先级:高】 1. [具体问题] → [修改建议] 位置:第X段/第Y节 【优先级:中】 2. ... 【优先级:低】 3. ... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 统计:高优先级 X 条,中优先级 Y 条,低优先级 Z 条 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
步骤 3:论文修改
目标:根据步骤2提出的修改意见重写论文,输出修改后的纯文本/Markdown。
输入:
(使用paper_original.md
工具读取原始论文)Read
前置操作(重要:按顺序执行):
- 检查是否存在上一次的验证报告:使用
工具尝试读取Readstep4_verification.md- 如果文件存在:检查报告中【迭代结论】部分的"未完成修改意见清单"
- 如果存在未完成的修改意见,本次修改优先处理这些未完成的意见
- 使用
工具读取Read
(论文理解)step1_understanding.md - 使用
工具读取Read
(修改意见)step2_feedback.md - 使用
工具读取Read
(原始论文,这是修改的基础)paper_original.md
操作:
- 逐项修改:按优先级处理每条修改意见
- 遇到不确定的问题时,主动使用 mcp__laborany_web__search 工具:
- 理论概念模糊 → 搜索学术定义和解释
- 研究方法选择存疑 → 搜索该方法的适用场景和最佳实践
- 术语使用不当 → 搜索领域内标准用法
- 引用缺失 → 搜索相关经典文献
- 风格保持:
- 保持原文的语气和表达习惯(正式、客观、精确)
- 使用领域内标准的学术用语
- 避免改变作者的核心观点和创新点
- 连贯性检查:修改后确保段落之间、章节之间的过渡自然
- 术语一致性:全文术语使用保持统一
- 保护专业名词:绝不修改英文专业名词、代码标识符、专有缩写
修改原则:
┌─────────────────────────────────────────────────────┐ │ 只改需要改的,不改不需要改的 │ │ 改进表述,不改观点 │ │ 增强逻辑,不改变意图 │ │ 输出纯文本,不添加 diff 标记 │ └─────────────────────────────────────────────────────┘
输出:完成修改后的论文内容(纯 Markdown 格式),不包含任何 diff 标记。
进度提示(在执行步骤3之前输出):
✏️ 正在修改论文内容...
重要约束:
- 输出必须是纯 Markdown 文本
- 不添加任何
或<span class="del-text">
标记<span class="add-text"> - diff 标记将在步骤6由脚本自动计算生成
- 完成本步骤后直接进入步骤4,无需等待用户确认
- 必须生成
检查点文件(纯 Markdown 格式的修改后论文)step3_revision.md
步骤 4:自主验证与迭代
目标:验证修改是否完成,论文是否达到合格标准。由模型自主判断是否需要继续迭代修改。
输入:
(使用paper_original.md
工具读取原始论文)Read
前置操作:
- 使用
工具读取Read
(修改意见)step2_feedback.md - 使用
工具读取Read
(修改后论文)step3_revision.md - 使用
工具读取Read
(原始论文,用于对比验证修改效果)paper_original.md
操作:
-
修改完成度检查(生成结构化清单):
- 逐条对照步骤2的修改意见,确认每条都已处理
- 为每条意见标记状态:✅已完成 / ⚠️部分完成 / ❌未完成
- 对比原文和修改文:确认修改确实解决了提出的问题
- 生成【修改意见完成情况清单】:在验证报告中逐条列出每条意见的完成状态
- 生成【未完成修改意见清单】:汇总所有未完成或部分完成的意见,供步骤3下次调用时直接读取
-
论文质量判定(基于修改后的文章):
- 论文结构是否完整
- 逻辑是否清晰连贯(特别是段与段之间的过渡)
- 学术语言是否规范
- 表述是否准确无误
-
新问题识别:
- 在验证过程中,若发现新的宏观问题(之前未识别的)
- 将新问题加入修改意见列表
- 在下一轮修改中一并处理
-
自主决策与执行:
┌─────────────────────────────────────────────────────────────┐ │ 自主验证与迭代逻辑 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 第一步:对照检查 │ │ - 读取步骤2的修改意见 │ │ - 读取修改后的论文 │ │ - 逐条验证修改是否落实 │ │ │ │ 第二步:质量评估 │ │ - 若完成度100% 且质量全项通过 → 进入步骤5 │ │ - 若存在未完成项或质量问题 → 返回步骤3 │ │ │ │ 第三步:迭代执行 │ │ → 根据未通过项/新问题重新执行步骤3 │ │ → 修改完成后再次执行步骤4验证 │ │ → 循环直至全部通过,最多迭代3次 │ │ │ └─────────────────────────────────────────────────────────────┘
达标标准(全部满足):
- 修改完成度:步骤2的所有意见均已处理(或已说明原因)
- 结构完整性:通过
- 逻辑连贯性:通过(特别关注段落间逻辑)
- 学术规范性:通过
迭代策略:
- 第1次未达标:针对未通过项进行针对性修改
- 第2次未达标:全面检查并修正所有残留问题
- 第3次仍未达标:接纳当前版本,进入最终输出
进度提示:
- 首次进入步骤4时输出:
🔬 正在验证修改质量... - 每次迭代时输出:
(N 为迭代次数)🔄 正在进行第 N 轮优化修改...
重要约束:
- 模型自主决定是否继续迭代,无需用户确认
- 达标后直接进入步骤5
- 迭代时只输出上述进度提示,不输出中间验证详情
- 必须生成
检查点文件step4_verification.md - 【关键】每次生成验证报告时,必须完整列出【修改意见完成情况清单】和【未完成修改意见清单】,供步骤3下一次调用时读取
检查点文件格式(
step4_verification.md):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 验证报告 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【迭代信息】 - 当前迭代次数:[N/最大3次] - 上次迭代遗留问题:[如果有上次的验证报告,列出未完成的问题] 【修改意见完成情况清单】
然后逐条对照步骤2的修改意见,列出完成状态:
意见1:[步骤2中第1条意见的简述] - 状态:✅已完成 / ⚠️部分完成 / ❌未完成 - 说明:[具体情况描述] 意见2:[步骤2中第2条意见的简述] - 状态:✅已完成 / ⚠️部分完成 / ❌未完成 - 说明:[具体情况描述] ...
继续报告其他内容:
【完成度统计】 - 已完成:X 条 - 部分完成:Y 条 - 未完成:Z 条 - 完成率:X/Y% 【论文质量判定】 - 结构完整性:[通过/不通过] - 逻辑连贯性:[通过/不通过] - 学术规范性:[通过/不通过] 【迭代结论】 - 是否达标:[是/否] - 判定依据:[简要说明] 【未完成修改意见清单】(如果存在未完成的意见)
然后列出所有状态为"⚠️部分完成"或"❌未完成"的意见编号和内容,供步骤3下一次调用时直接读取并优先处理:
意见[N]:[原意见内容] - 当前状态:[⚠️部分完成/❌未完成] - 需要进一步处理:[具体说明] ... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
迭代时的特殊处理:
- 当需要返回步骤3进行修改时,完成修改后更新
文件step3_revision.md - 然后重新执行步骤4,更新
文件step4_verification.md
步骤 5:细节校对
目标:对修改后的论文进行细致的语法、标点和格式校对,确保没有细节错误。
输入:
(使用paper_original.md
工具读取原始论文,用于参考保护专业名词)Read
前置操作:
- 使用
工具读取Read
(当前修改后论文)step3_revision.md - 使用
工具读取Read
(验证报告,了解整体情况)step4_verification.md - 使用
工具读取Read
(原始论文,用于核对专业名词是否被错误修改)paper_original.md
检查重点:
| 检查类别 | 具体内容 |
|---|---|
| 语法 | 主谓一致、时态正确、语态恰当、冠词使用、介词搭配 |
| 标点 | 句号位置、逗号使用、分号正确性、引号配对 |
| 格式 | 数字格式(阿拉伯数字 vs 中文数字)、单位表示、空格规范 |
| 拼写 | 错别字检查、英文单词拼写 |
| 专有名词 | 确保未错误修改专有名词、缩写、函数名等 |
| 标点符号 | 中文标点与英文标点的正确使用(中文环境中使用中文标点) |
操作:
- 逐句校对:通读全文,逐句检查语法和标点
- 标记修正:发现问题时直接修正
- 一致性检查:确保同类表达、术语使用全文一致
- 保护专有名词:再次确认未错误修改专业术语
输出:完成校对后的论文内容(纯 Markdown 格式)
重要约束:
- 输出必须是纯 Markdown 文本
- 不添加任何 diff 标记
- 只修正语法、标点、格式问题,不改变文章结构和观点
- 必须生成
检查点文件(校对后的最终论文版本)step5_proofread.md
步骤 6:代码计算 Diff 与输出
目标:使用脚本自动计算精确的 diff,生成最终的 HTML 文件并展示给用户。
进度提示(在执行步骤6之前输出):
📄 正在生成最终 HTML 文件...
输入:
(原始论文,由步骤0写入)paper_original.md
(原文副本,用于diff计算)step0_original.md
(校对后的最终论文)step5_proofread.md
操作流程(必须严格按顺序执行):
第一步:读取所需文件
- 使用
工具读取Read
(或paper_original.md
),获取原始论文内容step0_original.md - 使用
工具读取Read
,获取校对后的论文内容step5_proofread.md
第二步:保存临时文件用于 diff 计算
- 使用
工具将原文内容写入Writediff_original.md - 使用
工具将校对后论文内容写入Writediff_proofread.md
第三步:运行 diff 计算脚本
使用
Bash 工具执行以下命令(使用绝对路径确保可靠性):
python3 "/Users/lizhe/Library/Application Support/LaborAny/skills/paper-editor/scripts/calculate_diff.py" \ "$(pwd)/diff_original.md" \ "$(pwd)/diff_proofread.md" \ --output "$(pwd)/paper_revision.html"
第四步:验证并输出结果
脚本执行成功后,输出最终结果:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 论文修改完成 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ 已生成 HTML 文件:paper_revision.html 文件包含: - 论文完整内容(支持纯净版/修改痕迹/完整 Diff 三种模式) 📊 修改统计: - 删除:X 处 - 新增:Y 处 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
脚本说明:
scripts/calculate_diff.py 脚本功能:
- 使用
进行精确 diff 计算difflib.SequenceMatcher - 自动为删除内容添加
标记<span class="del-text"> - 自动为新增内容添加
标记<span class="add-text"> - 支持按行和按字符粒度的 diff 算法
- 将 Markdown 转换为 HTML 格式
- 生成完整的 HTML 文件
重要约束:
- 必须按上述四个步骤顺序执行
- 第一步必须先读取文件,确保数据可用
- 第二步必须保存临时文件,脚本才能读取
- 第三步运行脚本,等待执行完成
- 第四步验证成功后输出结果
- HTML 文件名固定为
paper_revision.html - 确保脚本执行成功后才输出最终结果
学术写作原则
在进行修改时,遵守以下学术写作原则:
| 原则 | 说明 |
|---|---|
| 客观性 | 避免主观判断,用数据和事实说话 |
| 精确性 | 术语使用准确,避免模糊表述 |
| 简洁性 | 用最少的话表达完整意思,避免冗余 |
| 逻辑性 | 论证清晰,因果关系明确 |
| 完整性 | 不遗漏必要的信息和论证步骤 |
Markdown 转 HTML 映射
脚本会自动将以下 Markdown 元素转换为对应的 HTML 结构:
| 论文元素 | HTML 结构/CSS 类 |
|---|---|
| 论文标题 | |
| 作者/日期 | |
| 摘要 | |
| 一级标题 | |
| 二级标题 | |
| 段落 | |
| 无缩进段落 | |
| 列表 | / |
| 表格 | (带 包裹) |
| 引用标记 | |
| 参考文献 | + |
详细的转换规则请参见:html-conversion.md
Diff 标记说明(脚本自动生成)
| 修改类型 | HTML 标签 | 显示效果 |
|---|---|---|
| 删除的原文 | | 红色删除线(仅在修改痕迹/Diff 模式显示) |
| 新增内容 | | 绿色高亮(仅在修改痕迹/Diff 模式显示) |
| 未修改内容 | 无标签 | 正常显示(所有模式都显示) |
三种查看模式(用户可通过页面顶部按钮切换):
| 模式 | body class | 显示 | 显示 | 效果 |
|---|---|---|---|---|
| 纯净版 | 无 | ❌ 隐藏 | ❌ 隐藏 | 只显示最终修改后的内容 |
| 修改痕迹 | | ✅ 显示(删除线) | ✅ 显示(高亮) | 显示原内容+新内容对照 |
| 完整 Diff | | ✅ 显示(删除线) | ✅ 显示(高亮) | 同修改痕迹模式 |
脚本使用参考
calculate_diff.py
功能:计算原文与修改后论文之间的精确差异,生成带 diff 标记的 HTML。
用法(使用绝对路径):
python3 "/Users/lizhe/Library/Application Support/LaborAny/skills/paper-editor/scripts/calculate_diff.py" "$(pwd)/<原文文件>" "$(pwd)/<修改后文件>" --output "$(pwd)/<输出文件>"
选项:
| 选项 | 说明 |
|---|---|
| 修改意见 JSON 文件(可选) |
| 输出 HTML 文件路径(必需) |
示例:
# 基本用法(使用绝对路径确保可靠性) python3 "/Users/lizhe/Library/Application Support/LaborAny/skills/paper-editor/scripts/calculate_diff.py" \ "$(pwd)/original.md" "$(pwd)/modified.md" --output "$(pwd)/result.html"
执行流程总结
用户输入论文 + 修改需求 │ ▼ ┌─────────────┐ 📁 正在初始化论文文件... │ 步骤0:初始化│ 输入:用户原始论文 │ (第一步) │ → paper_original.md + step0_original.md └──────┬──────┘ │ ▼ ┌─────────────┐ 📖 正在分析论文内容... │ 步骤1:理解 │ 输入:paper_original.md │ │ → step1_understanding.md └──────┬──────┘ │ ▼ ┌─────────────┐ 🔍 正在分析论文并制定修改方案... │ 步骤2:提意见│ 输入:paper_original.md + step1_understanding.md │ │ → step2_feedback.md └──────┬──────┘ │ ▼ ┌─────────────┐ ✏️ 正在修改论文内容... │ 步骤3:修改 │ 输入:paper_original.md + step1 + step2 │ │ → step3_revision.md └──────┬──────┘ │ ▼ ┌─────────────┐ 🔬 正在验证修改质量... │ 步骤4:验证 │ 输入:paper_original.md + step2 + step3 │ │ → step4_verification.md └──────┬──────┘ │ ┌───────┴───────┐ │ 未达标?达 │ 标? │ 否 是│ │ │ │ │ ▼ ▼ │ 🔄 正在 ┌─────────────┐ 📝 正在进行细节校对... │ 第N轮... │ 步骤5:校对 │ 输入:paper_original.md + step3 + step4 │ 返回步骤3 │ │ → step5_proofread.md │ (最多3次) └──────┬──────┘ │ │ │ │ ▼ ▼ │ ┌─────────────┐ ┌─────────────┐ │ │步骤3:修改 │ │ 步骤6:输出 │ 📄 正在生成最终 HTML 文件... │ │ (迭代修改) │ │ │ 输入:paper_original.md + step5 │ │ → 覆盖step3 │ │ │ → 读取 → 保存临时文件 → 运行脚本 │ └──────┬──────┘ │ │ → paper_revision.html └────────┼────────┴──────────────┘ │ ▼ ✅ 用户查看结果
关键原则:
- 步骤0必须最先执行——将原始论文立即持久化为文件
- 原始论文贯穿始终——每一步都从
读取原文paper_original.md - 检查点文件只读不修改——上一步的输出是下一步的只读输入
- 每步输出覆盖同名文件——迭代时直接覆盖,不保留历史版本
- 步骤6分四步执行——读取 → 保存临时文件 → 运行脚本 → 输出结果