Skip to content

PDF 工具

pdf 工具分析一个或多个 PDF 文档并返回文本。

快速说明:

  • 对 Anthropic 和 Google 模型 Provider 使用原生模式。
  • 对其他 Provider 使用提取回退模式(先提取文本,必要时再提取页面图像)。
  • 支持单个(pdf)或多个(pdfs)输入,每次调用最多 10 个 PDF。

可用性

只有当 OpenClaw 能为该 Agent 解析到具备 PDF 能力的模型配置时,才会注册此工具:

  1. agents.defaults.pdfModel
  2. 回退到 agents.defaults.imageModel
  3. 根据可用认证,回退到最佳 Provider 默认值

如果无法解析到可用模型,则不暴露 pdf 工具。

输入参数

  • pdfstring):单个 PDF 路径或 URL
  • pdfsstring[]):多个 PDF 路径或 URL,最多 10 个
  • promptstring):分析提示词,默认为 Analyze this PDF document.
  • pagesstring):页面过滤,如 1-51,3,7-9
  • modelstring):可选模型覆盖(provider/model
  • maxBytesMbnumber):每个 PDF 的大小上限(MB)

输入注意:

  • pdfpdfs 在加载前会合并并去重。
  • 未提供 PDF 输入时工具报错。
  • pages 解析为基于 1 的页码,去重、排序后限制到配置的最大页数。
  • maxBytesMb 默认使用 agents.defaults.pdfMaxBytesMb10

支持的 PDF 引用格式

  • 本地文件路径(包括 ~ 展开)
  • file:// URL
  • http://https:// URL

引用注意:

  • 其他 URI 方案(如 ftp://)会被拒绝,返回 unsupported_pdf_reference
  • 在沙箱模式下,远程 http(s) URL 会被拒绝。
  • 启用仅工作区文件策略时,允许根路径之外的本地文件路径会被拒绝。

执行模式

原生 Provider 模式

原生模式用于 Provider anthropicgoogle。 工具将原始 PDF 字节直接发送到 Provider API。

原生模式限制:

  • 不支持 pages。如果设置了该参数,工具会返回错误。

提取回退模式

回退模式用于非原生 Provider。

流程:

  1. 从选定页面提取文本(最多 agents.defaults.pdfMaxPages,默认 20)。
  2. 如果提取的文本长度低于 200 字符,则将选定页面渲染为 PNG 图像并包含进去。
  3. 将提取的内容加上提示词发送到选定模型。

回退详情:

  • 页面图像提取使用 4,000,000 像素预算。
  • 如果目标模型不支持图像输入且没有可提取的文本,工具报错。
  • 提取回退需要 pdfjs-dist(图像渲染还需要 @napi-rs/canvas)。

配置

json5
{
  agents: {
    defaults: {
      pdfModel: {
        primary: "anthropic/claude-opus-4-6",
        fallbacks: ["openai/gpt-5-mini"],
      },
      pdfMaxBytesMb: 10,
      pdfMaxPages: 20,
    },
  },
}

完整字段说明参见 Configuration Reference

输出详情

工具在 content[0].text 中返回文本,在 details 中返回结构化元数据。

常见 details 字段:

  • model:解析后的模型引用(provider/model
  • native:原生 Provider 模式为 true,回退模式为 false
  • attempts:成功前失败的回退尝试次数

路径字段:

  • 单 PDF 输入:details.pdf
  • 多 PDF 输入:details.pdfs[],包含 pdf 条目
  • 沙箱路径改写元数据(如适用):rewrittenFrom

错误行为

  • 缺少 PDF 输入:抛出 pdf required: provide a path or URL to a PDF document
  • PDF 过多:在 details.error = "too_many_pdfs" 中返回结构化错误
  • 不支持的引用方案:返回 details.error = "unsupported_pdf_reference"
  • 原生模式设置了 pages:抛出清晰的 pages is not supported with native PDF providers 错误

示例

单个 PDF:

json
{
  "pdf": "/tmp/report.pdf",
  "prompt": "Summarize this report in 5 bullets"
}

多个 PDF:

json
{
  "pdfs": ["/tmp/q1.pdf", "/tmp/q2.pdf"],
  "prompt": "Compare risks and timeline changes across both documents"
}

指定页码的回退模型:

json
{
  "pdf": "https://example.com/report.pdf",
  "pages": "1-3,7",
  "model": "openai/gpt-5-mini",
  "prompt": "Extract only customer-impacting incidents"
}

小贴士:让你的龙虾帮你处理 PDF 合同、报告、研究论文,配合好的 prompt 能省下不少手动阅读时间。