添加附件

附加一个本地文件,然后在提示词中让 OpenCode 使用它。在桌面端或 Web 客户端中,选择 附加文件、粘贴文件,或将文件拖入提示输入框。
Summarize the attached README.md and list the required setup steps.
桌面端文件选择器的所选内容总计最多 20 MiB。其他接口可能施加更低的客户端限制。
在附加图片之前,请先选择支持图片输入的模型。OpenCode 可以将受支持的图片传递给提供商,但提供商与模型仍会执行各自的格式、尺寸、文件数量和大小限制。纯文本模型可能会拒绝该请求。

语法

V2 提示词与命令输入通过 uri 以及可选的 name 与 description 来描述附件:
{
  "uri": "file:///home/me/project/src/server.ts",
  "name": "server.ts",
  "description": "HTTP server entrypoint"
}
对于服务器可访问的文件或目录,请使用绝对 file: URL。对于文本文件,可用正数 start 与 end 参数选取从 1 开始的行。
file:///home/me/project/src/server.ts?start=20&end=60
使用 data: URL 可内联发送内容:
{
  "uri": "data:text/plain;base64,SGVsbG8sIE9wZW5Db2RlIQ==",
  "name": "greeting.txt"
}
不支持 HTTP 与 HTTPS 附件 URL。有关以编程方式提交提示词,请参阅生成的 API 参考。

格式

当前 V2 会话会将以下附件类型对模型可见:
| 输入 | 模型接收内容 | 示例 | | ----------------------- | -------------------------------------------------------- | ------------------ | | UTF-8 文本文件 | 文件名与解码后的文本 | README.md | | 目录 | 直接子文件与子目录的非递归列表 | file:///home/me/ | | PNG、JPEG、GIF 或 WebP | 图片媒体 | diagram.png | | PDF | 文档媒体 | report.pdf |
PDF 需要支持 PDF 输入的模型。如果模型不支持某种附件的类型,OpenCode 会发送一条简短说明以代替该附件。
SVG 按文本处理。AVIF、BMP、音频、视频及其他二进制提示词附件不会包含在模型请求中。请先将不受支持的二进制内容转换为文本或受支持的图片;例如,在附加 BMP 图片之前先将其转换为 PNG。
OpenCode 会在接受提示词之前读取每个附件。它会拒绝无效 URL、不可读取的路径、既非文件也非目录的路径,以及解码后超过 20 MiB 的附件。媒体类型根据字节内容检测,因此更改文件名或 data: URL 的媒体类型,并不会让不受支持的二进制内容变得可见。

图片

在 opencode.json 或 opencode.jsonc 中配置图片归一化:
{
  "$schema": "https://opencode.ai/config.json",
  "media": {
    "image": {
      "auto_resize": true,
      "max_width": 2000,
      "max_height": 2000,
      "max_base64_bytes": 5242880,
    },
  },
}
所有字段均为可选:
| 字段 | 默认值 | 行为 | | ------------------ | --------- | ------------------------------------------------------------------------- | | auto_resize | true | 当图片超出配置的限制时进行缩放;设为 false 时则拒绝该图片。 | | max_width | 2000 | 最大宽度(像素);必须为正整数。 | | max_height | 2000 | 最大高度(像素);必须为正整数。 | | max_base64_bytes | 5242880 | Base64 编码后图片的最大字节数;必须为正整数。 |
例如,以下配置会拒绝而非缩放宽度超过 1200 像素的图片:
{
  "media": {
    "image": {
      "auto_resize": false,
      "max_width": 1200,
    },
  },
}
这些设置既适用于附加到提示词中的受支持图片,也适用于内置 read 工具返回的图片。

处理

read 工具会根据内容识别 PNG、JPEG、GIF 与 WebP,并最多读取 20 MiB 的源图片数据。它会对照配置的图片限制检查宽度、高度与 Base64 长度。
在 auto_resize: true 下,OpenCode 会保持宽高比并按尺寸限制缩小图片。随后它会依次尝试更小的 PNG 与 JPEG 编码,直到满足 Base64 限制,因此输出的媒体类型可能发生变化。
Input:  4000 × 2000 WebP
Limits: 2000 × 2000
Output: 2000 × 1000 PNG or JPEG
如果没有任何编码能够满足限制,处理会失败。在 auto_resize: false 下,超出任一限制的图片会在未作修改的情况下失败;无法解码的图片同样会失败。
Input:  2400 × 1600 JPEG
Limit:  max_width = 2000, auto_resize = false
Result: Image processing fails
如果图片缩放器不可用,OpenCode 会原样传递原始图片。因此,图片设置属于处理限制,而非上传或安全边界。

限制

| 限制 | 值或行为 | 示例 | | ----------------------------- | ------------------------------------------------------------- | -------------------------------------------- | | 直接附加 | 每项解码后 20 MiB;客户端可能施加更低的限制 | 两个 12 MiB 文件符合单项限制 | | 桌面端选择器所选内容 | 总计 20 MiB | 两个 12 MiB 文件超出选择限制 | | max_base64_bytes | 仅计算编码后的 Base64,不包括完整的 data: URL | SGVsbG8= 计为 8 字节 | | 提供商图片限制 | 在 OpenCode 处理之后应用 | 提供商可能拒绝已被接受的图片 | | 文本附件的模型支持 | 不需要多模态模型 | notes.txt 会作为提示词文本插入 | | read 文本限制 | 使用独立的分页与截断限制 | 分页读取大型日志 |
客户端接受文件并不能保证其内容会到达模型。附件必须使用模型可见的格式,并同时满足 OpenCode 与提供商的限制。