写过一段时间 Agent 程序的开发者,大多经历过类似的心慌:给 Agent 交下一个需要跨越数天、包含多轮判定与外部依赖的长任务,刚开始跑时看起来井井有条,但跑着跑着,状态就开始悄悄漂移。中断重启后,新启动的回合不知道该从哪里接手,多个回合往往在同一条已被证实走不通的死路上反复空转;遇到卡点时,系统只给出一句模糊的等待确认,让人不得不翻遍数十页日志去猜它究竟卡在哪。
过去,我们习惯把这类长程崩溃归因于模型还不够聪明,或者上下文窗口不够大。但如果仔细审视这些失败画面,就会发现一个被长期忽视的事实:复杂工作之所以难,往往不是因为螺丝钉不够聪明,而是因为缺少保证其协同与运转的制度。当单个 Agent 的推理与代码生成能力已经达到相当高的水平,螺丝钉本身的智能已经不再是瓶颈,如何建立一套能保障稳定协同的控制制度便成了关键。
前不久我们在《从数学家如何用 AI 来看 Harness 如何兼顾开放性与严谨性》中,分享过数学家 Chao Xu 如何通过一套严苛的文件协议给 Agent 立规矩。现在,开源项目 LoopX(MIT 协议,1.6k stars)则从工程角度,把类似的制度思考做成了一个不绑定特定 Agent 的本地控制面内核。它并不打算被包装成大公司已经在生产环境校验过的成熟范式,而是作为个人开发者关于长程 Agent 控制面架构的一个 Perspective 和工程尝试,提供了一套具有启发性的解法。
如果从我们在《从过程确定性到结果确定性》中探讨过的视角来看,LoopX 在工程上做出的最大贡献,就是完成了一次关于过程确定性与结果确定性的清晰分工。
长程崩溃的核心病灶,在于习惯性地把聊天历史当成指挥中心。当任务跨越数天、涉及复杂门禁与外部反馈时,目标、进度、验证证据与人的决策,都会混杂在漫长的对话记录中。一旦发生上下文压缩,那些隐式保存在历史里的判定条件就会无声丢失,新回合的 Agent 只能凭空推猜进度,误差也就从此开始累积。
缺少权威状态源带来的伤害是全方位的。因为没有统一的账本和锁机制,重新唤醒的 Agent 很容易在盲目推猜中重复消耗预算,受阻的高优先任务可能被伪装的局部进展掩盖,而人类也无法在模糊的卡点提示下做出针对性决策。这些问题并不是模型窗口不够大或者提示词没写好,而是因为纯靠概率推导的模型自身无法为历史记录做确定性校验。只要控制状态依然附着在散文式的对话记录上,长任务的漂移就无法避免。
在传统开发中,程序员的安全感来自于锁死每一个分支的过程确定性;然而在 Agent 领域,试图在模型内部去微操每一步推理过程注定难以成立。想要在开放探索空间中获得稳定性,必须把过程确定性的职责从模型内部撤出来,交给外部的系统结构。
为了打破这一困局,LoopX 展现了一套非常清晰的分工哲学:把过程确定性交给控制面,把结果确定性交给独立验证。
在过程确定性这一侧,LoopX 将控制状态从执行层解耦出来,交由独立的本地内核统筹。代码片段、工具输出与临时推理随用随扔,而目标、待办、权限门禁与计算预算则作为持久状态独立保存。这就好比在 Agent 之外设立了一个独立的状态中枢,每次任务唤醒时,Agent 只需要向状态中枢查询当前的目标与封堵的死路,就能直接在正确的上下文里接续工作。
调度入口的控制同样服务于过程确定性。每次任务唤醒时,系统会优先跑一段硬编码的纯代码逻辑,直接裁决当前回合是该开工、该等待授权还是安静休眠。把入口裁决交给确定性代码而不是大模型,是出于很现实的防御考量:如果在决定该不该跑的关键路径上调用模型,不仅会带来成本与延迟,还可能因模型自身的逻辑漂移或提示词注入导致调度失控。在提案与最终状态晋升之间划出一道硬性界线,由代码逻辑做最终把关,确保了系统运转的规整。
而对于结果确定性,系统则在人机交互与结算环节贯彻观察不等于完成的硬性约束。人类的批准不再是一张全放行的许可证,而是被收窄到具体的写权限或资源作用域上,未受影响的操作依然可以并行推进。当 Agent 跑完阶段性工作后,不能由自己宣布搞定,而是必须提交通过验证的成果写回,甚至由独立的 Verifier Agent 或自动化脚本进行验收。只有确认达标后才结算配额并更新状态,从机制上避免了伪装进展或虚假收敛。
在产品形态上,LoopX 最让人省心的一点,在于它没打算推翻你手头已有的工具链。不管你平时用的是 Codex、Claude Code、Cursor,还是自己写的 Runner,它都是作为一个通用的命令行控制内核挂在外面。
这种非侵入式的接入体验非常顺手。你不必为了用上控制面就把已有的 Harness 全部拆掉重写。如果只是想快速试用,直接用它包装一下现有的命令行工具,由外壳在运行前后帮忙看守账本、收集工件,Agent 内部连一行代码都不用动;即便遇到完全打不开内部循环的黑盒脚本,它也能在跑完后通过检查 Diff 变动和日志,自动帮你把事件提出来并生成下一次的恢复包;只有在你想做更深度的自定义控制时,才需要通过 API 让 Agent 和控制面做原生交互。这种按需挂载的设计,最大程度尊重了开发者原有的工作流。
而在实际跑下来的轨迹上,LoopX 官方展示了两条跨越 200 以上墙上时钟小时(指自然时长而非连续计算)的真实记录:一条是作者作为 OpenViking 开发者去修 Issue 并提交 PR 的过程,全程保持了修补知识与上下文的演进;另一条则是由作者自己运行的 AutoML 实验图谱。这些轨迹很直观地说明了一件事:当控制状态被稳稳锚定在外部内核里,且阶段成果有确定性校验时,Agent 的决策 lineage 可以跨越数天的自然时长被保留下来。当然,团队在发布说明里也很实在,明确表示当前版本并不承诺基线指标的直接提升,它展现的更多是一种很有启发性的编排视角。
在 Agent 技术的演进里,我们太容易形成一种惯性:模型跑崩了,就换个更强的模型;上下文断了,就拼个更大的 Prompt。但 LoopX 的工程尝试提醒了我们另一种解法:当螺丝钉本身的智能已经足够好,长任务能不能稳定跑完,取决于我们有没有给它建立一套清晰的制度。
把过程确定性交给外部控制面去管记忆、门禁和配额,把结果确定性交给独立的验收机制,这个抽象分工给了我们很深的启发。过去我们总想在模型内部去微操每一步动作,结果往往事倍功半;真正能让人省心的做法,是给模型配上一套机器可判定的规则账本。
对于在这一线折腾 Agent 的开发者来说,这意味着我们可以把注意力从天天微调提示词里解放出来。多花些精力去把写权限作用域划分清楚、把互斥租约和成果校验机制搭好,让外部控制面替 Agent 挡掉逻辑漂移与状态混乱。当制度建立起来,智能才真正能在长程复杂工作中稳稳扎根。