OPENPROGRAM / 附件功能讨论

五项附件功能与已选方案

五项功能已按你的选择记录。每组保留当前 OpenProgram 和备选示意,标出选定方案。本文只讨论现有桌面版与网页版的附件使用。

English

所有界面均为行为示意,不是产品截图。框架标签表示已核实的处理方式相似,不表示它使用相同的界面或保存规则。“已选定”表示你确认的功能设计,不表示 App 已经实现。

输入框里的附件:图片与文件统一排列

针对截图中的样式重新设计:不再把图片单独放一行,也不使用大块空白文件卡。所有附件使用相同高度,按添加顺序混排;每项都能看清名称、格式和大小。

新增样式提案,尚未实现;下面是 HTML 示意,文件名和大小用于展示排版,按钮不是实际上传控件。五项已选处理规则保持不变。

图片、PDF、表格在同一排

同高、同顺序、同信息结构
▣ Local▱ fzkuji
Screenshot 2026-09-09 at 3.43.11 PM.png
PNG · 1.3 MB
Scholarships and Financial Aid Records.pdf
PDF · 842 KB
Annual Report 2026.xlsx
XLSX · 126 KB

结合截图和这两份文件,整理申请需要的材料。

+
询问权限当前模型 · Medium

图片只占一个 40 × 40 的缩略图位置。每个附件约 248 × 60;同样的输入框宽度可以并排放图片和文档,格式不会随文件名截断而消失。

附件变多时,整组自然换行

按加入顺序排列,不按类型分组
▣ Local▱ fzkuji
Screenshot 2026-09-09 at 3.43.11 PM.png
PNG · 1.3 MB
Scholarships and Financial Aid Records.pdf
PDF · 842 KB
Annual Report 2026.xlsx
XLSX · 126 KB
sales.csv
CSV · 18 KB
project/
FOLDER · 文件夹

对照这些材料检查缺失项。

+
询问权限当前模型 · Medium

读取中和失败,直接标在对应附件上

不改变卡片高度
▣ Local▱ fzkuji
Screenshot 2026-09-09 at 3.43.11 PM.png
PNG · 1.3 MB
Annual Report 2026.xlsx
XLSX · 126 KB · 读取中…
report.pdf
PDF · 842 KB · 读取失败

总结文件里的关键内容。

report.pdf 无法读取,请重新添加或移除。

+
询问权限当前模型 · Medium

具体样式与操作

截图中的问题本次修改
图片和文件分成两块统一成一组紧凑附件,按添加顺序排列
图片过大,文件卡空白多32 px 图标/缩略图,46 px 同高附件项
长文件名换行,格式不一致名称单行省略,格式和大小独立显示

图片方案以所选模型支持看图为前提。当前 OpenAI Responses 在模型不支持图片时可能直接移除图片内容,没有自动工具回退。建议实现时明确提示切换模型,或使用已配置的图片工具并说明处理方式。

01

粘贴一张截图

发送时直接看图,还是先保存、再让助手读取?

粘贴一张截图 — 已选方案与参考
OpenProgram 原有行为

现在:发图片,也保存文件

OpenProgram行为示意
添加后 · 输入框
图片预览

这个报错是什么意思?

发送后 · 模型如何使用
支持看图时发送完整图片;大图可能被拒绝
以后再打开:已经保存图片,但提交失败时可能没有消息可供查看

当前没有按模型要求调整发送图片;失败可能清空输入。

改动前源码依据;示意文字并非现有界面原文。 依据
当前行为,仅用于比较
已选方案

A · 直接看图,并保存到聊天

OpenProgram行为示意
添加后 · 输入框
图片 · 已保存到聊天

这个报错是什么意思?

发送后 · 模型如何使用
模型直接收到图片;必要时缩小发送版本
以后再打开:重新打开聊天,还能查看这张截图

保留现有直接看图方式,补充图片调整与可靠的发送确认。

Codex / OpenCode:直接图片输入相似;不据此声称保存期限相同。 依据

已记录你的选择;修改方案可在聊天中说明。

备选参考

B · 保存图片,由助手按需打开

OpenProgram行为示意
添加后 · 输入框
截图文件 · 等待读取

这个报错是什么意思?

发送后 · 模型如何使用
助手先看到路径,再调用看图工具
以后再打开:保存聊天副本;有需要时再次打开

可以推迟看图,但本次多一步工具读取;工具不可用时无法分析。

本页提出的备选;未核实这三个框架以此作为粘贴截图的默认方式。

已选定:A · 直接看图,并保存到聊天。验收状态见文末。

02

拖入电脑上已有的图片

所选模型支持看图时,两种方案都直接提供图片;区别是是否自动保存原图副本。

拖入电脑上已有的图片 — 已选方案与参考
OpenProgram 原有行为

现在:原路径与副本同时保留

OpenProgram行为示意
添加后 · 输入框
comparison.png · 图片预览

比较这张图里的两个版本。

发送后 · 模型如何使用
支持看图时,图片直接发送给模型
以后再打开:保留原路径;同时自动保存附件副本供预览

目前没有让用户选择是否复制。

改动前源码依据;示意文字并非现有界面原文。 依据
当前行为,仅用于比较
备选参考

A · 引用原图,需要时另存

OpenProgram行为示意
添加后 · 输入框
引用原图 · comparison.png

比较这张图里的两个版本。

发送后 · 模型如何使用
本次直接看图;不默认另存原图副本
以后再打开:原图移动或删除后,可能无法再次打开

新增“保存副本到聊天”选项;修改原图后再读取会看到新内容。

Codex 公开终端支持本地图片输入;未核实其完整副本保留规则。 依据
已选方案

B · 每次都保存一份到聊天

OpenProgram行为示意
添加后 · 输入框
已保存副本 · comparison.png

比较这张图里的两个版本。

发送后 · 模型如何使用
本次直接看图
以后再打开:原图修改或删除后,仍可查看发送时的版本

保留自动复制,但明确以后查看和分析哪一份文件;额外占用空间。

OpenProgram 原有行为已有自动保存;这里补充明确的版本选择。 依据

已记录你的选择;修改方案可在聊天中说明。

已选定:B · 每次都保存一份到聊天。验收状态见文末。

03

拖入文字、代码或数据文件

默认只给路径,还是添加时就把文字提供给模型?

拖入文字、代码或数据文件 — 已选方案与参考
OpenProgram 原有行为

现在:路径、开头预览和副本

OpenProgram行为示意
添加后 · 输入框
sales.csv · 文件附件

统计每个月的销售额。

发送后 · 模型如何使用
原路径 + 一段开头文字;其余按需读取
以后再打开:文件上传后还会保存一份副本

即使本地已有原文件,也会上传保存;并非纯路径引用。

改动前源码依据;示意文字并非现有界面原文。 依据
当前行为,仅用于比较
已选方案

A · 只引用,助手按任务读取

OpenProgram行为示意
添加后 · 输入框
引用原文件 · sales.csv

统计每个月的销售额。

发送后 · 模型如何使用
读取 sales.csv → 统计需要的数据
以后再打开:默认读取原文件当前内容;可以另存副本

不自动上传、复制或加入正文。文件不存在时明确提示。

Codex 公开终端:普通文件选择插入路径,行为相似。 依据

已记录你的选择;修改方案可在聊天中说明。

备选参考

B · 把文字直接提供给模型

OpenProgram行为示意
添加后 · 输入框
直接提供内容 · sales.csv

统计每个月的销售额。

发送后 · 模型如何使用
模型本次请求就能读到文件文字
月份,销售额 一月,1200 二月,1800
以后再打开:记录已提供的文字;这不等于保存原文件副本

少一步读取,适合短文件;太长时需要提示或改为按需读取。

OpenCode V2:支持的文本附件会自动提供文字。 依据

已选定:A · 只引用,助手按任务读取。验收状态见文末。

04

拖入 PDF、Word 或 Excel

先让助手选工具读取,还是自动准备可读预览?

拖入 PDF、Word 或 Excel — 已选方案与参考
OpenProgram 原有行为

现在:保存文件,部分格式有预览

OpenProgram行为示意
添加后 · 输入框
report.pdf · 文档附件

总结这份报告的结论。

发送后 · 模型如何使用
PDF 可提取首页文字及页概览;其余需要工具
以后再打开:保留原路径,并自动保存上传副本

Word / Excel 等二进制不自动变成可读正文;提取失败可没有预览。

改动前源码依据;示意文字并非现有界面原文。 依据
当前行为,仅用于比较
已选方案

A · 先引用,再选择读取方式

OpenProgram行为示意
添加后 · 输入框
引用原文件 · report.pdf

总结这份报告的结论。

发送后 · 模型如何使用
助手选择读页、提取段落或分析表格
以后再打开:默认不复制;需要固定版本时保存副本

不在添加时自动解析。缺少工具或扫描件无法识别时说明原因。

Codex:参考普通文件路径输入;不表示所有文档格式都原生支持。 依据

已记录你的选择;修改方案可在聊天中说明。

备选参考

B · 自动准备预览,再继续读取

OpenProgram行为示意
添加后 · 输入框
report.pdf · 已提取部分文字

总结这份报告的结论。

发送后 · 模型如何使用
先看文字预览;扫描件可用页面识别
已读:第 1 页 尚未读取:其余页面
以后再打开:本地可引用原文件;上传的文件需保存

自动处理更方便,但要等待;必须标出部分读取和失败,不承诺所有格式可读。

OpenClaw:文档提取及可配置的扫描 PDF 回退相似;OpenProgram 已有部分 PDF 预览。 依据

已选定:A · 先引用,再选择读取方式。验收状态见文末。

05

拖入一个文件夹

只提供文件夹位置,还是先列出第一层目录?

拖入一个文件夹 — 已选方案与参考
OpenProgram 原有行为

现在:文件夹拖入待核实

OpenProgram行为示意
添加后 · 输入框
project/ · 行为未验收

找到负责登录的代码。

发送后 · 模型如何使用
当前处理以文件列表为主
以后再打开:不能据此承诺文件夹会按预期加入聊天

源码未见专用目录处理;此图表示证据缺口,不是当前报错截图。

改动前源码依据;示意文字并非现有界面原文。 依据
当前行为,仅用于比较
备选参考

A · 只添加文件夹路径

OpenProgram行为示意
添加后 · 输入框
引用文件夹 · project/

找到负责登录的代码。

发送后 · 模型如何使用
查看目录 → 找到相关文件 → 读取
以后再打开:以后读取的是文件夹的当前内容

不递归复制或上传;助手根据任务决定读哪些文件。

建议方案;没有把未核实的拖目录行为归给其他框架。
已选方案

B · 先提供第一层目录

OpenProgram行为示意
添加后 · 输入框
project/ · 第一层目录

找到负责登录的代码。

发送后 · 模型如何使用
模型先知道有哪些文件,再按需打开
src/ tests/ README.md
以后再打开:当前消息保留目录文字;不是整个文件夹副本

减少一次列目录操作;深层文件仍需继续查看。

OpenCode V2:目录附件提供非递归的第一层列表。 依据

已记录你的选择;修改方案可在聊天中说明。

已选定:B · 先提供第一层目录。验收状态见文末。

所有场景共同遵守的规则

图片是否需要调整

按所选模型已知要求调整发送版本,保留可用原图。没有可查询上限时使用明确的处理规则;不能承诺自动查到所有模型限制。

失败后输入还在

确认成功前保留文字和附件。上传、读取或发送失败要指出原因;断线后先确认上次结果,避免重复发送。

是否保留当时版本

引用原文件会受到修改、移动和删除的影响。保存副本才保留当时版本;目录列表和文字摘录都不等于原文件副本。

已记录的方案清单

以下五项按你提供的清单固定保存,刷新页面不会恢复之前的建议。这里只记录设计,不会修改 App。

框架依据与当前实现

OpenProgram 原有行为行为

网页版添加文件时,后端接收并保存文件,助手读取保存后的文件。桌面版目前也会保存上传副本;已选设计将普通文件改为直接引用原路径。用户只需添加文件和提出任务,不需要选择上传或路径处理方式。

添加文件 · 保存与预览

Codex:公开终端行为,非桌面原型

已核实普通文件选择插入路径、可解码图片添加为图片输入、剪贴板图片写入临时 PNG。不能从这些代码推断桌面版所有附件的长期复制规则。图中的副本开关及状态文案是 OpenProgram 提案。

文件选择 · 剪贴板图片 · 官方图片使用说明 · 图片调整

OpenCode V2

支持的文本附件加入文字,目录附件提供第一层列表,PNG/JPEG/GIF/WebP 作为图片。SVG 作为文字;PDF、音视频等二进制附件目前不直接进入模型请求。可引用服务端可访问的文件;图片调整使用可配置规则,不保证满足所有模型要求。

官方附件说明

OpenClaw

渠道媒体会下载到运行环境;视觉主模型可接收图片,其他配置可生成描述。文档可提取文字,扫描 PDF 可按配置使用页面图片回退。部分文件交给工具时,必须确认运行环境能访问保存路径。未把渠道接收行为等同于本地桌面拖入行为。

媒体接收 · 文档与媒体理解

核实依据与开发备注

当前 OpenProgram 与建议行为有什么差别

当前上传流程也会保存普通文件,尚不是“只引用原文件”的默认行为。图片缩略图不会缩小实际发送的图片;完整图片编码计入执行输入大小,可能在用户消息保存前被拒绝。前端在收到持久保存确认前清空输入,因此可能留下只有标题的聊天。

本次目标聊天日志记录了输入过大的错误;原请求没有完整保留,不能断言是哪一个字段导致。已用本地最小请求复现图片编码超过执行输入限制,不涉及调用模型。

修改时要分别处理聊天保存、图片发送和文件读取。不能仅压小所有图片来适应执行输入限制,也不能把所有本地文件复制一份作为默认解决办法。附件中的文字作为用户提供的材料处理,不自动视为用户新指令。

附件保存与消息提交 · 执行输入检查 · 输入框提交行为

图片调整与保存范围的证据限制

Codex 公开图片处理代码包含多种调整方式,选择取决于能力和配置;默认工具中的尺寸常量不能当作每个模型的上限。OpenCode 的自动调整依据可配置限制,也不保证符合所有模型要求。OpenClaw 不同渠道的接收限制不能当作统一模型限制。

“保存为临时文件”“上传到运行环境”和“长期保留聊天副本”是不同的承诺。其他框架没有明确说明的保留期限,这里不作推断。OpenProgram 已选定图片保存副本,实施时需明确聊天删除、导出和迁移时如何处理副本。

Codex 图片准备 · Codex 图片输入

紧凑排队消息与附件编辑

等待当前轮结束的消息集中放在输入框上方,不再放入滚动的聊天记录。每条保留独立的紧凑气泡、附件预览、发送状态、编辑和移除操作。区域限制高度,可收起为消息数量;消息身份和发送顺序不合并。

入队时保存文字、展开后的粘贴内容、附件字节或原始路径,以及发送设置。带附件的消息也可排队。编辑时暂停该条消息的发送,支持改文字、选择文件、拖入文件、预览和逐个移除附件。保存保留队列位置与原设置;取消保留原内容。已提交且仍待确认的补充指令不能编辑或移除。补充接口只接受文字,因此附件消息等待正常轮次发送。

出队复用普通消息发送和附件协议。连接失败或拒绝发送时保留完整消息,接受后释放。队列只保留在当前打开的 App 窗口内,不承诺刷新后恢复。未发送附件使用已读取的本地内容预览,包括会话工作目录以外的文件:图片和文字直接显示,大小限制以内的 PDF 使用本地 Blob URL。本地文档发送时仍引用原路径,预览字节不扩大后端文件访问权限。已发送附件保留已有只读文档查看器。缺失或不支持的预览明确说明,不丢弃附件。

聊天记录中的用户消息保留独立身份、操作和气泡,缩小纵向间距。历史消息编辑保留原有的创建分支并重新发送语义。本次不删除持久历史、不改变模型行为、不合并多条指令,也不修改审批交互。

参考与选择

布局参考用户描述的 Codex 交互:消息保留在输入框附近且少占空间。实现复用 OpenProgram 队列、附件处理和 DocumentWindow,不推断 Codex 未公开的存储或编辑机制。采用限高分组,不把多条指令合并,也不通过纯文本补充接口发送附件。

验收与实现状态

从输入框提交验证混合附件入队后仍可预览、编辑和移除只影响选中消息、编辑期间暂停出队、发送失败保留字节、顺序发送使用修改后的完整内容。在安装版验证区域位置、间距、预览关闭和会话隔离。实现使用输入框中的 QueuedMessages、现有发送队列中的附件快照、共享附件编辑器的临时实例,以及本地附件预览。发布要求独立规格与质量复审、完整检查和安装版验收;证据单独记录。