Skip to content

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 的多模态请求格式。