截图分析
Codely CLI 提供了智能的截图分析功能,允许用户通 过剪贴板直接粘贴图片到输入提示中,系统会自动保存图片并插入引用。
概述
截图功能是 Codely CLI 的一个便捷特性,它能够:
-
自动检测剪贴板中的图片:识别剪贴板是否包含图像数据
-
自动保存到临时目录:将图片保存到项目的 .codely-cli/clipboard/ 目录
-
智能插入引用:在光标位置自动插入图片引用文本
-
跨平台支持:支持 Windows 和 macOS 系统
-
自动清理:自动清理超过 1 小时的临时图片文件
工作原理
检测流程
- 用户按下 Ctrl+V 进行粘贴操作
- 系统检测剪贴板内容类型
- 如果是图片,执行截图保存流程
- 如果是文本,执行普通文本粘贴
保存流程
用户截图 → 复制到剪贴板 → Ctrl+V 粘贴
↓
检测剪贴板类型
↓
保存到 .codely-cli/clipboard/clipboard-\{timestamp\}.png
↓
在光标位置插入 "Screenshot saved to {relativePath}."
非交互模式使用
在非交互模式下,截图功能通过键盘快捷键触发。
基本用法
# 启动 Codely CLI
codely
# 在输入提示中:
# 1. 使用系统截图工具截图(如 Windows 的 Win+Shift+S 或 macOS 的 Cmd+Shift+4)
# 2. 按下 Ctrl+V 或者 Alt+V 粘贴
使用示例
1. 基础截图粘贴
> [截图并复制到剪贴板]
> [按下 Ctrl+V 或者 Alt+V]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png.
2. 在已有文本中插入截图
> 请分析这个界面的设计:[按下 Ctrl+V]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png. 并给出改进建议
3. 多次截图
> 这是第一个截图:[Ctrl+V]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png.
>
> 这是第二个截图:[Ctrl+V]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096100000.png.
>
> 请对比这两个界面的差异
交互模式使用
在交互模式下,截图功能的使用方式与非交互模式相同,主要通过 Ctrl+V 快捷键触发。
交互模式下的应用场景
1. UI/UX 设计评审
> 请帮我评审这个界面的 设计:[Ctrl+V 粘贴截图]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png.
> 从可用性、美观性和一致性方面给出建议
2. 错误排查
> 我遇到了这个错误:[Ctrl+V 粘贴错误截图]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png.
> 请帮我分析可能的原因和解决方案
3. 代码审查
> 请审查这段代码的输出结果:[Ctrl+V 粘贴截图]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png.
> 指出可能的问题和改进点
4. 文档编写
> 我要为这个功能写文档,请根据截图:[Ctrl+V]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png.
> 生成功能说明和使用步骤
技术实现
平台支持
Windows
使用 PowerShell 进行剪贴板操作:
# 检查剪贴板是否包含图片
Add-Type -AssemblyName System.Windows.Forms
if ([System.Windows.Forms.Clipboard]::ContainsImage()) {
Write-Output 'true'
} else {
Write-Output 'false'
}
# 保存剪贴板图片
$image = [System.Windows.Forms.Clipboard]::GetImage()
$image.Save('path/to/file.png', [System.Drawing.Imaging.ImageFormat]::Png)
macOS
使用 AppleScript 和 osascript 进行剪贴板操作:
# 检查剪贴板类型
clipboard info | grep -E "«class PNGf»|TIFF picture|JPEG picture"
# 保存剪贴板图片
set imageData to the clipboard as «class PNGf»
set fileRef to open for access POSIX file "path/to/file.png" with write permission
write imageData to fileRef
close access fileRef
文件命名规则
- 格式:clipboard-{timestamp}.{extension}
- 时间戳:使用毫秒级时间戳确保唯一性
- 扩展名:根据图片格式自动选择(.png、.jpg、.tiff、.gif)
示例:
clipboard-1704096000000.png
clipboard-1704096100000.jpg
clipboard-1704096200000.tiff
存储位置
- 默认目录:<项目根目录>/.codely-cli/clipboard/
- 相对路径引用:插入的引用使用相对于项目根目录的路径
示例:
项目结构:
my-project/
├── .codely-cli/
│ └── clipboard/
│ ├── clipboard-1704096000000.png
│ └── clipboard-1704096100000.png
├── src/
└── README.md
插入的引用:
"Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png."
自动清理机制
系统会自动清理超过 1 小时的临时图片文件:
高级用法
与文件引用结合使用
> 请分析以下文件和截图:
> @src/components/Button.tsx
> 和 [Ctrl+V]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png.
> 检查代码实现与截图显示是否一致
在多行输入中使用
> 我有以下几个问题需要解决:
>
> 1. [Ctrl+V]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png.
> 这个界面的布局有问题
>
> 2. [Ctrl+V]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096100000.png.
> 这个按钮点击没有反应
>
> 请分别给出解决方案
与斜杠命令结合
> /analyze
> [Ctrl+V]
> Screenshot saved to .codely-cli/clipboard/clipboard-1704096000000.png.
> 分析这个截图中的代码结构