文档 · 钉 6.4.0
升级时怎样不弄坏 runbook
从 6.0.0(2026-10-08)到 6.4.0(2026-10-11),几次次版本发行改了 MCP 输入、Evidence 形状和已保存的捕获。
本页是这些破坏性变更的运维清单。日期取自 GitHub 发行的 published_at。rea.run 的教学钉版本是 [email protected]。
always-bump-minor 不是兼容承诺
上游 6.2 迁移指南用一句话写了策略:仓库使用 always-bump-minor,包括破坏性发行。次版本号并不表示旧脚本、旧 Evidence 文件或旧捕获仍然能通过校验。
2026-10-13 时 npm latest 仍是 6.4.0。runbook 里漂浮的 @latest 会在下一次次版本发布时跟上,破坏性变更也一起跟上。
Factory Droid(droid)和 DeepSeek Harness(dsh)只在 main 上,要等到 6.4.0 之后的 npm 发行。不要把它们写进 6.4.0 的 setup 计划。
升级步骤
- 记下你今天跑的钉版本:MCP
args里的版本,以及全局 CLI 的npm view rea-agents version。两者可以不同。 - 读下面表格里你将跨过的每一行。从 6.1 直接跳到 6.4.0,仍然包含 6.2 和 6.3 的合同。
- 把 Evidence 包、分析快照和进程捕获复制到旁边的目录。不要就地改写。
-
把客户端指到该钉版本,并批准一份有范围的 setup 计划:
npx -y [email protected] setup --client codex --dry-run --json # 审阅后再: npx -y [email protected] setup --client codex --yes --json - 重启或重连智能体。上一包缓存的
tools/listschema 是常见的第一处失败。 - 运行
npx -y [email protected] doctor --json,把 JSON 附在变更单上。 - 对一个你已经理解的授权目标重跑一次。先比对字段名,再相信仪表板或脚本。
- 若消费者仍读取
structuredContent.result,改为normalized_result(6.2)。若仍读取network.websocket_events,改为network.websocket_connections(6.4)。WebSocket 字段没有旧别名。
该钉版本的手动 MCP JSON:
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "[email protected]", "mcp"]
}
}
} 运维会碰到的破坏,6.0 至 6.4.0
| 版本 | 发布时间(UTC) | 脚本会注意到什么 |
|---|---|---|
| 6.0.0 | 2026-10-08 09:40 | MCP 文件系统输入必须是主机绝对路径。CLI 相对路径仍然可用。 |
| 6.1.0 | 2026-10-09 01:08 | Hopper 正则改为 ECMAScript Unicode,工作线程截止 5 秒。set_current_document 已删除。 |
| 6.2.0 | 2026-10-09 16:51 | 成功的 Evidence 就是结构化载荷。读 normalized_result。旧包装、快照和 v3 捕获不能靠填字段迁移。 |
| 6.3.0 | 2026-10-09 23:56 | 捕获需要当前的生产者记账和事务身份。不要编造缺失的网页差异维度。 |
| 6.4.0 | 2026-10-11 03:58 | network.websocket_connections 取代 network.websocket_events。若干已存储的图 schema 也变了。 |
同一十天里更早的主版本(4.0.0、5.0.0)另有破坏性变更,列在 更新日志。本手册从 MCP 路径和 Evidence 消费者通常开始坏掉的地方写起:6.0。
6.0.0 — MCP 绝对路径
发布于 2026-10-08。MCP 文件系统输入必须是主机绝对路径。包括目标与快照路径、Evidence 包路径、托管代码与固件输入、浏览器与 Electron 启动路径,以及期望的服务器路径。
可选路径仍然可选。形如 open_binary 且路径为 "./app" 的调用,必须改成 /home/analyst/app 或 C:\analysis\app。
CLI 仍接受操作者的相对路径。从相对工作区根拼 MCP 参数的智能体,需要接上 pwd,而不是模型编出来的字符串。
来源:#948、#1004、发行 rea-agents-6.0.0。
6.1.0 — Hopper 调用方
发布于 2026-10-09。若你经 REA 驱动 Hopper 搜索:正则模式是 ECMAScript Unicode 语法,不是 Python re。匹配在可取消的工作线程里跑,截止 5 秒。字面量模式仍做 Unicode 大小写折叠匹配。
set_current_document 已删除。用 open_binary 切换目标。文档参数的范围是当前活动目标。
6.2.0 — Evidence、快照与已保存清单
发布于 2026-10-09。升级消费者之前,先读 6.4.0 标签上的 docs/migration-6.2.md。下面是运维摘录。合同变更见提交 63bf914 与 #1277。
成功载荷
产出 Evidence 的工具把完整 Evidence 记录放进 structuredContent,也放进 JSON 文本。旧的 { result, evidence_id, evidence } 包装没有了。
// 6.1
const value = reply.structuredContent.result;
const evidence = reply.structuredContent.evidence;
// 6.2 及以后,包括 6.4.0
const evidence = reply.structuredContent;
const value = evidence.normalized_result;
const evidenceId = evidence.evidence_id;
读成功字段之前先看 isError。错误把 isError 设为 true,把类型化诊断放进文本内容块,并省略 structuredContent,这样它们不必匹配成功 schema。
生命周期和其它非 Evidence 工具仍使用自己的输出合同。不要假设每个成功工具都是 Evidence。
每条 Evidence 都要求 analysis_profile:观察到的 profile 对象,或 null。该字段参与 Evidence 身份。
往旧文件里插入 null 不会保留旧的 evidence_id。保留原件,用 6.2 或更新版本重新生成。已经符合完整规范合同的记录仍可使用。
binary_session 不再有顶层 provider 与 providers 别名。改读 analysis_provider_binding、analysis_provider_candidates,以及每次操作的 capabilities。
用 open_binary.provider_id 或 CLI --provider 选择深度提供者。
传输层 resource_constraint 可以带上 details.reported_limits.evidence_reference。在同一连接上用 inspect_analysis_view 或 export_evidence_bundle 消费保留的 Evidence。
响应预算在服务器启动时固定。要改预算就重建服务器。提高服务器预算不会提高客户端的接收上限。
快照与制品角色
快照要求 workflow_entries,并且每个缓存查询都有一条绑定 profile 的 Evidence。导入会拒绝不完整的绑定。保留旧快照,写到新路径,例如:
npx -y [email protected] analyze /absolute/path/to/program --provider ghidra --snapshot /absolute/path/to/analysis/program-6.4.json 在 MCP 中,打开时不要带上不兼容的 snapshot_path,跑完查询后经 close_binary.snapshot_path 保存。不要编造缺失的提供者 profile。
| 6.2 之前读 | 6.2 及以后读 |
|---|---|
nodes[].kind | occurrences[].artifact_kind |
依路径的 nodes[].format | occurrences[].artifact_format |
nodes[].executable | occurrences[].executable |
| 内容身份与字节格式 | nodes[].artifact_id、sha256、format |
用 artifact_id 把出现位置连到内容节点。相同字节可以共用一个节点,同时保留不同的路径角色。合并后的内容节点恢复不了当初没存下来的按路径事实。旧清单需要重新生成。
其它 6.2 消费者破坏
- 进程捕获。导入时不再转换旧版 v3(2a77469)。捕获需要明确的选定/启动可执行身份和
event_journal。空日志有效;省略字段无效。旧捕获留作历史,需要当前对比时重新捕获。不要用后来的摘要编造启动身份,也不要从分开的日志编造事件顺序。 - 文件系统效果在无法判定创建或删除时,可以报告
status: "unknown"并给出原因。未知不是「不存在」。 - 清理。一次性分析在提供者清理失败时,可以报告
cleanup_incomplete,而不是静默成功(#1211)。保留details.partial_observation或主要诊断。观察成功不能证明清理成功。 - JavaScript 投影要求
presence为present、absent或unknown-coverage。未知的值与未知的存在性是两回事。对象操作使用properties.property_path(路径段或null),不是压扁的名字。 - 函数对比使用
unchanged、changed或unknown。truncated状态和summary.truncated计数器已删除。 - 符号链接在
target_state为unreadable或unknown时要求target: null。外部目标保留观察到的绝对路径。像<outside-root>这样的显示占位符不能当查找数据。这些图需要重新导入。
6.3.0 — 捕获的生产者记账
发布于 2026-10-09。缺少当前生产者记账或事务身份的历史捕获会被拒绝;缺少无障碍或存储维度的网页差异也会被拒绝 (3283a45)。 保留原始捕获,用当前生产者重新捕获。对比消费者必须包含每一个维度。不要为了让差异还能画出来而补一条没观察到的记录。
同一发行里,若你存储这些对象,下面几条同样可见:
- JSON 形状路径使用带类型的属性段和数组元素段。WebMCP 的
input_schema_shape改为input_schema与input_schema_sha256。 - 文件系统摘要省略项要求
system_code。预算与已改文件的省略用 null。不可用文件的省略保留操作系统错误码。 - 提供者分析输出必须显式给出过去用默认值修补的元数据。不支持的可空侧面是
null,不是省略。 - JavaScript 语义图存储 Evidence 上下文 ID 与位置,结果需要内联的
evidence_contexts表。 - source map URL 位于由
declared_url_sha256选定的目标观察上。doctor 的 skill 身份不再发出installed_catalog_digest;改用identity.skill.state。 - JavaScript 应用分析里从未递增的
truncated_scopes统计已删除。
6.4.0 — WebSocket 结果与已存储的图
发布于 2026-10-11。2026-10-13 核对时的 npm latest。发行:rea-agents-6.4.0。
WebSocket 字段改名
读 network.websocket_connections。不要读 network.websocket_events。没有旧别名
(db4e360)。
每条连接含 request_id、url 和 events。大小未知时 payload_bytes 可以是 null。先改仪表板,再把缺字段说成捕获失败。
已存储的 Evidence 与图
- 已保存的引用图。排除项需要匹配的
pattern,并区分project-ignored与default-ignored。缺少该来源的图要重新导入(6585293)。 - 制品图的边。子制品 ID 与路径来自由
occurrence_id选定的出现位置,不是边字段child_artifact_id/logical_path。更早的清单 Evidence 不再符合新承诺(#1493)。 - 语义图 schema。节点和关系不再包含
identifier_strategy,关系 ID 也不再对其做哈希。更早的 Evidence 不再通过校验(#1474)。 - 语义身份。从父图选择 ID。事件名读
event_name,端点读endpoint,字面量读properties.value。新分析对过长或保留的名字使用基于摘要的 ID。先前存储的图保留原 ID,仍是有效的工作流输入(#1427 及相关)。 - 使用自定义规范化的捕获对比必须用
literal-replacements-v1重新捕获两侧。无版本的旧模式捕获仍可读,但不能与新模式捕获对比。没有模式的捕获不受影响(#1456)。 - 终端捕获用
columns × (rows + scrollback)把初始缓冲区和调整后的缓冲区限制在 1,000,000 个单元格内。过大的场景在启动前被拒绝。
库作者,不是 MCP JSON
进程内的直接资源 API 现在要调用方持有的 ArtifactResourceScope(清单、提取、JavaScript 分析、引用导入、网页导出)。对 readJavaScriptArtifactFiles,scope 是第三个参数,中止信号是第四个。
这些操作的 CLI 与 MCP 输入没有变。若你只通过 stdio 调用工具,不要往工具参数里加 scope 对象。
可选的智能体验证报告接受 schema 版本 4。该报告的生产 CLI 与 MCP 合同没有变。