Skip to content

五大支柱 —— 核心思想与真实设计

首页给出的判断是:基于会话的 agent 缺的不是更大的模型,而是一个工程环境;并列出了这个环境必须提供的五样具体东西。本页把这五样逐条展开成两层:核心思想(为什么存在)和真实设计(实际落地的文件、契约条款或脚本——不是那句营销话)。

读者:已经看过 10 分钟速览、想在读完整 架构参考 之前先看清每条承诺如何被机械兜底的人。下文每一条「真实设计」都指向一个已发布的文件,你可以在完整源码里打开它。

Archon 的诊断:模型提供推力,环境提供方向。五大支柱就是那个环境。每一条的设计都让*「退化成走过场」变得机械可检测*——一条「只有当 agent 记得时才能遵守」的规则被视为可靠性缺口,而不是规则。

#支柱一句话核心实际所在
1认知循环每次交付都走一个固定、机器校验的环——不是自由聊天governance-contract.yaml 里的 run_state 状态账本
2机械闸门机器能强制的就别写散文。闸门失败即阻断约束金字塔 + archon-check / 治理测试
3持久状态项目真相跨会话存活——且不能无声过期manifest · drift · debt · memos + 事件溯源记录
4保全轴承重规则被钉住,后续编辑无法悄悄抽干契约里的 critical_rule_substrings 登记表
5所有权契约agent 是负全责的工程所有者,不是建议箱soul.md §Ownership / §Technical Sovereignty

1. 认知循环 —— 走的环,不是聊天

核心思想。 模型已经够强;它缺的是每次交付都必须走的环。Archon 固定了形状——Perceive → Model → Act → Verify——且在证据推翻当前结论时可回溯到任意更早的步骤。这是循环,不是瀑布。

真实设计。

  • 三种唤醒模式对应三个命令文件:/archon-plan(谈做什么多大)、/archon-demand(端到端执行一次有边界的交付)、/archon-review(drift 压力越过阈值时的独立全量复查)。
  • 交付生命周期是一条硬序列:Wake → Decision Gate → Plan → Execute → Validate → Close-Out → Git
  • 这个环被机械记账,所以无法退化成表演。契约里的 run_state.status_keys 列出约 22 个状态行——boot.soul_loadedprescan.memos_scanneddecision.verdict_outputvalidate.validation_greencloseout.auditor_ran……而 archon-run-state.mjs resolve-for-commit 在 commit 时以它们为闸门。smart_skip_allowed 白名单严格限定唯一可跳过的几行;跳过其余任何一行即违规。

一句话:把"思考流程"变成了一张有机器校验的检查表——退化成走过场的循环会在 commit 时被抓住。

2. 机械闸门 —— 失败即阻断,不靠散文

核心思想。 第二公理,Constraints > Documentation。文档是最弱的约束——只在被读到时有效。所以每条承重规则都被推到机器仍能强制的最低层。

真实设计——一座 5~6 级约束金字塔,越往下越强:

载体失败方式
L0类型系统(最严格模式)编译不过 = 不存在
L1Linter / 静态扫描违规 = 不能 commit
L2测试 / editor 规则 / pre-commit红 = 不能交付
L3+skill · ADR · 散文只承载"为什么"

具体闸门全在 governance-contract.yaml 里,由 archon-check.py / archon-check.sh / 治理测试套件执行:

  • file_budgets —— 每个热路径治理文件有硬行数上限(soul ≤ 310、drift ≤ 80、memos ≤ 30……)。超预算 validate 直接红,和类型错误同级——没有"软超标"宽限。Context 预算被当作性能约束,而非愿景。
  • forbidden_substrings —— 废弃语义(如 "loaded on every boot")列入黑名单;重新出现即失败。
  • Decision Gate 探针 —— 写任何代码前先跑三个机械探针:radius_probe(影响半径)、soul_headroom(soul 容量压力)、modularity_probe(是否把第二个职责轴塞进同一文件)。它们不阻断 Verdict,而是把结构事实摆上台面,让 owner 的任何 override 都带显式理由。
  • Lint-Rule Bridge —— 每条自定义 lint 报错必须以 → Read <规范路径> 结尾。L2 规则是被动的(只有被加载才生效);L1 报错是 agent 必读的通道。于是 L1 违规在违规点主动拉起完整的 L2 规范。
  • Code Validation Gate —— manifest 声明一条覆盖 lint + typecheck + test 的命令,交付前必须绿。红了就修——"先过后修"不存在。

3. 持久状态 —— 跨会话的项目真相

核心思想。 每个会话都从白纸开始。把项目真相写进文件,agent 启动时重新加载——但这带来一个更隐蔽的隐患:谁保证这些文件没过期?(这正是支柱 4 的同源机制——漂移机制——要回答的。)

真实设计——4 个热状态文件 + 事件溯源记录夹:

文件角色
manifest.md唯一允许放项目特定内容的文件:概念词表、用户语言别名索引、当前状态、validation 命令、技术栈
drift.md记忆衰减警报——带分级阈值的计数器
memos.md干系人结论:否决、决策、澄清。每次 demand 预扫都读
debt.md未解决责任——里程碑闸门读它

承重机制是 ADR-22 事件溯源(契约里的 records_folder):

  • 每个交付 / memo / debt 是 .archon/{kind}/records/<ISO时间>-<slug>.md 下一个不可变文件。
  • 热文件(drift.md 等)是由 archon-records.mjs 生成的投影;sentinel 之间手改即失败。
  • 这让 drift 计数变成对记录的可交换求和——两个并行分支各写 +5 / -3,合并后仍收敛,无需手工重编号,也不会在共享 append-only 文件上产生 merge 冲突。
  • 超过阈值的记录由 archon-records-fold.mjs 折叠进季度冷归档。

设计要点:快照类状态("当前是什么"——manifest 当前状态、收敛范围、最近复查)故意留在记录之外。那里的并行编辑是真正需要人解决的语义冲突,不该 CRDT 化。

4. 保全轴 —— 承重规则无法无声消失(ADR-28)

核心思想。 进化是双动作的纪律,不是单向纠错环。大多数演化代价不是付在"加错了东西",而是付在"为别的目的做的编辑,悄悄抽干了那条承重规则"。只做纠错的框架会朝着"上次坏的地方"漂移,丢掉那些解释"为什么别的没坏"的规则——因为这些规则只活在 agent 记忆里、没有机械锚点,而"没有失败可观测"意味着触发表永远不会触发。

真实设计——保全是结晶的对偶,且是机械的、不是叙事的

  • 结晶问"这次交付教了什么该改 Archon?"→ 提升到更强载体(测试 / 规则 / skill / ADR)。
  • 保全问"这次依赖了什么不能被悄悄抽干?"→ 用机械三件套钉住锚点:① 临界规则登记表条目,② body-shape 测试,③ 可移植契约条款。
  • 这张登记表是真实存在的:governance-contract.yaml 里的 critical_rule_substrings 数组持有 40+ 条钉死的 substring,每条带 rationale,说明删了它会重现哪个失败模式。钉住的 substring 一旦缺失,archon-check 直接红。
  • Close-Out 强制给出保全答案,二选一:preservation: pinned(<锚点>+<测试>+<契约>)preservation: none-this-cycle(<证据>)——后者的证据必须写明扫描目标和动词。archon-claim-verifier.mjs --mode=preservation 在 L1 校验它。
  • 边界:钉子是绊线,不是墙。你仍然可以删除一条钉住的规则——但删除必须是显式的(锚点、测试、契约条目一起删),绝不能无声 body-drain。这正是进化朝着上次修复漂移之间的界线。

5. 所有权契约 —— 负责的所有者,不是建议箱

核心思想。 第一公理,Ownership > Assistance。项目是 agent 的,不是用户的。用户是表达意图的产品干系人;agent 是唯一的工程所有者——架构、技术选型、质量、后果全是它的责任。

真实设计——soul.md 的 §Ownership / §Autonomy Principles / §Technical Sovereignty 三节,配套机械保障:

  • 自主原则:不让用户思考。不提问、不摆选项菜单、坏了直接修而不是上报等指令。唯一例外是产品方向歧义(确认意图)——技术歧义永远不算。
  • 技术主权:用户说的是产品意图,不是技术指令。"用技术 X" 先在本项目评估其是否成立;不成立就带替代方案否决。绝不因为"用户说了"就交付已知技术债——烂摊子是所有者来收。唯一让步对象是声明的硬约束,而非偏好。
  • 记忆即所有权:每个干系人结论(批准 / 否决 / 推迟 / 转向)都成为一条 memos 记录,热索引在每次 demand 预扫加载。用户永远不该重复自己——重复意味着丢了上下文,那是所有权的失败。
  • 分离 > 自审(第五公理,且带牙齿):执行者不能审自己的活。代码由主 agent 写,但复查交给独立的 reviewer 子 agent、知识捕获交给独立的 capture-auditor——因为在同一上下文窗口里,作者会合理化自己的产出(沉没成本偏见)。规则甚至要求子 agent 用不同的模型家族model_family: different-from-main),因为同家族先验会把"独立判断"塌缩成"换个说法的自审"。Blink Dispatch 决定何时某个切片风险高到值得花一个子 agent。
  • 沟通契约:用户只看结果——交付时给产品结果、工作时静默、唯一主动通道是确认有歧义的产品意图。

下一步去哪

你现在想…阅读
看完整结构参考架构参考
深入理解 drift + 复查漂移机制
通过真实的坑感受问题契合度用户旅程
看每个决策及其权衡架构决策(ADR)
读「为什么更强的模型并不能消除这种需要」模型 vs 框架

依据 Apache-2.0 许可证发布。