Skip to content

pref(runtime):优化多模态渲染 #321

Description

@phantom5099

问题:

  1. Parts -> 文本 渲染逻辑重复实现
    相同规则散落在 context / context/compact / memo / tools / tui,同一语义在多个位置维护,后续任何规则调整都可能出现行为不一致。

  2. 过渡路径语义污染风险
    图片附件在历史路径中曾被折叠为文本块(包含附件说明/路径),会把结构化图片语义退化为文本语义,偏离多模态主链路设计。

  3. provider 兼容预期不收敛
    测试中存在对临时兼容策略的依赖(如 schema sanitizer、400 后去 tools 重试),与当前稳定策略不一致,容易导致实现与测试相互拉扯。

解决思路

  1. 建立共享渲染层
    Parts 渲染规则集中到一个共享包,提供按场景区分的显式入口(compact / transcript / display),禁止万能 PlainText 入口。

  2. 统一调用路径
    各模块保留本地语义函数名,但内部统一委托到共享渲染层,避免复制粘贴实现。

  3. 清理过渡行为与测试预期
    删除图片拼接文本发送路径,保留结构化语义;同步调整 provider 侧测试预期,使其与当前行为一致。

执行范围

  • internal/context*
  • internal/memo
  • internal/tools
  • internal/tui
  • internal/provider/openaicompat/chatcompletions

验收标准

  1. 跨模块渲染行为由单一实现驱动,不再存在重复实现。
  2. 图片消息不再通过拼接文本块表达附件语义。
  3. provider 兼容相关测试预期与当前策略一致。
  4. go test ./... 通过。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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