新颖性覆盖
一个只读的、基于搜索的、针对文档形状工件(设计论文、研究文档、规范)的逐个新颖性声明碰撞检测器。它打开了结果轴的新颖性表面,而这一点是cross-source-review (csr)、primary-source-verification (psv) 以及蓝图制作的 researcher 所未能触及的:csr 收敛文档的过程轴,但不搜索先前技术;psv 获取每个被引用的源(向后,被引用),但不搜寻未被引用的先前技术;researcher 为撰写而向前收集源(方向相反)。先前技术搜索是缺失的向后、未引用先前技术的碰撞检查——它针对每个新颖性声明搜索先前技术语料库,并诚实地报告碰撞。
核心定位
基于搜索,而非基于召回
一个 collision / uncited-relevant 发现必须引用从找到的先前技术中获取的引用,而非模型召回。无法引用找到的先前技术文本的发现将被降级为 inconclusive,绝不进行断言。这是承载不变性(工作区规则 3 + L1),由自门控 (NC-I5) 强制执行。找到的文本本身是模型从搜索结果中提取的——比 psv 获取的权威源更弱的预言(参见下面的双层说明)。
逐个声明的碰撞覆盖,而非新颖性判决
prior-art-search 从不发出 novel_confirmed 或“该文档是新颖的”。其唯一的顶层信号是 collisions_under_known_coverage:C 清晰-搜索范围内,N 碰撞,U 未引用-相关,I 无法得出结论的,共 M 个提取的新颖性声明。I 声明(以及 M=0 的情况——无新颖性表面)上报给人类。这是一个诚实的覆盖范围披露,并非新颖性判决。不可约的缺乏证据界限:你无法证明一个否定(“没有先前技术存在”),因此一个零碰撞的文档是“在搜索的语料库中未发现碰撞”,而非“新颖”。一个对称的“新颖性汇聚”技能循环到一个 novel_confirmed 布尔值,这是范畴错误——它将一个覆盖范围披露(“在搜索的语料库中未发现碰撞”)扁平化为一个判决(“新颖”),即,将缺乏证据视为证据缺失;prior-art-search 明确不是这样的。(更广泛的两轴框架——过程×结果——是 spec-gaming 论文 §4.2;prior-art-search 完全位于结果轴上,因此其错误是结果内部的,而非过程/结果的混淆。)
对 csr 和 psv 的补充;单一流水线
prior-art-search 是对 csr(过程轴)和 psv(被引用源验证)的补充;它不与两者中的任何一个合并。与 csr 的同类+异类多轮辩论不同,prior-art-search 是一个单一流水线——提取新颖性声明→搜索先前技术→每个声明碰撞判决→覆盖范围披露。预言是可搜索的先前技术语料库,而非异类模型,因此它不移植 csr 的异构基础。psv 和 prior-art-search 组合:一个高风险的文档可以运行 psv(被引用的来源准确吗?)并且运行 prior-art-search(新颖性声明是否与可找到的先前技术无碰撞?)。它们不合并。
双层预言弱点,诚实陈述(工作区规则 3)
prior-art-search 的预言是可搜索的先前技术语料库,比 psv 获取的主要源弱,在两层上(承载诚实的说明,提案 §3 / ADR §8 Q4):
- 比较侧弱点(与 psv 共享)。 声明与先前技术的比较是模型判断的——
clear-under-search意味着模型未发现碰撞,而非不存在。这是 psv 的第 2 层部分比较弱点。 - 选择侧弱点(prior-art-search 自身)。 搜索结果在选择弱点之上增加了比较弱点:排序偏差、召回限制(你无法搜索整个语料库),并且找到的先前技术文本本身是从搜索返回中模型提取的,而非获取的权威字节范围。
所以 prior-art-search 在两层上更弱,而不是“弱预言 vs 强预言”。这正是为什么它从不出 novel_confirmed 以及为什么其顶层是一个覆盖范围声明,而不是一个判决。clear-under-search 意味着“在搜索的内容中无碰撞”,而不是“新颖”。更弱的预言是在人类介入之前新颖性检查的不可约极限。
两个盲点,诚实陈述(工作区规则 3)
prior-art-search 自身模型执行的步骤携带了被披露而非隐藏的盲点:(1) 新颖性声明提取继承了提取器的盲点——作者或提取器均未识别为“新颖性”的声明不在 M 中;(2) 声明与先前技术的比较是模型判断的——clear-under-search 意味着模型未发现碰撞,而非不存在。C/N/U/I/M 计数是条件性的,基于被提取、搜索和比较的内容,而非完整性保证。异类提取分支是推迟的缓解措施(部分)。
范围
- 纳入:从文档中提取原子新颖性声明(每个:位置 + 搜索目标);针对每个声明搜索先前技术语料库;发出基于获取的先前技术引用的每个声明碰撞判决(碰撞/未引用相关/清晰-搜索范围内/无法得出结论);发出碰撞记录(
collisions_under_known_coverage)+ 碰撞发现包。 - 排除:代码审查(
parallel-development);规范/架构设计撰写(blueprint-crafting);文档过程汇聚(cross-source-review);被引用源验证(primary-source-verification);研究收集(blueprint-crafting researcher);新颖性判决——无论文档的新颖性是否真实或重要——(人类)。
范围守卫(入口检测)
- 交付物是源代码/测试代码 → 路由至
parallel-development。 - 交付物是撰写/重写规范、架构设计、迭代计划或研究 → 路由至
blueprint-crafting。 - 请求是“对该文档进行对抗性多轮审查以达到汇聚” → 路由至
cross-source-review(过程轴)。 - 请求是“该文档的被引用声明在其来源中是否成立?” → 路由至
primary-source-verification(psv = 向后-被引用;prior-art-search = 向后-未引用)。 - 请求是“该文档是否夸大新颖性——与它未引用的先前技术发生碰撞?” → prior-art-search(本技能)。
- 请求是“这新颖/重要/是正确贡献吗?” → 结果轴,仅限人类。
守卫是软性的(提醒 + 路由,而非拒绝)。阶段 A 依赖于显式调用(/prior-art-search)。
快速开始
你是编排者。各分支是只读的;驱动程序运行单一流水线(不是多轮辩论)。按顺序运行。
-
框架——识别工件及其新颖性表面。列举核心新颖性声明(要碰撞检查的承载“X 是新的/首个/没有先前技术”断言)。声明范围。
-
新颖性声明提取 (NC-I2) —— 生成
solidforge:novelty-claim-extractor(新上下文);它读取工件并列举原子新颖性声明,每个都绑定到一个位置和搜索目标。原子 = 每个声明一个新颖性命题(复合拆分)。新颖性声明是对新事物的断言(“X 是一个新框架”,“Y 是第一个做...”,“Z 没有先前技术”)。要区别于事实/引用声明(psv 的领域——验证,而非碰撞检查)和解释性声明(“这很重要”——不可搜索裁决;上报给人类,标记为不允许)。(提取器盲点说明:双方均未识别为“新颖性”的声明不在 M 中。) -
多源搜索 + 碰撞判决 (NC-I3) —— 针对每个新颖性声明,搜索先前技术语料库(arXiv、网络、公共仓库)以寻找已经做出该声明的工作,然后将声明与找到的先前技术进行比较并分配以下之一:
collision— 找到的先前技术已做出此声明(文档的新颖性被夸大);引用冲突源 + 引用找到的先前技术文本(严重性blocker;evidence必须引用找到的先前技术)。uncited-relevant— 找到文档未引用的相关工作(非直接碰撞,但覆盖范围有缺口);引用找到的先前技术(严重性warning)。clear-under-search— 在搜索的语料库中未发现碰撞(不是novel;只是未出现碰撞)。仅计数,不作为发现。inconclusive— 搜索无法涵盖该声明(付费语料库、模糊查询、找不到任何内容);上报给人类(严重性coverage)。 开放源(arXiv 摘要、公共仓库)无需凭证即可搜索;网络搜索 API 使用一个单独命名的 HTTP 接口(不是 csr 的_ANTHROPIC_AUTH_TOKENLLM 令牌命名空间——参见 install.md)。(比较盲点说明 + 选择侧弱点。)
-
覆盖范围披露 (NC-I4) —— 发出一个
collision-record:collisions_under_known_coverage= C 清晰-搜索范围内 / N 碰撞 / U 未引用-相关 / I 无法得出结论,共 M = C+N+U+I 个提取的新颖性声明;加上一个碰撞发现包(碰撞/未引用相关/无法得出结论的发现;clear-under-search声明被计数,不列出)。M=0(无可提取的新颖性声明——一个未做新颖性断言的文档,或所有新颖性声明都是解释性的)和 I>0 均上报给人类。从不novel_confirmed。一个没有获取引用的碰撞/未引用相关发现被降级为inconclusive。
诚实的信号是覆盖范围披露——确切搜索了什么、什么发生了碰撞、以及什么无法被覆盖。文档是否真正新颖仍然由人类决定。
权威链
docs/proposal.md= 权威设计(主;CSR 过程轴实质性汇聚 + psv N=9/K=0 已验证,2026-07-31)。docs/iteration-plan.md= 执行蓝图(阶段 A 工作项 NC-I0–NC-I6;冲突时,proposal.md 优先)。docs/design-decisions.md= ADR 日志(非显而易见的决策:永不-novel_confirmed、单一流水线-非-辩论、假阳性结构代理、双层搜索预言弱点、与 psv/researcher 的关系、凭证表面)。docs/proposal.convergence.md= 提案的交叉审查痕迹。
与 cross-source-review / primary-source-verification / blueprint-crafting / parallel-development 的协调
cross-source-review保持为过程轴汇聚引擎。prior-art-search 是补充的且非合并的:csr 的substantive_converged并不意味着 prior-art-search 的覆盖范围,反之亦然。primary-source-verification是互补的结果轴分支。psv = 向后-被引用(获取每个被引用的源);prior-art-search = 向后-未引用(搜索文档未引用的先前技术)。它们组合(一个文档可以运行两者);它们不合并。prior-art-search 重用 psv 的模式字段模式(碰撞发现扩展了 psv 的文档发现——严格超集)以及install.md凭证推理——复制模式,非代码(工作区规则 7)。blueprint-crafting保持纯粹(过程轴)。其researcher是向前收集(“寻找关于 X 的源以进行撰写”)——与 prior-art-search 的向后碰撞方向相反。它们不合并。parallel-development拥有代码审查。prior-art-search 是文档形状的,而非代码形状的。files_touched边界:本技能拥有prior-art-search/+ 仓库根目录下的agents/novelty-claim-extractor.agent.md(镜像 psv 的solidforge:claim-extractor)。它不修改 csr、psv、bc 或 pd 核心逻辑(prior-art-search 是补充性的)。术语(工作区规则 10):collisions_under_known_coverage是唯一的顶层术语;novel_confirmed是禁止术语,绝不出现在发出的字段中。
自检(完成定义)
成熟度说明(阶段 A 构建): 所有以下自门控均已部署并通过绿色测试(NC-I0–NC-I6 已汇聚;
docs/iteration-plan.run-record.json携带判决)。实时的 N≥3 狗粮运行于 2026-08-01 在 3 个真实工件上,包括长的 spec-gaming 论文——覆盖范围概况在 dogfood-run-2026-08-01.md:通过获取的先前技术浮现了 2 个未引用相关发现(spec-gaming NC34 ↔ SWE-ABS;psv NC2 ↔ AI-Powered Citation Auditing),并且已知的自我认证悖论碰撞在仅 arXiv 预言下返回了清晰-搜索范围内——在实践中展示了双层弱点(零碰撞结果是“在搜索的内容中无碰撞”,非“新颖”)。离线的dogfood.py门控仅涵盖规范夹具(当无网络时的规则 1 跳过路径)。剩余的延迟:异类提取分支(提取器盲点的部分缓解)。名称prior-art-search是提议的,待人类锁定(提案 §8 Q1)。
当任何自检失败时,技能变更不算完成(工作区规则 1)。提交前运行:
python3 skills/prior-art-search/infra/test/disconnect_check.py # 结构 + 加载链
python3 skills/prior-art-search/infra/test/plugin_layout.py # plugin.json + agents 格式正确
python3 skills/prior-art-search/infra/test/findings_shape_check.py # 每个发出路径 → 碰撞发现 + 碰撞记录有效
python3 skills/prior-art-search/infra/test/coverage_policy_check.py # 计数总和 M=C+N+U+I;M=0/I>0 上报;无 novel_confirmed;获取引用不变性
python3 skills/prior-art-search/infra/test/fetched_quote_gate.py # 每个碰撞/未引用相关发现引用获取的先前技术文本;无引用 → 无法得出结论(L1/规则 3 不变性)
python3 skills/prior-art-search/infra/test/lint_self.py # 狗粮:检查本技能自身基础设施(ruff)
python3 skills/prior-art-search/infra/test/dogfood.py # 在一个带有预设碰撞的夹具文档上运行流水线(无网络时优雅跳过;记录日志替代)
参考文件
- proposal.md — 权威设计(问题、非目标、自有合约、分层、§8 决策)。
- iteration-plan.md — 阶段 A 执行蓝图(NC-I0–NC-I6、DoD、DAG、...)