Skip to content

chat 模型留痕改为服务端回显,替换客户端推断(对齐 research 先例) #77

Description

@HarlonWang

背景

PR #76 审查中确认的改进项:聊天记录「哪个模型答的」留痕目前由客户端推断——selectedModelId() 拿进程缓存的目录 + 手选值 + Pro 态,经 resolveDisplayedChatModel 模拟服务端决策。推断在目录就绪时是准的,但原理上与真相可能脱节(目录缓存过期瞬间、服务端未来的临时降级策略、目录未就绪窗口只能记 null)。

同 app 内 research 已是正确形态:ResearchRunResponse.model 由服务端回显、客户端照记(见 ChatViewModelPersistenceTest「生成模型随报告透传」)。chat 作为流量主路径反而是推断口径,应对齐。

方案

  • 后端(github-ai-trending-api):/api/chat SSE 流回显一帧实际使用的模型(resolveModel 的结果),如首帧 data: {"model":"gpt-5.6-luna"}。老客户端 ChatSse.parseLine 对不认识的 payload 返回 null 跳过,加帧是安全加法。/api/detail-summary 同理。
  • 客户端ChatSse 新增 Event.ModelChatApi.executeStreaming 透传,落库改用服务端回显值;selectedModelId() 推断链路退役(resolveDisplayedChatModel 仍服务于选择器 chip 展示)。
  • 两侧补测试:后端断言 SSE 含 model 帧且值等于 resolveModel 结果;客户端断言回显值优先于本地推断落库。

顺序约束

后端先上线(加帧对老客户端零影响),客户端随后消费。

来源:PR #76 审查意见([clean] 级);相关讨论见该 PR。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions