本节对应 Plan-validate-execute,重点是把一部分错误提前到执行之前发现。

问题

填写一份 PDF 表单时,Agent 根据用户要求准备填入 signature_date,但表单实际字段叫 signature_date_signed。

如果直接执行,错误会在填表过程中暴露;批量操作还可能已经处理了一部分文件。

仅仅“先写一份计划”也不能解决字段不匹配。计划需要与实际输入核对。

解决方案

为流程增加两个明确的中间产物:

文件表示什么谁提供依据
form_fields.json表单真实存在的字段、类型和必填信息从输入 PDF 中提取
field_values.json准备向哪些字段写入什么值根据用户要求生成的计划

验证器比较这两份数据,检查字段是否存在、类型是否兼容、必填项是否遗漏。验证失败就修改计划,再次验证;通过后才进入填表步骤。

最小示例

下面保留官网流程中的命令、参数顺序与文件名,补成中文 SKILL.md 教学示例。官网该段没有附带这些脚本的完整实现,本仓库也未实现这组 PDF 工具;这里用于解释流程关系,不能直接当作可运行练习包。

---
name: fill-pdf-form
description: 根据用户提供的值填写 PDF 表单,填写前检查字段映射是否符合实际表单。
---

1. 提取实际字段:
   ```bash
   python scripts/analyze_form.py input.pdf
   ```
   将结果保存为 `form_fields.json`,其中包含字段名、类型与必填信息。

2. 根据用户要求生成 `field_values.json`,记录准备写入的字段与值。

3. 验证填写计划:
   ```bash
   python scripts/validate_fields.py form_fields.json field_values.json
   ```

4. 验证失败时,根据具体错误修改 `field_values.json`,再次运行验证。

5. 验证通过后填写表单:
   ```bash
   python scripts/fill_form.py input.pdf field_values.json output.pdf
   ```

这里的关键动作是第 3 步。它提供了可检查的依据,而不只是让 Agent 再想一遍“计划是否合理”。

怎样检查

为验证器准备三个用例:字段不存在、字段值类型不匹配、必填字段遗漏。观察它是否给出具体原因,以及这些错误是否在实际填表之前被发现。

还要准备一份有效计划,检查它能否通过验证并进入执行。这些是待实现工具的检查要求,本页没有将其写成已经完成的 PDF 测试。

与上一节的区别是检查时机:上一节根据工作结果发现问题并修正;这里先对准备执行的数据做检查。真实任务中可以同时保留执行后的验证。

若业务要求验证失败时绝不执行,应把这一判断接入调用程序;仅写在 Skill 中仍需要 Agent 遵循。

上一节:验证循环 · 下一节:可复用脚本