NeurIPS用AI检测:说我的论文是AI生成的
2026-06-22 3362907
2026-06-22 0
处理一个复杂任务,系统必须完成三件性质截然不同的事——理解拆解、分配执行、监控验证——缺一不可,且顺序无法颠倒。

这不是方法论的选择,而是信息论上的必然:
| 阶段 | 职责 | 时机 | 核心产物 |
|---|---|---|---|
| 理解与拆解 | 解析用户意图 → 拆解为子任务 DAG → 识别依赖关系 → 输出 agent 需求清单 | 事前 | 任务 DAG + agent 需求清单 |
| 分配与执行 | 匹配垂类 agent → 装填蒙版 → 并行调度 → 异常捕获 | 事中 | 执行状态流 + 中间输出 |
| 监控与验证 | 进度心跳 → 验证门判定 → 阻碍识别 → 置信度审查 → 回溯修复 | 事中 | 验证报告 + 合格输出 |
用户不关心系统内部的调度细节,但他们需要在两个关键时刻介入:一是确认系统理解了自己的意图(交互1),二是确认 agent 的分工是否合理(交互2)。其余时间,用户等待最终交付。
交互1:用户输入问题 → 系统输出工作流 + agent 清单
交互2:用户审核方案 → 调整/确认 agent 边界与编排逻辑
交互3:系统装填蒙版 → 执行 → 交付工作成果
交互2 的设计意图:交互2 是用户修改系统理解的最后窗口。一旦确认,执行阶段的方向修正成本极高。这一次交互展示的是 agent 清单(每个 agent 的职责边界、蒙版摘要、输入/输出规格),而非代码或底层实现细节。用户需要能看懂并能给出有效反馈。
交互3 内部的回溯闭环:执行中发现的阻碍,优先在交互3 内部通过重规划解决,而非直接退回交互2。判断是否需要退回的唯一条件:问题根因是 D类(拆解错误)且回溯深度已达硬上限,此时原有 DAG 不可修复,必须由用户重新确认任务边界。
用户输入通常是自然语言,存在歧义、隐含前提和遗漏条件。意图解析阶段的目标是将其转化为无歧义的任务描述。
意图解析的输出包括:
示例:
用户输入:"帮我写一份竞品分析报告"
意图解析结果:
核心目标:输出一份结构化竞品分析文档
约束条件:(未指定)
隐含前提:对象是用户所在行业的竞品(待确认)
歧义点:
- 竞品范围(国内/国际?几家?)
- 分析维度(功能/价格/市场份额/用户口碑?)
- 输出形式(Markdown/PPT/Word?)
交互1 中,系统将工作流草案和这些歧义点一并呈现给用户,请其在交互2 中确认。
DAG(有向无环图)是任务拆解的标准形式。每个节点是一个子任务,边表示依赖关系(上游输出是下游输入)。
DAG 构建规则:
常见拆解错误(D类阻碍的前身):
| 错误类型 | 描述 | 示例 |
|---|---|---|
| 隐式依赖 | 子任务之间有实际依赖但 DAG 中未连边 | 摘要任务依赖全文但 DAG 中与全文节点无边 |
| 过度拆分 | 粒度过细,子任务之间需要大量上下文传递 | 每个段落独立为一个节点,导致前后文断裂 |
| 粒度不均 | 部分节点承载了多个独立子任务 | "调研+写作"作为单一节点 |
| 环形依赖 | 依赖关系成环,无法排拓扑序 | A 需要 B 的输出,B 需要 A 的输出 |
直觉上,给 agent 设置能力范围的最简单方式是"开关":允许使用的知识域写进白名单,其余拒绝。这个思路在软件系统中是合理的,但在 LLM agent 里行不通。
根本原因:LLM 的知识是连续分布的,不是模块化的。
一个在训练时见过大量数学文献的模型,无法在推理时"不想数学"——它的数学知识以分布式权重的形式存在于整个网络,没有一个可以断开的开关。强行用 prompt 说"你不懂数学",模型可能会声称不懂,但在生成内容时仍会受到数学知识的影响。
因此,蒙版的设计目标不是禁止,而是:
这两点合在一起,才能实现可追溯、可审计的知识边界管理。
设总知识空间 K = {k₁, k₂, ..., kₙ},对每个 agent Aⱼ 和每个知识域 kᵢ,定义蒙版激活值:
m(Aⱼ, kᵢ) ∈ [-1, 1]
m = 1 → 主激活域(核心能力区,自由调用)m = 0 → 静默域(不主动激活,泄漏风险存在)m = -1 → 抑制域(显式反激活,注入抑制 prompt)m ∈ (0, 1) → 背景域(半激活,可被动触发但需声明)m ∈ (-1, 0) → 弱抑制域(不鼓励,不绝对禁止)
三个激活域按阈值划分:
主激活域 M_main = { kᵢ | m(Aⱼ, kᵢ) > θ_main }
背景域 M_bg = { kᵢ | θ_bg < m(Aⱼ, kᵢ) ≤ θ_main }
静默域 M_silent = { kᵢ | m(Aⱼ, kᵢ) ≤ θ_bg }
默认阈值:θ_main = 0.7, θ_bg = 0.3
阈值设置的考量:
θ_main = 0.7:留出 0.3 的缓冲带,防止主激活域过于狭窄导致任务完成率下降θ_bg = 0.3:低于此值的知识域,即使被激活,也应被视为噪声,需要强制阻断当 agent Aⱼ 在推理中使用了 kᵢ 且 kᵢ ∉ M_main(Aⱼ),必须按以下规则处理:
规则1:kᵢ ∈ M_bg → 允许使用,但必须在输出中标记:[蒙版泄漏 | agent=Aⱼ | 域=kᵢ | 强度=m(Aⱼ,kᵢ)]
规则2:kᵢ ∈ M_silent → 先判断:a. 该知识对当前任务必要 → 不能抑制,回溯到分配层调整蒙版b. 该知识是模型自发激活 → 抑制 prompt 触发,阻断本轮推理
为什么规则1 允许但要求标记,而不是直接拒绝?
背景域知识(M_bg)的存在本身是合理的:agent 的核心能力往往需要周边知识作为支撑,完全切断会导致生成质量下降。标记泄漏的目的是让验证层知道"这段输出用了非主激活域知识",进而在置信度判断时给出适当折扣,而非直接判定为错误。
泄漏标记格式示例:
...根据该公司2023年财报([蒙版泄漏 | agent=A3 | 域=财务分析 | 强度=0.45]),
其营收增速为18%,与行业均值持平...
路径1(主路径):M_main 内封闭生成
路径2(泄漏路径):M_main + M_bg 开放生成,标记所有泄漏
输出优先取路径1。当路径1无法完成时,启动路径2并附带泄漏报告。
路径切换判断逻辑:
蒙版梯度管生成层——控制 agent 在生成内容时的知识域激活范围。
置信度判断管验证层——在内容生成完毕后,审查输出的事实可靠性。
两个机制各司其职,但相互触发:蒙版泄漏会提高验证层的审查强度,验证层发现的问题可能反过来要求调整蒙版(见第五章交叉链路)。
传统多 agent 验证的主流方案是"交叉一致性":让多个 agent 独立完成同一任务,对比输出的一致性程度,一致性高则视为可信。
这个方案有一个根本缺陷:它是形式验证,不是实质验证。
三个模型可以同时犯同一个错误——例如,它们都读到了一篇被广泛引用但本身存在事实错误的文献,交叉比对结果高度一致,但结论是错的。
本规范采用实质验证:将结论下沉到事实层,逐一追查论据的物质基础。核心问题不是"别人也这么说吗",而是"这件事在现实世界里存在吗"。
输入:子 agent Aⱼ 的输出结论 C
Step 1 — 论点-论据拆解C → { (p₁, E₁), (p₂, E₂), ..., (pₙ, Eₙ) }每个 pᵢ 是一个论点,Eᵢ = {eᵢ₁, eᵢ₂, ...} 是支撑 pᵢ 的论据集合
Step 2 — 论据分层对每个 e ∈ Eᵢ: ├─ 可验证事实 → 进入物质还原 ├─ 推理推导 → 递归拆解其依赖的事实基础 └─ 经验判断 → 标记为 soft-claim,置信度权重折扣
Step 3 — 物质还原对每个可验证事实 e: ├─ 事实存在且准确 → verified ├─ 事实存在但偏差 → 标记偏差度 δ(e) ├─ 事实不存在→ falsified → 触发不合格 └─ 事实无法验证 → uncertain → 标记置信度折扣
Step 4 — 判定├─ 存在任意 falsified → 不合格├─ 仅 uncertain + verified → 合格(置信度折扣)└─ 全 verified → 合格(全置信度)
Step 2 中"推理推导"的递归处理:
推理推导本身不是事实,但其有效性取决于前提事实是否成立。因此递归拆解到最终的叶节点,叶节点必须是可验证事实或 soft-claim,不存在纯逻辑的无穷推导链。
偏差度 δ(e) 的说明:
偏差度是 0 到 1 的连续值,0 表示与事实完全一致,1 表示与事实完全相反。偏差度不直接触发不合格,但会计入论点 pᵢ 的置信度权重,并在最终判定中影响总置信度分数。
全量物质还原成本高,按三级触发:
L1 — 轻量验证(默认对所有输出执行)├─ 结构化字段完整性检查(必填字段是否齐全)├─ 输出格式合规检查(是否符合约定的输出 schema)└─ 表面矛盾检测(同一输出内部是否存在自相矛盾)│├─ 通过 → 绿灯放行,不进入 L2└─ 不通过 → 触发 L2
L2 — 标准验证(L1 不通过时触发)├─ 论点-论据拆解(Step 1-2)├─ 物质还原关键论据(抽样 30-50%,优先抽取支撑核心论点的论据)│├─ 通过 → 合格(置信度折扣标注)└─ 不通过 → 触发 L3
L3 — 深度验证(L2 发现 falsified 时触发)├─ 全量论据物质还原├─ 监督 agent 介入├─ 上游 + 下游独立 agent 介入└─ 结果:合格 / 不合格 → 重做
L2 抽样策略说明:
不是随机抽样,而是优先级抽样:
一旦判定不合格(任意 falsified),启动三级介入:
监督 agent(过程视角)├─ 复盘 Aⱼ 的执行日志(每一步 prompt 输入 + 输出)├─ 判断:违规使用了静默域知识?执行步骤跳步?指令理解偏差?└─ 输出:故障原因分类 + 改进建议
上游 agent(输入视角)├─ 检查 Aⱼ 收到的输入是否完整且正确(与预期输入规格对比)├─ 判断:上游传递了错误数据?前置条件未满足?输入格式不符?└─ 输出:输入侧问题定位 + 责任归属
下游 agent(消费视角)├─ 检查 Aⱼ 的输出是否可被下游消费(依下游的输入规格验证)├─ 判断:格式错误?字段缺失?语义不可解析?类型不匹配?└─ 输出:输出侧问题定位 + 消费障碍描述
为什么选上游+下游,不是随机指派两个 agent:
| 角色 | 自身盲区 | 独有可见区域 |
|---|---|---|
| 监督 agent | 看不到输入/输出的语义合理性 | 执行过程异常、步骤跳跃、指令偏差 |
| 上游 agent | 看不到 Aⱼ 的执行过程 | 输入空间全貌、前置条件状态、数据血缘 |
| 下游 agent | 看不到 Aⱼ 的执行过程 | 预期消费格式、语义可解析性、下游状态 |
三角覆盖设计确保:三者的盲区互不重叠,联合诊断覆盖故障链路的全部维度。任意一个单独介入,都有系统性漏检的风险。
重做 ≠ 原样重跑
原样重跑的问题:如果根因未修复,再次执行只会重现同一个错误,浪费算力且延误交付。
重做步骤:
1. 定位根因(监督 agent 输出)
2. 修正根因: ├─ 输入问题 → 修正上游输出,原 agent 重做 ├─ 蒙版问题 → 调整激活梯度,原 agent 重做 ├─ 能力缺口 → 更换 agent 或扩展蒙版(见5.2) └─ 过程问题 → 注入 process guard(执行约束 prompt),原 agent 重做
3. 重跑 + L2 验证(重做后的输出强制进入 L2,不得走 L1 绿灯)
4. 仍不合格 → 挂起,等待人工介入
人工介入的触发阈值:
满足以下任一条件,系统自动挂起并通知人工:
阻碍识别的目标是把"出错了"转化为"哪类错、怎么修"。四类阻碍的判定标准和修复策略不同,必须在识别后立即分类,而非用统一的重试逻辑笼统处理。
A类 — 瞬态故障(Transient)判定标准:同一输入重跑能过(故障与输入无关)典型场景:API 超时、模型服务不可用、并发写冲突修复策略:原地重试,指数退避,不改变任何输入或蒙版上限:重试 3 次后降级为 B类或 C类重新评估
B类 — 参数失配(Parametric)判定标准:agent 能力足够,但入参或指令不匹配典型场景:prompt 未覆盖边缘情况、上下文被截断、输入格式错误修复策略:回溯到父节点,修正参数后重新派发(不换 agent,不动蒙版)注意:B类和 C类的判定边界在实践中容易混淆—— 关键问题是"换一组正确的参数,现有 agent 能完成吗" 答案是 → B类;答案否 → C类
C类 — 能力缺口(Capability Gap)判定标准:当前蒙版下 agent 不具备必要能力,无论输入如何调整都无法完成典型场景:需要数值计算但 agent 仅文本能力,需要实时数据但 agent 无工具调用权限修复策略:回溯到分配层,换 agent 或扩展蒙版(后者进入5.2的交叉链路)注意:扩蒙版可能引入新的泄漏风险,见5.2
D类 — 拆解错误(Decomposition Error)判定标准:子任务划分本身有问题,不是执行层的错典型场景:隐式依赖未写入 DAG、拆分过细导致上下文断裂、节点边界划定错误修复策略:回溯到规划层,重新拆解 DAG触发条件:当同一 DAG 路径的多个节点连续发生 B类或 C类阻碍时,应升级评估是否为 D类
层级 回滚范围 兄弟节点处理
──── ──────── ────────────
节点级只回滚当前节点不影响(独立执行)
父节点级回滚父节点 + 所有子节点 父节点下全部失效,需重新派发
路径级回滚整条依赖链链上全部失效,链外保留
全局级回滚整个 DAG 全部失效,相当于从头开始
关键约束:
{"timestamp": "2026-06-22T11:30:00Z","node_id": "A3","fault_type": "B", // A/B/C/D"rollback_level": "父节点级","root_cause": "prompt 未覆盖多语言输入场景","fix_action": "扩展 prompt 覆盖范围,重新派发","second_run_result": "pass" // pass / fail / pending
}
主循环是四个机制(拆解、蒙版、验证、回溯)的集成视图,描述一次完整任务执行的全链路:
用户输入↓
交互1:理解拆解 → 子任务 DAG + agent 清单(含蒙版摘要)↓
交互2:用户审核 → 确认方案 / 提出修改↓
交互3:装填蒙版 → 并行执行各节点↓├─ 验证门 L1│ ├─ pass → 继续下一节点│ └─ fail → 阻碍识别│ ├─ A类 → 原地重试(指数退避)│ ├─ B类 → 父节点回溯,修正参数,重新派发│ ├─ C类 → 分配层回溯(换 agent / 扩蒙版 → 进入5.2交叉链路)│ └─ D类 → 规划层回溯(重拆 DAG,视情况退回交互2)│├─ 验证门 uncertain(L1 标记不确定)│ └─ 进入 L2 标准验证│ ├─ L2 pass → 置信度折扣标注 → 继续│ └─ L2 fail(发现 falsified)→ 进入 L3│ └─ L3:全量还原 + 三级介入│ ├─ L3 合格 → 置信度折扣标注 → 继续│ └─ L3 不合格 → 重做(按4.6策略)│ └─ 重做仍不合格 → 挂起人工介入↓
全节点完成 → 汇聚最终输出 → 交付用户
C类阻碍(能力缺口)有两种修复路径:换 agent 或扩蒙版。扩蒙版是成本较低的选择,但引入了新的知识域激活,有产生泄漏的风险。以下是完整的交叉链路:
C类阻碍触发蒙版调整→ 将某知识域 kᵢ 从 M_silent 提升到 M_bg→ 执行时走泄漏路径(路径2),所有 kᵢ 的使用标记泄漏声明→ 输出强制进入 L2 标准验证→ 若 L2/L3 发现 falsified,且根因追溯指向新引入的泄漏域 kᵢ:
→ 说明"扩蒙版修能力缺口"对当前任务不适用
→ 回退策略:不回退蒙版(已有泄漏日志),改为更换 agent
→ 记录本次失败路径,防止下次对同一类任务再次尝试扩蒙版策略
这条交叉链路防止了什么:
没有这条链路,系统可能陷入以下循环:
"失败路径记录"是防无限循环的关键:系统知道"这种修法对这类任务不管用",下次遇到相同场景直接跳过扩蒙版,进入换 agent 路径。
通常情况下,交互3 内部的所有问题通过回溯闭环解决,不退回交互2。但以下情况例外:
| 触发条件 | 退回原因 | 用户需要做的事 |
|---|---|---|
| D类阻碍 + 回溯深度已达上限 | DAG 根本性错误,系统无法单方面修复 | 重新确认任务边界和拆解方式 |
| 人工介入后确认任务不可完成 | 用户预期与系统能力存在根本性落差 | 调整任务目标或降低质量要求 |
| 用户主动请求重新规划 | 用户在等待过程中发现需求变化 | 重新确认 agent 清单和编排逻辑 |
| 术语 | 定义 |
|---|---|
| 蒙版(Mask) | agent 的知识域激活配置,定义其在各知识域上的激活强度 m(Aⱼ, kᵢ) |
| 激活梯度 | m(Aⱼ, kᵢ) ∈ [-1, 1],连续值表示 agent 在特定知识域上的激活程度 |
| 主激活域(M_main) | m > θ_main 的知识域集合,agent 可自由调用 |
| 背景域(M_bg) | θ_bg < m ≤ θ_main 的知识域集合,可被动触发但需声明 |
| 静默域(M_silent) | m ≤ θ_bg 的知识域集合,不主动激活,泄漏时需阻断 |
| 泄漏声明 | agent 使用非主激活域知识时必须附加的标记,声明域和强度 |
| 物质还原 | 将论据追溯到客观事实并验证其存在性的过程 |
| falsified | 物质还原的否定结果:论据声称的事实不存在于现实世界 |
| verified | 物质还原的肯定结果:事实存在且准确 |
| uncertain | 物质还原的不确定结果:事实无法验证,置信度折扣处理 |
| 偏差度 δ(e) | 0-1 连续值,衡量论据与事实的偏离程度 |
| 验证门 | 子任务输出点的自动判定机制,三分输出:pass / fail / uncertain |
| 三级介入 | 不合格触发时监督 agent + 上游 agent + 下游 agent 的联合诊断 |
| 回溯 | 将执行状态回滚到某个安全点并修正后继续 |
| DAG | 有向无环图,子任务依赖关系的标准表示形式 |
| process guard | 注入到 prompt 中的执行约束,防止 agent 重蹈已知的过程问题 |
背景: 最简单的 agent 能力边界控制方式是白名单——允许的知识域写入白名单,其余拒绝。
决策: 改用连续激活梯度 + 泄漏声明。
原因: LLM 的知识是分布式权重,无法在推理时真正隔离。强制用 prompt 声明"你不知道X",模型会声称不知道,但知识仍然影响生成内容。连续梯度 + 强制声明的组合,将"无法完全禁止"的事实转化为"可以完全追踪"的机制。
背景: 多 agent 交叉一致性验证是行业常见方案,实现相对简单。
决策: 改用物质还原验证。
原因: 交叉一致性是形式验证,无法检测多个模型同时犯的错误(例如共同引用错误信息源)。物质还原是实质验证,每个论据都必须追溯到现实世界的事实基础。代价是成本更高,因此设计分层触发(L1/L2/L3)来控制验证成本。
背景: 不合格后需要额外 agent 介入诊断,最省事的方式是随机选两个。
决策: 固定选上游 agent + 下游 agent,加监督 agent。
原因: 故障诊断的有效性取决于诊断者的"视角覆盖"。上游持有输入空间,下游持有消费规格,监督持有执行过程——三者恰好覆盖故障链路的全部维度,且盲区不重叠。随机选取的 agent 可能有大量视角重叠,形成诊断盲区。