目标问题
PDF、DOCX 等二进制文档不能直接作为文本加入上下文,需要解析、摘要或转换策略。同时用户需要查看、删除和复用当前会话中已经上传的附件。
前置依赖
依赖以下 issue:
- Web 会话区支持图片上传并加入会话
- Web 会话区支持文本类文件上传并作为会话上下文
设计方案
- 完善 session asset 元数据,包括文件名、MIME、大小、创建时间和用途。
- 增加会话附件列表、删除和重新引用能力。
- 为 PDF/DOCX 增加独立解析器,解析结果作为文本上下文进入 Runtime。
- 解析失败不影响原始文件保存,UI 展示失败原因。
- 如果后续 provider 原生支持文件输入,只在 provider adapter 内适配,不泄漏到 Web/Runtime 上层。
落地清单
- Session:
- 完善 asset 元数据读取接口。
- 增加按 session 查询附件列表能力。
- 增加删除附件能力,并校验 session 归属。
- Runtime:
- 增加文档解析入口。
- 对 PDF/DOCX 设置大小、页数和超时限制。
- 将解析结果转换为 text content part。
- Web:
- 增加会话附件面板或附件列表。
- 支持查看附件状态、删除附件、重新添加到输入区。
- 展示文档解析中、解析成功、解析失败状态。
- 文档:
- 说明支持的文档类型、解析限制、失败行为和回滚方式。
验收标准
- 会话内可查看当前 session 已上传附件。
- 可删除未使用或历史附件引用。
- PDF 可解析为文本上下文并参与模型回复。
- DOCX 可解析为文本上下文并参与模型回复。
- 损坏文件、超大文件、解析超时都有明确错误。
- 历史消息中的附件引用仍可展示元信息。
- 文档解析逻辑不进入 Web、TUI 或 provider 上层调用方。
go test ./... 通过。
- Web 相关测试通过。
测试场景
- 上传 PDF 并提问内容。
- 上传 DOCX 并提问内容。
- 上传损坏 PDF,确认解析失败提示。
- 上传超过页数或大小限制的文档,确认被拒绝。
- 删除附件后再次引用失败。
- 刷新页面后仍能看到历史附件元信息。
风险与回滚
- 风险:文档解析会引入依赖、耗时和异常文件处理成本。
- 风险:解析质量会影响模型回答质量,需要清晰标注解析失败或截断。
- 回滚:保留原始上传记录,关闭 PDF/DOCX 解析入口,不影响图片和文本附件能力。
目标问题
PDF、DOCX 等二进制文档不能直接作为文本加入上下文,需要解析、摘要或转换策略。同时用户需要查看、删除和复用当前会话中已经上传的附件。
前置依赖
依赖以下 issue:
设计方案
落地清单
验收标准
go test ./...通过。测试场景
风险与回滚