Skip to content

docs(#1445): 条目形状 × fail-open 勘破 —— 命题自洽但对模型面惰性,49 版渲染只换过两次,推荐不做 - #1460

Merged
jinjunnn merged 1 commit into
alphafrom
feat/1445-entry-shape-fail-open
Sep 28, 2026
Merged

jinjunnn merged 1 commit into
alphafrom
feat/1445-entry-shape-fail-open

Conversation

@jinjunnn

Copy link
Copy Markdown
Owner

Refs #1445

第三轮勘破,只答四问,不落闸,不改任何 .ts。把上一版递给 owner 的「条目形状闸」从 fail-closed 换成 fail-open 重问一遍。

结论

  • Q1 「认出条目形状才声称是搜索结果、认不出一律放行」作为传输命题自洽 —— 没有任何输入被拒,渲染变更的代价上限是「少说一句话」。但模型只看 output(packages/opencode/src/tool/websearch.ts:186 → session/message-v2.ts:299;core 侧 toModelOutput 同理),两个分支交给模型的字节逐字相同 ⇒ 它对模型面是惰性的;要让模型对「缺席」有反应,就得把 fail-closed 搬进提示词。价值只剩 UI 与日志两个消费者。
  • Q2 四种真实负载经两份生产 parseResponse 取文本后:D 放行不声称 / Z 放行不声称 / 今日 Exa 声称 3 条 / 今日 Parallel 声称 10 条;D 与 A 可分,D 与 Z 不可分(fail-open 既定)。六条变异臂证明识别器看的是行结构而非恒真恒假。
  • Q3 npm 上 exa-mcp-server 全部 49 个发行版(2024-12-17 → 2026-08-18)的 web_search 渲染只有三代:JSON.stringify(response.data) 324 天 33 版 → 直出 /context 141 天 12 版 → Title: 行 + _meta.searchTime 184 天 4 版(仍在,且就是托管端今天的渲染)。上一版「无底洞」是错的;托管端自己的发版史无法测,npm 史是代理量。
  • Q4 三个候选逐个定价后推荐 ③ 不做:在唯一会被骗的通道上它是空话;识别器在传输文件里就是 startsWith("Title: ") 一类的正文匹配,与在途 feat/1445-no-silent-degrade 的 AC3 源码普查闸(「startsWith 只认 { 与 data: 」)互斥。若 owner 仍要「只记录」那一格,文档末尾写了 AC 形状(按函数名白名单 + 变异臂)。

文档影响

  • 新增 docs/architecture/2026-09-27-exa-entry-shape-fail-open-recon.md(勘破结论;不改上一轮那份,避免与在途 lane 的追加段冲突)
  • 新增 docs/verification/2026-09-27-1445-exa-entry-shape-fail-open/(三个脚本 + 生产路径探针 + 结果;全部离线,不耗 Exa 额度)
  • docs/README.md 加两行索引(插在与在途 lane 改的那一行不相邻的位置)

本地门

见 PR 评论/回报里的真实输出。

主动没做的

  • 没打 Exa 端点;没改生产代码;没碰重写后的 AC1–3(归另一条 lane)
  • 没做「只在认出时给模型加正向前缀」的模型行为实验(判据落在模型策略层,本仓已实测不可复现)
  • 没量托管端 mcp.exa.ai 的发版史(拿不到)

🤖 Generated with Claude Code

第三轮勘破,只答四问不落闸,不改任何 .ts。

- Q1:「认出条目形状才声称、认不出一律放行」作为传输命题自洽(没有输入被拒);但模型只看 `output`
  (websearch.ts:186 / message-v2.ts:299),两个分支交给模型的字节逐字相同 ⇒ 对模型面惰性,
  要让模型对「缺席」有反应就得把 fail-closed 搬进提示词。
- Q2:四种真实负载经两份生产 parseResponse 取文本后:D 放行不声称 / Z 放行不声称 /
  今日 Exa 声称 3 条 / 今日 Parallel 声称 10 条;六条变异臂证明识别器看的是行结构。
- Q3:npm 上 exa-mcp-server 全部 49 个发行版的 web_search 渲染只有三代
  (JSON.stringify 324 天 33 版 → 直出 /context 141 天 12 版 → Title: 行 184 天 4 版仍在),
  上一版「无底洞」是错的;托管端发版史无法测,npm 史是代理量。
- Q4:三个候选逐个定价。识别器在传输文件里就是一条正文匹配,与在途 AC3 的源码普查闸互斥;
  推荐不做,并写出若 owner 仍要「只记录」那一格时的 AC 形状。

证据全部离线(不打 Exa 端点):docs/verification/2026-09-27-1445-exa-entry-shape-fail-open/。

Refs #1445

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@jinjunnn
jinjunnn merged commit 839ce4f into alpha Sep 28, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant