产物:字节保存与路径呈现
附件在事件引用前保存不可变字节,spill 保存长文本并返回位置。交付声明只记录已有文件路径,变更记录由活会话 Host 提供,两者在界面中的呈现不构成文件归档。
箭头表示标注的调用或依赖关系;点击组件定位正文。完整关系见下方文字说明。
文字关系说明与章节链接
附件接纳服务 →(先持久保存字节)→ 不可变附件字节;附件接纳服务 →(保存后记录引用)→ Session 事件记录;Session 事件记录 →(派生界面内容)→ 附件与交付界面;present 交付工具 →(记录路径声明)→ Session 事件记录;present 交付工具 →(验证可访问文件)→ 源位置的当前文件;长文本保存与预览 →(结果含预览与位置)→ Session 事件记录;附件与交付界面 →(打开当前位置)→ 源位置的当前文件;活会话变更记录器 →(读取当前状态)→ 源位置的当前文件;活会话变更记录器 →(活宿主差异视图)→ 附件与交付界面。
附件接纳服务 · Session 事件记录 · 附件与交付界面 · 不可变附件字节 · present 交付工具 · 长文本保存与预览 · 源位置的当前文件 · 活会话变更记录器
附件服务先保存再发引用
dsh-attachment 管理不可变、内容寻址的附件。字节持久化之后才发出引用,用户图片也要在消息接纳前保存;浏览器收到的是持久化完成后的通用凭据。
// 校验并持久提交图像批次,返回不可变引用后才可记录事件。
async saveImages(inputs: readonly SaveImageAttachment[]): Promise<readonly ImageAttachmentRef[]>事件保存稳定引用,不保存主机临时路径、base64 或浏览器 URL。消费者把标识视为不透明值,不能因为本地实现采用 sha256 就自行拼路径;读取时还要验证元信息与完整性。
图像接纳与路由预算分别检查
固定版本来源限制为每条消息最多二十张、合计二百 MiB,每张还受二十 MiB、六千四百万像素和边长八千一百九十二等限制;默认归一化目标为最长边二千零四十八和四 MiB。
这些数字属于固定版本策略。通过上传限制也不代表目标模型一定能接收图片,实际请求还须检查对应路由能力与预算;已存图片损坏时不能静默替换成貌似成功的图像内容。
溢出服务保存原文并返回位置
dsh-spill 定义保存完整原文并返回 locator、提示和字节数的能力,spill-local 提供本地实现,spill-policy 提供选择策略。
dsh-spill · 接口摘录,省略上下文 · ctx.spillStore.saveText · docs/subsystems/spill.md// 原样保存全文,返回不透明位置、精确字节数与后端读取提示。
abstract saveText(input: SaveTextSpill): Promise<SpillRef>工具消费者决定何时只展示预览、何时保存完整结果,模型随后按位置读取所需片段。来源元信息不是权限名单,分叉继承 locator 不会复制或重新拥有字节;保留期结束后位置可能失效,公共能力也没有自动按会话清理的保证。
交付声明与变更观察面向界面
dsh-tool-present 记录已有文件的声明,dsh-ui-deliverables 呈现打开与预览入口,文件内容仍留在原位置。
// 声明已存在且可访问的普通文件,卡片读取源路径当前内容。
{ "files": [{ "path": "report.md", "description": "检查报告" }] }workspace-changes 根据 Git 快照和文件工具捕获生成回合变更摘要,Host 可在会话销毁前比较实时状态。变更汇总受文件数量与大小上限约束,二进制或过大文件不提供完整行数统计;这些客户端信息也不会自动成为模型上下文。
// 读取活动会话某次变更摘要中指定文件的回合前后比较。
diff(sessionId: SessionId, seq: number, index: number, signal: AbortSignal): Promise<WorkspaceFileDiff | undefined>辅助示例
用户上传架构截图,附件服务先保存图片再让消息进入 Session;模型运行命令产生长日志,工具把原文 spill 并给出预览;最后生成报告,present 记录报告路径供用户打开。之后若报告源文件被覆盖,文件卡打开的是当前位置内容,不能把它当作当时报告的不可变归档。
设计取舍
附件不可变保存适合重放输入,spill 控制模型上下文成本,交付卡避免复制大文件;代价是三者的保留期限和完整性保证不同。需要长期归档最终产物时,应另外保存版本,不能仅靠聊天里仍有一张卡片判断原内容仍存在。
相关包与插件
资料来源与核验范围
本章依据固定版本的官方文档整理,设计取舍根据所述机制分析;核验范围为文档,不包含运行实测。