Skip to content

Web 会话区支持文本类文件上传并作为会话上下文 #701

@Yumiue

Description

@Yumiue

目标问题

图片上传只能覆盖视觉输入场景。用户还需要上传 .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 转上下文逻辑。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions