修复完整会话历史与长气泡交互并更新 CentOS 7 发布包
提交当前工作区全部源码、回归脚本、任务记录及重新构建的 Bun baseline 发布包。发布单文件 MCP 初始化及前端资源一致性验证通过。
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# 运行时完整采集回归结果
|
||||
|
||||
本子任务仅新增 `scripts/history-runtime-unit.js` 和本报告;不修改生产实现、
|
||||
已有 regression 或其它单测。测试直接加载生产 factory 和事件处理函数,
|
||||
使用内存 WebSocket 接收器,不读取或写入真实会话,不操作远端或重启服务。
|
||||
|
||||
## 首次代码状态与失败证据
|
||||
|
||||
时间:2026-10-10 16:52:53(Asia/Shanghai)。
|
||||
|
||||
并行实施代理已先完成默认完整采集改造,因此未复现“长正文被裁剪”的修复前
|
||||
状态,仅记录当时真实结果:
|
||||
|
||||
| 场景 | 期望 | 首次只读探针实际 |
|
||||
| --- | --- | --- |
|
||||
| Claude 长正文 | 1,050,006 字符原样保留 | 1,050,006 字符,完全相等 |
|
||||
| Codex CLI 长正文 | 1,050,006 字符原样保留 | 1,050,006 字符,完全相等 |
|
||||
| Codex App 单次长增量 | 1,050,006 字符原样保留 | 1,050,006 字符,完全相等 |
|
||||
| Claude assistant/tool_use → user/tool_result | 工具 `done=true`,结果为输入原值 | `done=false`,`result` 缺失 |
|
||||
| Codex CLI 纯正文 → JSON 文本块 → 纯正文 | 保存路径选用的内容包含三段正文 | `fullText` 含三段,`contentBlocks` 只有中间正文 |
|
||||
|
||||
## HEAD 旧版本失败对照
|
||||
|
||||
命令:
|
||||
|
||||
```bash
|
||||
timeout 60s node scripts/history-runtime-unit.js --baseline-head
|
||||
```
|
||||
|
||||
脚本通过 `git show HEAD:lib/agent-runtime.js`、`git show HEAD:lib/codex-app-runtime.js`
|
||||
读取真实旧版本源码,用 `node:module` 在内存中编译,不写入工作区。旧版本
|
||||
共复现 9 项预期失败(退出码 0 表示“对照成立”):
|
||||
|
||||
| 失败用例 | 旧版本表现 |
|
||||
| --- | --- |
|
||||
| Claude CLI 长正文完整采集 | 正文被 256 KiB 上限裁剪 |
|
||||
| Codex CLI 长正文完整采集 | 正文被 256 KiB 上限裁剪 |
|
||||
| Codex App 长正文完整采集 | 单次增量被 16 KiB 流上限裁剪 |
|
||||
| Claude user/tool_result 长结果完整采集 | `user` 事件未处理,工具仍 `done=false` |
|
||||
| Codex CLI 长工具结果完整采集 | 结果被 2,000 字符上限裁剪 |
|
||||
| Codex App 超限工具输入、结果与数组完整采集 | entry 内输入/结果被预览限额裁剪 |
|
||||
| 超出预览条数上限 40 的 130 条工具仍完整采集 | 工具数组只留前 120 条 |
|
||||
| Codex CLI 正文与 JSON 内容块混合采集 | `contentBlocks` 与 `fullText` 二选一导致丢两端 |
|
||||
| 生产 WebSocket 正文与工具预览保持有界 | 缺少 `tool_end`(Claude `user` 缺口的连带失败) |
|
||||
|
||||
`Claude CLI JSON 字符串工具参数使用生产解析`、`Codex App 增量与完成事件补尾
|
||||
且不重复`、`重连/历史工具列表预览遵守生产条数上限` 在旧版本即已通过,属于
|
||||
防回退断言,不计入基线失败。
|
||||
|
||||
## 当前实现复跑
|
||||
|
||||
命令:
|
||||
|
||||
```bash
|
||||
timeout 60s node scripts/history-runtime-unit.js
|
||||
```
|
||||
|
||||
当前(2026-10-10 17:24,Asia/Shanghai)实现共 13 个用例,13 个全部通过,
|
||||
退出码为 0。实施代理已补齐 Claude `user/tool_result` 事件处理,以及 Codex
|
||||
CLI 混合正文的统一完整内容保存路径。
|
||||
|
||||
最终输出:
|
||||
|
||||
```text
|
||||
通过:生产 runtime 完整采集与有界传输
|
||||
checkedTextChars=1050006
|
||||
checkedToolInputChars=24006
|
||||
checkedToolResultChars=48006
|
||||
checkedToolCalls=130
|
||||
webSocketPreviews=275
|
||||
passed=13
|
||||
```
|
||||
|
||||
覆盖项包括:三条长正文完整采集、Claude JSON 字符串工具参数经生产
|
||||
`sanitizeToolInput` 解析且不裁剪、Claude `user/tool_result` 长结果、Codex
|
||||
CLI 长工具输入与长结果、Codex App 超限输入/结果/数组、130 条超限工具的
|
||||
entry 完整性与 130 次预览事件、Codex CLI 混合正文、Codex App 增量与完成事件
|
||||
补尾去重、正文与工具预览的传输上限、40 条工具预览上限。
|
||||
|
||||
## 覆盖边界与局限
|
||||
|
||||
- 生产完成/重启恢复、输入保存失败、跨会话失败、child 队列、CLI 幂等性由
|
||||
主后端代理的 `scripts/session-history-store-unit.js` 覆盖,本脚本不重复。
|
||||
- 脚本只覆盖运行时事件到 entry/WebSocket 的链路,不覆盖真实会话落盘、
|
||||
真实 WebSocket 连接、前端渲染与生产服务重启。
|
||||
- 预览断言依赖 `server.js` 中的常量与函数源码提取;若这些符号被重命名,
|
||||
脚本会以断言失败提示,而不是静默放宽。
|
||||
|
||||
## 工具调用简报
|
||||
|
||||
- 时间:2026-10-10 16:45—17:25,Asia/Shanghai。
|
||||
- `codebase-memory-mcp`:`list_projects` 与 `index_status(home-cc-web)` 返回
|
||||
`ready`;`search_graph`、`search_code` 与 `get_code_snippet` 定位
|
||||
`processRuntimeEvent`、`processCodexAppNotification`、`sanitizeToolInput`、
|
||||
`safeJsonParse`、`sanitizeMessageForTransport` 等生产入口,未重建索引、
|
||||
未重启服务。
|
||||
- FastCtx 文件工具未返回所需能力,降级使用 `rg`、`sed` 做只读校验。
|
||||
- Node 回归:内存 WebSocket + 生产 sanitizer,不落盘;`--baseline-head`
|
||||
仅内存编译 Git 旧版本模块。
|
||||
Reference in New Issue
Block a user