mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 15:30:39 +00:00
139 lines
3.1 KiB
Markdown
139 lines
3.1 KiB
Markdown
---
|
|
title: "Diffs"
|
|
summary: "Read-only diff viewer and PNG renderer for agents (optional plugin tool)"
|
|
description: "Use the optional Diffs plugin to render before/after text or unified patches as a gateway-hosted diff view or a PNG."
|
|
read_when:
|
|
- You want agents to show code or markdown edits as diffs
|
|
- You want a canvas-ready viewer URL or a rendered diff PNG
|
|
---
|
|
|
|
# Diffs
|
|
|
|
`diffs` is an **optional plugin tool** that renders a read-only diff from either:
|
|
|
|
- arbitrary `before` / `after` text
|
|
- a unified patch
|
|
|
|
The tool can produce:
|
|
|
|
- a gateway-hosted viewer URL for canvas use
|
|
- a PNG image for message delivery
|
|
- both outputs together
|
|
|
|
## Enable the plugin
|
|
|
|
```json5
|
|
{
|
|
plugins: {
|
|
entries: {
|
|
diffs: {
|
|
enabled: true,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
```
|
|
|
|
## What agents get back
|
|
|
|
- `mode: "view"` returns `details.viewerUrl` and `details.viewerPath`
|
|
- `mode: "image"` returns `details.imagePath` only
|
|
- `mode: "both"` returns the viewer details plus `details.imagePath`
|
|
|
|
Typical agent patterns:
|
|
|
|
- open `details.viewerUrl` in canvas with `canvas present`
|
|
- send `details.imagePath` with the `message` tool using `path` or `filePath`
|
|
|
|
## Tool inputs
|
|
|
|
Before/after input:
|
|
|
|
```json
|
|
{
|
|
"before": "# Hello\n\nOne",
|
|
"after": "# Hello\n\nTwo",
|
|
"path": "docs/example.md",
|
|
"mode": "view"
|
|
}
|
|
```
|
|
|
|
Patch input:
|
|
|
|
```json
|
|
{
|
|
"patch": "diff --git a/src/example.ts b/src/example.ts\n--- a/src/example.ts\n+++ b/src/example.ts\n@@ -1 +1 @@\n-const x = 1;\n+const x = 2;\n",
|
|
"mode": "both"
|
|
}
|
|
```
|
|
|
|
Useful options:
|
|
|
|
- `mode`: `view`, `image`, or `both`
|
|
- `layout`: `unified` or `split`
|
|
- `theme`: `light` or `dark`
|
|
- `expandUnchanged`: expand unchanged sections instead of collapsing them
|
|
- `path`: display name for before/after input
|
|
- `title`: explicit diff title
|
|
- `ttlSeconds`: viewer artifact lifetime
|
|
- `baseUrl`: override the gateway base URL used in the returned viewer link
|
|
|
|
## Plugin defaults
|
|
|
|
Set plugin-wide defaults in `~/.openclaw/openclaw.json`:
|
|
|
|
```json5
|
|
{
|
|
plugins: {
|
|
entries: {
|
|
diffs: {
|
|
enabled: true,
|
|
config: {
|
|
defaults: {
|
|
fontFamily: "Fira Code",
|
|
fontSize: 15,
|
|
lineSpacing: 1.6,
|
|
layout: "unified",
|
|
showLineNumbers: true,
|
|
diffIndicators: "bars",
|
|
wordWrap: true,
|
|
background: true,
|
|
theme: "dark",
|
|
mode: "both",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
```
|
|
|
|
Supported defaults:
|
|
|
|
- `fontFamily`
|
|
- `fontSize`
|
|
- `lineSpacing`
|
|
- `layout`
|
|
- `showLineNumbers`
|
|
- `diffIndicators`
|
|
- `wordWrap`
|
|
- `background`
|
|
- `theme`
|
|
- `mode`
|
|
|
|
Explicit tool parameters override the plugin defaults.
|
|
|
|
## Notes
|
|
|
|
- Viewer pages are hosted locally by the gateway under `/plugins/diffs/...`.
|
|
- Viewer artifacts are ephemeral and stored locally.
|
|
- `mode: "image"` uses a faster image-only render path and does not create a viewer URL.
|
|
- PNG rendering requires a Chromium-compatible browser. If auto-detection is not enough, set `browser.executablePath`.
|
|
- Diff rendering is powered by [Diffs](https://diffs.com).
|
|
|
|
## Related docs
|
|
|
|
- [Tools overview](/tools)
|
|
- [Plugins](/tools/plugin)
|
|
- [Browser](/tools/browser)
|