Claude Code CLI 2.1.235 技术机制总图¶
用户在项目目录中输入:
打开
config/server.json,把服务端口从8080改成9090,运行测试;如果测试失败,找出原因并修好。
Claude Code 不会把这句话直接翻译成一次文件写入。它先把当前会话、项目规则和本轮可用工具装进一个模型请求。模型读不到磁盘本身,只能先提出一个动作:
{
"type": "tool_use",
"id": "toolu_read_config",
"name": "Read",
"input": {"file_path": "config/server.json"}
}
这时文件还没有被读取。tool_use 只是模型提出的调用。客户端等这个 block 完整后,在当前工具 registry 中找到 Read,解析并校验输入,执行适用的 Hook、权限和路径检查,最后才调用真正的读取实现。成功后,客户端把结果配回原来的 ID:
这对 tool_use/tool_result 会进入下一次模型请求。模型现在看到的不是一句“读取成功”,而是自己请求过什么以及客户端实际读到了什么。它据此生成 Edit,把 8080 精确替换成 9090,随后生成 Bash 运行测试。Edit 仍要经过 schema、自定义校验、PreToolUse、permission/policy 和写入检查;Bash 也要经过自己的权限与 sandbox 路径。调度器不会让测试越过写入屏障去验证旧文件。
这次测试进程返回:
tool_result(tool_use_id=toolu_test_server)
FAIL tests/server.test.ts
expected http://127.0.0.1:8080
received http://127.0.0.1:9090
这不是整个任务的终点。失败输出会作为 Bash 的 tool_result 回到消息图。下一轮模型看到配置已经修改、哪条断言仍是旧值,以及前面每个动作的配对关系,于是读取并修改测试,再运行一次。第二次测试返回 PASS 后,结果再次回灌;模型这次不再提出工具,而是向用户说明改了哪些文件、测试是否通过。客户端还会运行 Stop Hook 并检查轮次与恢复条件,全部放行后才形成 terminal result。
这条执行链就是整个系统的主干:模型负责根据当前观察提出下一步,客户端负责决定提议能否执行并保存因果关系,文件系统和进程负责承载已经发生的结果。下面的机制都可以从这条链上的一个具体时刻找到入口,而不需要先背一张模块分类表。
模型第一次请求之前:上下文决定它能看到什么¶
第一次模型请求不只有用户那句话。客户端还会装入 system prompt、当前会话历史、项目与用户记忆、动态环境信息,以及这一轮真正可见的工具 schema。对话变长后,prompt cache、Tool Search、tool-result cleanup 和 compact 会改变这些内容的成本或表示方式,但不会替模型执行工具,也不会撤销已经完成的写入。
要继续追请求是怎样组装出来的,读 Prompt Assembly;要理解缓存、工具 schema 延迟加载和上下文压缩,读 上下文治理与多层缓存。
从 tool_use 到真实调用:客户端掌握执行权¶
模型输出 Edit 或 Bash 不代表系统已经接受。客户端还要确认工具当前确实存在,输入能通过 JSON/schema 与工具自身校验,Hook 和权限规则允许,必要时再进入 sandbox,调用完成后还要验证和映射输出。Hook 可以拒绝、延迟或改写输入;permission 可以要求一次性或更大范围的授权;这些决定都会影响随后写回模型的结果。
完整执行顺序见 Agent Loop 专题 和 工具、权限与 Hooks。工具为什么“存在于发布物”却不一定进入本次请求,见 工具注册与宿主表面。
tool_result 回来之后:历史必须能解释刚才发生了什么¶
客户端用 tool_use_id 把结果配回调用,并把这段因果写入会话历史。Transcript 保存事件,消息图保存逻辑父子关系,file checkpoint 保存受管文件的可恢复内容;它们解决的是不同问题。进程退出后,内存里的调度队列会消失,只有已经投影到这些持久对象中的状态才可能被 resume、fork 或 rewind 找回。
这些对象的关系见 会话、检查点与 Memory。模型回复、prompt、transcript、远端系统和本地文件分别流向哪里,见 全局数据流与隐私。
请求或工具失败之后:恢复的是具体对象,不是整个世界¶
网络重试可以重发尚未完成的 API attempt,fallback 可以切换模型,reactive compact 可以重建更短的消息视图,tombstone 可以移除失败分支的临时消息,rewind 可以恢复受管文件。但已经启动的命令、已经发送的远端请求和已经完成的外部写入不会因为消息被删掉而自动撤销。恢复逻辑必须先回答“哪个 owner 持有这份状态”,再决定重试、重连、补偿还是停止。
分层恢复路径见 韧性与恢复;后台执行、MCP、子 Agent 与团队状态的 owner 见 MCP、Agents 与后台协作。
整条链怎样被观察:事件不等于业务事实¶
同一次任务会产生模型请求耗时、首 token、工具排队和执行、权限等待、Hook、compact、retry 与 terminal reason 等记录。它们可以帮助定位“慢在哪里、为什么停止”,但一条事件名存在只证明客户端定义或触发了一个候选观察;是否采样、是否导出、远端是否接收,以及业务动作是否真正成功,还要分别验证。
先读 遥测、日志与诊断 理解各条观测通道,再在 事件语义目录 中查询具体事件和字段。
三条必须同时理解的闭环¶
1. 推理执行闭环¶
这是通常所说的 Agent Loop。它解决的不是“多调几次 API”,而是让非确定性的模型通过确定性工具观察和改变外部世界,并在每一步之后重新决策。循环必须保存工具调用与结果的 ID 配对、轮次计数、停止原因、用户中途输入和恢复状态,否则模型会看到一段无法解释的历史。
详见 Agent Loop 专题。
2. 上下文控制闭环¶
会话和工具产生更多 token
-> 估算窗口、缓存和可清理内容
-> defer tool schema / microcompact old tool results
-> warning / precompute compact / reactive compact
-> 建立更短但可继续工作的消息视图
-> 后续轮次再次增长
它解决“历史越长越贵、越慢、越难聚焦”的问题。Claude Code 的治理对象不只是聊天消息,还包括 system prompt、机器动态信息、工具 schema、MCP 目录、thinking、tool results、compact summary 和 memory。缓存降低重复前缀的计费与延迟,压缩降低窗口占用,两者不是同一个机制。
详见 上下文治理与多层缓存。
3. 控制与恢复闭环¶
执行动作前做 schema/hook/permission/sandbox 决策
-> 执行后做 output validation/PostToolUse/持久化
-> 失败时按错误层级 retry/fallback/compact/abort
-> 保存 terminal reason、checkpoint 和诊断证据
-> resume/rewind/下一轮从可解释状态继续
它解决“能执行”不等于“可控、可恢复”。权限提示只是其中一层;managed settings、工具级规则、hook、sandbox、工作目录边界、网络限制、凭据门控、最大轮数和 Stop hook 熔断共同决定动作是否继续。
详见 工具、权限与 Hooks 和 韧性与恢复。
按条件启动的专用运行时¶
上面的执行链解释普通请求怎样从模型提议走到真实结果。下面这些机制只在对应命令、设置、账号能力或环境出现时启动;它们有独立状态、失败和副作用,查到相关问题时再展开。
查看条件运行时的触发入口、状态和常见误判
| 专用机制 | 触发入口 | 真正拥有的状态 | 最容易误判的地方 |
|---|---|---|---|
| Brief/user-visible output | --brief、CLAUDE_CODE_BRIEF、defaultView=chat、/brief |
isBriefOnly、SendUserMessage tool result、附件 lane、renderer projection、单次 sentinel |
普通文字进 transcript 不等于主视图已交付;附件 error 不一定表示消息正文失败 |
| Plan Mode/human approval | EnterPlanMode、启动 mode、team/Ultraplan |
mode/prePlanMode、plan attachment/file、question/approval request |
reminder 不是唯一约束;澄清答案不等于实施批准;批准后才恢复实施 mode |
| Structured Output | --json-schema、SDK initialize schema |
AJV validator、strict schema、专用工具、attachment、attempt counter | 类型/形状正确不等于业务事实正确;被 tombstone 的对象不能进入终态 |
| REPL programmatic runtime | REPL tool、动态注册工具 |
persistent VM、inner tool pairs、timer/watchdog、replay log | 外层 allow 不绕过内层 permission;resume 重放结果,不重做副作用 |
| EndConversation | 合格主会话中的两次同名 tool call | reflection state、history boundary、ended marker、abort/terminal state | 辱骂/警告/自伤规则主要在 prompt;硬代码不重新理解语义 |
| Remote routines/runner/notifications | RemoteTrigger、operator tools、queued notification |
routine/run cursor、runner process/assignment、pending/drained/nudge | 控制面快照不等于远端执行成功;通知正文是外部数据且队列有背压 |
| Connector/catalog/MCP operators | Connector/Plugin/Skill/MCP tools | registry/catalog、OAuth scope、live client generation、resource cache | suggestion 不安装;connected 不等于 enabledInChat;refresh 不改已发 request |
| ClaudeDesign/Projects | 动态 Design MCP、attached Project tool | MCP session/catalog、consent/plan/grant、Project docs/budget | DesignSync 不是同一机制;RAG 403 fallback 只给目录;远端写不自动回滚 |
| Auth/account/subscription | auth login/status/logout、/login、setup-token |
credential、account/org/subscription、派生 cache generation | 拿到 token 不等于账号换代完成;本地 logout 不证明远端 revoke 成功 |
| Onboarding/workspace trust | 首次启动、项目扫描、safe/bare/print | onboarding state、persisted/session trust、项目能力 registry | 扫到配置不等于已执行;接受 trust 后还必须重新发现 |
| Thinking/Effort/Fast | settings、slash command、request attempt | thinking shape、effort、service tier、cooldown latch | UI opt-in 不等于最终请求一定携带该字段或服务端一定采用 |
| Usage/cost/credits/limits | API usage、quota header/API、/usage |
modelUsage、cost、limit windows、auto-resume timer | 美元成本与账号额度不是同一个数;reset 不会重放旧工具 |
| Project purge/import | CLI command、preview/confirm、archive manifest | purge/import plan、digest、文件写入进度 | digest 防输入漂移,不提供跨文件事务或自动 rollback |
| Sandbox install/runtime | Windows install/status、每条命令 wrapper | host install state、session initializer、command result | installed:true 和 CLI exit 0 都不能证明动作成功且被隔离 |
| Proxy/CA/mTLS | transport 初始化、407、cert reload、CCR relay | adapter、proxy auth cache、CA store、client identity | 主请求成功不代表 MCP/AWS/WebSocket/OTLP 同样成功 |
| Active Goal | /goal、Agent Loop Stop point |
session goal、Stop prompt hook、blocking counter | 模型声称完成不等于 runtime 允许结束;清目标不回滚副作用 |
| Background model tasks | turn/session events、idle scheduler、feedback tool | recap/summary/suggestion/draft、Auto Dream lock 与 memory | skipTranscript 不等于不发上下文;只有 Auto Dream 改持久 memory |
| Advisor | request-time eligibility、server tool | advisor model selection、server-tool blocks、strip retry | 不是第二个本地 Agent;咨询发生在服务端且增加 token/延迟 |
| Ultrareview | /ultrareview、CLI cloud review |
Git scope、cloud task/event、findings、fix/post consent | 云端 review 不直接改本地;post 只允许一条普通 PR comment |
状态不是都存在同一个地方¶
进程内状态¶
- 当前 Agent Loop 的
messages、toolUseContext、turnCount和 recovery counters。 - streaming tool executor 的待执行队列、并发任务和屏障。
- MCP server/tool generation、工具 schema cache、模型配置 cache。
- permission prompt、hook 执行、abort controller 和后台任务句柄。
进程退出后,这些对象本身消失。可恢复性依赖它们是否已经被投影到 transcript、checkpoint、settings 或外部任务状态中。
会话持久状态¶
- JSONL transcript 中的消息、system event、compact boundary 和 tool result。
- session ID、message UUID、parent UUID、logical parent 和 fork 信息。
- file checkpoint 元数据与可恢复文件内容。
- project/user memory 和 session metadata。
它们让 --resume、fork 和 rewind 有基础,但不会自动保存任何外部系统的事务状态。
外部状态¶
- 文件系统、Git、shell 子进程、远端 API、数据库和 MCP server 自身状态。
- 子 Agent 所在 worktree、后台任务、team mailbox 和任务列表。
- 服务端账户、模型配额、远程 feature/config 和组织策略。
这类状态不受“删掉一条 assistant message”支配。CLI 可以 abort 仍在运行的工具、tombstone 失败分支、恢复本地文件 checkpoint,但不能普遍撤销已经推送的 Git commit、已经发送的消息或已经完成的远端写操作。
同一条执行链怎样处理并发和中途输入¶
模型可以在一个响应中产生多个 tool_use。客户端不必等整段文字流结束才开始工作:一个完整 block 到达后就能进入调度器。只读且并发安全的调用可以重叠;Edit 这类会改变共享状态的调用形成屏障,后面的 Bash 不能越过它去测试旧文件。并发只改变等待时间,不改变每个结果与 tool_use_id 的配对关系。
用户也可能在测试尚未结束时补一句“测试里的旧端口也一起更新”。这条消息进入 queue,不会改写已经发出的模型请求,也不会篡改正在执行的工具输入。客户端在下一次 API call 前吸收它,让模型同时看到测试结果和新的用户要求;如果吸收失败,消息不会被静默丢弃。
这期间,transcript 持续记录逻辑过程,file checkpoint 保存可支持 rewind 的文件状态。若模型请求发生 fallback,失败分支的临时消息可以被 tombstone,但已经完成的文件写入仍需显式恢复。maxTurns=1 也只阻止工具结果之后的下一次模型判断,不会把第一轮已经执行的工具当成没有发生。
这才是“Agent 能执行多步骤任务”的技术含义:模型不必一次规划完美;运行时让它不断获得经过约束的新事实,同时保持调用与结果可配对、任务可停止、失败可诊断。
公开原理与本版本实现怎么对应¶
Anthropic 官方文档把 Agent Loop 描述为“收集上下文、采取行动、验证结果、重复”;工程文章强调 context 是有限资源,工具是确定性系统与非确定性 Agent 之间的契约,多 Agent 通过独立上下文并行探索。它们解释了设计动机,但不自动证明某个版本的 CLI 有某个字段、阈值或调用顺序。
本仓库采用三类正向证据和一类明确边界:
| 层级 | 能回答什么 | 不能回答什么 |
|---|---|---|
| 官方公开主张 | 产品设计意图、概念模型、当前文档行为 | 2.1.235 是否已包含后来新增的实现 |
2.1.235 bundle 静态证据 |
客户端分支、默认值、阈值、状态字段、调用链 | 服务端未下发的值、真实账户策略、未走到的分支结果 |
2.1.235 隔离运行探针 |
精确二进制对给定输入的实际输出和 exit status | 未触发路径、远端依赖、所有平台和账户差异 |
| Boundary | 说明为什么发布物、当前探针或公开资料不足以证明 | 不用“可能支持”填补缺失证据 |
逐项映射见 公开主张与 2.1.235 验证矩阵。30 条 Probe 的命令、输入、literal output、exit status、状态变化和窄边界见 精确二进制运行证据指南。
按问题选择阅读入口¶
| 你想回答的问题 | 先读 | 再读 |
|---|---|---|
| 当前58个能力面哪些是Deep、哪些仍是Documented或外部Boundary | 全面性审计 | 全量能力面 |
| 用户一句话怎样与system、CLAUDE.md/Memory、attachment、IDE/Hook/MCP、文件变化和tools组成最终request | Prompt Assembly | 上下文治理与多层缓存 |
| 代码、prompt、transcript、telemetry、Feedback、Remote、Web/MCP/Hook、Artifact/upload和Voice分别去了哪里 | 全局数据流与隐私 | 遥测、日志与诊断 |
为什么核心参考只有 29 项,bundle 却定义了 80 个 Yi({...}) 注册调用点 |
工具注册与宿主表面 | 核心终端工具逐项参考 |
| 29 项核心终端参考工具分别改变什么状态、怎样失败和恢复 | 核心终端工具逐项参考 | 工具、权限与 Hooks |
| Brief 模式为什么普通文字存在但主视图仍空,附件为何只在桌面可见 | Brief 用户可见输出 | Agent Loop |
| Plan Mode 为什么能读文件却不能实施,批准后怎样恢复权限 | Plan Mode 与人工审批 | 工具、权限与 Hooks |
--json-schema 为什么通过工具调用收尾,fallback 后对象为何会消失 |
Structured Output 与 Schema 合同 | CLI、SDK 与输出协议 |
| REPL 为什么能持久变量和动态工具,又不会在 resume 时重做旧副作用 | REPL 程序化工具运行时 | Agent Loop |
| EndConversation 哪些规则是客户端硬门控,哪些只是 prompt 约束 | EndConversation 风控 | 工具、权限与 Hooks |
| Remote routine、runner 与通知队列分别由谁持有和确认 | Remote Routines、Runner 与 Notifications | 后台、Channels 与 Cloud |
| Connector suggestion、账号 catalog、MCP refresh/wait/resource 各改变什么状态 | Connector/Catalog/MCP Operators | MCP、Agents 与后台协作 |
| ClaudeDesign 的 operation catalog、授权和 Projects 文件/RAG 怎样串起来 | ClaudeDesign 与 Projects | Workflow、Artifact 与 Design |
| 156 个根 settings 字段从哪里来、怎样 merge、由谁消费 | Settings 全字段参考 | Settings、Flags 与 Policy |
| CLI/SDK 的 stream-json、control RPC、event 和终态怎样配对 | CLI、SDK 与输出协议 | Agent Loop |
| Plugin、Skill、slash command 和 LSP 为什么安装后仍可能不可见 | Plugins、Skills、Commands 与 LSP | MCP、Agents 与后台协作 |
| 为什么 Claude 会连续调用多个工具 | Agent Loop | 工具、权限与 Hooks |
| 为什么长会话越来越贵或突然 compact | 上下文治理与多层缓存 | 会话、检查点与 Memory |
| permission、hook、sandbox 谁先决定 | 工具、权限与 Hooks | 风控能力面 |
| Auto Mode 为什么有时直接允许、有时询问、有时 unavailable 后拒绝 | Auto Mode 分类器 | 工具、权限与 Hooks |
| Plugin Eval 的高分是否来自插件,Delta 何时不可比较 | Plugin Evaluation Harness | Plugins、Skills、Commands 与 LSP |
| 终端退出后后台 Agent 谁持有,attach 与 respawn 为什么分离 | Runtime Supervision | 后台、Channels 与 Cloud |
| Enterprise Gateway 怎样串联身份、策略、路由、花费和遥测 | Enterprise Gateway Runtime | 模型、认证与请求装配 |
| 登录后为什么还要刷新组织、feature 和 Remote Control | Auth、账号与订阅 | 模型、认证与请求装配 |
| 不可信仓库何时才允许加载 hooks、MCP、skills 和 helper | Onboarding 与 Workspace Trust | 工具、权限与 Hooks |
| Thinking、Effort、Fast Mode 为什么显示开启但请求仍会降级 | Thinking、Effort 与 Fast Mode | 模型、认证与请求装配 |
/usage 为什么同时涉及 token、美元、额度和自动续跑 |
Usage、成本与 Limits | 遥测、日志与诊断 |
| Purge/import 为什么 exit 1 后磁盘仍可能部分变化 | Project Purge 与 Import | Storage v5 |
| Sandbox status 成功为什么不证明当前命令已隔离 | Sandbox 安装与运行 | 工具、权限与 Hooks |
| HTTPS_PROXY、CA 和 client cert 为什么只对部分调用生效 | Proxy、CA 与 mTLS | Enterprise Gateway Runtime |
/goal 为什么会在模型准备结束时重新启动一轮 |
Active Goal 与 Stop-loop | Agent Loop |
| Recap、summary、suggestion、feedback 和 memory consolidation 是否同一机制 | 后台模型任务与 Memory | 会话、检查点与 Memory |
| Advisor 是否在本地运行第二个 Agent | Advisor 双模型运行时 | Agent Loop |
| Ultrareview 在哪里审查、修复和发评论 | Ultrareview 云端审查 | 后台、Channels 与 Cloud |
| resume、fork、rewind 到底恢复什么 | 会话、检查点与 Memory | 韧性与恢复 |
| MCP 工具为什么会动态出现或失效 | MCP、Agents 与后台协作 | 上下文治理与多层缓存 |
| 子 Agent 是否只是另一个 prompt | MCP、Agents 与后台协作 | Agent Loop |
| fallback 后会不会重复副作用 | 韧性与恢复 | Agent Loop |
| 模型、provider、endpoint 和凭据最终怎么选 | 模型、认证与请求装配 | 上下文治理与多层缓存 |
| settings 为什么不生效、managed policy 能锁什么 | Settings、Flags 与 Policy | 工具、权限与 Hooks |
| TUI、IDE、Remote Control、cloud session 谁持有执行 | TUI、IDE 与远程会话 | 会话、检查点与 Memory |
| 更新、doctor、版本文件和 rollback 怎么区分 | 安装、更新与 Doctor | 韧性与恢复 |
.node 到底被谁调用、能重建到什么程度 |
Native Bridge | 原生重建证据 |
| 字段表里的值是什么意思 | 机器清单字段指南 | 全量能力面 |
| 遥测会记录什么、怎么判断慢在哪 | 遥测、日志与诊断 | 字段指南 |
| 某条 Probe 到底执行了什么、能证明到哪 | 精确二进制运行证据指南 | 结构化证据注册表 |
证据索引¶
- Agent Loop 主状态机:
reverse/javascript/cli.readable.js271550-272424。 - 单工具完整控制管线:
reverse/javascript/cli.readable.js316092-316457。 - Tool Search 与 deferred schema:
reverse/javascript/cli.readable.js114258-114369、156521-156552。 - MCP 动态刷新与循环中途换表:
reverse/javascript/cli.readable.js491915-491964、272372-272382。 - resume 消息图恢复:
reverse/javascript/cli.readable.js323188-323443。 - file checkpoint 与 rewind:
reverse/javascript/cli.readable.js194602-194804。 - 子 Agent 默认与隔离配置:
reverse/javascript/cli.readable.js156505-156518、306930 附近。 - team mailbox 与 task claim:
reverse/javascript/cli.readable.js279171-279317、202474-202511。 - Stop hook 熔断与 maxTurns:
reverse/javascript/cli.readable.js272253-272261、272423-272424。 - Plan Mode 进入、计划、问答与退出审批:
reverse/javascript/cli.readable.js277750-281816、322141-322157、395299-396236、526806-527199。 - Structured Output schema、工具、attempt 与终态:
reverse/javascript/cli.readable.js155369-155532、270482-270507、592685-592774、597607-597884。 - REPL VM、内层工具与结果重放:
reverse/javascript/cli.readable.js292788-294325。 - EndConversation gate、双调用、marker 与终态:
reverse/javascript/cli.readable.js301900-302055、402877-402889、602890 附近。 - Remote routine、runner operator 与通知队列:
reverse/javascript/cli.readable.js291287-291487、297840-298625。 - Connector/Catalog/MCP operators:
reverse/javascript/cli.readable.js154255-154330、296542-296834、298630-299430。 - ClaudeDesign 与 Projects:
reverse/javascript/cli.readable.js214610-214762、299631-301897。 - Auto Mode 权限入口与 classifier:
reverse/javascript/cli.readable.js395392-395501、326151-326177。 - Plugin Eval case/run/grader/report:
reverse/javascript/cli.readable.js445210-448274。 - Daemon、PTY、rendezvous 与 worker respawn:
reverse/javascript/cli.readable.js420733-422667。 - Enterprise Gateway 启动与路由:
reverse/javascript/cli.readable.js625081-627750。 - Auth/account/subscription:
reverse/javascript/cli.readable.js361874-361937、486299-486471、627842-627948。 - Onboarding/workspace trust:
reverse/javascript/cli.readable.js593377-594275、89533-89656、91820-91909。 - Thinking/Effort/Fast Mode:见
thinking-effort-and-fast-mode.md的逐分支源码索引。 - Usage/cost/credits/limits:见
usage-cost-credits-and-limits.md的 cost、quota 与 auto-resume 源码索引。 - Project purge/import:
reverse/javascript/cli.readable.js333321-334186、627978-628459、629343-629623。 - Sandbox install/runtime:见
sandbox-install-and-runtime-enforcement.md的安装链、wrapper 与 exact-binary Probe。 - Proxy/CA/mTLS:见
network-proxy-ca-and-mtls.md的 transport、CA、cert reload 与 CCR relay 索引。 - Active Goal:见
active-goal-and-stop-loop.md的/goal、Stop hook 与 blocking cap 索引。 - 后台模型任务:
reverse/javascript/cli.readable.js268272-270366、584410-584563、295584-296019。 - Advisor:
reverse/javascript/cli.readable.js163403-163507、399749-409965。 - Ultrareview:
reverse/javascript/cli.readable.js204529-205430、508681-508823、628676-628838。
函数名、行号和分支来自发布 bundle 的可读化布局,不是 Anthropic 原始 TypeScript 模块名。跨版本比较应优先比较状态语义、稳定字段、阈值和可达分支,不能把压缩符号改名本身当成功能变化。
核心结论的机器可校验证据合同见 mechanism-evidence.jsonl。validator 会检查文件、真实行数、范围内 anchors、Probe 报告字段、每个 Probe claim 是否进入人类索引、官方来源 manifest、引用逐句命中状态和 excerpt hash;不能再靠“文档够长、出现关键词”通过。