关于 auto-paper-improvement-loop
auto-paper-improvement-loop 面向希望通过外部评审、修改和重新编译来完善论文的研究人员。它以有限轮次运行,并可用白名单限制修改或设置人工检查点。
主要功能
- 01评审、修改与重新编译循环
- 02每轮使用新的评审线程
- 03可选人工检查点
- 04按路径和操作限制修改
- 05记录轮次状态与修改
适用场景
- 01改善已编译论文的清晰度和呈现
- 02在重投稿约束下应用评审意见
- 03恢复中断的论文改进流程
MCP 相关
它通过可选评审路由审查论文,文档中以 Codex MCP 为默认方式,并为每轮使用独立的新线程。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wanshuiyin/ auto-claude-code-research-in-sleep --skill auto-paper-improvement-loop安装后在 Claude Code 中输入/auto-paper-improvement-loop确认已加载。
详细介绍
自动论文改进循环:评审 → 修复 → 重新编译
每个评审轮次开始前,请遵循 可选评审者: 通过规范的辅助解析器解析调用方式 →
.aris/reviewer.json→ 默认使用 Claude Code(Codex MCP), 并通过reviewer_route.py,同时保留本轮的层级、新上下文、源文件/图像输入和确定性门槛。 下方的 Codex 示例/固定配置仅适用于backend=codex;其他路由使用各自的首次调用/回复约定。保存路由和实际返回的身份信息; 不可用的选项标记为REVIEW_UNAVAILABLE。根据实际的类别/完成情况/范围判定是否接受。 将调用中的评审者/模型/effort 覆盖参数传递给包含评审者的子任务。生成工作进程保持不变。
🔒 请勿将此技能包装在
/loop、/schedule或CronCreate中。 它已经在内部循环(评审 → 修复 → 重新编译),拥有自己的轮次结构,并在每轮有意采用新评审者偏差防护措施(不使用codex-reply)。按墙上时钟定时再次要求它“改进论文”不会产生新的信号——质量变化取决于评审是否改变,而非时钟是否跳动——而且,定时重新运行还接受自身输出以决定何时停止,会构成自我开脱 (acceptance-gate.md)。应安排其前置的外部等待,而非改进循环。请参阅shared-references/external-cadence.md。
自主改进以下位置的论文:$ARGUMENTS
上下文
此技能旨在 Workflow 3(/paper-plan → /paper-figure → /paper-write → /paper-compile)之后运行。它接收一篇已编译的论文,并通过外部大模型评审对其进行迭代改进。
与对研究进行迭代的 /auto-review-loop(运行实验、收集数据、重写叙述)不同,此技能迭代改进的是论文写作质量——修复理论不一致之处、缓和过度声明、补充缺失内容并改善呈现效果。
常量
- MAX_ROUNDS = 2 — 两轮评审→修复→重新编译。根据经验,第一轮发现结构性问题(4→6/10),第二轮发现剩余的呈现问题(6→7/10)。对于仅限写作的改进,超过两轮后收益递减。
- REVIEWER_MODEL =
gpt-6-astra— 通过 Codex MCP 用于论文评审的模型。 - REVIEWER_BIAS_GUARD = true — 为
true时,每轮评审都使用全新的mcp__codex__codex线程,不包含任何先前的评审上下文。评审轮次绝不使用mcp__codex__codex-reply。仅在刻意调试旧版行为时才设为false。**经验证据:**在多轮中,对同一篇论文使用codex-reply,并提示“自上一轮以来我们做了 X”,会使评分从真实的 3/10 虚高至虚假的 8/10;切换到全新线程后,真实的 3/10 评估得以恢复。 - REVIEW_LOG =
PAPER_IMPROVEMENT_LOG.md— 所有轮次的累积日志,保存在论文目录中。 - HUMAN_CHECKPOINT = false — 为
true时,每轮评审结束后暂停,并向用户展示评分和弱点。用户可以批准修复、提供自定义修改说明、跳过特定修复或提前停止。为false(默认值)时,全程自主运行。 - EDIT_WHITELIST =
null— 可选的 YAML/JSON 白名单文件路径,用于限制修复实施步骤可以修改的路径和操作。为null(默认值)时,所有编辑均不受限制。通过— edit-whitelist <path>设置时(也接受— edit_whitelist <path>),循环会在启动时加载该文件,并在每次编辑前查询;被拒绝的编辑会记录到PAPER_IMPROVEMENT_LOG.md,而不会被悄悄丢弃。请参阅下方的“可选:编辑白名单”。
💡 覆盖设置:
/auto-paper-improvement-loop "paper/" — human checkpoint: true
可选:风格参考(— style-ref: <source>,选择启用)
在改进过程中,引导用户进行仅限结构的调整(章节重排提示、段落长度微调、图表密度调整),以贴近参考论文。默认关闭——用户未传入 — style-ref 时,行为与之前完全一致。
只有当 $ARGUMENTS 中出现 — style-ref: <source> 时,才运行辅助程序,并且必须在循环开始前首先运行:
# Resolve $STYLE_HELPER via the canonical strict-safe chain (see
# shared-references/integration-contract.md §2). Policy A — gate:
# unresolved helper means --style-ref cannot be satisfied, so abort.
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then
ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
fi
if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
fi
STYLE_HELPER=".aris/tools/extract_paper_style.py"
[ -f "$STYLE_HELPER" ] || STYLE_HELPER="tools/extract_paper_style.py"
[ -f "$STYLE_HELPER" ] || { [ -n "${ARIS_REPO:-}" ] && STYLE_HELPER="$ARIS_REPO/tools/extract_paper_style.py"; }
[ -f "$STYLE_HELPER" ] || {
echo "ERROR: extract_paper_style.py not resolved at .aris/tools/, tools/, \$ARIS_REPO/tools/, or via ~/.aris/repo." >&2
echo " Fix: rerun bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or copy the helper to tools/." >&2
echo " --style-ref cannot be satisfied; aborting." >&2
exit 1
}
STYLE_STATUS=0
CACHE=$(python3 "$STYLE_HELPER" --source "<source>") || STYLE_STATUS=$?
case "$STYLE_STATUS" in
0) ;; # use $CACHE/style_profile.md as structural guidance for the FIX phase only
2) echo "warning: style-ref skipped (missing optional dep)" >&2 ;;
3) echo "error: --style-ref source failed; aborting loop" >&2 ; exit 1 ;;
*) echo "error: helper failed unexpectedly; aborting loop" >&2 ; exit 1 ;;
esac
接受的来源:本地 TeX 目录/文件、本地 PDF、arXiv ID、http(s) URL。不接受 Overleaf URL/ID——请先通过 /overleaf-sync setup <id> 克隆,然后传入本地克隆路径。
严格规则(完整约定见 tools/extract_paper_style.py 文档字符串):
- 仅在修复实施阶段使用
style_profile.md,在应用审稿意见时引导结构选择。审稿意见始终优先;风格参考仅用于决定如何应用修复,而非是否应用修复。 - 实施修复时,绝不复制缓存中任何可访问内容的行文、论点、示例或术语。
- 绝不将
— style-ref(或缓存内容)传给 GPT-6-Astra 审稿子 Agent。 下文的审稿独立性协议要求审稿人只能看到文稿和用户提示词——泄露风格参考会让作者侧上下文污染审稿。这是本技能中最重要的不变量。
可选:编辑白名单(— edit-whitelist <path>,选择启用)
让调用方对修复实施步骤(步骤 3/步骤 6)可修改的文件和操作施加硬性限制。默认关闭——用户未传入 — edit-whitelist(或别名 — edit_whitelist)时,循环会照常应用所有由审稿意见驱动的编辑,不受限制。
上游流水线(例如 /resubmit-pipeline 阶段 2)使用此参数来强制执行仅限文本的重新提交微调:不得修改 .bib、.sty/.bst,不得编辑此前提交的目录,不得新增 \cite{...},不得新增定理环境,不得新增数值论断。
架构
白名单文件采用 YAML 或 JSON 格式。以下四个部分均为可选:
allowed_paths:
- sec/*.tex
- main.tex
- figures/*.tex
forbidden_paths:
- "**/*.bib"
- "**/*.sty"
- "**/*.bst"
- "../OldSubmission/**"
forbidden_operations:
- new_cite # blocks \cite{...}, \citep{...}, \citet{...}, \citeauthor{...} additions
- new_bibitem # blocks \bibitem{...} additions
- new_theorem_env # blocks \begin{theorem|lemma|proposition|corollary} additions
- numerical_claim # blocks adding new numbers / percentages / metrics
forbidden_deletions: # operations that block REMOVALS, not additions
- delete_existing_cite # blocks removal of \cite{...} from the body (use citation-audit --soft-only instead)
- delete_theorem_env # blocks removal of an existing \begin{theorem|...} block
requires_user_approval_for: # operations that don't auto-reject but pause for explicit user OK
- rewrite_abstract # paraphrasing the entire abstract triggers a checkpoint
- rewrite_intro_first_para
- delete_section
max_edits_per_round: 30 # hard cap on number of accepted edits per round (rejections are not counted; if cap is hit, remaining proposed edits are deferred to the next round with a warning)
rationale: "Resubmit mode: text-only microedits, paper structure frozen by user constraint."
解析规则
allowed_paths为空且forbidden_paths为空 → 白名单不生效(仅作提示:文件会被加载,且rationale会写入日志,但不会进行路径筛选)。allowed_paths为空,forbidden_paths非空 → 所有未匹配forbidden_paths的路径均可修改。allowed_paths非空,forbidden_paths为空 → 只有匹配allowed_paths的路径可修改。- 两者均非空 → 仅当目标匹配
allowed_paths且不匹配forbidden_paths时,才允许编辑。若两者重叠,始终以forbidden_paths为准。 forbidden_operations缺失或为空 → 不进行操作级保护;仅按路径筛选。
Glob 语义
采用 bash extglob/Python fnmatch.fnmatch 语义。** 匹配任意深度(零个或多个目录层级)。模式会与相对于论文目录的路径进行匹配(例如,论文目录为 paper/ 时,paper/sec/intro.tex 匹配 sec/*.tex)。
禁止操作检测器
对于每项候选编辑的差异(新增行——删除行不受限制),循环会运行以下正则检查;若匹配任何禁止操作,则拒绝该编辑:
| 操作 | 检测器(仅检查新增行) |
|---|---|
new_cite | \\cite[a-zA-Z]*\{[^}]+\}(可匹配 \cite、\citep、\citet、\citeauthor、\citeyear、\citealp 等) |
new_bibitem | \\bibitem\{[^}]+\} |
new_theorem_env | `\begin{(theorem |
numerical_claim | 新增且未出现在删除/替换行中的 \b\d+(\.\d+)?%?\b 匹配项(即真正新增的数字,而非对现有数字的编辑) |
循环开始时的行为(第 1 轮修复实施之前)
- 如果
$ARGUMENTS中包含— edit-whitelist <path>,则设置EDIT_WHITELIST = <path>。 - 加载该文件(
yaml.safe_load;如果失败,则回退到json.loads)。如果加载失败,明确报错并中止循环——不要在不受约束的情况下静默继续。 - 将
rationale(如果存在)写入PAPER_IMPROVEMENT_LOG.md中新建的“Edit Whitelist”前言部分,以便审计记录说明限制编辑的原因。
修复实施期间的行为(步骤 3 和 6)
应用每项拟议的编辑之前:
- 解析相对于论文目录的目标文件路径。
- 路径检查:如果
allowed_paths非空,目标必须至少匹配一个模式。随后,如果forbidden_paths非空,目标不得匹配任何模式。如果任一检查失败 → 作为path违规予以拒绝。 - 操作检查:为拟议的编辑生成统一差异(或仅提取新增行集合)。针对
forbidden_operations中的每一项,对新增行运行其检测器。如果任一检测器匹配 → 作为operation违规予以拒绝。 - 如果所有检查均通过,则正常应用编辑。
- 如果编辑被拒绝,则按照以下格式,将一条记录追加到
PAPER_IMPROVEMENT_LOG.md中的## Rejected by edit_whitelist (Round N)标题下:- file: <relative path> reason: path | operation pattern: <the offending forbidden_path glob, OR the offending forbidden_operation name + the matched substring> reviewer_concern: <the original Round-N weakness that motivated this edit> - 继续处理本轮剩余的编辑。单项编辑被拒绝时,不要中止整轮。
每轮结束时的提示
每轮结束时(重新编译之后、进入下一轮之前),如果该轮修复步骤中有编辑被拒绝:
- 在本轮检查点输出中打印一行摘要:
Edit whitelist rejected N edits this round (M path, K operation). See PAPER_IMPROVEMENT_LOG.md "Rejected by edit_whitelist (Round N)". - 如果
HUMAN_CHECKPOINT = true,则在用户批准下一轮修复之前,在检查点中包含被拒绝编辑的列表。
调用示例
# Resubmit-pipeline Phase 2 caller (text-only mode):
/auto-paper-improvement-loop "paper/" — edit-whitelist .resubmit/edit_whitelist.yaml
# Aliased form is accepted:
/auto-paper-improvement-loop "paper/" — edit_whitelist .resubmit/edit_whitelist.yaml
# Combined with other flags:
/auto-paper-improvement-loop "paper/" — human checkpoint: true — edit-whitelist constraints.yaml
原因
如果没有白名单,循环中的审阅者驱动修复步骤可以自由添加引文、引入新的定理环境,或调整数值论断——对于首次投稿的润色而言,这些都很合理;但在重投、终稿或仅限答辩回复的模式下,论文结构受外部约束而冻结,因此这些操作被禁止。将这些约束作为一等参数传递(而不是依赖大模型“记住”不要执行这些操作),可以让约束可强制执行、可通过 PAPER_IMPROVEMENT_LOG.md 审计,并在每轮检查点向用户清晰展示。
输入
- 编译后的论文——
paper/main.pdf+ LaTeX 源文件 - 所有章节
.tex文件——拼接后用于审阅提示词
状态持久化(精简恢复)
如果循环过程中上下文窗口已满,Claude Code 会自动压缩上下文。为便于恢复,此技能会在每轮结束后写入 PAPER_IMPROVEMENT_STATE.json:
{
"current_round": 1,
"threadId": "019ce736-...",
"last_score": 6,
"status": "in_progress",
"timestamp": "2026-03-13T21:00:00"
}
启动时:如果 PAPER_IMPROVEMENT_STATE.json 存在,且 "status": "in_progress",并且 timestamp 在 24 小时内,则读取该文件及 PAPER_IMPROVEMENT_LOG.md 以恢复上下文,然后从下一轮继续。否则(文件不存在、"status": "completed",或文件超过 24 小时),从头开始。
每轮结束后:覆盖状态文件。完成时:将 "status" 设为 "completed"。
审稿人独立性协议
每一轮的审稿人都必须对上下文一无所知。前几轮的摘要、修复列表和执行者的说明都不是证据;它们会造成确认偏误。如果告知审稿人做了哪些更改,即使稿件本身没有实质性改进,评分也往往会逐渐升高。
规则:
- 每一轮都以
mcp__codex__codex开始,而不是mcp__codex__codex-reply。 - 不要将上一轮的 threadId 传入下一轮审稿提示词。
- 不要在审稿提示词中加入“自上一轮以来”“我们已修复”“应用更改后”或任何修复摘要。
- 唯一可接受的改进证据是当前的
.tex源文件和编译后的 PDF。 - 如果无法从文件中观察到某项修复,就不应告知审稿人该修复已完成。
- 如果需要恢复元数据,只将返回的 threadId 保存用于崩溃恢复;不要用它保留审稿上下文。
只有在明确需要调试旧版的上下文传递行为时,才将 REVIEWER_BIAS_GUARD = false。
工作流
步骤 0:保留原件
cp paper/main.pdf paper/main_round0_original.pdf
步骤 1:收集论文文本
将所有章节文件拼接成一个文本块,用于审稿提示词:
# Collect all sections in order
for f in paper/sections/*.tex; do
echo "% === $(basename $f) ==="
cat "$f"
done > /tmp/paper_full_text.txt
步骤 2:第 1 轮审稿
将完整论文文本和编译后的 PDF 发送给 GPT-6-Astra xhigh:
请先解决此审稿人席位;以下是
backend=codex示例。
mcp__codex__codex:
model: gpt-6-astra
config: {"model_reasoning_effort": "xhigh"}
prompt: |
You are reviewing a [VENUE] paper. Please provide a detailed, structured review.
Judge claim calibration in BOTH directions. Recommend narrowing only when the
current scope or modality exceeds the evidence; do not ask for extra hedges
around a supported result. Flag stacked hedges, self-defence ("we do not
claim"), instruction confessions ("we do not address X"), and generic caveats
outside Limitations as writing defects to remove. Tone fixes must never alter
facts, negation, modality, scope, comparison direction, or numbers.
Also flag narrative defects: a progress-report structure ("we first tried
A, then B"), a story built on a metric the method loses, results narrated
as defeats ("underperforms", "fails to surpass") instead of explained as a
goal difference or tradeoff, experiments with no argumentative duty, an
abstract or introduction that opens on background or implementation
instead of problem -> gap -> idea -> strongest result, and a conclusion
that ends on new self-negation. The fix is reframing and cutting where
the evidence supports the reframing; a genuine weakness is stated
neutrally and kept in Limitations. Never delete unfavorable numbers from
tables, and never dress a weakness as a tradeoff.
## Paper Files:
- LaTeX source: [list all section .tex files]
- Compiled PDF: paper/main.pdf
- Figures: [list figure files]
Read BOTH the LaTeX source (for content/logic) AND the compiled PDF (for visual presentation).
## Review Instructions
Please act as a senior ML reviewer ([VENUE] level). Provide:
1. **Overall Score** (1-10, where 6 = weak accept, 7 = accept)
2. **Summary** (2-3 sentences)
3. **Strengths** (bullet list, ranked)
4. **Weaknesses** (bullet list, ranked: CRITICAL > MAJOR > MINOR)
5. **For each CRITICAL/MAJOR weakness**: A specific, actionable fix
6. **Missing References** (if any)
7. **Visual Review** (from the PDF):
- Figure quality: readable? labels legible? colors distinguishable in grayscale?
- Figure-caption alignment: does each caption match its figure?
- Layout: orphaned headers, awkward page breaks, figures far from references?
- Table formatting: aligned columns, consistent decimals, bold for best results?
- Visual consistency: same color scheme across all figures?
8. **Verdict**: Ready for submission? Yes / Almost / No
Focus on: theoretical rigor, claims vs evidence alignment, writing clarity,
self-containedness, notation consistency, AND visual presentation quality.
保存 threadId,供第 2 轮使用。
步骤 2b:人工确认点(如果启用)
如果 HUMAN_CHECKPOINT = false,则跳过。
展示审稿结果并等待用户输入:
📋 Round 1 review complete.
Score: X/10 — [verdict]
Key weaknesses (by severity):
1. [CRITICAL] ...
2. [MAJOR] ...
3. [MINOR] ...
Reply "go" to implement all fixes, give custom instructions, "skip 2" to skip specific fixes, or "stop" to end.
按照 /auto-review-loop 中的相同方式解析用户响应:批准/自定义指令/跳过/停止。
步骤 3:实施第 1 轮修正
解析评审意见,并按严重程度实施修正:
优先级顺序:
- 严重修正(假设与模型不匹配、内部矛盾)
- 重大修正(过度声称、内容缺失、符号问题)
- 次要修正(如有时间)
编辑白名单关卡(如已设置): 如果设置了 EDIT_WHITELIST,在应用每项拟议编辑之前,根据“可选:编辑白名单”一节,检查目标路径是否符合 allowed_paths / forbidden_paths,并检查新增行的差异是否符合 forbidden_operations。拒绝的编辑会记录在 PAPER_IMPROVEMENT_LOG.md 的 ## Rejected by edit_whitelist (Round 1) 下,包含文件、原因(path 或 operation)、违规模式和原始评审意见。循环继续处理其余编辑——拒绝某项编辑不会中止本轮。请在本轮结束时汇总被拒绝的编辑。
应用任何修正之前: 根据证据校准论断,并直接表述;一般性注意事项只应放在 Limitations 中;写作指示绝不是论文内容;调整语气绝不能改变论文所掌握的信息。
常见修正模式:
| 问题 | 修正模式 |
|---|---|
| 假设与模型不匹配 | 重写假设以符合模型,并添加衔接二者的形式化命题 |
| 确实存在过度声称 | 将论断本身收窄到证据支持的范围或模态——绝不能用听起来更委婉的同义词替代对范围、比较或聚合方式的修正 |
| 有证据支持的论断被谨慎措辞包裹 | 删除多余的限定语;保留使论断成立的范围限定语 |
| 一般性注意事项散落各处 | 将其合并到 Limitations 中,并删除重复内容 |
| 论述围绕表现不佳的指标展开,或将结果描述为失败 | 围绕论文胜出的比较展开;若证据支持,则将差距解释为目标差异或权衡;否则中立陈述并收窄论断;保留表格中的每个数字 |
| 实验没有论证作用 | 删除、缩短、移至附录,或重新设计,使其证明方法、机制、目标场景价值,或排除其他解释 |
| 缺少指标 | 添加定量表格,并如实列出参数量和注意事项 |
| 定理不自洽 | 添加“Interpretation”段落,列出所有依赖项 |
| 符号混淆 | 在全文统一重命名冲突符号,并添加 Notation 段落 |
| 缺少参考文献 | 添加到 references.bib,并在适当位置引用 |
| 理论与实践脱节 | 明确说明理论是理想化的;添加合成验证小节 |
| 证明缺口(理论论文) | 如果 PROOF_AUDIT.md 尚不存在,则运行 /proof-checker;修复 FATAL/CRITICAL 问题 |
| 写作冗杂 / 被动语态 | 应用 sciwrite 五轮审查:提取冗杂内容 → 改用主动语态 → 调整句子结构 → 统一关键词 → 核对数字完整性。参见 paper-write 第 5 步 |
| 数字不一致(论文与结果) | 如果 PAPER_CLAIM_AUDIT.md 尚不存在,则运行 /paper-claim-audit;修复所有 number_mismatch 或 aggregation_mismatch 论断 |
| 关键词不一致 | 遵循“香蕉规则”:如果 Methods 中写的是“肥胖组”,Results 中就不能写“较重组”。提取关键词,并核实所有章节中的用词一致性 |
步骤 4:重新编译第 1 轮
cd paper && latexmk -C && latexmk -pdf -interaction=nonstopmode -halt-on-error main.tex
cp main.pdf main_round1.pdf
验证:未定义引用数为 0,未定义引文数为 0。
步骤 4.5:重述回归测试
每次重新编译后,都要重新运行定理陈述一致性检查,确保修复轮次不会再次引入附录偏差。在步骤 4 后运行一次,并在步骤 7 后、最终格式检查前再运行一次。
范围
- 只比较定理、引理、命题和推论的陈述,不比较证明正文。
- 按
main.tex中的输入顺序对文件分类:\appendix之前的文件属于正文;\appendix之后的文件属于附录。
规范化比较逻辑
- 删除注释、
\label{...}、\ref{...}、\eqref{...}、\cite...{...},以及仅由空白造成的差异。 - 将
\emph{}、\textbf{}、\textit{}、\mathrm{}、\mathbf{}、\mathcal{}和\operatorname{}等仅用于格式化的宏折叠为其内容。 - 保留量词、分类讨论、假设以及已定义对象的字面名称。
- 如果有定理标签,则按标签比较;否则按定理类型和顺序比较。
- 将假设、分类讨论、量词顺序或术语(
stationary与terminal)的任何变更标记为回归偏差。
python3 - <<'PY'
import re
def normalize(s):
s = re.sub(r'%.*', '', s)
s = re.sub(r'\\label\{[^}]*\}', '', s)
s = re.sub(r'\\(?:ref|eqref|cref|Cref|cite[a-zA-Z]*)\{[^}]*\}', '', s)
s = re.sub(r'\\(?:emph|textbf|textit|mathrm|mathbf|mathsf|mathcal|operatorname)\{([^{}]*)\}', r'\1', s)
s = re.sub(r'\\begin\{[^}]+\}|\\end\{[^}]+\}', '', s)
s = re.sub(r'\s+', ' ', s)
return s.strip().lower()
# Compare normalized theorem blocks from the current main-body files
# against their appendix restatements. Any mismatch blocks completion.
PY
**经验依据:**在一次真实的投稿流程中,正文中的一个重要定理采用了多种情况分类,而附录中的陈述只有一种情况;正文和附录中对一个重要变量的命名也不一致。由于没有自动化检查发现回归,这些偏差在多个修复轮次中反复出现。
可选的深度检查:/proof-checker --restatement-check
上述内联 Python 检查是默认方式,足以满足日常的正文与附录一致性检查。若要扩大检查范围,还可以调用 /proof-checker --restatement-check(在 PR #189 中添加),将比较范围扩展至:
- 摘要表格、摘要、“Key Contributions”列表和讨论部分中的重述(而不只是正文与附录之间)。
- 由审稿人分类的六种命名偏差特征:
conditional_loss、scope_change、quantifier_loss、regime_envelope_change、constant_change、variable_rename。 - 将结构化检查结果输出为
PROOF_AUDIT.json中的details.restatement_drift[],可供下游工具或审计跟踪使用。
这仅供参考——内联步骤 4.5 检查仍是默认方式,并且每轮循环都会运行。如果 (a) 怀疑正文与附录之外的位置也存在跨位置偏差(例如摘要中的主张超出了定理陈述),或 (b) 希望获得经审稿人评估的偏差特征,而不是原始字符串不匹配,可以考虑调用 /proof-checker --restatement-check。两种检查可以同时运行,且相互独立:内联检查会在字符串偏差处快速失败;proof-checker 检查则会揭示语义类别偏差。
步骤 5:第二轮审查
如果 REVIEWER_BIAS_GUARD = true(默认值),第二轮请使用一个全新的 mcp__codex__codex 对话线程。不要在提示词中复用第一轮的 threadId。只将返回的 threadId 保存用于恢复流程记录。
请先解析此审稿人槽位;以下是
backend=codex示例。
mcp__codex__codex:
model: gpt-6-astra
config: {"model_reasoning_effort": "xhigh"}
prompt: |
You are reviewing a [VENUE] paper. This is a fresh, zero-context review.
Judge claim calibration in BOTH directions. Recommend narrowing only when the
current scope or modality exceeds the evidence; do not ask for extra hedges
around a supported result. Flag stacked hedges, self-defence ("we do not
claim"), instruction confessions ("we do not address X"), and generic caveats
outside Limitations as writing defects to remove. Tone fixes must never alter
facts, negation, modality, scope, comparison direction, or numbers.
Also flag narrative defects: a progress-report structure ("we first tried
A, then B"), a story built on a metric the method loses, results narrated
as defeats ("underperforms", "fails to surpass") instead of explained as a
goal difference or tradeoff, experiments with no argumentative duty, an
abstract or introduction that opens on background or implementation
instead of problem -> gap -> idea -> strongest result, and a conclusion
that ends on new self-negation. The fix is reframing and cutting where
the evidence supports the reframing; a genuine weakness is stated
neutrally and kept in Limitations. Never delete unfavorable numbers from
tables, and never dress a weakness as a tradeoff.
Ignore any prior review rounds, prior fix lists, or executor explanations.
Judge the paper only from the current LaTeX source and compiled PDF.
## Paper Files:
- LaTeX source: [list all section .tex files]
- Compiled PDF: paper/main.pdf
- Figures: [list figure files]
Read BOTH the LaTeX source (for content/logic) AND the compiled PDF (for visual presentation).
## Review Instructions
Please act as a senior ML reviewer ([VENUE] level). Provide:
1. **Overall Score** (1-10, where 6 = weak accept, 7 = accept)
2. **Summary** (2-3 sentences)
3. **Strengths** (bullet list, ranked)
4. **Weaknesses** (bullet list, ranked: CRITICAL > MAJOR > MINOR)
5. **For each CRITICAL/MAJOR weakness**: A specific, actionable fix
6. **Missing References** (if any)
7. **Visual Review** (from the PDF):
- Figure quality: readable? labels legible? colors distinguishable in grayscale?
- Figure-caption alignment: does each caption match its figure?
- Layout: orphaned headers, awkward page breaks, figures far from references?
- Table formatting: aligned columns, consistent decimals, bold for best results?
- Visual consistency: same color scheme across all figures?
8. **Verdict**: Ready for submission? Yes / Almost / No
Focus on: theoretical rigor, claims vs evidence alignment, writing clarity,
self-containedness, notation consistency, and visual presentation quality.
如果 REVIEWER_BIAS_GUARD = false(仅用于旧版调试),请使用 mcp__codex__codex-reply 和保存的 threadId;不建议采用此路径。
步骤 5.5:击破论证练习(仅适用于理论性较强/范围较广的论文)
仅当论文理论性较强(源文件中有 ≥5 个 \begin{theorem}|\begin{lemma}|\begin{proposition}|\begin{corollary} 环境),或标题/摘要中明确声称其适用范围/普适性时,才运行此步骤;且仅在最后一轮预定轮次(current_round == MAX_ROUNDS)运行。
委派给 /kill-argument——规范实现位于 skills/kill-argument/SKILL.md(于 2026 年 5 月提取)。此步骤不会重新实现“攻击与裁决”提示模板,而是调用该技能并读取其输出:
# Invoke the canonical adversarial-review primitive on the current paper.
# /kill-argument runs two fresh-thread codex gpt-6-astra ultra calls and writes
# KILL_ARGUMENT.{md,json} into the paper directory. It is detect-only —
# it never edits the paper itself.
/kill-argument "$PAPER_DIR"
# Read the structured verdict.
KILL_VERDICT=$(jq -r '.verdict' "$PAPER_DIR/KILL_ARGUMENT.json")
KILL_REASON=$(jq -r '.reason_code' "$PAPER_DIR/KILL_ARGUMENT.json")
合并规则(由自动循环负责——/kill-argument 本身仅负责检测):
- 从
KILL_ARGUMENT.json中读取details.decomposed_points。 - 对于
verdict == "still_unresolved"或verdict == "partially_answered",且severity_if_unresolved == "critical"的每个论点:- 根据语义重叠度(相似度阈值约为 85%)与第 2 轮弱点列表去重。
- 如果是新问题,将其追加到步骤 6 的修复列表,并以
recommended_fix作为行动描述。
- 如果裁决显示问题已由当前文本解答(
answered_by_current_text),只有在自行核实引用的文件:行号证据后,才能降低现有弱点条目的级别。 - 将
KILL_ARGUMENT.md和合并决定都记录在PAPER_IMPROVEMENT_LOG.md中。 - 如果
HUMAN_CHECKPOINT = true,在询问用户是否继续前,将合并后的发现纳入检查点摘要。
此阶段的结果会直接进入步骤 6。合并后的发现必须在最终重新编译前落实。
如果 /kill-argument 返回 verdict: NOT_APPLICABLE(论文的理论性或范围广度不足,无需进行此项检查),则完全跳过步骤 5.5,继续执行步骤 6。如果返回 BLOCKED 或 ERROR,则在 PAPER_IMPROVEMENT_LOG.md 中记录原因,并继续执行而不合并——不要让循环因无法运行的对抗性检查而停滞。
**经验动机:**在一次真实的投稿过程中,经过数轮常规改进(评分为 7–8/10)后,击破论证练习发现了之前所有评审都未发现的论述框架弱点(例如,某种设定主要是有条件的,而非真正普适;或某个基准与真实系统无关)。作者回复促使论文在摘要和讨论中明确限定了适用范围。
步骤 5b:人工检查点(如已启用)
如果 HUMAN_CHECKPOINT = false,则跳过。 与步骤 2b 相同——展示第 2 轮评审内容,并等待用户输入。
步骤 6:实施第 2 轮修复
流程与步骤 3 相同。第 2 轮的常见修复包括:
- 添加受控的合成实验,以验证理论
- 双向重新检查校准:缩小确有过度声称之处的范围,直接陈述证据支持的主张,将分散的通用保留意见整合到 Limitations 中——对于证据已支持的主张,不要再次弱化
- 将非正式论证形式化(例如,将截断转化为正式命题)
- 仅在缺少重大限制时,才让 Limitations 更具体
**编辑白名单门控(如已设置):**与步骤 3 相同——如果已设置 EDIT_WHITELIST,则在应用每项拟议编辑前,运行路径检查和禁止操作检查。拒绝项会记录在 PAPER_IMPROVEMENT_LOG.md 的 ## Rejected by edit_whitelist (Round 2) 下,循环继续。请在本轮结束时汇总拒绝项。
步骤 7:重新编译第 2 轮
cd paper && latexmk -C && latexmk -pdf -interaction=nonstopmode -halt-on-error main.tex
cp main.pdf main_round2.pdf
步骤 8:格式检查
最终重新编译后,运行位置感知型格式合规检查。
# If the log lacks file/line data, rerun the final compile once with -file-line-error.
cd paper && latexmk -pdf -file-line-error -interaction=nonstopmode -halt-on-error main.tex
# 1. Page count vs venue limit
PAGES=$(pdfinfo paper/main.pdf | grep Pages | awk '{print $2}')
echo "Pages: $PAGES (limit: 9 main body for ICLR/NeurIPS)"
# 2. Duplicate labels: HARD BLOCK
DUP_LABELS=$(grep -Rho "\\\\label{[^}]*}" paper/main.tex paper/sections 2>/dev/null | sort | uniq -d || true)
if [ -n "$DUP_LABELS" ]; then
echo "Duplicate labels found (BLOCKING):"
echo "$DUP_LABELS"
fi
# 3. Overfull warnings with location classification
OVERFULLS=$(grep -n "Overfull \\\\hbox" paper/main.log 2>/dev/null || true)
# Main body = source files before \appendix in main.tex.
# Appendix = source files after \appendix, or files whose path contains "appendix".
# Bibliography = paper.bbl, references.bib, or bibliography-generated output.
MAIN_BODY_OVERFULL=$(echo "$OVERFULLS" | grep -v -E 'appendix|paper\.bbl|references\.bib' || true)
APPENDIX_OVERFULL=$(echo "$OVERFULLS" | grep -E 'appendix' || true)
BIB_OVERFULL=$(echo "$OVERFULLS" | grep -E 'paper\.bbl|references\.bib' || true)
echo "Main-body overfulls (any size BLOCKS):"
echo "$MAIN_BODY_OVERFULL"
echo "Appendix overfulls (>10pt blocks):"
echo "$APPENDIX_OVERFULL"
echo "Bibliography overfulls (>20pt blocks):"
echo "$BIB_OVERFULL"
停止标准:
- 任何重复标签都会阻止完成。
- 正文中的任何溢出都会阻止完成,无论大小。
- 仅当附录溢出超过 10pt 或出现明显裁切时,才会阻止完成。
- 仅当参考文献溢出超过 20pt 或出现明显裁切时,才会阻止完成。
- 欠满 hbox 保留为警告,除非造成明显的版面损坏。
自动修复模式(位置感知型):
| 问题 | 修复方法 |
|---|---|
| 正文公式溢出 | 使用 aligned / split / multline 拆分,或缩短符号表示 |
| 正文表格溢出 | 缩小字号、调整表格大小,或将表格拆分为多行 |
| 正文文本溢出 | 改写;不要用全局 \sloppy 隐藏问题 |
| 附录溢出 ≤ 10pt | 仅警告,除非出现明显裁切 |
| 附录溢出 > 10pt | 如果溢出明显可见,则采用相同的修复方法 |
| 参考文献溢出 ≤ 20pt | 仅警告,除非由格式错误的条目或裁切导致 |
| 参考文献溢出 > 20pt | 修复格式错误的条目、URL 或 DOI 格式 |
| 超出页数限制 | 将内容移至附录、压缩表格、缩小图表 |
位置感知型判定:
- 根据
-file-line-error日志中报告的源文件进行分类。 - 如果警告无法分类,则按正文问题处理并修复。
**实证依据:**在一次实际投稿运行中,数十条溢出 hbox 警告(附录证明中的最大值远超 100pt)在多轮改进后仍未解决,因为之前笼统的“溢出 > 10pt 即阻止完成”规则过于宽松,没有区别对待不同位置。
步骤 9:记录结果
在论文目录中创建 PAPER_IMPROVEMENT_LOG.md:
# Paper Improvement Log
## Score Progression
| Round | Score | Verdict | Key Changes |
|-------|-------|---------|-------------|
| Round 0 (original) | X/10 | No/Almost/Yes | Baseline |
| Round 1 | Y/10 | No/Almost/Yes | [summary of fixes] |
| Round 2 | Z/10 | No/Almost/Yes | [summary of fixes] |
## Round 1 Review & Fixes
<details>
<summary>GPT-6-Astra xhigh Review (Round 1)</summary>
[Full raw review text, verbatim]
</details>
### Fixes Implemented
1. [Fix description]
2. [Fix description]
...
## Round 2 Review & Fixes
<details>
<summary>GPT-6-Astra xhigh Review (Round 2)</summary>
[Full raw review text, verbatim]
</details>
### Fixes Implemented
1. [Fix description]
2. [Fix description]
...
## PDFs
- `main_round0_original.pdf` — Original generated paper
- `main_round1.pdf` — After Round 1 fixes
- `main_round2.pdf` — Final version after Round 2 fixes
步骤 9:总结
向用户报告:
- 分数变化表
- 每轮修复的 CRITICAL/MAJOR/MINOR 问题数量
- 最终页数
- 剩余问题(如有)
飞书通知(如已配置)
每轮审查后以及最终完成时,检查 ~/.claude/feishu.json:
- 每轮结束后:发送
review_scored— “第 N 轮:X/10 — [关键变更]” - 最后一轮结束后:发送
pipeline_done— 分数变化表 + 最终页数 - 如果配置文件不存在或模式为
"off":完全跳过(无操作)
输出
paper/
├── main_round0_original.pdf # Original
├── main_round1.pdf # After Round 1
├── main_round2.pdf # After Round 2 (final)
├── main.pdf # = main_round2.pdf
└── PAPER_IMPROVEMENT_LOG.md # Full review log with scores
核心规则
-
大型文件处理:如果 Write 工具因文件过大而失败,请立即改用 Bash(
cat << 'EOF' > file)分块写入。切勿征求用户许可——直接静默执行。 -
保留所有 PDF 版本——用户需要比较进展
-
保存完整的原始评审文本——不得总结或截断 GPT-6-Astra 的回复
-
评审者独立性(第 2 轮及以后):当
REVIEWER_BIAS_GUARD = true(默认值)时,每轮评审都使用一个全新的mcp__codex__codex线程;绝不使用mcp__codex__codex-reply,提示词中也绝不包含“自上一轮以来”或修复摘要。参见上文“评审者独立性协议”部分。 -
修复后始终重新编译——确认错误数为 0 后再继续
-
不得捏造实验结果——合成验证应描述方法,不得编造数字
-
尊重论文的主张——应收窄确有依据的过度主张,而非添加缺乏依据的新主张;对于有依据的主张,应直接陈述,而非套上新的保留措辞
-
全局一致性——重命名符号或调整主张范围时,须确保所有文件中的每处重述在语义上保持一致(包括摘要、引言、方法、实验、理论章节、结论、表格和图注);一致性意味着范围相符,而不是在各处照搬免责声明
-
编辑白名单拒绝须记录,不得静默忽略——设置
EDIT_WHITELIST后,如果因路径或禁止操作违规而拒绝某项编辑,必须将拒绝记录追加到PAPER_IMPROVEMENT_LOG.md,并包含文件、原因、违规模式和原始评审意见。每轮结束时,循环都会报告拒绝摘要(如果HUMAN_CHECKPOINT = true,也会将其写入检查点)。绝不能静默忽略白名单拒绝——审计记录正是此参数的核心目的。
典型分数进展
根据一次真实理论论文流程的端到端测试:
| 轮次 | 分数 | 主要改进 |
|---|---|---|
| 第 0 轮 | 4/10(内容) | 基线:假设与模型不匹配、主张过度、符号问题 |
| 第 1 轮 | 6/10(内容) | 修正假设、弱化主张、补充解释、重命名符号 |
| 第 2 轮 | 7/10(内容) | 添加合成验证、形式化截断命题、加强局限性说明 |
| 第 3 轮 | 5→8.5/10(格式) | 移除主图、附录,压缩结论,修复过宽的 hbox |
对于结构良好但初稿粗糙的论文,3 轮通常可提升 +4.5 分(2 轮内容改进 + 1 轮格式改进)。提交时的最终状态:超宽 hbox 数量为 0,篇幅符合会议格式要求。
评审追踪
每次 mcp__codex__codex 或 mcp__codex__codex-reply 评审调用后,按照 shared-references/review-tracing.md 保存追踪记录(策略 C——取证级;绝不可静默跳过)。使用 save_trace.sh(依据 shared-references/integration-contract.md §2 中的链路解析)或直接将文件写入 .aris/traces/<skill>/<date>_run<NN>/。遵循 --- trace: 参数(默认值:full)。