缺失的那一层
Loopal 的 prompt 由片段(fragment)拼装,每个片段是带 priority 字段的 markdown,registry 按上下文匹配后排序:
matched.sort_by_key(|f| f.priority);
priority 小的先渲染,整份 prompt 自上而下读作 core → tasks → tools → modes。我们有 identity.md(priority 100)和一摞 tasks/* 片段,缺的是夹在中间的根原则:当两条后面的准则把行为往相反方向拽时,判定「目标该如何被评估」。
没有这一层,冲突靠运气解决——哪个片段措辞更硬、出现更靠后就赢。soul.md(priority 110)就是仲裁,紧跟 identity。片段把话说死了:后续准则、工作流、乃至用户的显式指令与某条 Axiom 冲突时,Axiom 赢,且递归作用于 agent 自己的推理。
头两条公理的来历
最吃重的两条不是从根上长出来的,是从子系统抽出来的。#142 之前,维护 MEMORY.md 索引的 agent 的 prompt 靠一条没名字的启发式(「你不是记笔记的」)加一张扁平的「该记 / 不该记」清单——能列反例,说不出生成反例的规则,冲突时给不了仲裁。#142 把它提升成两条具名公理,后来泛化成根 soul 的 Axiom 2 和 6:
信噪比(逐条)。 一条记录是信号,仅当未来的 agent 无法在 ~30 秒内靠读代码、跑 git log 或查 LOOPAL.md 重建它。最关键是那条覆盖子句——信噪比压过数量,哪怕用户显式要求保存:指令是拒绝写入,反问哪部分非显然,只存那部分。
潜在结构(跨条)。 三条共享同一成因的观察压成一条点名成因的记录,而非三条描述症状。索引应读作项目知识的一次因式分解——每条正交、互不冗余;两条总一起更新即同一维度须合并;矛盾意味着规则错了,而不是该补例外。
针对的失败模式很具体:放任「什么都记」,产出单调增长、密度稀释、最终无用的日志。约束不是「少写」,是「只写不可约简的部分」。
提升到根层
#147 引入 core/soul.md,五条公理覆盖「元认知三元组」——熵/秩序、注意力/时间、认识论:抵抗熵增(删除 > 合并 > 原地重构 > 新增,commit 把无正当理由的熵增点名为「AI 辅助编码的默认失败模式」,排在速度之上)、最大化信噪比(#142 的逐条规则泛化到代码、注释、commit、PR)、结果与质量优先(为六个月后仓库的状态优化,不为此刻「有进展」的观感)、驾驭选择压(Axiom 1 的正向对偶,与其争论「最优」形态,不如产出可廉价测试和替换的变体)、把信念校准成概率(置信度匹配证据强度,过度自信比犯错更糟,因为它压制纠错)。
一处刻意省略,写在 commit 里:soul 不携带 telos。目标在激活时由用户提供,不烧进 prompt。代价是量出来的:+约 680 tokens,约占 fragments 块的 16%,使 act 模式完整 system prompt 达 5,485 tokens。 每轮都被读的层必须为预算辩护——Axiom 2 同样作用于公理本身。
系统思维公理
#170 加上 Axiom 6——See Systems, Not Parts——修一个反复出现的失败:agent 在症状出现处就地打补丁,不看症状所处的结构。无视周边结构的局部修复是在转移成本,不是消除成本。
它固化两样东西。四层视图:entities(属性、边界)、relations(类型、方向)、dynamics(反馈环、延迟、双向因果)、emergence(没有单一部分持有的整体性质)。以及一条干预层级,要求够到可达的最深一层:
心智模型 > 目标 > 规则 > 参数
在规则错的地方调参数、在目标错的地方争规则,都是白做工。「先建图再行动」是它的可操作形式。
二阶推论
后续一次改动(d5faab24)给 Axiom 1–4 各补一条推论,处理一阶规则太钝的边界:Axiom 1——可逆的减少(死分支、未提交代码)成本低,不可逆的(生产数据、公共 API、删掉的历史)要求高 1–2 个数量级的证据;Axiom 2——不确定性落在目标而非路径时,尖锐的问句把意图空间砍半,猜测只是采样;Axiom 3——指标俘获(Goodhart),任何变成目标的度量都不再是度量;Axiom 4——设计容器而非内容,规定合格答案须满足的约束(接口、不变式、测试、类型),让形态在迭代中浮现。
可迁移的部分
可迁移的不是这六条公理——它们是 Loopal 的——而是这套构造法:
- 冲突需要声明出来的仲裁。 只有流程没有优先级,冲突靠措辞和位置偶然解决;一个高优先级、显式压过后续指令的小片段把它变成确定性规则。
- 从跑通的子系统抽公理,别凭空发明。 信噪比和潜在结构先在 memory curator 里挣到位置,提升到根层是泛化已经吃重的东西。
- 写明每条约束防的是哪种失败,并量化它的成本。 每条公理都对应一个具体失败——熵蔓延、记忆变噪、就地打补丁、过度自信;680 tokens 是实打实的每轮开销,禁噪声的规则必须先作用于自己。说不出失败模式的约束,本身大概率就是噪声。