跳转至

验证

已验证基线:7a668b73f4783b42eb0e8ce1eeff079f86d53e22(environment-state view 分支)。

在实现工作树上执行,使用其现有的锁定安装,环境为 Node.js v22.23.1(仓库固定为 24.18.0,但该版本不可用);在最后一次源代码更改之后,本次运行中的以下所有检查均按原样执行。

  • npm run format 然后 npm run format:check:通过。
  • npm run check:fast:类型检查和 lint 通过(3959 个文件,无错误)。受影响的文件带有两个 lint 警告,这两个警告在基线版本中均已存在:environmentReplay.ts 中的 max-params 和 environmentCapacity.test.ts 中未使用的 _。
  • npx knip:通过(退出码 0)。
  • npm run jscpd:3348 个文件中 3.40% 的重复行,低于 3.5% 的门槛。触及已更改测试文件的三个克隆与基线版本中的块配对相同;没有一个涉及此更改添加的代码。
  • npm run scan:todos:无标记。
  • npm run docs:check:构建的文档检查和 README 一致性符合性测试(5 个测试)通过。
  • npx vitest run --project domain --project services:341 个文件,5859 个测试通过,5 个预先存在的跳过。
  • npm run build:cached:通过。
  • npm run test:focused -- 针对 environment serve 适配器和容量测试、environment serve MCP 边界、environment serve 和 export CLI 边界、environment serve 关停进程边界、analysis-view MCP 和 CLI 边界、compact input-schema 契约和 MCP 边界、tool-schema 有效性边界、analysis-detail 和 advertised-input-example 契约以及 qlog 验收测试:14 个文件,113 个测试通过,1 个预先存在的跳过。

真实捕获(测试套件之外):内置视图通过应用服务在相同的 44 个录制捕获(39 个 HAR,5 个浏览器场景)上运行,使用全部三条模板规则,每次耗时 7 到 50 毫秒。42 个产生了状态,同样的两个浏览器场景捕获与基线版本一样因 resource_constraint 被拒绝。基线列是简报的基线,同一脚本在早先一次运行中在基线构建上复现了该基线;本次运行未重建基线。

指标 基线 本次更改
类型 568 576
实体 2,213 2,246
文档 2 299
项视图 211 213
列表视图 497 504
文档视图 2 299
有状态支持的读取工具(共 1,258 个) 710 1,016
已记录:not-entity 306 (已停用)
已记录:no-identity 129 32
已记录:path-varies (新增) 32
已记录:query-varies 5 69
已记录:body-unusable 32 32
已记录:list-differs 31 31
已记录:no-init-recording 26 26
已记录:query-body 12 12
已记录:fields-differ 3 4
已记录:envelope-varies 4 4

七种列表类型获得了后缀命名的标识(permissionId、product_id、ItemId、user_id、channel_id、spl_id 和 eventId)。另有七种在两项证明之前曾拥有该标识,但后来失去了,因为每个初始响应都只列出了一个条目:一个 Airbyte 组织、一个 Mattermost 反应和团队成员资格,以及一个 Redpanda 代理和模式引用变成了文档;一个 NOAA 站点读取是 query-varies,一个 Redpanda 消费者读取是 path-varies。两个 Ghost 项目工具从 /members/0 和 /tags/0 渲染。第三个 Ghost 项目工具位于 /posts/0,但仍为 fields-differ:其录制内容因一个 include 查询而不同。

状态结果大小,即每个 Evidence 的 JSON 长度在 42 个状态上的总和:基线版本为 2,677 KiB,现在为 3,196 KiB(+19%),由同一脚本测得。每个捕获中增长最大的是 Metabase(133 到 236 KiB)、Directus(21 到 93)、Redpanda Console(26 到 68)和 Vault(9 到 43)。文档现在占结果中 3,274,243 个 UTF-8 字节中的 492,516;基线版本只有两个。未测量状态视图的 Agent tokens、CPU 时间和峰值内存。

44 个捕获清单上的工具描述:全部 44 个目录都在其预留范围内获得准入。1,400 个工具中有 1,336 个说明了它们的返回内容:1,333 个来自 2xx 记录,另外三个标记为其他状态(Miniflux 和 NocoDB 404,Shlink 501),因为它们的记录没有一个是作为 JSON 成功的。概要摘要为 1,185,893 字节的名称、描述和输入模式目录增加了 261,502 字节(中位数 136,95 分位数 554,每个工具最大 1,133 字节);五个达到了字段样本上限(一个 Keycloak、一个 Lychee 和三个 Sentry 工具,字段数为 46 到 105)。MCP 注解为 tools/list 增加了 113,182 字节,为卡片则无增加。在源码加载后,构建一个目录的中位耗时 1.6 毫秒,最多 7.6 毫秒(Metabase)。未测量描述构建的 Agent tokens、CPU 时间和峰值内存。

在合并 environment state view 的审查修复(其分支位于 6ad63bcc,该分支也引入了 main 的 evidence 文件来源)之后,所有门禁在合并后的树上再次运行:npm run check:fast、npm run format:check、npx knip、npm run scan:todos 和 npm run docs:check 通过;npm run jscpd:3362 个文件中 3.39% 的重复行;npx vitest run --project domain --project services:344 个文件,5914 个测试通过,5 个预先存在的跳过;npm run build:cached,然后 npm run test:focused -- 针对 serve 和工具定义适配器、serve MCP 和 CLI 边界、export CLI 边界、analysis-view MCP 和 CLI 边界、compact input-schema 预算以及 analysis-detail 和 advertised-input-example 契约:10 个文件,98 个测试通过。

在合并后的代码上重复了真实捕获对比,基线是在未包含此变更的合并状态视图上测量的:全部 44 个捕获现在都会产生一个状态,1,277 个读取工具中有 1,011 个由状态支持,而基线为 625 个(其中条目视图 216、列表视图 416、文档视图 379;基线分别为 214、409 和 2)。记录到的原因:no-identity 从 216 降到 32,not-entity 从 310 降到 0;query-varies 从 5 增至 76,path-varies 为 36,这两类都是在多个查询或路径下的文档读取;list-differs 35、body-unusable 33、no-init-recording 28、query-body 12、envelope-varies 4 保持不变,fields-differ 从 9 变为 10。

此处未涵盖:从状态提供服务、AgentEnv 数据平面以及写入效果,这些将在后续增量中介绍。

squash 到 main 之后

state-serve 分支合并(166fb082)后,本分支被 squash 到 main 上。与将先前 head 合并到该 main 的合并结果相比,squash 保留了每个冲突的两侧内容,并且不会丢弃本分支的任何内容。随后有两个测试在它上面失败,并通过 2a926a0a 中的 oversized-document 修复重新调整:这个针对超出发现预算的状态目录的 bundle 测试使用了 300 个读取工具,恰好处于这样一个窗口内:状态目录在此窗口内被拒绝,而带有响应摘要的 replay 目录仍然适合(通过探测为 280–320);rea-state 验证测试则根据状态持有的文档数量来命名推送的文档。replay-only 卡片测试原来固定的是 main 上 11,131 字节的卡片;现在固定的是本分支 12,818 字节的卡片,其描述为每个工具记录到的响应命名。随后该分支在 d7ca93cc 处合并了 main,没有冲突。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea