name: PDF Metadata Resolver
description: 对附件 PDF 做元数据补全与父条目修复。 Use when: 存在孤立 PDF 或元数据缺失条目. Do not use when: 附件元数据完整且可解析.
version: 2.0.0
Identity
- Skill ID: S08
- Slug: pdf-metadata-resolver
- Directory: .agents/skills/S08-pdf-metadata-resolver/
- Name: PDF Metadata Resolver
- 中文角色: PDF 元数据兜底修复
- Stage: B_literature_evidence
- Skill Type: business
- Human Gate: G2
- Required QA Hooks: - Q01
Mission
对附件 PDF 做元数据补全与父条目修复。
此 skill 在综述生产流水线中的角色:PDF 元数据兜底修复。它在"B_literature_evidence"阶段运行,
生成结构化产物供下游 skill 消费,并在 G2 处接受人工审核。
Scientific Role in the Workflow
- 所处阶段: 数据修复阶段——对历史 PDF 或元数据缺失条目进行 CrossRef/标题交叉查询修复
- 产出形式: metadata_resolution_report.json + fixed_items.csv
- 人机协同点: 产物在 G2 处需人工审签;关键决策记录在 decision_log.md 中
- 对下游的价值: 提高 Zotero 库的元数据完整性,减少下游引用错误
Scope of Responsibility
- 本 skill 仅负责 DOI 交叉查询、标题匹配、元数据补全
- 不负责 主通道文献导入(那是 S07 的职责)
- 不负责 文献内容评价(那是 S09 的职责)
Trigger When
存在孤立 PDF 或元数据缺失条目
Do Not Trigger When
附件元数据完整且可解析
Required Inputs
- pdfs/
- zotero_sync_report.json
Optional Inputs
- CrossRef polite email (提高 API 速率)
- Zotero 本地库路径
Output Contract
- 所有输出文件写入
/artifacts/run-<ts>/stage-2/ 目录下
- 结构化输出(.json / .csv)优先于叙述性输出(.md),必须通过 schemas/ 下对应 JSON Schema 校验
- 每个输出产物在 artifact registry 中注册时,须记录其上游依赖、生成时间、生成器和版本号
- 产物格式优先级:结构化数据 (.json) > 表格 (.csv) > 叙述性 Markdown (.md) > 自由文本
- 产物路径和命名遵循
configs/artifact_registry_rules.json 中定义的规范
Expected Outputs
- metadata_resolution_report.json
- fixed_items.csv
Operational Steps
- 验证所有 Required Inputs 存在且可读,缺失则立即停止并报告
- 加载相关 Schema 和契约文件(schemas/ 目录下)
- 仅执行 Purpose 与 Scope of Responsibility 中定义的任务,不漂移到相邻 skill 的职责
- 先产出结构化数据(.json / .csv),再生成叙述性说明(.md)
- 记录所有假设、未解决的歧义和失败追踪信息
- 若置信度不足(如关键数据缺失导致无法做出科学判断),停止执行并升级给人工,不得猜测或编造
Decision / Writing / Validation Principles
- 结构化字段优先:先填满 schema 的 required 字段,再补充 optional 字段
- 证据三元组:每个科学论断必须包含 (source_id, finding_direction, evidence_strength)
- 冲突分类:如发现证据方向矛盾,标记为 direction_conflict 而非强行选边
- 术语一致性:同一实体在全文中使用统一的 canonical term(参见 configs/ontology/)
- 保守推断:不在证据不足时声称"clearly" "definitively" "proves"
Hard Constraints
- 不得编造 DOI、PMID、样本量、统计值、期刊身份或研究结论
- 不得静默覆盖已有高版本 artifact(必须 version incrementally,参见 AGENTS.md)
- 不得删除上游可审计痕迹(raw exports、screening decisions、extraction logs 必须保留)
- 不得绕过 Gate 或把 QA 结论写成"已人工确认"(除非真正通过了人工审核)
- 不将 PDF 元数据识别作为主导入通道
- 不覆盖已存在的更高质量元数据
- 不过度信任 PDF 元数据识别结果——必须交叉验证
QA Hooks
Human-in-the-Loop Checkpoint
- 产出物完成后,进入 G2 等待人工审核
- 审核通过前,下游 skill 不得启动
- 若人工审核要求修订,返回上游 skill(参见
orchestrator/state_machine/transitions.yaml)
Acceptance Checklist (Self-Verification Before Declaring Done)
Failure Handling
- 缺少输入: 发出 blocking error,立即停止,不继续执行
- Schema 校验失败: 重试一次(带错误上下文修正);若第二次仍失败,升级给 checkpoint manager
- 下游污染风险: 如果当前产物可能影响下游 skill 的正确性,标记为
status: blocked,阻止流水线继续
- 领域特定失败: 若 total unresolved > 30% → warning,但不阻断流水线
- 重试耗尽: 若达到 orchestrator/retry_policies/ 中定义的最大重试次数,升级给人工
Logging and Observability
每个 skill 必须产出以下日志文件(写入 /artifacts/run-<ts>/logs/S08/):
input_manifest.json — 所有输入的路径和校验和
output_manifest.json — 所有输出的路径和校验和
validation_result.json — Schema 校验结果
decision_log.md — 关键决策及其理由
failure_trace.md — 失败时的错误堆栈(如有)
Collaboration Notes for Codex / Orchestrator
- 执行前先读取
AGENTS.md 获取项目级非协商规则
- 执行前先读取
configs/skills_manifest.json 确认本 skill 的上下游依赖
- 产物注册使用
orchestrator/artifact_registry/registry_v2.py 的统一接口
Definition of Done
- 所有 Expected Outputs 已写入磁盘并通过 Schema 校验
- 所有 Required QA Hooks 已触发并获得非 blocking 结果
- 产物已在 artifact registry 中注册,具备完整的 provenance 记录
Examples