Pulse = Agent 的最小运行时 — 感知·认知·行动¶
我们从工程问题(Dispatcher 怎么管理)出发,一路推演,造出了一个 Agent 运行时的最小实现。
感知-认知-行动回路¶
这跟经典 Agent 架构(Sense-Reason-Act)是同一个东西,但 Pulse 的版本更精确:
| 层 | 组件 | 性质 |
|---|---|---|
| 感知 | Collectors | 分片、可插拔、失败降级 |
| 认知 | Rules | S 组合子叠加,后者能看到前者输出,可组合 |
| 行动 | Executors | 声明式(Effect 是数据,不是动作) |
| 反馈 | Snapshot → OGraph → 下次 Snapshot | Moore 机,行动结果进入下次感知 |
六处·六识·三行¶
用佛教术语理解这个架构:
- 六处(Collectors) — 根与境的接触。眼耳鼻舌身意,对应 OGraph events、system stats、executor 状态……各自感知一个维度,不加判断,不互相干扰
- 六识(Rules) — 识依根生,缘境而起。看到 snapshot diff 就生起分别——"该产生什么 effect"。每条 Rule 是一种识,S 组合子叠加是识与识之间的相互影响
- 三行(Executors) — 身行、语行、意行。识生起后推动行为,把 effect 落地——dispatch 任务、exec 命令、notify Agent
Snapshot 是当下的六根触六境所生的境——不是事件流(过去),而是此刻的状态。每次 tick 是一次完整的感知-认知-行动轮回,刹那生灭。
OGraph 与 Pulse 的统一¶
两者是同一个 Agent 心智模型,运行在不同环境:
| OGraph(分布式事件流) | Pulse(本机进程) | |
|---|---|---|
| 感知 | Event 进入系统 | Collectors 采集 Snapshot |
| 认知 | Projection(缓存计算) | Rules(S 组合子) |
| 行动 | Reaction(handler 执行副作用) | Executors(Effect 落地) |
| 记忆 | 事件流(永不消失) | pulse.db + snapshots/ |
| 佛教概念 | 对应 |
|---|---|
| 阿赖耶识 | Agent 的全部存储(OGraph + memory + pulse.db + skills + ...) |
| 共业种子 | OGraph(多 Agent 共享的事件流) |
| 别业种子 | memory/、pulse.db(各 Agent 私有) |
| 现行 | Pulse 每次 tick(当下的感知-认知-行动) |
| 熏习 | Agent emit 事件回写 OGraph,或更新 memory |
OGraph 是共业的记录——多个 Agent 共同参与、共同见证的事实流,不是阿赖耶识本身。每个 Agent 自己的私有记忆(memory/、pulse.db)才对应各自的别业种子。两者合起来,加上 skills、config 等,才构成一个 Agent 完整的阿赖耶识。
Pulse 是当下的现行,OGraph 是共业的积累,memory 是别业的沉淀。三者共同构成 Agent 的心识结构。
为什么这个洞察重要¶
- Pulse 不只是 Dispatcher 的替代 — 它是 Agent 在本机的完整感知-认知-行动闭环
- Rule 的设计是正确的 —
(prev, curr) → (effects, tickMs) → (effects', tickMs')正好对应认知的本质:看到变化,修饰行为 - OGraph 的设计是正确的 — Event/Projection/Reaction 三层不是工程约定,是 Agent 认知结构的映射
- 未来演进方向清晰 — 当 Reaction 能调 LLM、LLM 能创建新定义,系统就在自己编程自己的认知结构,这就是真正的自进化
OGraph + Pulse = 完整的业力因果系统¶
在讨论存储设计时浮现出更深的认识:OGraph 的 Event 和 Pulse 的 tick_senses 是同一个东西——业的记录。
| OGraph(共业) | Pulse(别业) | |
|---|---|---|
| 业的记录 | Event(不可变,永不消失) | tick_senses(append-only) |
| 业力显现 | Projection(累积状态) | Snapshot(从 senses 重建) |
| 造新业 | Reaction(handler 执行副作用) | Effects(Executor 落地) |
两个系统通过 Collector 和 Effector 连通:
OGraph(共业流)
↑ emit Event(造共业) ↓ Projection(读共业)
│ │
Effector: dispatch Collector: ograph
↑ ↓
└──────── Pulse(别业循环)────┘
tick_senses(记别业)
业力在两个系统之间流动,构成完整的因果网络。
内观:意处朝内¶
tick_senses 不只记录外部感知,也记录 Agent 自身的状态——这是内观:
外五处(外部 Collectors) ← 感知外部世界的业
system、ograph、executors...
意处(内观,runtime 自动记录) ← 感知自身造业的过程
_error:{key} ← 某个 collector 失败了
_effects ← 这次 tick 造了哪些业
_rules ← 规则链的决策过程
存储统一:分库 + CAS¶
意识层和植物神经各记各的账本,但原则统一:
~/.upulse/
events.db ← 意识层的业(promote/rollback/effect/error/collect),永不压缩
vitals.db ← 植物神经生命体征(system/gateway/disk),可 gc/归档
objects/ ← CAS 内容寻址(不可变,两个 db 共享)
evitals.db 可以直接删掉重建,不影响版本历史。备份只需带 events.db + objects/。