# 白箱智能是什么? ## ——让 AI 不只是给出答案,而是知道自己为什么能够回答 > 术语约定:本文的英文缩写均首次出现处给出中文全称与英文全称(见文末「术语表」)。 > 核心四态:ACCEPT(接受)/ REJECT(拒绝)/ DEFER(延后)/ BLINDSPOT(盲区)。 --- ## 〇 先用一句话理解白箱智能 **白箱智能,是一种把“条件、知识、规则、执行和验证”显式组织起来的智能系统。** 它在面对一个问题时,不只是寻找“最像答案的东西”,而是依次判断: > **我面对的是什么问题? > 在什么条件下成立? > 我有哪些知识和能力可以处理它? > 如果条件不足怎么办? > 如果结果错误,应该修改什么?** 因此,白箱智能最核心的能力可以概括成四个状态: ```text 条件满足 ↓ ACCEPT —— 我有资格处理,执行 条件冲突 ↓ REJECT —— 这个能力不适用,拒绝 条件不足 ↓ DEFER —— 现在不能判断,继续寻找缺失条件 无法归属 ↓ BLINDSPOT —— 我不知道,不强行猜测 ``` **“不知道”不是系统失败,而是系统对自己认知边界的正确判断。** --- # 一、为什么需要白箱智能? 今天的人工智能(AI · Artificial Intelligence)已经可以完成大量令人惊叹的工作: - 回答问题 - 写代码 - 总结资料 - 进行推理 - 使用工具 - 生成图片和文本 但当我们继续追问: > **“你为什么这么回答?”** 问题就开始变得复杂。 假设问 AI: > **水在海拔 3000 米的地方,沸点还是 100°C 吗?** 一个普通系统可能直接回答: > “不是。由于海拔升高,大气压降低,水的沸点会下降。” 这个答案可能是正确的。 但是白箱会继续追问: ```text 海拔升高 ↓ 大气压变化 ↓ 沸点变化 ↓ 具体知识单元 ↓ 适用条件 ↓ 验证 ↓ 结论 ``` 于是答案不再只是: > “因为这是常识。” 而可以进一步回答: > **哪条知识支持这个结论? > 这条知识在什么条件下成立? > 中间经过了哪些推导? > 如果发现结果不符合观测,应该检查哪一个条件?** 这就是白箱智能关注的问题。 --- # 二、白箱智能并不是“不要 AI” 这是一个非常重要的区别。 **白箱不是要消灭大语言模型(LLM · Large Language Model,下称 LLM),而是重新安排大语言模型在智能系统中的位置。** 可以把两者简单理解成: ```text LLM ↓ 提出假设 / 生成候选 / 处理开放性问题 ↓ 白箱 ↓ 识别条件 ↓ 查找知识 ↓ 验证条件 ↓ 执行规则 ↓ 接受 / 拒绝 / 继续分析 ``` 因此: > **LLM 可以负责“提出可能是什么”,白箱负责“判断在当前条件下是否成立”。** 在开放世界中,两者甚至可以互补: ```text 未知问题 ↓ LLM 提出候选解释 ↓ 白箱寻找条件和已有知识 ↓ 符合 → ACCEPT(接受) 冲突 → REJECT(拒绝) 条件不足 → DEFER(延后) 无法判断 → BLINDSPOT(盲区) ``` 这也是为什么白箱不等于“一个更大的数据库”。 --- # 三、白箱最核心的概念:条件 白箱智能的一个基本假设是: > **知识不是脱离条件存在的。** 例如: > 水的沸点是 100°C。 这个说法实际上隐含了条件。 更完整的知识应该类似: ```text 条件: 标准大气压附近 知识: 水的沸点约为 100°C ``` 改变条件: ```text 海拔升高 ↓ 大气压降低 ↓ 沸点降低 ``` 因此,白箱不是简单保存: ```text 问题 → 答案 ``` 而更接近: ```text 条件 → 知识 → 条件 → 知识 → 结论 ``` 这些关系可以进一步组织成条件路由图。 --- # 四、什么是条件路由? 假设系统拥有三个知识单元: ```text K1:海拔升高 → 大气压降低 K2:大气压降低 → 水的沸点降低 K3:标准大气压下水的沸点约为 100°C ``` 用户提出: > “高原地区烧水为什么更难把食物煮熟?” 系统不是寻找一个最相似的答案,而是寻找能够满足当前条件的路径: ```text 高海拔 ↓ 大气压降低 ↓ 水的沸点降低 ↓ 烹饪温度下降 ↓ 食物更难煮熟 ``` 每一步都有自己的知识和条件。 这就是**条件路由**。 --- # 五、条件不足怎么办? 这是白箱和普通检索系统非常重要的区别。 假设有两个能力: ```text A:信任累积 B:信任阈值检查 ``` 两者都可能出现: > 信任、判断、验证、状态…… 仅仅依靠关键词,很容易认为 A 和 B 是同一个能力。 白箱不会急着选择。 它可以进入: ```text DEFER(延后) ↓ 比较候选能力 ↓ 寻找两者之间的条件差异 ↓ 发现: “累积” 对比 “阈值检查” ↓ 继续寻找当前任务真正需要的条件 ↓ 重新判断 ``` 这就是**条件递归**。 换句话说: > **不知道答案时,不是马上猜一个,而是先问:我到底缺少什么条件?** --- # 六、如果最终还是不知道呢? 那么白箱应该明确进入: ## BLINDSPOT —— 盲区 例如系统收到: > “请使用一种它从未学习过、也没有任何相关规则支持的能力完成任务。” 如果系统无法建立: ```text 问题 ↓ 条件 ↓ 知识 ↓ 规则 ↓ 执行路径 ``` 那么正确行为不是编造答案。 而是: ```text 无法建立有效条件链 ↓ 无法证明自己具有处理资格 ↓ BLINDSPOT(盲区) ``` 这也是白箱智能非常重视的一条原则: > **明确知道“不知道”,比生成一个看起来合理但无法验证的答案更重要。** --- # 七、那么白箱如何学习? 白箱并不是一个永远不会变化的静态规则库。 它可以形成: ```text 预测 ↓ 执行 ↓ 得到结果 ↓ 发现预测误差 ↓ 检查遗漏条件 ↓ 形成候选新规则 ↓ 验证 ↓ 通过 → 固化 失败 → 拒绝 ``` 因此: > **错误不是简单地让系统“调一个参数”,而可以成为寻找遗漏条件的入口。** 例如: ```text 原理论: 条件 A + 条件 B ↓ 结果 X 实际观察: 结果 ≠ X 于是系统检查: 是否遗漏条件 C? 如果发现: A + B + C ↓ 结果 X 那么新的 C 就可能成为理论结构的一部分。 ``` 这就是白箱中的**预测误差 → 条件更新**。 --- # 八、白箱和传统专家系统有什么区别? 这个问题非常值得问。 白箱确实继承了专家系统的一部分思想: - 显式知识 - 规则 - 条件 - 可验证性 但它进一步尝试解决: - 开放式问题如何产生候选知识? - 不同知识之间如何组合? - 如何发现缺失条件? - 如何递归寻找条件? - 如何从错误中更新结构? - 如何判断自己什么时候没有能力? 因此,白箱智能目前更适合被理解为: > **一种以条件、显式知识、规则、验证和递归为核心的智能架构探索。** 它不是简单地把专家系统重新包装一次。 --- # 九、灵枢正在验证什么? 目前的灵枢(AEIS · Agent Engineering Implementation Specification,智能体工程实现规范)项目并不是声称: > “我们已经解决了通用人工智能(AGI · Artificial General Intelligence)。” 恰恰相反,我们希望把问题拆成可以实验验证的小问题。 其中一个重要实验方向是: ## CCG:代码能力条件路由 CCG(Code Condition Graph · 代码条件路由图):以「条件词 → 节点」为检索面的代码能力索引。 首先测试: > **自然语言描述能不能成为代码能力的索引?** 实验结果显示,在当前测试集和实验设置下: - Top-1(检索第一名即命中的比例):96/96,100% - Top-5(检索前五名内命中的比例):96/96,100% - 函数名被抹掉后,Top-1 仍保持 100% 这意味着在该实验设置下,系统并不必须依赖函数名称,而可以利用代码实体的语义描述进行定位。 --- # 十、然后我们故意让它失败 这一步比“100%”更加重要。 我们制造: > **关键词很像,但实际能力不同** 的对抗任务。 最开始: ```text 对抗负条件拒绝率:28% ``` 这暴露出一个问题: > CCG 当时更接近语义检索(semantic retrieval:按意思相似找答案),而不是条件路由(condition routing:按「条件是否满足」找路径)。 于是系统增加了: > **能力级不适用条件** 然后重新测试: ```text 28% ↓ 88% ``` 接着使用完全不同机制的新对抗集: ```text 91% ``` 这说明改进并不只是针对原测试题打补丁。 --- # 十一、最终形成四态路由 继续把实验推进后,CCG 形成: | 状态 | 含义 | |---|---| | **ACCEPT** | 条件满足,有资格执行 | | **REJECT** | 条件冲突,明确不适用 | | **DEFER** | 相关但条件不足,继续分析 | | **BLINDSPOT** | 无法建立可靠归属,不强行选择 | 在当前实验集上: - 能力域正任务 ACCEPT:100% - 域外负任务 REJECT:100% - 邻域任务未错误 ACCEPT:100% - REJECT precision(拒绝精确率:被判「拒绝」的样本中确实不该接受的比例):100% 这些结果都应该理解为: > **当前测试集和实验条件下的工程实验结果,而不是对一般智能能力的普遍证明。** --- # 十二、白箱自举是什么意思? 如果一个系统只能依赖外部人工告诉它: > “你应该如何解释自己。” 那么它还没有真正形成完整的自描述能力。 灵枢正在尝试让白箱使用自己的知识、条件和规则描述自身。 例如: ```text 白箱是什么? ↓ 寻找“白箱”的知识 ↓ 找到白箱组成规则 ↓ 找到条件路由机制 ↓ 组合 ↓ 验证 ↓ 得到关于白箱自身的解释 ``` 进一步地,系统还可以对自己的知识结构进行分析、验证和迭代。 因此这里所说的“自举”,不是简单地让 AI 修改自己的源代码。 更准确地说: > **系统开始使用自身的认知机制描述、验证和扩展自身。** --- # 十三、白箱真正想解决的是什么? 我们并不认为: > “模型越大越没用。” 也不认为: > “所有 AI 都应该变成规则系统。” 我们关注的是另一个问题: > **如果未来 AI 越来越接近真正的智能体,那么它是否应该知道自己的知识边界、行为依据和错误修正路径?** 如果答案是“应该”,那么: ```text 条件 知识 规则 验证 记忆 自省 盲区 ``` 就不应该只是外挂功能。 它们可能需要成为智能系统本身的一部分。 --- # 十四、白箱的核心闭环 把所有内容压缩到一起,可以得到: ```text ┌──────────────┐ │ 问题 │ └──────┬───────┘ ↓ ┌──────────────┐ │ 识别条件 │ └──────┬───────┘ ↓ ┌──────────────┐ │ 找知识与规则 │ └──────┬───────┘ ↓ ┌──────────────┐ │ 条件路由 │ └──────┬───────┘ ↓ ┌──────────┼──────────┐ ↓ ↓ ↓ ACCEPT DEFER REJECT │ │ │ ↓ │ 寻找缺失条件 │ │ │ ↓ │ 递归判断 │ │ │ 无法判断 │ ↓ │ BLINDSPOT ↓ 执行 ↓ 验证 ↓ ┌────┴────┐ ↓ ↓ 正确 错误 │ │ ↓ ↓ 固化 寻找遗漏条件 │ ↓ 更新 │ └────→ 重新判断 ``` 这就是目前白箱智能最核心的工程闭环。 > 图中四态:ACCEPT(接受,条件满足则执行)· REJECT(拒绝,条件冲突则不适用)· DEFER(延后,条件不足则继续找)· BLINDSPOT(盲区,无法归属则不猜)。 --- # 十五、白箱与 AGI 的关系 我们不宣称: > **“白箱智能已经是 AGI。”** 我们提出的是一个可以被讨论和证伪的观点: > **一个能够长期自主运行的智能体,如果无法可靠地判断自己的知识边界、行为依据、适用条件和错误修正路径,那么它的可靠性将受到结构性限制。** 因此我们探索的不是: > “如何制造一个万能答案机器?” 而是: > **“如何让一个智能系统知道自己为什么能够做、什么时候不能做,以及犯错之后应该改变什么?”** 这也是我们为什么选择白箱方向。 --- # 十六、我们现在已经知道什么,又不知道什么? ### 已经进行了工程验证的 - 条件化知识单元 - 确定性知识路由 - 知识组合与验证 - 预测误差反馈 - CCG 代码能力索引 - 能力级负路由 - ACCEPT(接受)/ REJECT(拒绝)/ DEFER(延后)/ BLINDSPOT(盲区)四态路由 - 白箱知识自举 - 长期记忆与知识结构 ### 仍然需要进一步证明的 - 开放域条件自动发现能力 - 大规模知识图上的稳定递归 - 新领域迁移能力 - 更复杂的因果推理 - 长期自主学习的稳定性 - 白箱架构是否能够扩展到更一般的智能任务 - 白箱是否最终能够成为 AGI 的基础架构 **我们不把尚未证明的部分写成已经证明的结论。** 这本身也是白箱理念的一部分。 --- # 十七、如何亲自验证? 你不需要先相信我们。 ### 5 分钟:看懂一次条件路由 运行灵枢的白箱知识问答,观察: ```text 问题 ↓ 知识单元 ↓ 条件 ↓ 规则 ↓ 结论 ``` 重点不是答案本身,而是: > **答案是否能够追溯到结构化知识和条件。** ### 1 小时:复现实验 运行项目中的测试集,观察: - 正向路由 - 负条件拒绝 - 对抗任务 - 四态路由 - 盲区声明 然后不要只看成功案例。 **优先寻找失败案例。** 因为: > **一个白箱系统真正值得研究的地方,不是它什么时候回答得对,而是它什么时候知道自己不应该回答。** ### 长期:贡献一个知识域 选择一个确定性知识领域,例如: - 初中物理 - 基础化学 - 数据结构 - 编译原理 尝试把一个知识写成: ```text 适用条件 ↓ 子功能 ↓ 执行规则 ↓ 验证方式 ↓ 不适用条件 ``` 然后观察它如何进入条件路由图。 --- # 十八、最后 白箱智能不是一个要求你“相信”的答案。 它更像是一项可以被不断攻击、测试和证伪的工程假设: > **智能不仅应该产生答案,还应该知道答案成立的条件;不仅应该知道如何执行,还应该知道什么时候没有资格执行;不仅应该发现错误,还应该能够寻找导致错误的遗漏条件。** 所以我们欢迎的不是: > “这个理论听起来很厉害。” 而是: > **“给我一个会让它失败的问题。”** 如果它失败: ```text 记录失败 ↓ 定位条件缺失 ↓ 修改结构 ↓ 重新测试 ``` 如果修改后仍然无法解释: ```text BLINDSPOT(盲区) ``` 这就是我们希望建立的研究方式: > **不要求相信白箱。验证白箱。** --- # 附录 · 术语表 > 正文约定:英文缩写首次出现处给出全称;下表集中收录本文全部英文术语,供查阅。 | 缩写 / 术语 | 英文全称 | 中文含义 | |---|---|---| | AI | Artificial Intelligence | 人工智能 | | LLM | Large Language Model | 大语言模型(如 GPT、DeepSeek 一类) | | AGI | Artificial General Intelligence | 通用人工智能(能与人类相提并论的广泛智能) | | AEIS | Agent Engineering Implementation Specification | 智能体工程实现规范——灵枢(本项目的实现体)的英文名 | | CCG | Code Condition Graph | 代码条件路由图——以「条件词 → 节点」为检索面的代码能力索引 | | ACCEPT | (英文原词,非缩写) | 接受:条件满足,有资格执行 | | REJECT | (英文原词,非缩写) | 拒绝:条件冲突,明确不适用 | | DEFER | (英文原词,非缩写) | 延后:相关但条件不足,继续寻找缺失条件 | | BLINDSPOT | (英文原词,非缩写) | 盲区:无法建立可靠归属,不强行猜测 | | Top-1 / Top-5 | — | 检索命中指标:Top-1=检索第一名即命中;Top-5=前五名内命中 | | semantic retrieval | — | 语义检索:按「意思相似」找答案的检索方式 | | condition routing | — | 条件路由:按「条件是否满足」找路径的检索方式 | | REJECT precision | — | 拒绝精确率:被判「拒绝」的样本中确实不该接受的比例 |