paperfit-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/.claude/commands/adjust-length.md +21 -0
  2. package/.claude/commands/check-visual.md +27 -0
  3. package/.claude/commands/fix-layout.md +31 -0
  4. package/.claude/commands/migrate-template.md +23 -0
  5. package/.claude/commands/repair-table.md +21 -0
  6. package/.claude/commands/show-status.md +32 -0
  7. package/.claude-plugin/README.md +77 -0
  8. package/.claude-plugin/marketplace.json +41 -0
  9. package/.claude-plugin/plugin.json +39 -0
  10. package/CLAUDE.md +266 -0
  11. package/CONTRIBUTING.md +131 -0
  12. package/LICENSE +21 -0
  13. package/README.md +164 -0
  14. package/agents/code-surgeon-agent.md +214 -0
  15. package/agents/layout-detective-agent.md +229 -0
  16. package/agents/orchestrator-agent.md +254 -0
  17. package/agents/quality-gatekeeper-agent.md +270 -0
  18. package/agents/rule-engine-agent.md +224 -0
  19. package/agents/semantic-polish-agent.md +250 -0
  20. package/bin/paperfit.js +176 -0
  21. package/config/agent_roles.yaml +56 -0
  22. package/config/layout_rules.yaml +54 -0
  23. package/config/templates.yaml +241 -0
  24. package/config/vto_taxonomy.yaml +489 -0
  25. package/config/writing_rules.yaml +64 -0
  26. package/install.sh +30 -0
  27. package/package.json +52 -0
  28. package/requirements.txt +5 -0
  29. package/scripts/benchmark_runner.py +629 -0
  30. package/scripts/compile.sh +244 -0
  31. package/scripts/config_validator.py +339 -0
  32. package/scripts/cv_detector.py +600 -0
  33. package/scripts/evidence_collector.py +167 -0
  34. package/scripts/float_fixers.py +861 -0
  35. package/scripts/inject_defects.py +549 -0
  36. package/scripts/install-claude-global.js +148 -0
  37. package/scripts/install.js +66 -0
  38. package/scripts/install.sh +106 -0
  39. package/scripts/overflow_fixers.py +656 -0
  40. package/scripts/package-for-opensource.sh +138 -0
  41. package/scripts/parse_log.py +260 -0
  42. package/scripts/postinstall.js +38 -0
  43. package/scripts/pre_tool_use.py +265 -0
  44. package/scripts/render_pages.py +244 -0
  45. package/scripts/session_logger.py +329 -0
  46. package/scripts/space_util_fixers.py +773 -0
  47. package/scripts/state_manager.py +352 -0
  48. package/scripts/test_commands.py +187 -0
  49. package/scripts/test_cv_detector.py +214 -0
  50. package/scripts/test_integration.py +290 -0
  51. package/skills/consistency-polisher/SKILL.md +337 -0
  52. package/skills/float-optimizer/SKILL.md +284 -0
  53. package/skills/latex_fixers/__init__.py +82 -0
  54. package/skills/latex_fixers/float_fixers.py +392 -0
  55. package/skills/latex_fixers/fullwidth_fixers.py +375 -0
  56. package/skills/latex_fixers/overflow_fixers.py +250 -0
  57. package/skills/latex_fixers/semantic_micro_tuning.py +362 -0
  58. package/skills/latex_fixers/space_util_fixers.py +389 -0
  59. package/skills/latex_fixers/utils.py +55 -0
  60. package/skills/overflow-repair/SKILL.md +304 -0
  61. package/skills/space-util-fixer/SKILL.md +307 -0
  62. package/skills/taxonomy-vto/SKILL.md +486 -0
  63. package/skills/template-migrator/SKILL.md +251 -0
  64. package/skills/visual-inspector/SKILL.md +217 -0
  65. package/skills/writing-polish/SKILL.md +289 -0
@@ -0,0 +1,486 @@
1
+ # VTO Taxonomy Knowledge Base
2
+
3
+ ## 概述
4
+
5
+ 本技能为 **Visual Typesetting Optimization (VTO)** 任务提供完整的视觉排版缺陷分类知识库。它是 `layout-detective-agent` 进行逐页视觉诊断的核心参考手册,定义了每一类缺陷的**视觉特征、诊断方法、严重等级判定**以及与编译日志信号的对应关系。
6
+
7
+ **使用方式**:排版侦探 Agent 在对 PDF 页图进行审查时,应逐项对照本手册中的缺陷定义,识别并记录发现的缺陷,输出结构化诊断报告。
8
+
9
+ ---
10
+
11
+ ## 分类体系总览
12
+
13
+ VTO 缺陷分为五大类别,每个类别下包含若干具体缺陷类型:
14
+
15
+ | 类别 | 名称 | 缺陷数量 | 默认严重等级 |
16
+ |------|------|----------|-------------|
17
+ | A | 空间利用缺陷 | 4 | Major |
18
+ | B | 浮动体缺陷 | 4 | Major |
19
+ | C | 排版一致性缺陷 | 3 | Minor |
20
+ | D | 溢出与对齐缺陷 | 3 | Major |
21
+ | E | 跨模板迁移缺陷 | 3 | Critical |
22
+
23
+ 严重等级说明:
24
+ - **Critical**:必须修复,否则论文不符合投稿要求(编译失败、页数严重不符等)
25
+ - **Major**:严重影响视觉专业度,强烈建议修复
26
+ - **Minor**:影响美观但不致命,可在时间充裕时修复
27
+
28
+ ---
29
+
30
+ ## Category A:空间利用缺陷
31
+
32
+ 此类缺陷关注页面空间的分配效率与视觉平衡,核心是判断“空白是否合理”、“段落是否完整”。
33
+
34
+ ### A1:孤行/寡行 (Widow/Orphan Lines)
35
+
36
+ **定义**:
37
+ - **孤行 (Widow)**:段落最后一行单独出现在下一页顶部。
38
+ - **寡行 (Orphan)**:段落第一行单独留在上一页底部。
39
+ - **段尾小尾巴**:段落末尾一行仅含 1-3 个单词,长度不足栏宽的 1/4。
40
+
41
+ **视觉诊断方法**:
42
+ 1. 逐页检查页面的顶部和底部区域。
43
+ 2. 若页面顶部第一行为某段落的末行 → **孤行**。
44
+ 3. 若页面底部最后一行为某段落的首行 → **寡行**。
45
+ 4. 对于任意段落末行,目测其长度:若远短于同行其他行(明显短于栏宽的 1/4),记为**段尾小尾巴**(与孤行/寡行同等对待)。
46
+
47
+ **严重等级判定**:
48
+ - 出现任意孤行或寡行 → **Major**
49
+ - 仅出现段尾小尾巴(非跨页)→ **Minor**(但若多处出现,升级为 Major)
50
+
51
+ **与日志信号的关联**:无直接日志警告。
52
+
53
+ **常见误判提醒**:
54
+ - 公式环境或列表环境后的短行可能为正常现象,需结合上下文判断。
55
+ - 双栏布局中,左右栏的段落独立判断,不要跨栏比较。
56
+
57
+ **诊断记录格式**:
58
+ ```
59
+ - defect_id: A1
60
+ - page: 5
61
+ - location: "第 5 页顶部第一行"
62
+ - description: "段尾小尾巴:仅含单词 'the proposed method',长度不足栏宽 1/5"
63
+ - severity: minor/major
64
+ ```
65
+
66
+ ---
67
+
68
+ ### A2:末页大面积留白 (Excessive Trailing Whitespace)
69
+
70
+ **定义**:论文最后一页(参考文献之前或之后)存在超过页面高度 20% 的连续空白区域。
71
+
72
+ **视觉诊断方法**:
73
+ 1. 定位 PDF 的最后一页(参考文献所在页或其后的附录/致谢页)。
74
+ 2. 目测或估算空白区域占页面内容区域的比例。
75
+ - 若空白集中在页面下半部分,且面积明显超过 1/5 页面高度,判定为缺陷。
76
+ 3. 特别注意:若参考文献后仍有内容(如附录),则最后一页为附录末页。
77
+
78
+ **阈值参考**:
79
+ - 空白比例 < 15%:可接受
80
+ - 空白比例 15%-20%:建议优化
81
+ - 空白比例 > 20%:**缺陷 (Major)**
82
+
83
+ **严重等级**:**Major**
84
+
85
+ **与日志信号的关联**:无。
86
+
87
+ **常见误判提醒**:
88
+ - 若末页是参考文献的开始且参考文献未满一页,此时空白为正常现象(参考文献允许跨页),不视为缺陷。仅当参考文献后仍有大段空白时才判定。
89
+
90
+ **诊断记录格式**:
91
+ ```
92
+ - defect_id: A2
93
+ - page: 9
94
+ - description: "末页空白面积约占页面高度的 35%"
95
+ - severity: major
96
+ ```
97
+
98
+
99
+ ### A3:页数预算违反 (Page Budget Violation)
100
+
101
+ **定义**:论文总页数超出或不足用户指定的目标页数(通常来自会议/期刊要求)。
102
+
103
+ **视觉诊断方法**:
104
+ 1. 获取用户输入的目标页数(如未提供,则跳过此项检测)。
105
+ 2. 检查 PDF 总页数。
106
+ 3. 若实际页数 ≠ 目标页数,记录偏差。
107
+
108
+ **严重等级**:**Critical**
109
+
110
+ **与日志信号的关联**:无。
111
+
112
+ **诊断记录格式**:
113
+ ```
114
+ - defect_id: A3
115
+ - description: "实际 10 页,目标 9 页,超出 1 页"
116
+ - severity: critical
117
+ ```
118
+
119
+ ---
120
+
121
+ ### A4:双栏末页左右栏高度不齐 (Unbalanced Column Heights)
122
+
123
+ **定义**:在双栏排版的最后一页,左右两栏的底部高度不一致,高度差超过 2 行。
124
+
125
+ **视觉诊断方法**:
126
+ 1. 仅适用于双栏模板(如 IEEE、ACM、ECCV 等)。
127
+ 2. 定位最后一页,在左右栏底部画一条水平参考线。
128
+ 3. 若两栏底部高度差超过约 2 行正文的高度,判定为缺陷。
129
+
130
+ **严重等级**:**Minor**(若与其他缺陷叠加,可升级)
131
+
132
+ **与日志信号的关联**:无。
133
+
134
+ **诊断记录格式**:
135
+ ```
136
+ - defect_id: A4
137
+ - page: 12
138
+ - description: "左右栏底部高度差约 4 行"
139
+ - severity: minor
140
+ ```
141
+
142
+
143
+ ## Category B:浮动体缺陷
144
+
145
+ 此类缺陷关注图表的放置位置、尺寸匹配度以及对阅读流的干扰。
146
+
147
+ ### B1:浮动体远离首次引用 (Float-Reference Distance)
148
+
149
+ **定义**:图表出现在距离其首次被引用的页面过远的位置(通常页码差 ≥ 2)。
150
+
151
+ **视觉诊断方法**:
152
+ 1. 在 PDF 中搜索图表标签(如 "Figure 1"、"Table 2")的首次出现位置。
153
+ 2. 找到该图表实际出现的页面。
154
+ 3. 计算页码差:`|图表页码 - 首次引用页码|`。
155
+ 4. 若差值 ≥ 2,记录缺陷。
156
+
157
+ **严重等级**:**Major**(若差值 ≥ 3,升级为 Critical)
158
+
159
+ **与日志信号的关联**:
160
+ - 编译日志中可能出现 `LaTeX Warning: Float too large for page` 或浮动体放置相关的 warning,作为辅助证据。
161
+
162
+ **诊断记录格式**:
163
+ ```
164
+ - defect_id: B1
165
+ - object: "Figure 3"
166
+ - reference_page: 4
167
+ - float_page: 6
168
+ - distance: 2
169
+ - severity: major
170
+ ```
171
+
172
+ ---
173
+
174
+ ### B2:浮动体大小不适配栏宽 (Float Width Mismatch)
175
+
176
+ **定义**:图片或表格的宽度未充分利用栏宽,过窄(两侧留白过大)或超宽(溢出或被截断)。
177
+
178
+ **视觉诊断方法**:
179
+ 1. 对于单栏图表:对比图表宽度与栏宽,目测利用率。
180
+ - 若图表宽度 < 栏宽的 85%,视为**过窄**。
181
+ - 若图表宽度 > 栏宽(内容伸出右边界),视为**超宽**。
182
+ 2. 对于跨栏图表(`figure*`/`table*`):对比图表宽度与页宽,标准同上。
183
+
184
+ **严重等级**:
185
+ - 过窄:**Minor**(若多图表均过窄,升级为 Major)
186
+ - 超宽/溢出:**Major**
187
+
188
+ **与日志信号的关联**:
189
+ - 超宽常伴随 `Overfull \hbox` 警告(参见 D1)。
190
+
191
+ **诊断记录格式**:
192
+ ```
193
+ - defect_id: B2
194
+ - object: "Figure 2"
195
+ - page: 3
196
+ - description: "图片宽度仅占栏宽约 60%,两侧留白过大"
197
+ - severity: minor
198
+ ```
199
+
200
+ ---
201
+
202
+ ### B3:浮动体连续堆叠 (Float Clustering)
203
+
204
+ **定义**:同一页或连续两页出现 3 个或以上的图表,且中间几乎无正文间隔,形成“图表页”。
205
+
206
+ **视觉诊断方法**:
207
+ 1. 检查每一页的图表数量。
208
+ 2. 若某页包含 ≥ 3 个图表,且正文少于 3 行,视为**浮动体堆叠**。
209
+ 3. 若连续两页累计图表 ≥ 4 且中间正文极少,同样视为缺陷。
210
+
211
+ **严重等级**:**Minor**(但若导致阅读体验严重下降,可标为 Major)
212
+
213
+ **与日志信号的关联**:无直接日志,但大量浮动体可能引发 placement warning。
214
+
215
+ **诊断记录格式**:
216
+ ```
217
+ - defect_id: B3
218
+ - page: 7
219
+ - description: "该页包含 3 个图表,正文仅 2 行"
220
+ - severity: minor
221
+ ```
222
+
223
+ ---
224
+
225
+ ### B4:浮动体跨页分裂 (Float Page Orphaning)
226
+
227
+ **定义**:一个图表(尤其是长表格)在不适当的位置断开,跨两页显示,且第二页未重复表头。
228
+
229
+ **视觉诊断方法**:
230
+ 1. 检查跨页的表格或图表。
231
+ 2. 若表格在分页处被截断,且下一页续表中缺少表头(或未使用 `longtable` 的重复表头功能),判定为缺陷。
232
+
233
+ **严重等级**:**Minor**(若为关键数据表,升级为 Major)
234
+
235
+ **与日志信号的关联**:无。
236
+
237
+ **诊断记录格式**:
238
+ ```
239
+ - defect_id: B4
240
+ - object: "Table 4"
241
+ - page: 8-9
242
+ - description: "表格跨页分裂,第二页缺少表头"
243
+ - severity: minor
244
+ ```
245
+
246
+ ---
247
+
248
+ ## Category C:排版一致性缺陷
249
+
250
+ 此类缺陷关注全篇排版风格的统一性。
251
+
252
+ ### C1:表格字号不统一 (Inconsistent Table Font Sizes)
253
+
254
+ **定义**:不同表格使用了差异明显的字号,通常由 `\resizebox` 或手动 `\tiny`/`\small` 滥用导致。
255
+
256
+ **视觉诊断方法**:
257
+ 1. 对比全篇至少 3 个表格的字号大小。
258
+ 2. 若发现某些表格的字号明显小于或大于其他表格,且差异超过 1 个等级(如一个用 `\small`,另一个用 `\footnotesize`),记录缺陷。
259
+ 3. 特别注意使用 `\resizebox` 缩放表格导致的字号异常(文字被整体缩放,视觉上变形)。
260
+
261
+ **严重等级**:**Minor**
262
+
263
+ **与日志信号的关联**:无直接日志,但可在源码中搜索 `\resizebox`。
264
+
265
+ **诊断记录格式**:
266
+ ```
267
+ - defect_id: C1
268
+ - description: "Table 1 使用 \small,Table 3 使用 \resizebox 导致字号偏小,全篇表格字号不统一"
269
+ - severity: minor
270
+ ```
271
+
272
+ ---
273
+
274
+ ### C2:图片分辨率/风格不一致 (Inconsistent Figure Quality/Style)
275
+
276
+ **定义**:论文中图片分辨率差异大,或风格(如字体、配色、线条粗细)不统一。
277
+
278
+ **视觉诊断方法**:
279
+ 1. 检查所有图片的清晰度,注意模糊、锯齿、像素化现象。
280
+ 2. 对比不同图片的视觉风格:字体类型、字号、配色方案、线条风格。
281
+ 3. 若差异明显(例如一张为清晰矢量图,另一张为低分辨率截图),记录缺陷。
282
+
283
+ **严重等级**:**Minor**
284
+
285
+ **修复提示**:此缺陷系统无法自动修复,需提示用户替换低质量图片或统一绘制风格。
286
+
287
+ **诊断记录格式**:
288
+ ```
289
+ - defect_id: C2
290
+ - object: "Figure 5"
291
+ - description: "图片分辨率低,锯齿明显,与 Figure 2 的矢量图风格不一致"
292
+ - severity: minor
293
+ ```
294
+
295
+ ---
296
+
297
+ ### C3:Caption 格式不统一 (Inconsistent Caption Format)
298
+
299
+ **定义**:图表标题的字体、间距、编号格式、结尾标点不一致。
300
+
301
+ **视觉诊断方法**:
302
+ 1. 检查至少 3 个图表标题的格式:
303
+ - 字体是否一致(加粗/不加粗、斜体/正体)?
304
+ - 与图表主体的间距是否一致?
305
+ - 结尾是否有标点(有的以句号结尾,有的没有)?
306
+ - 表格标题位置是否一致(通常表格标题在上方,图片在下方)?
307
+ 2. 若发现不一致,记录缺陷。
308
+
309
+ **严重等级**:**Minor**
310
+
311
+ **诊断记录格式**:
312
+ ```
313
+ - defect_id: C3
314
+ - description: "Figure 1 标题加粗,Figure 2 标题未加粗;Table 1 标题无句号,Table 2 标题以句号结尾"
315
+ - severity: minor
316
+ ```
317
+
318
+ ---
319
+
320
+ ## Category D:溢出与对齐缺陷
321
+
322
+ 此类缺陷涉及内容超出边界或未正确断行,通常有明确的日志信号。
323
+
324
+ ### D1:Overfull hbox
325
+
326
+ **定义**:文本行、表格单元格或公式内容超出栏宽,LaTeX 无法自动断行。
327
+
328
+ **视觉诊断方法**:
329
+ 1. 检查页面的右边界,寻找伸出版心或栏宽的内容(可能被截断或与边界重叠)。
330
+ 2. 特别关注:
331
+ - 长单词(未正确断词)
332
+ - 表格中的长文本单元格
333
+ - 超长公式
334
+ 3. **必须结合编译日志**:在 `.log` 中搜索 `Overfull \hbox`,获取精确的溢出位置和溢出量(pt)。
335
+
336
+ **严重等级**:
337
+ - 溢出量 < 5pt 且不影响阅读:**Minor**
338
+ - 溢出量 ≥ 5pt 或内容明显被截断:**Major**
339
+
340
+ **诊断记录格式**:
341
+ ```
342
+ - defect_id: D1
343
+ - page: 4
344
+ - object: "段落第 3 行 / Table 2 某单元格"
345
+ - log_signal: "Overfull \hbox (12.3pt too wide) in paragraph at lines 245--248"
346
+ - visual_evidence: "单词 'implementation' 伸出右边界约 2mm"
347
+ - severity: major
348
+ ```
349
+
350
+ ---
351
+
352
+ ### D2:长公式未合理断行 (Unbroken Long Equations)
353
+
354
+ **定义**:过长的数学公式未在多行环境中断行,导致溢出或视觉拥挤。
355
+
356
+ **视觉诊断方法**:
357
+ 1. 检查所有公式环境(`equation`、`\[...\]`)。
358
+ 2. 若公式长度明显超过栏宽的 90% 且未断行,或已溢出,记录缺陷。
359
+ 3. 对于多行公式(`align`、`multline`),检查断行位置是否合理(通常在等号或运算符处)。
360
+
361
+ **严重等级**:**Major**(若溢出)或 **Minor**(若未溢出但明显过长且可优化)
362
+
363
+ **与日志信号的关联**:常伴随 `Overfull \hbox` 警告。
364
+
365
+ **诊断记录格式**:
366
+ ```
367
+ - defect_id: D2
368
+ - page: 6
369
+ - object: "Equation (12)"
370
+ - description: "单行公式长度超过栏宽,溢出约 8pt"
371
+ - severity: major
372
+ ```
373
+
374
+ ---
375
+
376
+ ### D3:URL/长标识符溢出 (URL/Long Identifier Overflow)
377
+
378
+ **定义**:参考文献或正文中的 URL、DOI、长标识符超出栏宽。
379
+
380
+ **视觉诊断方法**:
381
+ 1. 检查参考文献区域的 URL 和 DOI。
382
+ 2. 若某条 URL 伸出右边界,记录缺陷。
383
+
384
+ **严重等级**:**Minor**(但若多处出现,升级为 Major)
385
+
386
+ **与日志信号的关联**:常伴随 `Overfull \hbox` 在参考文献区域。
387
+
388
+ **诊断记录格式**:
389
+ ```
390
+ - defect_id: D3
391
+ - page: 10
392
+ - object: "参考文献 [23] 的 URL"
393
+ - description: "URL 超出栏宽约 15pt"
394
+ - severity: minor
395
+ ```
396
+
397
+ ---
398
+
399
+ ## Category E:跨模板迁移缺陷
400
+
401
+ 此类缺陷仅在用户执行模板切换任务时激活。
402
+
403
+ ### E1:单栏↔双栏图表尺寸失配
404
+
405
+ **定义**:模板切换后,原模板的图表尺寸设置不再适用,导致图表在新模板下尺寸不当。
406
+
407
+ **视觉诊断方法**:
408
+ 1. 对比原模板和新模板的栏宽/页宽。
409
+ 2. 检查所有图表:
410
+ - 若原为单栏全宽图,在新双栏模板中仍为单栏宽(应改为跨栏 `figure*`),图表显得过小。
411
+ - 若原为双栏跨栏图,在新单栏模板中尺寸异常。
412
+ 3. 记录所有尺寸不适配的图表。
413
+
414
+ **严重等级**:**Critical**
415
+
416
+ **诊断记录格式**:
417
+ ```
418
+ - defect_id: E1
419
+ - object: "Figure 1"
420
+ - description: "原为单栏全宽图,在新双栏模板中仅占单栏,宽度利用率不足 50%"
421
+ - severity: critical
422
+ ```
423
+
424
+ ---
425
+
426
+ ### E2:页数预算不匹配
427
+
428
+ **定义**:模板切换后总页数与目标模板预期页数相差较大。
429
+
430
+ **视觉诊断方法**:
431
+ 1. 获取目标模板的预期页数(如 ICLR 9 页 → ECCV 14 页)。
432
+ 2. 对比当前 PDF 总页数与预期值。
433
+ 3. 若偏差超过 1 页,记录缺陷。
434
+
435
+ **严重等级**:**Critical**
436
+
437
+ **诊断记录格式**:
438
+ ```
439
+ - defect_id: E2
440
+ - description: "当前 9 页,目标模板预期 14 页,需扩写 5 页内容"
441
+ - severity: critical
442
+ ```
443
+
444
+ ---
445
+
446
+ ### E3:模板特定宏兼容性
447
+
448
+ **定义**:新模板中使用了已废弃或冲突的宏包、命令,导致编译失败或内容缺失。
449
+
450
+ **视觉诊断方法**:
451
+ 1. 检查编译日志中的错误和警告。
452
+ 2. 常见信号:`Undefined control sequence`、`Option clash for package`、`Environment XXX undefined`。
453
+ 3. 若编译失败,优先处理此类缺陷。
454
+
455
+ **严重等级**:**Critical**
456
+
457
+ **诊断记录格式**:
458
+ ```
459
+ - defect_id: E3
460
+ - log_signal: "Undefined control sequence \theoremstyle"
461
+ - description: "新模板不支持 amsthm 宏包的 \theoremstyle 命令"
462
+ - severity: critical
463
+ ```
464
+
465
+ ---
466
+
467
+ ## 诊断工作流指南
468
+
469
+ `layout-detective-agent` 应遵循以下步骤:
470
+
471
+ 1. **加载配置**:读取 `config/vto_taxonomy.yaml` 和本技能文档。
472
+ 2. **逐页审查**:使用 `visual-inspector` 技能渲染的页图,按页码顺序检查。
473
+ 3. **对照分类**:将观察到的视觉异常与上述缺陷类型逐一比对。
474
+ 4. **结合日志**:对于 D 类缺陷和编译问题,务必交叉验证 `.log` 文件。
475
+ 5. **记录缺陷**:为每个发现的缺陷生成结构化条目(包含 `defect_id`、`page`、`object`、`description`、`severity`)。
476
+ 6. **输出诊断报告**:汇总所有缺陷,按严重等级和类别排序,输出 JSON 格式的诊断结果。
477
+
478
+ ## 注意事项
479
+
480
+ - **上下文敏感**:某些视觉特征在不同模板下可能有不同评判标准(如单栏 vs 双栏),需结合模板类型调整阈值。
481
+ - **优先级排序**:Critical 和 Major 缺陷必须优先修复;Minor 缺陷可在主要缺陷清除后处理。
482
+ - **避免过度诊断**:对于正常排版现象(如公式后的自然短行),不要误判为缺陷。
483
+ - **与代码外科医生的协作**:诊断报告中的 `defect_id` 将直接用于路由到对应的修复 Skill(参见 `config/vto_taxonomy.yaml` 中的 `skill_routing` 映射)。
484
+
485
+ 本知识库将随着系统迭代不断扩充,涵盖更多边界案例和会议特定的排版规范。
486
+ ```