适用于环境清单的丰富捕获¶
Issue: https://github.com/morluto/rea/issues/4933
结果¶
足够大以容纳丰富应用状态的捕获可以投影到环境清单中,使其工具列表保持在模型提供商可接受的范围内。有两项更改:
inspect_analysis_view接受第三种来源:{"kind": "evidence-file", "path": "<absolute path>"}。REA 读取一个已完成的 Evidence JSON 文件,对其进行认证,并像投影已保留的 Evidence 一样进行投影,因此其字符串由文件读取器限制,而不是作为内联输入计费。- 环境清单视图增加了一条可选模板规则
sibling-pair-variance,该规则在复数字面量之后对两个相邻的字面量段进行模板化,例如/repos/{owner}/{repo}/…。
要求¶
evidence-file的路径必须是绝对路径,且不含 NUL 字节;CLI 在验证前会将相对路径解析为相对于工作目录的路径,MCP 客户端则传递绝对路径。- 该文件通过共享的 JSON 文件读取器读取(包含常规文件、堆和字符串长度保护),并解析为完整的 Evidence。文件缺失或不可读会抛出
EvidenceFileError;不是完整 Evidence 的 JSON 属于无效输入,在source.path下报告。 - 在 MCP 上,读取遵循请求的取消状态和服务器的资源范围,因此失败的描述符关闭仍归发起方所有,以便重试;在认证之前、投影之前或投影期间被取消的请求会返回类型化的取消结果,且不记录任何内容。认证会复制并对已解析的 Evidence 进行哈希;在此之前的阶段,REA 会检查活动堆的剩余空间能否容纳这些副本,否则返回
resource_constraint。 - 文件来源投影的内容与同一 Evidence 以内联或保留方式投影的内容完全一致,并具有相同的父 Evidence ID、视图参数和结果。
- 同步投影 API 会以类型化的能力错误拒绝未读取的
evidence-file来源;CLI 和 MCP 适配器会先读取文件。 sibling-pair-variance仅在列出时生效,且排在sibling-variance之前,因此单位置合并不会先对一对中的一半进行模板化。它比较的组在方法、来源和段数上相同,唯一可不同的是两个相邻字面量位置;这两个位置位于索引 2 或更靠后,前面有复数字面量,后面有另一个字面量(尾随对,如/users/alice/followers,命名的是子资源而不是命名空间和名称)。只有当某个桶至少包含三个不同的对,且两个位置都有变化时,它才会合并该桶。停用词和v1风格的版本永远不会符合条件;超过 32 段的路由不会进行比较,并带有一条说明该限制的备注。- 其参数根据复数字面量命名:先是单数形式加
_namespace,然后是_name,并标记为sibling-pair-variance。
非目标¶
- 不改变 96 MiB 的投影预算,也不改变内联准入。
- 不改变
sibling-variance;pair 是单独的规则,因此每个推断出的参数都会继续以生成它的规则来命名。 - 不推断复数字面量之外的语义名称(
owner、repo)。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea