跳转至

更广泛的环境状态覆盖与工具描述

Issue: https://github.com/morluto/rea/issues/4933

成果

environment-state 视图为更多读取工具提供状态支持,且被提供的环境会向代理说明关于每个工具的更多信息。响应不是实体的只读路径会成为文档;列出的条目可通过 …Id 或 …_id 字段标识;包裹在单元素数组中的条目定位在该数组内部;随路径变化的读取会获得各自的记录原因。每个工具描述都说明工具返回什么以及记录了哪些状态,并且每个 MCP 工具都携带方法提示。此增量不新增工具、视图种类、提供方、网络活动或写入效果。

要求

GET 列表工具(其模板不以参数结尾)若未生成任何条目或列表计划,则在其初始读取只有一行请求时,将其最新的初始值保存为 document,无论捕获是否写入其路径;除非其值在任意已记录写入(即使在其他根路径下)前后的两次读取之间发生了变化,此时保持为 fields-differ。渲染后的 JSON 超过 256 KiB 的值保持 rendered-oversize,并从已记录的请求体(其本身未超限)重放。更多请求行在路径不同(模板在结尾前有参数)时给出 path-varies,共享同一路径时给出 query-varies。由于此类读取现在都为文档,path-varies、query-varies、body-unusable 或 rendered-oversize 使得不可达的 not-entity 原因从结果模式中移除,no-identity 仅用于命名条目工具。文档持有其唯一 path 的值。

当没有路径参数证明身份且没有身份名称能标识列出的条目时,field-name 身份是第一个列出条目中按顺序排列的第一个这样的键:名称以 Id 或 _id 结尾、每个条目都将其作为不同的字符串或数字携带、并且至少一条初始记录显示其在两个或更多条目中不同。最后一个条件超出了“每个条目都将其作为不同值携带”:单个条目空洞地满足该条件,且单个条目的后缀命名字段通常是外键(按用户关联的反应,按文章关联的评论),因此只包含过一个条目的列表保持为文档。空记录不限制任何字段。身份名称保持优先权,在从信封的各数组中选择时也是如此;后缀命名字段仅标识包含两个或更多条目的数组。

当对象中的身份名称之一重复路径值时,恰好包含一个对象的根数组、或一个成员持有此类数组的对象,将其实体定位在 /0 或 /<member>/0。位于根处或单个成员中的对象保持优先。at 和 replaceAt 除根和单个成员外,恰好读取和替换这些形式,因此门控和渲染器保持不变运行。

实体的状态顺序是其集合的应用顺序列表中首个完整出现的行上的位置,否则是时间线上最早出现的位置(参见状态视图);它按时间线顺序引用其记录,无论哪个计划最先观察它。

每个工具描述在不可信目录警告之后呈现为 METHOD template; <returns>; recorded statuses …; replays retained records […]; evidence ev_…。<returns> 将第一条被引用的 2xx 记录以 JSON 重放的答案描述一层深度:对象的字段、对象数组的字段,或成员列出对象的信封,其中列表是按状态的列表规则找到的对象数组;空字段集显示为 with no fields。仅当没有 2xx 记录以 JSON 重放时,另一状态的第一条被引用的 JSON 记录才提供该描述,标记为 status <code> returns …;若没有 JSON 记录则省略。这些状态即清单工具的 statuses,清单工具是该集合的唯一所有者(为空时显示 no recorded status)。字段名称和状态在描述采样预算内抽样,并在保留之前将整个描述计入目录预留空间。环境源中的唯一所有者将每个保留的请求体分类为 none、base64、cut、JSON 或 text;该分类下的重放答案和描述仅读取其 JSON 情况。

MCP 工具携带 readOnlyHint(对于安全方法 GET、HEAD、OPTIONS 和 TRACE 以及查询 POST 为 true)、destructiveHint: true(用于 DELETE;其他写入不设置,因此应用 MCP 默认值;读取同样不设置,客户端会忽略)、idempotentHint(对于安全方法、PUT 和 DELETE 为 true)和 openWorldHint: false。工具定义拥有这些提示并将其计入目录预留空间;环境卡片保持其 name、description、inputSchema 工具结构。

验收与限制

合成捕获覆盖只读文档、path-varies 和 query-varies、后缀命名身份及其键顺序、其双条目证明、空初始记录及其优先级(包括信封各数组之间的选择)、尾部斜杠路径下类似 Ghost 的 {"posts":[...]} 条目与其列表视图合并、根单元素数组、保持未标识的单元素过滤列表,以及指针形式。Grafana 形状的测试夹具覆盖其只读路径的文档(包括其中的单成员团队列表)以及对象、数组和信封列表描述;合成源覆盖 2xx 相对于较早错误体的优先选择、多条 JSON 记录中的第一条、带标签的回退、清单的状态、空体、标量体和无字段体、截断的成员名称、JSON 引号超出采样的名称、记录体不足 256 KiB 但其渲染 JSON 超出该限制的体、非 JSON 体以及目录预算;进程内和已编译的 MCP 服务器公布这些提示。

过滤后的列表仍可能以身份名称重复请求值的单个元素应答;列表过滤、分页、无损大整数和跨端点实体链接仍不在范围内。文档内联完整的记录值并扩大状态结果;状态和描述构建过程中的代理令牌数、CPU 时间和峰值内存未测量。

延期问题标准

在从状态提供服务时,AgentEnv 数据平面和写入效果仍属于 #4933 的后续增量。此 PR 必须引用(reference)该 issue,而不是将其关闭。

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