【免费下载链接】showboat
Create executable documents that demonstrate an agent's work
用Showboat搭建"可执行演示文档"时,showboat image命令负责把截图变成可复现的一部分:一条命令即可把图片复制进文档目录、生成uuid 命名的新文件名,并自动追加 markdown 图片引用与 alt 文本。本文带你走完「嵌入截图 → 理解 uuid 命名 → 控制 alt 文本」的完整流程,让演示文档既能读、又能被完整复现。
为什么演示文档需要「可复现的截图」
普通 markdown 文档里的截图有个通病:文件散落在各处,换个目录就引用失效。Showboat 的思路是让文档自己"携带"所有素材——showboat image会做三件事:
- 把图片复制到文档所在目录,原图不动;
- 用uuid 前缀 + 日期生成新文件名,杜绝重名冲突;
- 在文档末尾追加「图片代码块 + 图片引用」,重建文档时原样保留。
配合init/note/exec/verify,一张截图就和可执行代码一样,成为文档可复现的一部分。
两种参数形式:纯路径与 markdown 图片语法
showboat image的第二种参数只有两种写法:
| 形式 | 命令示例 | 效果 |
|---|---|---|
| 纯路径 | showboat image demo.md screenshot.png | 自动派生 alt 文本 |
| markdown 图片语法 | showboat image demo.md '首页截图' | 保留你写的 alt 文本 |
第二条命令建议始终用单引号包裹参数——原因在文末的避坑清单里说明。
深入理解:uuid 命名的生成规则
复制后的文件名遵循<uuid8位>-<YYYY-MM-DD>.<扩展名>格式,例如:
f4a2c9d1-2026-02-06.png- uuid 取 8 位:由 exec/image.go 中的
uuid.New().String()[:8]生成,保证多次插入同名图片互不覆盖; - 日期取 UTC 当天:方便按时间直观排序;
- 目标目录固定为文档所在目录:复制路径由 cmd/build.go 的
filepath.Dir(file)决定,文档走到哪里,图片就跟到哪里。
这套命名还带来一个好处:alt 文本派生时会去掉 uuid 前缀,见下一节。
深入理解:alt 文本如何派生
alt 文本的处理逻辑集中在 cmd/build.go:
- 传入markdown 图片引用时,解析出的 alt 文本被原样保留;
- 传入纯路径时,alt 文本由生成的文件名派生——去掉扩展名后得到
uuid-日期串,最终写入图片引用作为 alt。
也就是说,想让截图在文档里有"人话"描述(比如"登录页截图"),直接用alt形式传入最省心。alt 解析函数 parseImageInput 还兼容了 shell 转义导致的\!前缀,解析结果由 markdown/writer.go 写回文档。
写入文档后的结构长什么样
执行showboat image demo.md 'Homepage screenshot'后,文档末尾追加的内容形如:
```bash {image} Homepage screenshot ``` Homepage screenshot两个块分工明确:
- 带
bash {image}标记的代码块记录"当初传入了什么",让文档可重建; - 其后的图片引用指向 uuid 命名的新文件,负责渲染展示。
文档结构定义见 markdown/blocks.go。
如何验证与重建含截图的文档
showboat verify demo.md会跳过 image 代码块只重跑执行类代码块,截图不会被破坏;showboat extract demo.md能把image条目完整还原成命令行,从零重建整份文档。还原逻辑见 cmd/extract.go,其中 image 条目会被输出为showboat image <文件> 'alt'。
支持的图片格式与常见报错
格式白名单定义在 exec/image.go:
| 扩展名 | 支持 |
|---|---|
.png.jpg.jpeg.gif.svg | ✅ |
其他(如.webp) | ❌ |
典型报错信息:
| 场景 | 错误信息 |
|---|---|
| 文件不存在 | image file not found: xxx.png |
| 传了目录 | image path is a directory: xxx |
| 扩展名不支持 | unrecognized image format: .webp |
实战避坑清单
- 始终用单引号:双引号里的
!可能被 bash 的 history expansion 改写,单引号最安全;即便如此,parseImageInput 也会兜底兼容\!转义写法; - 插错了就 pop:
showboat pop demo.md会连同代码块和图片引用一起移除,比手工编辑 markdown 更干净; - 想更直观地描述截图:优先使用
alt形式,alt 文本比自动派生的文件名可读得多。
小结
一条showboat image命令,同时完成了「复制文件、uuid 命名、追加可重建引用」三件事,并自动处理好 alt 文本——这正是 Showboat "文档即可复现证明"理念的缩影。完整命令参考可在 help.txt 中查阅。
【免费下载链接】showboat
Create executable documents that demonstrate an agent's work
相关推荐
showboat文档格式规范全解:5种块类型与CLI命令的1:1映射设计
showboat文档格式规范全解:5种块类型与CLI命令的1:1映射设计 showboat 是一个 Go 编写的 CLI 工具,专门帮助 AI Agent 构建
告别重复编码:3步实现可复用的html2canvas截图组件
告别重复编码:3步实现可复用的html2canvas截图组件 你还在为每个项目重复编写网页截图逻辑?还在处理跨浏览器兼容性问题?本文将带你3步封装一个高复用的截
前端Miso TTS 8B安全指南:水印技术原理与应用,防止AI语音滥用的最佳实践
Miso TTS 8B安全指南:水印技术原理与应用,防止AI语音滥用的最佳实践 Miso TTS 8B是一款具有高度情感表现力的文本转语音模型,其强大的语音合成
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考