控制层和方向层的分野:OpenProse、Natural-Language Agent Harnesses 与 Attractor-Guided Engineering

发布时间:2026/7/20 14:24:31
控制层和方向层的分野:OpenProse、Natural-Language Agent Harnesses 与 Attractor-Guided Engineering 相关项目OpenProseopenprose/reactor、NLAHsNatural-Language Agent Harnesses https://arxiv.org/abs/2603.25723、AGE 模板 https://github.com/entropy-cloud/attractor-guided-engineering-template、nop-chaos-fluxAGE 的生产级实施实例AGE 方法论系列文章Attractor Before Harness: AI 大规模开发的方法论 、 从 Spec-Driven Development 到 AGE起点OpenProse、Natural-Language Agent HarnessesNLAHs和 Attractor-Guided EngineeringAGE都在试图解决同一个问题AI agent 的产出不可靠怎么办前两者在控制层给出答案——OpenProse 用确定性 runtime 让目标可被精确维护NLAHs 用自然语言文档让 harness 策略可被审查。AGE 追问的则是控制层之前的问题控制到底应该维护什么结构如果方向层不存在更好的 runtime 和更清晰的 harness 只会让结构整体漂移。OpenProse从运行时抽象出发——设计一种让 AI agent 长期维护持续为真目标的合约语言和运行引擎。NLAHs从表示媒介出发——将 agent harness 策略从 tangled controller code 外化为可编辑的自然语言文档由共享运行时 IHR 解释执行。AGE从工程过程出发——设计一种让人类和 AI 协作时系统持续向稳定结构收敛的文档-流程体系。OpenProse 问的是怎样让一个目标不变。NLAHs 问的是怎样让一次 agent run 按可审查的策略执行。AGE 问的是系统被推偏之后为什么还会回到正确方向。约定本文中 “NLAHs” 指论文提出的整体框架Natural-Language Agent Harnesses“NLAH” 指单份策略文档“IHR” 指共享运行时Intelligent Harness Runtime。Fixed Point ≠ AttractorOpenProse 和 AGE 的核心抽象对应两个不同的数学对象。Fixed Point不动点f(x) x。系统放在这个点上就不动了。判定条件是严格的等式。不动点可以是稳定的附近的点向它收敛也可以是不稳定的附近的点远离它。Fixed point 不蕴含 basin of attraction 的概念。Attractor吸引子一个集合点、极限环、奇怪吸引子使得周围一个区域吸引域basin of attraction内的所有初始状态都会随时间演化向它收敛。关键性质不是放上去不动而是从附近出发会被拉回来。吸引子不必是一个点可以是一个流形。系统不需要精确到达它——只要在 basin 内轨迹在收敛就行。OpenProse 的指纹比对fingerprint fingerprint是 fixed point 检测输出和之前一样吗一样就不动了。AGE 的系统向稳定结构收敛可按 attractor 判据理解系统不需要精确到达某个理想状态只要控制机制持续把它拉回稳定结构附近。一个是状态判定——“到了没有”。一个是过程判定——“方向对不对”。Control Target ≠ Attractor本体论区别收敛机制fixed point vs attractor的区分之外还有一个更深的本体论差异控制目标 vs 吸引子。控制目标Control Target控制框架已经建立后定义控制应该朝向哪里。它假设控制框架本身已经存在执行者会按照指令行动偏离时通过重新执行指令来纠正控制目标是外部强加的 specification驱动执行者去符合它。数学吸引子Attractor吸引子由系统自身动力学产生——周围区域内的所有初始状态都随时间演化向它收敛。关键性质它是涌现的——由系统动力学定义不是外部强加的指令扰动-恢复——推走它动力学会把它拉回来系统不需要知道它——水不需要知道洛伦兹吸引子就按它运动它是方程定义的流形——不枚举每个正确状态只定义约束关系吸引子为控制提供最终因final cause。它在控制之前不在控制之内。注意AGE 的吸引子只是一种类比它不是自然涌现的数学对象而是工程化构造的语义场人定义结构约束流程把这些约束转化为跨会话的恢复动力学。它的判据不是没有外部设计而是扰动后的恢复是否由持久结构场驱动而非由一次性指令驱动。打个比方操作手册告诉工人怎么组装零件。工人按手册做偏离了对照手册纠正。手册是控制目标——它需要工人知道它并主动执行。重力井是吸引子——不管你怎么推物体物体的动力学自然把它拉回来。物体不需要知道重力井的存在。OpenProse 和 NLAHs 的不变量都是控制目标OpenProse 的 ResponsibilityGoal/Maintains/Continuity是外部定义的 specification。运行时通过指纹比对检测偏离偏离了就重新 render。这是控制目标 确定性执行。收敛靠 runtime 强制重新执行 specification。NLAHs 的 harness patterncontract stages state / validation / recovery / stopping rules告诉 IHR 应该怎么组织一次 task run。IHR 不是硬编码控制器而是用 runtime policy 解释 NLAH把条款落实为 child-agent calls、state updates、validation gates 和 artifact contracts。如果 agent 偏离起作用的是 validation / recovery / stopping rules 等控制目标不是系统动力学自然收敛。“behavior is flexible but still policy-guided” 不是吸引子语义是运行时语义约束下的弹性执行。AGE 的 owner-doc 体系在类比意义上具备吸引子性质扰动-恢复动态AI 改了代码扰动→ test/audit 发现偏离 → 修正 → 系统回到结构附近。跨会话的扰动-检测-纠正循环构成了收敛动力学。隐式定义的流形docs/architecture/不是枚举每个正确状态而是定义约束方程。满足约束的状态构成流形局部实现多样整体被拉向同一类结构。跨会话涌现上百次 commit、几十个 plan、多次审计叠加后的长期收敛——这是系统行为不是某次执行。AGE 的恢复同样依赖文档作为真值源。区别不只是粒度和时间尺度而是约束对象不同控制层指令约束一次执行如何完成方向层约束未来所有执行结果允许落入的结构区域。机制层的结构性平行三个体系的机制层存在结构性平行OpenProseNLAHsAGE真值源Responsibility (Goal/Maintains)NLAH (contract run rules)Owner docs (docs/architecture/)解释者OpenProse reactorIHR runtimeAI agent 读文档执行单元rendertask runplan重大变更时检测指纹比对validation gatesCI audit关闭条件postcondition receiptcompletion gates artifactsClosure Gates 独立 closure audit纠正重新 renderretry / recovery / honest stop修正代码重读文档机制槽位相似但语义不同。这个表只说明三者都是控制系统不说明它们控制的是同一类对象。OpenProse 和 NLAHs 让一次执行更可控AGE 判断这些执行累积后是否仍指向同一个长期结构。差异不在机制层而在机制层之上的方向层是否存在。OpenProse 的 Responsibility 和 NLAHs 的 NLAH 都是自包含的 specification——它们定义了自己的完成条件指纹相等 / contract 满足不需要外部引用系统应该向什么结构收敛。AGE 也有完成条件CI gates、audit 通过但 owner docs 的不可替代作用是当局部完成条件与长期结构方向冲突时提供裁决依据。CI 可以判定某次 import 是否通过owner-doc 决定为什么flux-react不能反向依赖 renderer 包。前者是控制门后者是方向层。这就是方向层 vs 控制层的区别不是机制不同而是控制之上有没有一个独立的、持久的目标结构为所有控制提供最终因。三者的本体论位置三者的关系不是层次关系project-level attractor ⊃ run-level attractor而是本体论差异方向层Attractor——AGE: owner-doc 定义的长期收敛结构 ↑ 为控制提供最终因 │ 控制层Control Target——NLAHs/OpenProse: specification runtime 执行 ↑ 控制机制的实现 │ 机制层Mechanism——IHR/reactor/CI: 具体的检测、执行、恢复AGE 文章的核心论点正是方向层先于控制层。没有定义朝哪里收敛控制机制就没有统一意义。NLAHs 和 OpenProse 都在控制层做创新——NLAHs 用 NL 提高策略的可审计性和可移植性OpenProse 用确定性 runtime 提高执行的精确性和成本效率。但它们都不能回答方向层的问题系统应该向什么结构长期收敛一个可证伪的表述是如果移除 AGE 的 owner-doc 优先级链、日志和 bug 蒸馏后系统仍能在长期重构中保持同等架构方向那么 AGE 的方向层主张就是多余的。三个体系的前提假设OpenProse会话终将结束责任不应随之消失OpenProse 的核心隐喻来自 React。它把 AI agent 的每一次执行建模为一个 render。三个关键假设AI 的价值在于 bounded render——有限、可审计的单次推理持续性的来源不是会话而是 world-model 的持久状态和 receipt 链成本与意外成正比与时间无关——如果没有变化render 不执行这是 runtime-first 的世界观先定义好什么在运行时保持为真再考虑工程过程。NLAHs策略不应埋在代码里NLAHsNatural-Language Agent Harnesses的核心隐喻来自可编辑的策略文档。NLAHIHR 体系把 agent harness 拆成四层栈。三个关键假设Harness 策略可以从 tangled controller code 中分离出来用可编辑的自然语言表达NL 携带策略code 携带机制——精确操作留在代码里可检查的策略留在 NL 里共享 runtimeIHR可以为不同的 NLAH 提供统一的执行基底这是 representation-first 的世界观策略的表示媒介决定了它的可审查性、可移植性和可分析性。AGE先定义系统要回到哪里再讨论怎么回去AGE 的核心隐喻来自动力系统理论。三个关键假设AI 是结构上不同于人类的扰动源——高频、高振幅、无持续方向感Attractor 必须先于 harness 存在——“朝哪里纠正先于如何纠正”文档是 attractor 的载体代码是 attractor 的瞬时投影——两者都不是 attractor 本身这是 process-first 的世界观先定义好系统应该向什么结构收敛再设计运行时的行为。分歧一览维度OpenProseNLAHsAGE核心问题如何让 AI 持续维护一个为真的目标如何将 harness 策略外化为可审查的 NL如何让系统在 AI 高频扰动下持续向稳定结构收敛问题域单个 responsibility 的生命周期单次 task run 的 harness 策略整个仓库的演化轨迹时间尺度单次 render分钟到持续 serve天单次 task run分钟到小时单次 commit分钟到项目演化月/年不变量性质控制目标specification fixed point控制目标specification 软约束工程化方向场engineered attractor-like structure稳定性概念Fixed point——指纹相等即不动Policy conformance——符合策略即正确Attractor——在 basin 内即收敛对了的含义输出与期望精确匹配二值执行路径符合 NLAH 规定的策略系统在收敛方向上方向性控制机制确定性指纹比对零 LLMIHR 解释 NL policy依赖 LLM扰动-恢复动力学test→audit→fix策略执行Runtime 强制Runtime NL 指导制度化流程诱导而非 runtime 强制核心抽象对比最小原语OpenProse 的 Responsibility是一个自包含的计算单元有明确的输入边界Requires、输出边界Maintains、目标Goal和连续性约束Continuity。执行产生一个 receipt——内容寻址、链式可验证的决策证明。NLAHs 的 NLAH 文档是一个可编辑的策略描述定义了 task run 的 lifecycle policycontract、stages、roles、state rules、verification rules、recovery rules 和 stopping conditions。NLAH 不是告诉模型怎么回答而是告诉 runtime 怎么组织一次多步执行。IHR 的执行语义不是把 NLAH 编译成代码也不是让一个 agent 读完文档后自由发挥。它用固定 runtime-policy prompt 把 base agent 变成 parent orchestratorparent 读取 NLAH把 contract、stages、state rules、validation rules、recovery rules 和 stopping conditions 落实为 child-agent task packets、handoff、状态文件、artifact gates 和 completion checks。阶段内部仍由 child agent 智能执行测试、parser、validator、benchmark adapter 这类精确操作由 scripts/adapters 承担。AGE 的 Attractor不是一个对象是一个结构性质由三层组成结构层少量高层不变量如包依赖方向flux-core → ... → flux-renderers、七种原语闭集、编译优先管道载体层承载这些不变量的可审计文档docs/architecture/实现层当前代码中体现这些不变量的部分Responsibility 和 NLAH 都是实例——你可以数出这个项目有 23 个 responsibility或这个 benchmark 有 1 个 NLAH。Attractor 是一个性质——你不能数出这个项目有 5 个 attractor它更像这个系统的吸引子是一个低维流形。三个体系都有把 AI 行动收束成可关闭单元的机制OpenProse 的 render、NLAHs 的 task run、AGE 的 plan。Render 的闭包由输入指纹、postcondition 和 receipt 决定task run 的闭包由 NLAH 的 task contract、validation rules、artifact contracts 和 stopping conditions 决定plan 的闭包由Plan Status、Current Baseline、Goals、Non-Goals、execution/proof checklist、Closure Gates和独立 closure audit 决定。Plan 不是待办列表而是一次重大变更能否关闭的证据结构先核对当前基线限定目标与非目标执行中逐项证明最后由独立审计确认 scope 内事项已经完成或被诚实移出。它和 owner-doc 的关系也不是每次修改文档而是用 owner-doc 判断当前变更的边界和关闭条件只有当变更改变 live baseline、public contract 或 owner behavior 时closure 才要求同步文档。NLAH 和 AGE plan 在机制形态上接近都用自然语言定义 contract、阶段、证据和停止条件都反对只靠 agent 自述完成。但两者关闭的对象不同NLAH 关闭的是一次 run证明执行轨迹满足 harness policyplan 关闭的是一次变更证明当前 scope 的结果、证据和文本状态都足以被独立审计接受。NLAHAGE plan对象一次 agent run 的 harness policy一次重大变更的 closure contract执行结构IHR parent orchestrator child agents实现 agent / 人类按 plan 执行独立 reviewer 或 fresh subagent 关闭审计证据载体STATE_ROOT、artifacts、run logsplan checklist、proof、verification output、daily log停止条件task contract、artifact contract、stopping conditionsClosure Gates、scope 内 checklist、deferred adjudication、closure audit失败后处理run 内 retry / recovery / honest stop不关闭、补 proof、改状态、拆出 non-blocking follow-up 或新 plan状态模型OpenProseNLAHsAGE状态表示内容寻址的 world-model形式化文件系统状态STATE_ROOT artifacts代码 文档 日志非形式化判定机制确定性指纹函数canonicalizervalidation gates artifact contractsCI 命令 人工审查历史记录Receipt ledger链式可验证Artifact 文件 日志单次 run 内日志 Bug Notes Git history稳定性语义Fixed point 检测hash hashPolicy conformance符合策略Attractor 收敛在 basin 内且方向正确跨会话记忆Receipt chain链式可验证无单次 run 内的文件状态有logs、bugs、discussions、plans技术实现对比OpenProse 是严格的两阶段架构编译期用 LLM 产生确定性工件Forme DAG、canonicalizer、postcondition validators运行期从不调用 LLM所有决策都是确定性的。AGE 没有编译一次然后运行的分离验证持续嵌入在每次变更中——typecheck → build → lint → test → 审计 → 日志永远在验证方向。NLAHs 处于两者之间NL policy 与确定性 hooks 分离但 IHR 运行时依赖 LLM 解释策略。AGE 明确识别了自验证陷阱AI 从同一上下文生成代码和所有评判材料类型、测试、文档、完成总结如果理解有偏差所有验证证据会朝同一个方向偏离。对策是强制生成和评判分离——闭包审计必须由新上下文执行。OpenProse 通过编译期冻结确定性函数来绕过同一个问题。NLAHs 在论文的评估场景中靠 benchmark autograder 规避但在生产部署中同样需要外部验证机制来避免自验证陷阱。对一致性的理解——三种语义这是三个体系最深层的分歧点。OpenProse 的 fixed-point 一致性每个 responsibility 的 render 产出 world-model通过 canonicalizer 得到指纹。指纹和上次一样系统一致。判定是二值的相等或不相等没有差不多一致。组合层面每个 responsibility 都在自己的不动点上DAG 拓扑正确则整个系统一致。自底向上每个局部不动点组合成全局不动点。NLAHs 的 policy-conformance 一致性agent 的执行路径是否遵循 NLAH 规定的策略。Paper 定义了 pattern-preservation、stage-coverage、artifact-contract compliance 等指标来度量。不是二值的——NLAH 允许灵活执行但要求策略结构阶段、角色、验证门、状态规则被保留。Paper 的 RQ2 发现 NLAH 保留了可识别的工作流结构workflow preservation 0.63-0.67, stage coverage 0.57-0.82但信息传递是主要弱点handoff recall 低至 0.32。AGE 的 attractor 一致性不是二值的。一个系统可以大部分在 attractor 附近但某个子系统偏离了——这不是不一致而是在 basin 内但偏离中心。判定标准是方向性的系统是在向 attractor 收敛还是在远离一次 commit 可以通过所有测试在 basin 内但如果引入了架构偏移比如逆转包依赖方向系统的轨迹就不再向 attractor 收敛了。自顶向下——即使每个模块的测试都通过每个局部都在不动点整体仍然可以偏离 attractor。AGE 的原始论断“所有 state-level checks 都能通过但系统整体在漂移”。nop-chaos-flux 的 Plan 76 是一个实例移除array-editor局部状态镜像的尝试产生了 11 个测试失败——不是因为单个 bug而是因为测试本身已经漂移到了与旧实现的时序耦合状态。每个累积的变更都通过了 review 和 CI但从 attractor 视角看测试套件已经漂离了能支持结构性演化的位置。这恰恰是 attractor 概念存在的原因。这个区分不是术语偏好Fixed point 方法只能检测是否精确到达——对在收敛方向上但还没到达和已经偏离的区分能力很弱Attractor 方法天然关注轨迹方向——不需要系统精确到达只需要系统在收敛而收敛本身就是可持续的Fixed point 在离散状态空间如 world-model 的指纹中工作良好Attractor 在连续状态空间如架构的演化中更有表达力这直接解释了为什么 OpenProse 用hash hash离散等式AGE 用CI 通过 文档一致 架构边界完整多维收敛信号三个维度对 AI 的定位。OpenProse 把 AI 建模为有界的 render 函数角色是执行器。NLAHs 把 AI 建模为被 harness policy 组织的执行系统parent orchestrator 按 runtime policy 解释 NLAHchild agents 执行具体任务角色分化为编排者 执行者。AGE 把 AI 建模为高频、高振幅、无持续方向感的扰动角色是扰动源 执行器——同时被约束和被使用。对文档的理解。OpenProse*.prose.md就是程序如果任何东西与 Markdown 不一致Markdown 是对的。NLAHsNLAH 文档是策略——规定怎么做但不直接执行最可审查的部分从实现细节中分离出来。AGE文档是 attractor 的载体层代码是 attractor 的瞬时投影载体层定义了它应该回到哪里。失败处理。OpenProse失败产生failedreceipt即时的、个体的每个 render 独立记录。NLAHsNLAH 定义 Recovery Rules重试、回退、证据失败的 artifact 保留供分析但不跨 run 蒸馏。AGE失败产生结构化 Bug Note反复出现的失败模式被蒸馏为 guardrails按渐进自动化阶梯升级笔记 → 检查清单 → 启发式脚本 → lint 规则 → CI 门控。渐进式自动化的实证nop-chaos-flux 的工具链AGE 方法论有一个核心论断能落实为确定性检查的会逐步从轨迹数据中抽取为确定性脚本。nop-chaos-flux 的工具链为这条论断提供了完整的实证。实际发生的 5 级渐进自动化阶梯Tier 1: 轨迹捕获Bug Notes Logs 62 bug fix notes, 72 daily dev logs Tier 2: 模式蒸馏Architecture Guardrails Audit Rules 8 guardrails distilled from bugs, 19 dedicated audit rules Tier 3: 编码化的审查模式Skills/Prompts 24 reusable audit/review prompt templates Tier 4: 启发性嫌疑扫描器Heuristic Scanners, exit 0 12 focused audit scanners, informational output Tier 5: 硬门控自动化Hard Gates, CI-blocking, exit 1 on failure 14 hard gate scripts, 30 ESLint rules, dependency-cruiser, Semgrep, Husky pre-commit实例 A构建产物污染源码目录Tier 1— Bug #23packages/*/src/中残留的.js文件在 Vitest 运行时暗中覆盖了.ts源码导致测试失败但根因不在测试代码。共发现 102 个过期文件。Tier 2— Guardrail #6 “No Build Artifacts In Source Directories” 被蒸馏进docs/references/architecture-guardrails-from-bugs.md附有 bug 证据链接。Tier 5—scripts/verify-no-src-artifacts.mjs成为硬门控CI-blocking同时scripts/clean-src-artifacts.mjs提供清理能力。pnpm lint链在 ESLint 之前先跑 clean verify。从 bug 到 CI 门控完整走完了 5 级。一个思想实验如果用 OpenProse 或 NLAHs 管理 nop-chaos-flux如果把 nop-chaos-flux 的架构不变量建模为 OpenProse responsibilities会得到运行时精确的变化检测但无法回答为什么这些不变量应该这样组织、如何演化。如果把 plan 执行建模为 NLAHs会得到结构化的执行流程但无法回答 100 次 plan 之后系统是否仍在收敛。两者都是控制层工具都不覆盖方向层。AGE 的 owner-doc 系统处理这些问题。OpenProse 的 responsibility 合约不覆盖方向层。NLAHs 的策略文档不覆盖跨会话的轨迹演化。两者都是优秀的控制层工具但吸引子方向层不在它们的问题域内。结论OpenProse 回答的是“给定一个需要持续为真的目标如何用 AI 高效、安全、可审计地维护它”——微观运行时问题。NLAHs 回答的是“给定一个 tangled 的 controller code如何把可复用的 harness 策略外化为可审查、可移植、可消融分析的 NL 文档”——表示媒介问题。AGE 回答的是“给定一个在 AI 扰动下持续演化的系统如何保证它不会偏离稳定结构”——宏观过程问题。三者守护的是不同形式化/工程化稳定性语义甚至不同本体论层次。OpenProse 信任算法确定性函数、内容寻址、链式验证来维持不动点NLAHs 信任可审查的 NL 策略IHR 解释执行、模块可消融来维持策略遵循AGE 信任的不是泛泛流程而是可审计、可累积、可对抗复核、能把失败沉淀为未来约束的过程。OpenProse 和 NLAHs 在控制层做创新AGE 在方向层做贡献。真正的分歧在于失败会在哪里累积OpenProse 把失败局部化到 responsibilityNLAHs 把失败局部化到 task runAGE 把失败看作跨会话轨迹的信号。在 nop-chaos-flux 的实践中AGE 的渐进自动化阶梯已经跑通62 bug notes → 8 guardrails → 14 硬门控 12 启发性扫描器 30 ESLint 规则。Bug #23构建产物污染完整走完了从 bug note 到 CI-blocking 硬门控的 5 级蒸馏。72 个日志文件记录了系统的轨迹46 个执行计划是局部收敛机制58 个架构文档的优先级链是 attractor 的载体层。OpenProse 可以把 AGE 已经明确的局部不变量变成精确的变化检测。NLAHs 可以把 harness 变成可消融对象。两者都是优秀的控制层工具但吸引子方向层不在它们的问题域内。它们可以成为控制层执行器不能替代方向层裁判。可以这么说如果一个项目连续通过 CI、review 和 harness contract却在 50 次 AI-assisted change 后出现包边界逆转、测试语义耦合和 owner-doc 冲突那么 OpenProse/NLAHs 的控制层成功了而 AGE 要处理的问题才刚刚显现。这就是三者的分界线不是谁更全面而是谁能看见长期漂移。控制层能告诉 AI 怎么纠错方向层决定了什么才叫错。