Skip to content

[0957] chat 协议升级:%chat 协议定稿(四字段)+ base_url 下沉 scheme 拼接 + 假 goldfish 协议回传 - #4515

Merged
PinkMagicFly merged 6 commits into
mainfrom
pigmagicfly/0957/chat-protocol-upgrade
Sep 8, 2026
Merged

[0957] chat 协议升级:%chat 协议定稿(四字段)+ base_url 下沉 scheme 拼接 + 假 goldfish 协议回传#4515
PinkMagicFly merged 6 commits into
mainfrom
pigmagicfly/0957/chat-protocol-upgrade

Conversation

@PinkMagicFly

@PinkMagicFly PinkMagicFly commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

概述

PR-M5 协议升级:把发送链路升级为 LLM.tmu 新协议,使「模型切换」真正下发到子进程。前置 PR-M3(#4511,ChatModelStore 模型清单)已合入。

改动内容

Scheme 协议层(chat-protocol.scm

  • <chat-input> record 扩为六字段(新增 base-url
  • chat-tab-send / chat-tab-session-send 由 4 参数扩为 5 参数
  • %chat params 定稿为 {model, baseUrl, thinking, search}baseUrl 驼峰,值域 enabled|disabled);系统提示词不下发,由服务端或子进程插件配置(评审定稿)
  • chat-tab-resolve-base-urlhttp 开头原样;为空原样(子进程兜底);相对路径在 scheme 侧拼接 site——文件顶部直接 (use-modules (account liii)) 复用既有 current-stem-site,不新增配置项
  • JSON 组装改用 (liii json)chat-input->json 辅助函数以有序 alist 构造协议对象 + json->stringbuild-context-input 只做 cork 转换与拼行
  • images 数组随协议移除,chat-tab-collect-images / chat-tab-image-node->pair / chat-tab-suffix->mime 及组装代码一并删除(图片上传属第二阶段)

C++ 发送路径(qt_chat_controller

  • onSendRequested 只透传清单原值 base_urlthinking/search 开关,site 拼接、首轮判定等逻辑均下沉 scheme(评审要求 C++ 层保持干净)
  • ChatModelInfo.defaultSystem 字段与解析删除;内置清单 liii_llm_menu.jsondefault_system 键删除

假 goldfish(tm-llm.scm,不联网)

  • 识别 %chat 前缀,(liii json) 本地解析后以 %chat 协议原格式回传content 替换为 [fake-llm] 我收到了你的消息:<原输入>,params/sessionId 原样保留(全保真回显协议字段)
  • 解析失败回退原文 echo;回显走 utf8: 通道(scheme: 通道会把自由文本首词解析成树标签导致渲染丢失 + 轮次超时,见下)
  • 未引入 (liii http),不发起任何网络请求

serializer 透传修正(init-llm.scm,G7 核查结论)

  • 核查确认:object->string(document "%chat …") 输出带引号、转义并包外壳,旧链路上 %chat 并非原样透传
  • 修正:% 开头的单字符串文档原样输出 + \n<EOF>\n(mogan 内 % 前缀仅 %chat 一个发送方,其他输入维持旧行为)

manifest 迁移确认

  • 不新增迁移代码:激活校验 + find() 兜底保证发送路径 session->model 恒为清单内 key,发送后落盘即真实模型 id

验证

  • xmake b --yes stem 通过;qt_chat_model_test 19 项全过、qt_chat_controller_test 20 项全过
  • 真实二进制 headless 实跑:site 解析三分支(绝对/空/相对)正确,协议行四字段、无 default_system\/\" 转义经 string->json / json->string 回环保真
  • gf fmt --changed-since=main 已运行,无无关改动

手工验证记录

  • 用户 GUI 实测确认协议下发正确(baseUrl 拼好 site 的绝对地址)
  • 首测发现假回显经 scheme: 通道渲染只剩 **fake-llm]** 标签且轮次超时,定位为 scheme_to_tree 对自由文本的解析问题,改走 utf8: 通道修复;回显格式按用户要求调整为 %chat 协议原格式回传
  • 行为不变量:除 chat-tab-send 外其余 C++→Scheme 签名未动;chat-tab-cancel/持久化/恢复/导出未触碰;chat 标签页与 dock 侧边栏共用发送路径

任务文档:devel/0957.md

…zer 透传修正

- chat-protocol.scm:<chat-input> 七字段;params 写入 model/baseUrl/thinking/search/default_system;移除 images 图片链路
- qt_chat_controller:发送前从 ChatModelStore 取 baseUrl(拼 site,复用 account 模块 current-stem-site)与 defaultSystem(仅首轮非空)
- tm-llm.scm:%chat 解析后协议原格式回传(content 换假回复文本),utf8: 通道回显,不联网
- init-llm.scm:llm-serialize 对 % 开头单字符串文档原样透传(object->string 会加引号转义包外壳)
Comment thread src/Plugins/Qt/qt_chat_controller.cpp
Comment thread src/Plugins/Qt/qt_chat_controller.cpp Outdated
Comment thread src/Plugins/Qt/qt_chat_controller.cpp Outdated
Comment thread TeXmacs/plugins/llm/progs/llm/chat-protocol.scm Outdated
Comment thread TeXmacs/plugins/llm/progs/llm/chat-protocol.scm Outdated
Comment thread TeXmacs/plugins/llm/progs/llm/chat-protocol.scm Outdated
Comment thread TeXmacs/plugins/llm/progs/llm/chat-protocol.scm
Comment thread TeXmacs/plugins/llm/progs/llm/chat-protocol.scm Outdated
@PinkMagicFly PinkMagicFly changed the title [0957] chat 协议升级:chat-tab-send 扩参 + 新 %chat 协议 + 假 goldfish 协议回传 [0957] chat 协议升级:%chat 协议定稿(四字段)+ base_url 下沉 scheme 拼接 + 假 goldfish 协议回传 Sep 8, 2026

@da-liii da-liii left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@PinkMagicFly
PinkMagicFly merged commit 86fec7a into main Sep 8, 2026
6 checks passed
@PinkMagicFly
PinkMagicFly deleted the pigmagicfly/0957/chat-protocol-upgrade branch September 8, 2026 02:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants