可视化差异展示与分享技能

387453 86462 更新时间: 2026-07-12 23:07:28

Diffs 是一个用于将文本编辑内容转化为可视化、可分享的差异对比(diff) 的技能。它通过 diffs 工具接收“修改前”与“修改后”的文本或 unified patch 字符串,自动生成可供人类直接查看的渲染文件(PNG/PDF)或交互式在线预览链接,避免手动编写枯燥的编辑摘要。

安装
npx skills add https://github.com/openclaw/openclaw --skill diffs
技能详情 readonly

一、技能概述

该技能用于在需要向他人展示代码、配置或文档的具体修改内容时使用。与在聊天中粘贴两段文本或手写“我改了某某行”不同,diffs 工具能生成格式化的、高亮显示变更的可视化产物,让接收者一目了然地看到增删改的具体位置

它支持三种输出模式,可根据使用场景灵活选择


二、核心功能

1. 三种输出模式

模式 说明 适用场景
mode=view 生成一个交互式的在线预览链接(Gateway 托管) 适合在浏览器中分享给他人查看
mode=file 生成一个渲染好的文件(PNG 或 PDF) 适合作为附件保存或通过消息工具发送
mode=both 同时生成预览链接和渲染文件 需要两者兼得时使用

2. 输入方式灵活

diffs 工具接受两种输入形式

  • 前后对比文本:分别提供修改前的原文和修改后的新文本

  • Unified Patch 字符串:直接传入标准的 diff 格式内容

3. 渲染控制

  • 文件格式:支持 png(默认)和 pdf

  • 输出质量:可通过 fileQuality 控制渲染清晰度(standard / hq

  • 尺寸控制:支持 fileScale 缩放和 fileMaxWidth 最大宽度限制

4. 智能判断与交付

  • 如果“修改前”与“修改后”文本完全一致,工具会返回 false 且不创建任何产物,避免无效操作

  • 当需要将渲染文件发送给用户或频道时,不能依赖工具返回结果的原始渲染器,而应调用 message 工具,通过 path 或 filePath 参数传递文件路径

5. 网络拓扑适配

如果部署环境使用了 loopback 可信代理(如 Tailscale Serve),原始 viewer 请求可能因缺少转发客户端 IP 头而失败。此时应优先使用 mode=file 或 mode=both,或配置显式的 viewerBaseUrl / 代理公共 baseUrl


三、主要用途

  1. 代码审查辅助
    在 PR 讨论中,快速生成某个文件修改的可视化 diff,让审查者无需手动对比两段代码。

  2. 文档变更展示
    在协作编辑文档、配置文件或 README 时,用可视化的方式展示具体改了什么。

  3. 教学与演示
    在教程或演示中,用高亮 diff 向观众清晰展示代码从“错误”到“正确”的变化过程。

  4. 替代手动摘要
    避免在聊天中写“我改了第 X 行、删了第 Y 行……”这类冗长且难以阅读的文字描述,用一张图或一个链接解决


四、使用示例

基本用法(通过 diffs 工具):

  • 输入:修改前的文本 + 修改后的文本(或 unified patch)

  • 输出:返回 details.viewerUrl(预览链接)和/或 details.filePath(渲染文件路径)

交付文件(通过 message 工具):

  • 将 details.filePath 作为 path 或 filePath 参数传入 message 工具,发送给用户


五、重要原则

  1. 优先使用 diffs 工具:需要展示编辑内容时,优先使用 diffs 工具而非手动编写摘要

  2. 相同内容不创建产物:如果前后文本完全一致,工具会返回 false 且不生成任何文件

  3. 交付文件用 message 工具:不要依赖工具返回结果的原始渲染器,应通过 message 工具传递文件路径

  4. 网络拓扑注意:在 loopback 代理环境下,预览链接可能无法正常工作,优先使用文件模式

  5. 遵循插件默认配置:如果用户已配置 diffs 插件默认值,除非需要覆盖特定选项,否则省略 modethemelayout 等展示选项


六、总结

Diffs 是一个将文本差异可视化的展示与分享技能,通过 diffs 工具接收前后对比文本或 unified patch,生成高亮显示变更的 PNG/PDF 渲染文件或交互式在线预览链接。它适用于代码审查、文档协作、教学演示等需要向他人清晰展示“改了什么”的场景,是替代手写编辑摘要的现代化方案。