3.0 KiB
思考与工具参数增量接入(2026-10-10)
当前 OMP 接入 assistantMessageEvent.thinking_delta、toolcall_start 与 toolcall_delta。真实二进制隔离探针确认:Responses 的 response.reasoning_summary_text.delta 转为 thinking_delta,response.function_call_arguments.delta 转为 toolcall_delta;后者 partial.content[contentIndex] 提供工具 ID 和名称。不读取 reasoning 的签名、加密内容,也不保证所有渠道/模型都公开思考摘要。
Rust 将这些帧转为 agent://event 的 activity,保留 delta、messageId/contentIndex、工具 ID/名称;原有会话/回合绑定与取消过滤不变。正文仍是 chunk,实际执行仍是 tool。结束快照不重复播报。
ChatRun 独立维护最近 4000 字符的原始事件播报,按到达顺序包含思考、参数、正文、工具输出和授权文字。已流式收到的工具参数不被执行开始时的完整参数重播。未闭合 JSON 仅用于播报,不解析执行,也不提前创建工具卡或放行授权。
播报是内存临时状态,切换会话隐藏,返回运行中的会话恢复,结束/取消/失败清空。思考不转为 ChatMessage,不写历史数据库,不进入项目记忆整理源;activity 事件不会触发消息落库。头像下的阶段随事件显示“正在思考/生成工具参数中”;实际执行、待授权/回答仍优先显示原有阶段。底部始终使用原有单一“正在思考”扫光与播报动效。
验证 SOP
node scripts/omp-activity-probe.mjs <仓库外私有目录>:独立 OMP、独立 profile、回环 Responses 服务,无用户凭据或远程模型;检查真实帧的 delta、顺序及工具 ID。cargo test sidecar::tests --lib、npm run check:chat、npm run build:检查解码、未完整参数不建卡、快照去重、取消和跨会话隔离、思考不落库,以及原有交互与折叠回归。- 按 原生调试 SOP 启动独立数据目录的真实 Tauri 调试窗口(9336)。仅在此独立数据库中设置
activity_test_mode=native-isolated,不能在用户正常数据库中设置测试标记;有正在使用的窗口时不要停止它。 node scripts/chat-activity-native-check.mjs 9336 <仓库外私有证据目录>:通过真实 IPC 创建测试渠道和对话,真实 OMP 连接本地受控 Responses SSE。分别检查思考片段、未闭合参数、正常正文在终态前出现在 DOM,同一时间恰好一个播报栏,正常工具完成,思考不在持久化消息中,参数生成时取消后晚到 SSE 不恢复运行。
本机已通过真实 Tauri WebView2、真实 OMP 与受控 Responses SSE 验证。证据保存在用户私有 ~/.ygent/imports/activity-native-evidence-20261010/,不提交。测试使用受控模型输出,不代表当前远程渠道一定提供增量,也不代表 WorkBuddy 双端流式对标、Mac/Linux 或其他内核已通过。安装版 0.01 不随源码/调试构建自动更新,须重新打包安装。