Latent-Space-vs-Deterministic

定义

潜在空间 vs 确定性(Latent Space vs Deterministic) 是 GBrain 的核心设计洞察:最差的 Agent 系统总是把错误的工作放在错误的一边。正确的分工是——让 LLM 在"潜在空间"中决定"做什么"(判断、分析、综合),让代码在"确定性"中保证"在哪里"和"如何做"(构建交叉验证链接、验证引用格式、执行精确计算)。

为什么重要

Agent 系统最常见的失败,不是“LLM 不够强”或“代码不够多”,而是把任务放错层:让 LLM 负责精确格式、路径和计数,或者让硬编码规则负责语义判断、取舍和综合。

GBrain 的这个分工提供了一条架构准则:不确定、语义丰富、依赖上下文的任务交给 LLM;需要可重复、可验证、可审计的任务交给代码。这样既保留模型的阅读和判断能力,又避免把文件链接、引用格式、图谱边和计算结果交给概率输出。

在 LLM Wiki 场景中,这一点尤其重要。知识编译不是一次 prompt 输出,而是长期维护的知识库。一次错误链接、错误 frontmatter 或错误格式会被持久化;一次错误判断则需要能追溯到 source summary 和 raw 证据。因此系统必须区分“由谁判断”和“由谁保证”。

关键数据点

对比维度潜在空间(Latent Space)确定性(Deterministic)
特点智能——阅读、解释、决策信任——相同输入总是产生相同输出
适合场景判断、分析、综合SQL、计算、链接构建
执行者LLM 处理代码处理
示例"这条信息是否属于某人的页面"构建交叉验证链接、验证引用格式

分工原则

交给潜在空间的任务

  • 判断一段材料是否属于某个概念、人物或主题页面。
  • 提炼来源的核心论点、前提、限制和反例。
  • 在多个页面之间发现弱关联、冲突或可迁移结构。
  • 解释模糊语境,例如作者是在提出事实、类比、立场还是猜测。
  • 判断一个问题需要读 entity、topic、comparison 还是 raw 证据。

这些任务没有单一确定答案,或者答案依赖语义、语境和判断力。LLM 的价值在于能在不完整、非结构化材料中形成候选解释。

交给确定性的任务

  • 检查 YAML frontmatter 是否能被解析。
  • 生成和验证 wikilink、文件名、slug、索引条目和反向链接。
  • 计算字节数、行长、表格列数、孤链、入链和出链。
  • 执行 SQL、正则匹配、图遍历、向量初筛和缓存更新。
  • 检查裸 $、重复标题、无效日期、缺失字段和 schema 违例。

这些任务的特点是:输入相同就应得到相同结果,且错误可以被程序明确检测。把它们交给 LLM 会增加随机性和维护成本。

混合接口

真实系统通常不是二选一,而是“LLM 生成候选,代码验证约束,再由 LLM 修复语义”。

LLM 判断:这段材料应该更新哪些页面
  -> 代码验证:文件是否存在、frontmatter 是否合法、wikilink 是否可解析
  -> LLM 修复:根据验证错误调整内容
  -> 代码写入:执行格式化、索引更新、lint 和报告生成

GBrain 的混合检索也是同一思想:先用向量和关键词快速过滤候选页面,再加载完整页面让模型精读;图谱反向链接、关系表和 backlink boost 则由确定性规则维护。

误用模式

误用表现后果
让 LLM 做确定性工作让模型手写链接、计数、表格列、JSON/YAML 细节细小格式错误被持久化
让代码做语义判断用关键词规则决定概念归属或文章主旨召回僵硬,错过隐含关联
没有验证接口LLM 直接写库,代码不检查错误在 Wiki 中复利
过度代码化把所有知识关系都做成规则系统维护成本超过知识收益
过度模型化一切都让 Agent 自己判断输出不稳定,难以审计

这个概念的核心不是崇拜代码,也不是崇拜模型,而是把每类能力放到最适合的位置。

在 LLM Wiki 中的应用

LLM Wiki 的四类动作都可以用这个分工检查。

  • compile:LLM 负责浓缩、质疑、对标;代码负责文件落点、frontmatter、链接和 lint。
  • audit:LLM 负责判断概念是否薄弱、逻辑是否混乱;代码负责裸 $、长行、YAML、孤链和统计。
  • produce:LLM 负责组织输出和形成判断;代码负责回填表格格式、引用路径和发布检查。
  • explore:LLM 负责提出问题、反例和 source 需求;代码负责不把 agenda 当事实层证据。

这让 知识编译 变成可治理流程:语义判断可以被讨论,确定性约束可以被自动验证。

设计检查表

设计 Agent 功能时,可以用四个问题判断任务应放在哪一侧。

  1. 这个任务是否有唯一正确答案?
  2. 错误能否被程序自动检测?
  3. 输出是否会被长期持久化或被其他页面复用?
  4. 任务失败的代价是“理解偏差”还是“格式/执行错误”?

如果答案偏向唯一、可检测、持久化和格式错误,应放到确定性层。如果答案依赖语义、取舍和上下文,应由 LLM 先判断,再让确定性层约束它。

前提与局限性

  • 潜在空间与确定性的边界划分依赖领域理解——如果边界划错,可能让 LLM 做它不擅长的事或浪费代码实现灵活性
  • LLM 在潜在空间中的判断可能存在幻觉和不一致性
  • 确定性代码的维护成本随规则复杂度增长
  • 两者的交互接口设计是关键——LLM 的判断结果如何可靠地传递给确定性代码层
  • 这不是固定边界。随着模型能力、工具调用和验证环境变化,某些过去必须硬编码的任务可能被模型稳定承担,某些看似语义的任务也可能被结构化成可验证流程。
  • 确定性层也会出错。规则写错、schema 过时或索引策略偏差,会让系统稳定地产生错误。
  • 潜在空间输出需要来源约束。没有 source summary、raw 证据和回填检查,LLM 的语义判断会变成不可追溯假设。

关联概念

  • GBrain — 潜在空间 vs 确定性是 GBrain 架构的核心设计洞察
  • Thin-Harness-Fat-Skills — Harness 中的确定性逻辑,Skills 中的潜在空间判断
  • Progressive-Disclosure — 先用确定性索引缩小范围,再由模型按需精读
  • Jagged-Intelligence — LLM"代码超人、常识脆弱"的锯齿状智能是这种分工的基础
  • Verifiability — 确定性代码提供了可验证性保障,潜在空间输出则需要人工验证
  • Knowledge-Compilation — LLM Wiki 的编译动作需要语义判断与格式验证协同