目标问题
图片上传只能覆盖视觉输入场景。用户还需要上传 .txt、.md、.json、.yaml、.csv 等文本类文件,让模型在当前轮会话中读取文件内容并参与回复。
前置依赖
依赖 issue「Web 会话区支持图片上传并加入会话」中的上传入口、session asset 存储和 Web 附件 UI 基础能力。
设计方案
- 复用已有上传入口和 session asset 存储链路。
- 增加文本类文件 MIME/扩展名白名单。
- Runtime 在提交会话时读取文本 asset,按 UTF-8 解码,并转换成普通 text content part。
- Provider 层不暴露“文件”概念,仍只接收文本内容,避免厂商差异泄漏到上层。
- 对文本内容设置最大读取长度和截断提示,避免单轮上下文失控。
落地清单
- 上传策略:
- 增加
.txt、.md、.json、.yaml、.yml、.csv 等白名单。
- 增加 UTF-8 校验。
- 增加文本文件大小限制。
- Runtime/Session:
- 支持读取文本 asset。
- 将文本文件内容包装为带文件名边界的文本块。
- 对超长文本执行截断,并在上下文中保留截断提示。
- Web:
- 附件 UI 区分图片预览和文本文件 chip。
- 用户消息中展示文本文件附件名、大小和状态。
- 文档:
- 更新上传能力文档,说明支持的文本类型、大小限制和截断规则。
验收标准
- Web 可上传并发送文本类文件。
- 模型能在同轮回复中引用文件内容。
- 文本输入和文本文件附件可以一起发送。
- 非 UTF-8 文本返回明确错误。
- 超过限制的文本文件被拒绝或明确截断。
- 文件名只作为上下文标签,不作为可信路径使用。
- Provider 差异不泄漏到 Web、Gateway 或 Runtime 上层。
go test ./... 通过。
- Web 相关测试通过。
测试场景
- 上传
.md 文件后提问文件内容。
- 上传
.json 文件后要求总结字段。
- 上传
.csv 文件后要求分析数据摘要。
- 上传大文本文件触发截断提示。
- 上传非 UTF-8 文本返回明确错误。
- 混合文本输入和文本文件附件发送。
风险与回滚
- 风险:文本文件会快速消耗上下文预算。
- 风险:截断策略不清晰会影响模型回答完整性。
- 回滚:保留上传存储能力,仅关闭文本 asset 转上下文逻辑。
目标问题
图片上传只能覆盖视觉输入场景。用户还需要上传
.txt、.md、.json、.yaml、.csv等文本类文件,让模型在当前轮会话中读取文件内容并参与回复。前置依赖
依赖 issue「Web 会话区支持图片上传并加入会话」中的上传入口、session asset 存储和 Web 附件 UI 基础能力。
设计方案
落地清单
.txt、.md、.json、.yaml、.yml、.csv等白名单。验收标准
go test ./...通过。测试场景
.md文件后提问文件内容。.json文件后要求总结字段。.csv文件后要求分析数据摘要。风险与回滚