RFC:外部证据研究能力 v0¶
- 状态:已接受
- 替代 / 关闭:无
- 范围:provider-neutral 的研究规划、provenance 准入、投影与退休
- 路线图:S8 能力与领域集成
- 语言说明:本文件与 English 语义镜像;语义漂移属于缺陷。
问题¶
LoopX 已有 host 研究方法、connector 库存、provider 生命周期、managed Turn 合同和
下游证据消费者,但它们仍是分散的。一条 registry 记录可以显示 supported,却不能
证明 provider 已安装、已启用、ready、被真实调用或被父 Agent 采纳。反过来,host
研究方法也可能产出高质量证据,但没有可供其他 LoopX caller 检查的类型化回执。
产品需要的是一个结果能力,而不是通用 connector executor:把面向决策的研究问题 转换成 provenance、准入、消费与退休均可观察的紧凑证据。
决策¶
新增 external-evidence-research capability,协议为
external_evidence_research_v0,生命周期为:
discover → select → provider execute → provenance receipt → parent admit/reject → downstream projection → retire。
请求必须声明对象、用户活动、决策、证据类型与约束。只有当前读回同时证明
declared、installed、enabled、ready 的 provider 才能被选择。provider
分为 method 与 connector;执行仍归各自既有 owner。
Discovery 是只读类型化投影。它报告 method/connector 数量、ready/unavailable 数量和
ready provider id,并携带显式真值合同:registry presence 与 supported 都不等于
readiness,discovery 本身既不证明 provider 已执行,也不证明已有证据覆盖。
Provider 执行仍归既有 method 或 connector owner。Core 的 receipt 边界把返回身份和
provenance 与精确 ready plan 绑定,只记录“已观察到 caller 提交的 receipt”,并不证明
provider 真实执行,也不宣称证据完整、已被采纳或可自动晋升。执行失败或空证据时,
对 caller 的原始来源路径保持 fail-open。
plan 通过内容寻址的 plan_id 绑定规范化请求、provider candidates、已选 ready
provider 与 execution envelope。provider 回执必须回传该 plan_id;Core 只有重建
canonical plan 并验证 digest 后,才能报告 receipt observation 或进入准入。该 digest
能检测 plan 语义被改写,但不授予任何 provider 权限,也不构成 provider attestation。
回执绑定该精确 plan、完成时间与完整回执 digest。每条被采纳来源都包含直接且非文件型引用、来源
家族、证据基础(stated、observed、tested 或 inferred)、发现、局限、相关
日期和内容摘要。Core 投影永不携带 provider 原始内容。
父 Agent 必须显式采纳或拒绝。拒绝后可以退休;采纳后必须等下游读回覆盖全部被采纳 source ref,才能退休。admission id 对完整规范化 admission 与下游投影做内容寻址; retirement 必须重建并验证该身份后,才可判断覆盖。
所有权与 TypeScript 迁移¶
本切片遵循 TypeScript 迁移 RFC,但不宣称整个控制面已 promote。纯类型化决策由 TypeScript 拥有,并通过既有 effect runtime 暴露;Python 仅拥有 CLI 参数、本地 JSON 输入与 transport。本 PR 不删除现有 connector 路径,也不建立第二份持久权威。
Connector registry 继续只拥有库存与遥测。supported 绝不映射为 ready=true;只有
显式 provider 生命周期观察,才可覆盖同 provider id 的 inventory-only 行。
产品入口¶
- CLI:
external-evidence discover|plan|execute|receipt|admit|readback|retire; - Managed Turn:复用五个 typed effect-runtime 方法;显式 provider 执行与账本投影 使用能力的 CLI owner;
- Frontend/Lark:现有会话答复/报告和 Markdown 运输渲染同源校验回读, 不建立独立 registry 或生命周期。
验收¶
- inventory-only connector 不可被选择;
- discovery 能区分 empty、inventory-only 与 ready 库存,且不冒充执行或证据覆盖;
- method 与 connector provider 使用同一协议与回执;
- 已观察 provider 回执必须绑定精确 plan,且不得冒充经认证的执行、证据覆盖、采纳或晋升;
- 请求目标、决策、约束、provider readiness 或 execution envelope 被改写时,
canonical
plan_id验证必须 fail closed; - 过期请求/provider 身份、文件 provenance、未知证据基础均 fail closed;
- 被采纳 source ref 必须是回执来源的子集;
- disposition、来源或下游投影被改写而与完整 admission identity 不一致时,retirement 必须 fail closed;
- 全部被采纳来源完成下游覆盖前不得退休;
-
CLI 与 effect-runtime TypeScript 测试在源码 checkout 中通过。
-
检查点已移至执行账本:公开 GitHub 方法交付检查点(2026-10-02)。
非目标¶
- 通用浏览器或搜索引擎;
- provider 凭据存储;
- 原始页面/逐字稿持久化;
- 自动采纳证据;
- 交易、发布或其他下游 effect 权限;
- 把注册或使用计数当作证据质量证明。
附录 A:执行账本¶
带日期的交付记录见逐条执行账本。