Appearance
Copilot SDK 支持在 Prompt 中附加图像,通过文件路径(SDK 自动转 base64)或直接提供 base64 数据。支持 PNG 和 JPEG 格式,需要使用具备视觉能力的模型(如 GPT-4o、Claude)。SVG 不支持。
GitHub Copilot SDK 图像输入:给 Agent 发送截图和设计图
使用场景
- UI Bug 修复:发送截图让 Agent 定位问题所在
- 设计稿实现:发送设计图让 Agent 参考实现组件
- 错误界面:发送报错截图帮助 Agent 理解上下文
- 架构图:发送架构图让 Agent 在对应位置新增功能
方式一:文件路径(推荐)
SDK 自动读取文件并转换为 base64:
typescript
import { createSession } from '@github/copilot-sdk'
const session = await createSession()
await session.sendPrompt({
messages: [
{
role: 'user',
content: '这个按钮在移动端对齐有问题,帮我修复 CSS',
attachments: [
{
type: 'file',
path: '/screenshots/mobile-button-bug.png'
}
]
}
]
})方式二:Base64 内嵌数据
适合在内存中处理图像数据的场景:
typescript
import * as fs from 'fs'
const imageBase64 = fs.readFileSync('./design.png').toString('base64')
await session.sendPrompt({
messages: [
{
role: 'user',
content: '参考这个设计稿实现 ProductCard 组件',
attachments: [
{
type: 'blob',
data: imageBase64,
mimeType: 'image/png' // 'image/png' 或 'image/jpeg'
}
]
}
]
})同时附加多张图片
typescript
await session.sendPrompt({
messages: [
{
role: 'user',
content: '对比这两张截图,找出 UI 差异并修复',
attachments: [
{ type: 'file', path: '/screenshots/before.png' },
{ type: 'file', path: '/screenshots/after.png' }
]
}
]
})支持的格式
| 格式 | 支持 |
|---|---|
| PNG | ✅ |
| JPEG | ✅ |
| WebP | 视模型而定 |
| SVG | ❌ 不支持 |
模型要求
图像输入需要使用具备视觉能力(Vision)的模型:
- 支持:GPT-4o、GPT-4 Vision、Claude Sonnet/Opus、Gemini Pro Vision 等
- 不支持:纯文本模型(如 GPT-3.5 Turbo)
使用 BYOK 时,确认你选择的模型支持视觉能力。
实用技巧
截图时注意分辨率:过大的图片会被自动缩小,建议截图时就控制在合理尺寸(1080p 以内),保留关键细节即可。
配合具体问题描述:单纯发图效果有限,结合文字描述问题所在("左上角的按钮对齐问题"比"这里有个问题"更有用)。
超出大小限制的图片会被跳过:如果附件因大小或格式限制被跳过,SDK 不会报错,只是 Agent 看不到该图片。建议加日志确认附件是否被正确处理。
常见问题
Q: 可以发送 PDF 或 Word 文档吗?
A: 目前 SDK 图像输入只支持 PNG 和 JPEG。PDF 可以先用工具转换为截图,再通过文件路径方式附加。
Q: 附加多张图片会增加多少 token 消耗?
A: 每张图像在模型处理时会转换为一定数量的 token(通常 200~1000+ token,取决于分辨率)。频繁使用高分辨率图像会显著增加 Premium Request 消耗。
Q: 使用 BYOK 模式(Anthropic)时图像输入有效吗?
A: 有效,前提是选择支持视觉的 Claude 模型(如 claude-sonnet-4-6)。确认 model 参数指向视觉模型,SDK 会正确将图像转为 Claude 的多模态请求格式。