Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
diffs là một công cụ plugin tùy chọn với hướng dẫn hệ thống tích hợp ngắn gọn và một skill đi kèm, giúp chuyển nội dung thay đổi thành một hiện vật diff chỉ đọc cho agent.
Công cụ này chấp nhận một trong hai:
- văn bản
beforevàafter - một
patchhợp nhất
- URL trình xem gateway để trình bày trên canvas
- đường dẫn tệp đã kết xuất (PNG hoặc PDF) để gửi qua tin nhắn
- cả hai đầu ra trong một lần gọi
Bắt đầu nhanh
Tắt hướng dẫn hệ thống tích hợp
Nếu bạn muốn giữ công cụdiffs được bật nhưng tắt hướng dẫn system-prompt tích hợp của nó, hãy đặt plugins.entries.diffs.hooks.allowPromptInjection thành false:
before_prompt_build của plugin diffs trong khi vẫn giữ plugin, công cụ và skill đi kèm khả dụng.
Nếu bạn muốn tắt cả hướng dẫn lẫn công cụ, hãy tắt plugin.
Quy trình agent điển hình
Ví dụ đầu vào
- Trước và sau
- Patch
Tham chiếu đầu vào công cụ
Tất cả các trường đều là tùy chọn trừ khi có ghi chú khác.Văn bản gốc. Bắt buộc cùng với
after khi bỏ qua patch.Văn bản đã cập nhật. Bắt buộc cùng với
before khi bỏ qua patch.Văn bản diff hợp nhất. Loại trừ lẫn nhau với
before và after.Tên tệp hiển thị cho chế độ trước và sau.
Gợi ý ghi đè ngôn ngữ cho chế độ trước và sau. Giá trị không xác định sẽ quay về văn bản thuần.
Ghi đè tiêu đề trình xem.
Chế độ đầu ra. Mặc định là giá trị mặc định của plugin
defaults.mode. Bí danh đã ngừng khuyến nghị: "image" hoạt động như "file" và vẫn được chấp nhận để tương thích ngược.Chủ đề trình xem. Mặc định là giá trị mặc định của plugin
defaults.theme.Bố cục diff. Mặc định là giá trị mặc định của plugin
defaults.layout.Mở rộng các phần không thay đổi khi có đủ ngữ cảnh. Chỉ là tùy chọn theo từng lần gọi (không phải khóa mặc định của plugin).
Định dạng tệp đã kết xuất. Mặc định là giá trị mặc định của plugin
defaults.fileFormat.Cài đặt sẵn chất lượng cho kết xuất PNG hoặc PDF.
Ghi đè tỷ lệ thiết bị (
1-4).Chiều rộng kết xuất tối đa tính bằng pixel CSS (
640-2400).TTL của hiện vật tính bằng giây cho đầu ra trình xem và tệp độc lập. Tối đa 21600.
Ghi đè origin URL trình xem. Ghi đè
viewerBaseUrl của plugin. Phải là http hoặc https, không có query/hash.Bí danh đầu vào cũ
Bí danh đầu vào cũ
Vẫn được chấp nhận để tương thích ngược:
format->fileFormatimageFormat->fileFormatimageQuality->fileQualityimageScale->fileScaleimageMaxWidth->fileMaxWidth
Xác thực và giới hạn
Xác thực và giới hạn
beforevàaftermỗi trường tối đa 512 KiB.patchtối đa 2 MiB.pathtối đa 2048 byte.langtối đa 128 byte.titletối đa 1024 byte.- Giới hạn độ phức tạp patch: tối đa 128 tệp và tổng cộng 120000 dòng.
patchđi cùngbeforehoặcaftersẽ bị từ chối.- Giới hạn an toàn cho tệp đã kết xuất (áp dụng cho PNG và PDF):
fileQuality: "standard": tối đa 8 MP (8.000.000 pixel đã kết xuất).fileQuality: "hq": tối đa 14 MP (14.000.000 pixel đã kết xuất).fileQuality: "print": tối đa 24 MP (24.000.000 pixel đã kết xuất).- PDF cũng có giới hạn tối đa 50 trang.
Hợp đồng chi tiết đầu ra
Công cụ trả về siêu dữ liệu có cấu trúc trongdetails.
Các trường trình xem
Các trường trình xem
Các trường dùng chung cho những chế độ tạo trình xem:
artifactIdviewerUrlviewerPathtitleexpiresAtinputKindfileCountmodecontext(agentId,sessionId,messageChannel,agentAccountIdkhi có)
Các trường tệp
Các trường tệp
Các trường tệp khi PNG hoặc PDF được kết xuất:
artifactIdexpiresAtfilePathpath(cùng giá trị vớifilePath, để tương thích với công cụ nhắn tin)fileBytesfileFormatfileQualityfileScalefileMaxWidth
Bí danh tương thích
Bí danh tương thích
Cũng được trả về cho các caller hiện có:
format(cùng giá trị vớifileFormat)imagePath(cùng giá trị vớifilePath)imageBytes(cùng giá trị vớifileBytes)imageQuality(cùng giá trị vớifileQuality)imageScale(cùng giá trị vớifileScale)imageMaxWidth(cùng giá trị vớifileMaxWidth)
| Chế độ | Nội dung được trả về |
|---|---|
"view" | Chỉ các trường của trình xem. |
"file" | Chỉ các trường tệp, không có tạo tác trình xem. |
"both" | Các trường của trình xem cùng với các trường tệp. Nếu kết xuất tệp thất bại, trình xem vẫn trả về với bí danh fileError và imageError. |
Các phần không đổi được thu gọn
- Trình xem có thể hiển thị các hàng như
N unmodified lines. - Các điều khiển mở rộng trên những hàng đó là có điều kiện và không được bảo đảm cho mọi loại đầu vào.
- Các điều khiển mở rộng xuất hiện khi diff đã kết xuất có dữ liệu ngữ cảnh có thể mở rộng, điều này thường gặp với đầu vào trước và sau.
- Với nhiều đầu vào bản vá hợp nhất, phần thân ngữ cảnh bị lược bỏ không có sẵn trong các hunk bản vá đã phân tích, nên hàng có thể xuất hiện mà không có điều khiển mở rộng. Đây là hành vi dự kiến.
expandUnchangedchỉ áp dụng khi có ngữ cảnh có thể mở rộng.
Mặc định của Plugin
Đặt mặc định trên toàn Plugin trong~/.openclaw/openclaw.json:
fontFamilyfontSizelineSpacinglayoutshowLineNumbersdiffIndicatorswordWrapbackgroundthemefileFormatfileQualityfileScalefileMaxWidthmode
Cấu hình URL trình xem bền vững
Dự phòng do Plugin sở hữu cho các liên kết trình xem được trả về khi lệnh gọi công cụ không truyền
baseUrl. Phải là http hoặc https, không có query/hash.Cấu hình bảo mật
false: các yêu cầu không phải loopback đến tuyến trình xem bị từ chối. true: trình xem từ xa được cho phép nếu đường dẫn có token hợp lệ.Vòng đời và lưu trữ tạo tác
- Tạo tác được lưu trong thư mục con tạm thời:
$TMPDIR/openclaw-diffs. - Siêu dữ liệu tạo tác trình xem chứa:
- ID tạo tác ngẫu nhiên (20 ký tự hex)
- token ngẫu nhiên (48 ký tự hex)
createdAtvàexpiresAt- đường dẫn
viewer.htmlđã lưu
- TTL mặc định của tạo tác là 30 phút khi không được chỉ định.
- TTL trình xem tối đa được chấp nhận là 6 giờ.
- Dọn dẹp chạy theo cơ hội sau khi tạo tạo tác.
- Tạo tác đã hết hạn sẽ bị xóa.
- Dọn dẹp dự phòng xóa các thư mục cũ hơn 24 giờ khi thiếu siêu dữ liệu.
URL trình xem và hành vi mạng
Tuyến trình xem:/plugins/diffs/view/{artifactId}/{token}
/plugins/diffs/assets/viewer.js/plugins/diffs/assets/viewer-runtime.js
baseUrl tùy chọn cũng được giữ nguyên cho cả các yêu cầu tài nguyên.
Hành vi xây dựng URL:
- Nếu
baseUrlcủa lệnh gọi công cụ được cung cấp, nó sẽ được dùng sau khi xác thực nghiêm ngặt. - Nếu không, nếu
viewerBaseUrlcủa Plugin được cấu hình, nó sẽ được dùng. - Khi không có ghi đè nào, URL trình xem mặc định là loopback
127.0.0.1. - Nếu chế độ bind của Gateway là
customvàgateway.customBindHostđược đặt, host đó sẽ được dùng.
baseUrl:
- Phải là
http://hoặchttps://. - Query và hash bị từ chối.
- Cho phép origin cộng với đường dẫn cơ sở tùy chọn.
Mô hình bảo mật
Viewer hardening
Viewer hardening
- Mặc định chỉ cho phép loopback.
- Đường dẫn trình xem có token với xác thực ID và token nghiêm ngặt.
- CSP phản hồi của trình xem:
default-src 'none'- script và tài nguyên chỉ từ self
- không có
connect-srcđi ra ngoài
- Giới hạn tốc độ các lần truy cập từ xa bị trượt khi quyền truy cập từ xa được bật:
- 40 lần thất bại mỗi 60 giây
- khóa 60 giây (
429 Too Many Requests)
Tăng cường bảo vệ khi kết xuất tệp
Tăng cường bảo vệ khi kết xuất tệp
- Định tuyến yêu cầu trình duyệt chụp ảnh màn hình mặc định là từ chối.
- Chỉ cho phép tài nguyên trình xem cục bộ từ
http://127.0.0.1/plugins/diffs/assets/*. - Các yêu cầu mạng bên ngoài bị chặn.
Yêu cầu trình duyệt cho chế độ tệp
mode: "file" và mode: "both" cần trình duyệt tương thích với Chromium.
Thứ tự phân giải:
Biến môi trường
OPENCLAW_BROWSER_EXECUTABLE_PATHBROWSER_EXECUTABLE_PATHPLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH
Diff PNG/PDF rendering requires a Chromium-compatible browser...
Khắc phục sự cố
Lỗi xác thực đầu vào
Lỗi xác thực đầu vào
Provide patch or both before and after text.— bao gồm cảbeforevàafter, hoặc cung cấppatch.Provide either patch or before/after input, not both.— không trộn các chế độ đầu vào.Invalid baseUrl: ...— dùng originhttp(s)với đường dẫn tùy chọn, không có query/hash.{field} exceeds maximum size (...)— giảm kích thước payload.- Từ chối patch lớn — giảm số lượng tệp patch hoặc tổng số dòng.
Khả năng truy cập trình xem
Khả năng truy cập trình xem
- URL trình xem mặc định phân giải tới
127.0.0.1. - Đối với các kịch bản truy cập từ xa, hãy:
- đặt
viewerBaseUrlcủa Plugin, hoặc - truyền
baseUrlcho từng lệnh gọi công cụ, hoặc - dùng
gateway.bind=customvàgateway.customBindHost
- đặt
- Nếu
gateway.trustedProxiesbao gồm loopback cho proxy cùng máy chủ (ví dụ Tailscale Serve), các yêu cầu trình xem loopback thô không có header client-IP được chuyển tiếp sẽ đóng thất bại theo thiết kế. - Với topo proxy đó:
- ưu tiên
mode: "file"hoặcmode: "both"khi bạn chỉ cần tệp đính kèm, hoặc - chủ ý bật
security.allowRemoteViewervà đặtviewerBaseUrlcủa Plugin hoặc truyềnbaseUrlproxy/công khai khi bạn cần URL trình xem có thể chia sẻ
- ưu tiên
- Chỉ bật
security.allowRemoteViewerkhi bạn dự định cho phép truy cập trình xem từ bên ngoài.
Hàng các dòng chưa sửa đổi không có nút mở rộng
Hàng các dòng chưa sửa đổi không có nút mở rộng
Điều này có thể xảy ra với đầu vào patch khi patch không mang theo ngữ cảnh có thể mở rộng. Đây là hành vi dự kiến và không cho thấy trình xem bị lỗi.
Không tìm thấy artifact
Không tìm thấy artifact
- Artifact hết hạn do TTL.
- Token hoặc đường dẫn đã thay đổi.
- Dọn dẹp đã xóa dữ liệu cũ.
Hướng dẫn vận hành
- Ưu tiên
mode: "view"cho các phiên đánh giá tương tác cục bộ trong canvas. - Ưu tiên
mode: "file"cho các kênh trò chuyện gửi đi cần tệp đính kèm. - Giữ
allowRemoteViewertắt trừ khi triển khai của bạn yêu cầu URL trình xem từ xa. - Đặt
ttlSecondsngắn rõ ràng cho các diff nhạy cảm. - Tránh gửi bí mật trong đầu vào diff khi không bắt buộc.
- Nếu kênh của bạn nén hình ảnh mạnh (ví dụ Telegram hoặc WhatsApp), hãy ưu tiên đầu ra PDF (
fileFormat: "pdf").
Công cụ kết xuất diff được hỗ trợ bởi Diffs.