Files
ycode/docs/responses-integration-2026-10-16.md

42 lines
3.9 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.
# Responses 真实 OMP 集成验收(2026-10-16)
结论:统一构建后的生产 Electron App/preload/IPC → **真实 OMP executable** → 受控 Responses HTTP/SSE 上游已通过 **28/28**。验证完整 `/v1/responses` 配置、两轮对话历史、禁工具、认证以及开放 SSE 取消。受控服务的成功不代表用户实际远程上游已恢复,也不代表 WorkBuddy 功能/视觉 1:1 验收。
## 修改范围
- 新增 `scripts/verify-responses-integration.cjs`。
- 新增本结果文档。
- 未修改 production/main/store/package;未读取或修改用户真实模型注册表,未调用真实用户上游,没有观察原版 WorkBuddy。
## 验证方法
脚本创建独立 `.tmp/responses-integration-*`,分别设置 userData、sessionData、YCODE_OMP_HOME;通过真实 preload `app.info()` 断言 configDir 必须等于该隔离 data 目录,之后才保存模型与创建空间/会话。真实模型明文密钥只在隔离进程生成,报告只记录 Authorization 存在及匹配布尔值;不保存任意 OMP stderr,不返回已有明文密钥。
服务只监听 `127.0.0.1` 随机端口,接收实际请求,没有替换 production IPC 或 OMP。真实 SSE 依次发送 `response.created`、`response.in_progress`、`response.output_item.added`、`response.content_part.added`、`response.output_text.delta`、`response.output_text.done`、`response.content_part.done`、`response.output_item.done`、`response.completed`,完成响应包含 usage。第三轮发送真实 partial delta 后保持连接开放,调用 production chat.cancel 检查终态。
如果真实 OMP 首轮进入 error,脚本会停止,并在 report 中保留 preload 的实际 events/messages/error;不会切换成 Chat 协议绕过失败。
## 命令与结果
- `node --check scripts/verify-responses-integration.cjs`:退出 **0**。
- Root 统一 `npm run build` 完成后,`node scripts/verify-responses-integration.cjs`:退出 **0**,**28/28 PASS**。
- 机器报告:`.tmp/responses-integration-UbxGhB/report.json`。
- 受测 production `out/main/index.mjs` SHA-256:`3bb668280e3a6b5386e787517afc6dfea466006400f1e64fc01a4687b2c6d462`。
| 真实请求 | 路径 | stream | 模型 | tools | max_output_tokens |
|---|---|---|---|---:|---:|
| production models.test | `/v1/responses` | false | `responses-fixture` | 0 | 16 |
| OMP 首轮 | `/v1/responses` | true | `responses-fixture` | 0 | 1234 |
| OMP 第二轮 | `/v1/responses` | true | `responses-fixture` | 0 | 1234 |
| OMP 取消轮 | `/v1/responses` | true | `responses-fixture` | 0 | 1234 |
四个请求的受控 Authorization 均存在且精确匹配测试密钥,没有 endpoint 双拼。models.test 返回连接测试成功,耗时 37ms。首轮与次轮分别进入 done,实际内容精确为服务的两个不同 reply 标记。第二轮真实 input roles 为 `user,assistant,user`,包含首轮 user prompt、首轮真实 assistant reply 和第二轮 prompt。
第三轮实际收到 `RESPONSES_CANCEL_PARTIAL` 后取消,持久消息状态为 cancelled,partial 内容保留,preload terminal events 恰好一个 `cancelled`,没有混成 done/error。两轮正常终态均为 `text → done`。
真实 OMP transcript 已写入隔离 `data/omp-sessions/session-*.jsonl`。实际生成 profile 选择 `api: openai-responses`,baseUrl 为受控服务 `/v1` 前缀,模型 `responses-fixture`,contextWindow 8192、maxTokens 1234、input `[text]`、reasoning false;密钥配置为环境变量名 `YCODE_MODEL_API_KEY`,YAML 不含受控明文密钥。
## 范围与未验项
本轮覆盖网络失败/取消要求中的**取消**分支,没有重复发送网络失败轮。真实用户 endpoint 的网络可达性、鉴权和供应商协议兼容性仍需在用户已授权的真实重试中单独确认。未覆盖 Responses function tool、图片、reasoning、复杂多 output item、服务端错误格式及 interrupted stream 后重试。没有以受控 Responses fixture 代替真实上游成功结论。