来自 Web 网络捕获的环境清单视图¶
Issue: https://github.com/morluto/rea/issues/4933
结果¶
inspect_analysis_view 接受 view: {"kind": "environment-manifest"} 用于保留的 HAR Evidence,并将主要来源记录的请求行投射到可重放的工具表面:确定性工具名称、路径模板、参数、观察到的查询名称、无值的请求体形状、状态和 content-type 集合及记录指针,包含排除的组、三个固定的未知项和共享的投射表示预算。此增量仅添加视图类型;从清单中提供和导出 agent 环境是后续增量。
要求¶
- 仅接受
inspect_web_network_captureHAR 父项;拒绝原生 mitmproxy、SAZ 和 qlog 父项,以及其 Evidence 未记录sensitive_value_count: 0的父项,并使用与 api-surface 视图相同的类型化不支持错误。 - 在没有 opt-in 规则的情况下,每个工具模板必须与同组的 api-surface 模板相同;四个格式规则始终以
basis: inferred应用。 - 仅在列出时应用
after-uid-literal、opaque-token和sibling-variance,每个最多一次,按该顺序。选中sibling-variance时,将其比较范围内的字面量同级项折叠到现有的 opt-in 参数中,除非它们是停用词,以最先记录的为准。仅使用opaque-token时,非不透明字面量仍作为单独的工具。绝不要将字面量折叠到格式规则参数中,也不要将停用词模板化;sibling-variance比较最多 32 个段的路由,清单会在路由超过该限制时说明。 - 从方法和路由字面量确定性地派生工具名称,最多 60 个字符,在一个清单内唯一。
- 当工具最早记录携带 JSON 类型的请求体时,从该记录派生
POST、PUT和PATCH的body_shape,仅作为顶层键类型而不遍历嵌套值;不要在结果中的任何位置复制头部、cookie、查询或请求体值。 - 将记录列为指针(
ordinal、method、path、status、content_type),并将排除的组列为原因other-origin、ui-page-or-asset或non-json。一个写组(POST、PUT、PATCH、DELETE),如果其每个响应都没有响应体(204 或 205、空文本或记录大小为零)且至少有一个成功,则无论其 content type 如何都会保留:空回复就是其答案。仅缺少响应体文本本身不算数,因为可能是捕获未保留的响应体。 - 每当任何工具或排除的组被模板化时,将 Evidence 标记为 inferred,否则派生;保留父项的权威。
- 在分配之前接纳捕获克隆、内联信封、每个保留的指针、组、路由部分、观察值、查询名称和 body-shape 键,并将 body 解析计为临时字节,在现有 96 MiB 预算内。
验收与限制¶
一个源拥有的 Grafana 形状 HAR 夹具(两个来源上的 28 个记录交换)驱动 domain、service、MCP、CLI 和验收覆盖。没有规则时,模板等同于 api-surface 分组;使用全部三个规则时,夹具产生 /api/dashboards/uid/{uid}、/api/folders/{uid} 折叠 general、/api/plugins/{plugin_id}/settings 和 /api/datasources/uid/{uid}/health。一个已发布的契约示例通过真实解码器和视图服务从夹具字节逐字节复现。该视图不执行任何网络活动且不重放任何内容;它不建立处理器身份、模式、授权或状态转换。
延后问题标准¶
通过可流式 HTTP 提供清单、从清单导出 agent 环境以及托管验证通道是 #4933 的后续独立增量。此 PR 必须引用而非关闭整个问题。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea