mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-10 20:50:52 +08:00
重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。 Made-with: Cursor
This commit is contained in:
parent
4a23b715a2
commit
dbbe3add6a
14438 changed files with 2693620 additions and 2546 deletions
176
openclaw/docs/tools/pdf.md
Normal file
176
openclaw/docs/tools/pdf.md
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
---
|
||||
title: "PDF Tool"
|
||||
summary: "Analyze one or more PDF documents with native provider support and extraction fallback"
|
||||
read_when:
|
||||
- You want to analyze PDFs from agents
|
||||
- You need exact pdf tool parameters and limits
|
||||
- You are debugging native PDF mode vs extraction fallback
|
||||
---
|
||||
|
||||
# PDF tool
|
||||
|
||||
`pdf` analyzes one or more PDF documents and returns text.
|
||||
|
||||
Quick behavior:
|
||||
|
||||
- Native provider mode for Anthropic and Google model providers.
|
||||
- Extraction fallback mode for other providers (extract text first, then page images when needed).
|
||||
- Supports single (`pdf`) or multi (`pdfs`) input, max 10 PDFs per call.
|
||||
|
||||
## Availability
|
||||
|
||||
The tool is only registered when OpenClaw can resolve a PDF-capable model config for the agent:
|
||||
|
||||
1. `agents.defaults.pdfModel`
|
||||
2. fallback to `agents.defaults.imageModel`
|
||||
3. fallback to the agent's resolved session/default model
|
||||
4. if native-PDF providers are auth-backed, prefer them ahead of generic image fallback candidates
|
||||
|
||||
If no usable model can be resolved, the `pdf` tool is not exposed.
|
||||
|
||||
Availability notes:
|
||||
|
||||
- The fallback chain is auth-aware. A configured `provider/model` only counts if
|
||||
OpenClaw can actually authenticate that provider for the agent.
|
||||
- Native PDF providers are currently **Anthropic** and **Google**.
|
||||
- If the resolved session/default provider already has a configured vision/PDF
|
||||
model, the PDF tool reuses that before falling back to other auth-backed
|
||||
providers.
|
||||
|
||||
## Input reference
|
||||
|
||||
- `pdf` (`string`): one PDF path or URL
|
||||
- `pdfs` (`string[]`): multiple PDF paths or URLs, up to 10 total
|
||||
- `prompt` (`string`): analysis prompt, default `Analyze this PDF document.`
|
||||
- `pages` (`string`): page filter like `1-5` or `1,3,7-9`
|
||||
- `model` (`string`): optional model override (`provider/model`)
|
||||
- `maxBytesMb` (`number`): per-PDF size cap in MB
|
||||
|
||||
Input notes:
|
||||
|
||||
- `pdf` and `pdfs` are merged and deduplicated before loading.
|
||||
- If no PDF input is provided, the tool errors.
|
||||
- `pages` is parsed as 1-based page numbers, deduped, sorted, and clamped to the configured max pages.
|
||||
- `maxBytesMb` defaults to `agents.defaults.pdfMaxBytesMb` or `10`.
|
||||
|
||||
## Supported PDF references
|
||||
|
||||
- local file path (including `~` expansion)
|
||||
- `file://` URL
|
||||
- `http://` and `https://` URL
|
||||
|
||||
Reference notes:
|
||||
|
||||
- Other URI schemes (for example `ftp://`) are rejected with `unsupported_pdf_reference`.
|
||||
- In sandbox mode, remote `http(s)` URLs are rejected.
|
||||
- With workspace-only file policy enabled, local file paths outside allowed roots are rejected.
|
||||
|
||||
## Execution modes
|
||||
|
||||
### Native provider mode
|
||||
|
||||
Native mode is used for provider `anthropic` and `google`.
|
||||
The tool sends raw PDF bytes directly to provider APIs.
|
||||
|
||||
Native mode limits:
|
||||
|
||||
- `pages` is not supported. If set, the tool returns an error.
|
||||
- Multi-PDF input is supported; each PDF is sent as a native document block /
|
||||
inline PDF part before the prompt.
|
||||
|
||||
### Extraction fallback mode
|
||||
|
||||
Fallback mode is used for non-native providers.
|
||||
|
||||
Flow:
|
||||
|
||||
1. Extract text from selected pages (up to `agents.defaults.pdfMaxPages`, default `20`).
|
||||
2. If extracted text length is below `200` chars, render selected pages to PNG images and include them.
|
||||
3. Send extracted content plus prompt to the selected model.
|
||||
|
||||
Fallback details:
|
||||
|
||||
- Page image extraction uses a pixel budget of `4,000,000`.
|
||||
- If the target model does not support image input and there is no extractable text, the tool errors.
|
||||
- If text extraction succeeds but image extraction would require vision on a
|
||||
text-only model, OpenClaw drops the rendered images and continues with the
|
||||
extracted text.
|
||||
- Extraction fallback requires `pdfjs-dist` (and `@napi-rs/canvas` for image rendering).
|
||||
|
||||
## Config
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
pdfModel: {
|
||||
primary: "anthropic/claude-opus-4-6",
|
||||
fallbacks: ["openai/gpt-5.4-mini"],
|
||||
},
|
||||
pdfMaxBytesMb: 10,
|
||||
pdfMaxPages: 20,
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
See [Configuration Reference](/gateway/configuration-reference) for full field details.
|
||||
|
||||
## Output details
|
||||
|
||||
The tool returns text in `content[0].text` and structured metadata in `details`.
|
||||
|
||||
Common `details` fields:
|
||||
|
||||
- `model`: resolved model ref (`provider/model`)
|
||||
- `native`: `true` for native provider mode, `false` for fallback
|
||||
- `attempts`: fallback attempts that failed before success
|
||||
|
||||
Path fields:
|
||||
|
||||
- single PDF input: `details.pdf`
|
||||
- multiple PDF inputs: `details.pdfs[]` with `pdf` entries
|
||||
- sandbox path rewrite metadata (when applicable): `rewrittenFrom`
|
||||
|
||||
## Error behavior
|
||||
|
||||
- Missing PDF input: throws `pdf required: provide a path or URL to a PDF document`
|
||||
- Too many PDFs: returns structured error in `details.error = "too_many_pdfs"`
|
||||
- Unsupported reference scheme: returns `details.error = "unsupported_pdf_reference"`
|
||||
- Native mode with `pages`: throws clear `pages is not supported with native PDF providers` error
|
||||
|
||||
## Examples
|
||||
|
||||
Single PDF:
|
||||
|
||||
```json
|
||||
{
|
||||
"pdf": "/tmp/report.pdf",
|
||||
"prompt": "Summarize this report in 5 bullets"
|
||||
}
|
||||
```
|
||||
|
||||
Multiple PDFs:
|
||||
|
||||
```json
|
||||
{
|
||||
"pdfs": ["/tmp/q1.pdf", "/tmp/q2.pdf"],
|
||||
"prompt": "Compare risks and timeline changes across both documents"
|
||||
}
|
||||
```
|
||||
|
||||
Page-filtered fallback model:
|
||||
|
||||
```json
|
||||
{
|
||||
"pdf": "https://example.com/report.pdf",
|
||||
"pages": "1-3,7",
|
||||
"model": "openai/gpt-5.4-mini",
|
||||
"prompt": "Extract only customer-impacting incidents"
|
||||
}
|
||||
```
|
||||
|
||||
## Related
|
||||
|
||||
- [Tools Overview](/tools) — all available agent tools
|
||||
- [Configuration Reference](/gateway/configuration-reference#agent-defaults) — pdfMaxBytesMb and pdfMaxPages config
|
||||
Loading…
Add table
Add a link
Reference in a new issue