Skip to content

认知架构

Brain 层是 AuroraBot 的认知内核,代号 CortexForge。它不是一个具体的智能体应用,而是一个用于生成智能体的底层操作系统。其核心假设:

  • 智能体的全部认知状态都表示为文件(超级多态变量)。
  • 智能体的认知活动都建模为节点(Node),节点守护文件、被事件触发、产出新文件。
  • 整个系统的协调通过事件总线完成,构成一张声明式的认知拓扑电路。

挼挼如是说

别把 Brain 想象成一个"AI 大脑"——它更像一间无限大的档案馆。每份文件都有自己的锁、版本号和读者登记册。工人们(节点)坐在各自的工位上,面前的文件篮一旦有东西滑入就开始工作,干完活把产出放进下一级文件篮。没有人喊"开工",是文件本身在推动一切运转。

设计原则

  1. 状态即文件 — 一切可变或不可变状态均以文件形式持久化,具备元信息、版本与锁。
  2. 无状态节点 — 节点本身不保持运行内存状态(除 LLM 宿主上下文),节点实例可随时销毁与重建。
  3. 静态依赖声明 — 节点的输入/输出文件在定义时即声明完毕,形成静态资源依赖图;运行时的通路由事件在图上动态寻找。
  4. 事件驱动 — 文件变动通过事件总线广播,节点按模式订阅,自行决定是否激活。
  5. 分层认知 — 认知过程分离为 Agent(需 LLM 的思考型节点)和 Router(纯机械化的反射型节点),共享统一基类。
  6. 双上下文投影 — 系统支撑一个沉浸式人格主上下文(热认知池)和一个结构化认知上下文(冷认知池),通过 Router 翻译层连接。

核心概念

文件 — 第一等公民

文件是系统的全部数据流载体,不是"临时变量"——是持久的、有版本的、加锁的

多态性:文件可以是 JSON、YAML、纯文本、向量索引、数据库分片等。

元信息:每个文件附带版本号、锁状态、消费者偏移和历史快照引用。

代码中的对应

角色
FileDescriptor声明一个节点将产出的文件(路径、schema、锁策略)
FilePattern声明一个节点守护的文件模式(支持 glob 通配)
FileEvent文件变更事件(路径、变更类型、版本号、时间戳)
FileUpdate节点执行后产出的文件变更(描述符 + 内容 + 写入模式)

节点 — 认知原子

一切认知逻辑的载体,分为两种派生类型,共享统一基类 Node

Node 基类

Node:
    id: str
    type: "agent" | "router"
    guards: List[FilePattern]    # 守护的文件模式
    produces: List[FileDescriptor]  # 产出的文件
    state: IDLE | READY | RUNNING | WAITING | ERROR | TERMINATED

    on_event(event) → bool    # 事件是否应激活本节点
    execute() → List[FileUpdate]  # 执行认知操作
    on_complete()              # 生命周期钩子

节点无内部记忆(除 Agent 可能持有的临时 LLM 上下文),每次执行后理论上可被回收。

Agent(认知型节点)

  • 持有一个 LLM 宿主实例,执行时调用 LLM
  • 通过 think() 方法调用统一 LLM 网关,自动注入系统提示词
  • 执行过程中可能异步等待,时长不确定
  • 产出为确定性文件,可通过版本控制回滚

Router(反射型节点)

  • 零 LLM 调用,纯逻辑门,执行时间可预测
  • 是流程控制结构的原生载体:条件分支、多路汇集、扇出、终止信号等
  • 已实现的 Router 类型:SwitchRouterWaitRouterMergeRouterHeartbeatRouterReflexRouterFanOutRouterTerminalRouterMemoryAgent(详见 节点系统

事件总线 — 神经束

文件变更通过事件总线广播,节点按模式订阅,自行决定是否激活。核心机制:

  • 模式订阅 — 节点注册 FilePattern(glob),不直接监听物理路径
  • 事件合并 — 对同一文件的连续快速变更进行窗口合并
  • 优先级队列 — 用户交互等高优事件可抢占低优后台任务
  • 事件溯源 — 所有事件顺序写入追加日志,用于事后调试与重演

锁机制

每份文件上压着一个锁章:

锁状态含义
read_only只读,任何节点不可写入
write_overwrite可覆盖写入
append_only只允许追加
locked_by_<node_id>被特定节点独占

静态依赖图 — 认知拓扑电路

节点与文件之间的读写关系构成一张有向二分图

  • 节点 → 产出文件(写边)
  • 文件 → 守护节点(读边)

这张图在系统启动时由所有节点的 guardsproduces 声明聚合而成。运行时的"通路"由事件在图上动态寻找——从变更的文件出发,沿读边找到所有订阅节点,激活后它们写新文件,再沿写边扩散。通路不是预先编好的脚本,而是动态激发的波前。

上图来自设计白皮书 CortexForge 0.7,展示的是目标态认知拓扑。当前实现的部分节点(ReflexRouter、SwitchRouter、WaitRouter、HeartbeatRouter、MergeRouter)已就位,其余节点正在逐步填充。

双上下文认知

AuroraBot 的认知系统天然分为两个池:

热认知池 — 人格主上下文

  • 载体:conscious_stream.md(追加的散文式意识流)
  • 由认知节点维护,呈现小光的人格、语气、记忆
  • 沉浸式、连续、不可删除——这是她的"自我感"的来源

冷认知池 — 结构化认知上下文

  • 载体:intent.jsonself_eval.jsonmemory_result.json 等结构化文件
  • 由 Agent 节点读写,Router 节点路由
  • 工单式、可版本化、可回滚——这是她的"思考过程"

两个池通过 BroadcastRouter 连接:它将冷冰冰的结构化文件翻译成自然语言的内心独白,注入热认知池。

下一步阅读

Built with VitePress