Files
ycode/docs/reference/ygent-streaming-activity.md

19 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 思考与工具参数增量接入(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
1. `node scripts/omp-activity-probe.mjs <仓库外私有目录>`:独立 OMP、独立 profile、回环 Responses 服务,无用户凭据或远程模型;检查真实帧的 delta、顺序及工具 ID。
2. `cargo test sidecar::tests --lib`、`npm run check:chat`、`npm run build`:检查解码、未完整参数不建卡、快照去重、取消和跨会话隔离、思考不落库,以及原有交互与折叠回归。
3. 按 [原生调试 SOP](ygent-debug.md) 启动独立数据目录的真实 Tauri 调试窗口(9336)。仅在此独立数据库中设置 `activity_test_mode=native-isolated`,不能在用户正常数据库中设置测试标记;有正在使用的窗口时不要停止它。
4. `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 不随源码/调试构建自动更新,须重新打包安装。