【LoopX】Long-Running Agent 状态内核深度解析:把 Bounded Turn 串成 200+ 小时的 Harness
【LoopX】Long-Running Agent 状态内核深度解析:把 Bounded Turn 串成 200+ 小时的 Harness
如果说 LangChain / AutoGen / CrewAI 是”教 Agent 怎么干活”,那 LoopX 在解决一个完全不同的问题:怎么让 Agent 干 200 小时的活而不会跑飞?
一、前言:为什么 95% 的 Agent Harness 都不擅长”长时间跑”?
我过去两个月读了 17 个 Agent Harness 项目(LangGraph、Temporal、Karpathy autoresearch、Gastown、strands-agents…),发现一个共同的盲点:
**绝大多数 Harness 把 Agent 当成”函数”——给它输入,它返回输出。**一旦你把它放进”多天 / 多周”的时间尺度,三件事会同时崩:
- 状态丢失:上下文窗口溢出、对话压缩丢字段、Todo 列表被新任务覆盖
- 预算失控:Agent 在没用的循环里持续烧 token,凌晨 3 点把 30 美元额度烧光
- 责任真空:谁是当前 todo 的 owner?上一轮的 handoff 是否落地?决策人 / 执行人 / 审批人怎么分?
而 huangruiteng/loopx(3,746 ⭐,MIT,2026-08-09 最新提交)给出了一个相当激进的答案:Agent 不应该”长跑”,应该”一次只跑一个 bounded turn,剩下交给状态内核”。
它用 5 个核心组件把”长跑”这件事工程化:
LoopController:6 态纯函数状态机Scheduler:9 态仲裁器Turn Envelope:8KB 带签名的 turn 契约Capability Gate:三路分诊(run / ask_owner / repair_bridge)Heartbeat Budget:分级 prompt 接口预算
读完这篇你能拿到:LoopX 的核心原语剖析、为什么这种”控制面/数据面分离”是 Long-Running Agent 的关键抽象,以及和 Karpathy autoresearch / Gastown / Cline 的对比启示。
二、项目定位:LoopX 是什么 / 不是什么
2.1 一句话定位
LoopX 是一个 local-first、provider-neutral、状态内核(state kernel),不替代 Agent 运行时(Codex / Claude Code / Cursor / 自定义 runner),只管理 跨 turn 的目标、闸门、todo、证据、配额和 handoff。
官方 README 的原话:
Agent runtimes execute the work. LoopX governs the state that lets engineering, research, discovery, and operations loops continue across runs. It is not another agent framework or a provider-specific orchestration runtime.
2.2 它在 Harness 6 件套矩阵里的位置
| 组件 | LoopX 是否覆盖 | 实现层 |
|---|---|---|
| Rule | ⚠️ 弱 | 通过 policy.compact_control_plane_policy 表达”是否允许 self_repair”等元规则 |
| Skill | ✅ | loopx/capabilities/(179 文件)是 SOP 库,定义 issue-fix、auto-research 等可复用能力 |
| Sub-Agent | ✅✅ 强项 | loopx/control_plane/agents/ 27 文件 + peer_agent_profile + claim/lease/handoff |
| Workflow | ✅✅ 强项 | 6 态 LoopController + 9 态 Scheduler + effect_program 7 阶段结算 |
| Script | ✅ | loopx/cli_commands/ 79 文件 + loopx turn run-once 单一交付事务 |
| MCP | ⚠️ 弱 | 仅在 loopx-finance-value-discovery 等子包有 MCP 桥接 |
最显著的定位:LoopX 是整个博客里第一次见到的”Long-Running Agent 控制面”独立项目。Karpathy autoresearch 是单 Agent 循环,Gastown 是多 Agent 角色编排,而 LoopX 是”状态 + 编排 + 预算 + 验证”的中间层。
2.3 一个真实证据:200+ 小时的 OpenViking 贡献
README 反复强调一个数字:”200+ hours of elapsed loop lifetime“——这不是”模型跑 200 小时”,而是人类 + Agent 协作 200+ 小时的工程时间,跨越 5+ 个分支、20+ 个 review、无数个被 reject 的 PR。
1 | 200h wall-clock project time |
这给 Long-Running Agent 一个具体定义:跨多个人类工作日 / 多周的真实工程进度,而不是单 turn 推理时长。
三、架构解析:5 层 + 1 个核心契约
LoopX 仓库有 1482 个 .py 文件(其中 766 个在 loopx/ 主包,179 个在 capabilities/,234 个在 control_plane/),乍看像”过度工程”。但抽掉 boilerplate 后只有 5 层 + 1 个核心契约。
3.0 核心数据流(5 步核心 tick)
LoopX 官方 README 把整个系统的”心跳”压缩成 5 步——这个序列是所有 host adapter 必须实现的最小循环:
graph LR
Q["1️⃣ loopx quota<br/>should-run<br/>该跑了吗"]
C["2️⃣ loopx todo<br/>claim<br/>谁负责"]
U["3️⃣ loopx todo<br/>update<br/>改了什么"]
R["4️⃣ loopx<br/>refresh-state<br/>下次该看到什么"]
S["5️⃣ loopx quota<br/>spend-slot<br/>记账"]
Q -->|"should_run=true"| C
C -->|"claimed by agent X"| U
U -->|"progress / completion"| R
R -->|"projection updated"| S
S -.->|"loop 回到 1"| Q
style Q fill:#C7CEEA,stroke:#7B85C4,stroke-width:2px,color:#333
style C fill:#E8D5F5,stroke:#9C7BB8,stroke-width:2px,color:#333
style U fill:#FFDAB9,stroke:#D4A574,stroke-width:2px,color:#333
style R fill:#FFF9C4,stroke:#D4B95E,stroke-width:2px,color:#333
style S fill:#B5EAD7,stroke:#6BA88A,stroke-width:2px,color:#333关键观察:
- 第 1 步(should-run)是唯一有权决定”跑不跑”的环节,闭环内其他 4 步都是”记账”
- 第 5 步(spend-slot)之后必须立即回到第 1 步——这是个状态机闭环,不是线性流程
- 任意一步失败都会触发
LoopDisposition.REPAIR,而不是崩在中间
3.1 整体架构(马卡龙色分层)
graph TB
subgraph 入口层["🚪 入口层 (CLI / Host Adapter)"]
A1["loopx CLI<br/>79 个命令"]
A2["Codex / Claude Code / Pi<br/>Host Adapter"]
end
subgraph 编排层["⚙️ 编排层 (Scheduler + LoopController)"]
B1["Scheduler<br/>9 态仲裁"]
B2["LoopController<br/>6 态纯函数"]
end
subgraph 契约层["📋 契约层 (Turn Envelope + Receipt)"]
C1["Turn Envelope<br/>8KB 签名"]
C2["Validated Receipt<br/>7 阶段结算"]
end
subgraph 资源层["🧠 资源层 (Quota / Capability / Heartbeat)"]
D1["Quota 应花预算"]
D2["Capability Gate<br/>三路分诊"]
D3["Heartbeat Budget<br/>5 档接口"]
end
subgraph 状态层["💾 状态层 (Todo / Goal / Evidence)"]
E1["Goal 目标"]
E2["Todo 列表"]
E3["Event Ledger<br/>append-only"]
end
A1 --> B1
A2 --> B1
B1 --> B2
B2 --> C1
C1 --> C2
C2 --> D1
C2 --> D2
C2 --> D3
D1 --> E1
D2 --> E2
D3 --> E3
style A1 fill:#FFDAB9,stroke:#D4A574,stroke-width:2px,color:#333
style A2 fill:#FFDAB9,stroke:#D4A574,stroke-width:2px,color:#333
style B1 fill:#E8D5F5,stroke:#9C7BB8,stroke-width:2px,color:#333
style B2 fill:#E8D5F5,stroke:#9C7BB8,stroke-width:2px,color:#333
style C1 fill:#FFB3C6,stroke:#D88A9F,stroke-width:2px,color:#333
style C2 fill:#FFB3C6,stroke:#D88A9F,stroke-width:2px,color:#333
style D1 fill:#C7CEEA,stroke:#7B85C4,stroke-width:2px,color:#333
style D2 fill:#C7CEEA,stroke:#7B85C4,stroke-width:2px,color:#333
style D3 fill:#C7CEEA,stroke:#7B85C4,stroke-width:2px,color:#333
style E1 fill:#B5EAD7,stroke:#6BA88A,stroke-width:2px,color:#333
style E2 fill:#B5EAD7,stroke:#6BA88A,stroke-width:2px,color:#333
style E3 fill:#B5EAD7,stroke:#6BA88A,stroke-width:2px,color:#3333.2 5 层职责拆解
| 层 | 职责 | 关键文件 | 千万不要做的事 |
|---|---|---|---|
| 入口层 | 把外部 Agent 调过来 | loopx/cli_commands/, loopx/turn_driver/codex_cli.py | 不要让 Agent 直接改 LoopX 状态 |
| 编排层 | 决定”现在该不该跑、谁跑、跑完下一步” | control_plane/scheduler/, control_plane/turn_driver/loop_controller.py | 不要在编排层 sleep / 起线程 |
| 契约层 | turn 的输入/输出必须可验证 | control_plane/turn_driver/transaction.py, control_plane/quota/turn_envelope.py | 不要把状态写进 envelope |
| 资源层 | 配额、能力、prompt 预算 | control_plane/quota/, control_plane/agents/capability_gate.py, control_plane/heartbeat/budget.py | 不要在这里调度 Agent |
| 状态层 | 目标、todo、证据(append-only) | control_plane/goals/, control_plane/todos/, control_plane/runtime/event_ledger.py | 不要做”修改式”覆盖,必须 append |
Less is More 检验:每一层都是”模型自己学不会的”——Agent 自己不会记账、不会仲裁、不会做 capability 分诊。这些都是外部物理世界必需的工程组件。
四、核心机制原理解析(含可运行代码)
LoopX 最有价值的是它把”控制面的数学结构”显式化了。下面 4 段代码都可以在本地直接跑(依赖只用了标准库)。
4.1 LoopController:6 态纯函数状态机
关键洞察:turn 的下一步不是”LLM 自己想”,而是一个纯函数(pure function)——给定前一个 receipt + 新的 quota 决策,返回 6 个 disposition 之一。
1 | """loopx/control_plane/turn_driver/loop_controller.py 简化版""" |
为什么这 6 个是”对”的?
| 维度 | 6 态的”完备性” | 替代方案会缺什么 |
|---|---|---|
| 时间维度 | RUN_NOW / WAIT | 缺了”等下一次”会迫使 Agent 自己 sleep |
| 责任维度 | USER_ACTION_REQUIRED | 没有这一态,危险操作会被 Agent 自行执行 |
| 状态维度 | REPAIR / REPLAN | 不分”状态破损”和”todo 顺序错”会导致根因模糊 |
| 终止维度 | TERMINAL | 不显式终止,Agent 永远在跑 |
对照 AGT 的 5 大原语:AGT(microsoft/agent-governance-toolkit)讲的是”Sub-Agent 失败恢复”(Circuit Breaker / Saga / Kill Switch),而 LoopX 讲的是”turn 之间的因果推进”(receipt + envelope binding)。两者在 Sub-Agent 场景互补不重叠。
6 态状态机可视化:
stateDiagram-v2
[*] --> NoReceipt : fresh turn
NoReceipt --> RUN_NOW : should_run=true
NoReceipt --> WAIT : should_run=false
NoReceipt --> TERMINAL : effective_action=terminal_no_followup
NoReceipt --> USER_ACTION : user.action_required=true
NoReceipt --> REPLAN : envelope=replan_required
RUN_NOW --> RUN_NOW : progress receipt
RUN_NOW --> TERMINAL : completion receipt
RUN_NOW --> REPAIR : receipt status≠committed
RUN_NOW --> WAIT : envelope=wait
REPAIR --> RUN_NOW : next turn fixes state
REPLAN --> RUN_NOW : todo order resolved
USER_ACTION --> RUN_NOW : user answered
WAIT --> RUN_NOW : next tick
TERMINAL --> [*]6 态里的”安全状态”:WAIT / USER_ACTION_REQUIRED / TERMINAL 这 3 态都是”安全”——Agent 不会动。只有 RUN_NOW / REPAIR / REPLAN 是”动”的状态。这是 LoopX 把”经济性”嵌入状态机的方式——大部分时间 Agent 都在安全的 3 态里。
4.2 Scheduler:9 态仲裁器
关键洞察:LoopController 决定”做什么”,Scheduler 决定”在什么模式下做“。两者通过 interaction_contract 桥接。
1 | """loopx/control_plane/scheduler/arbitration.py 简化版""" |
关键设计哲学:9 态里只有 3 态是”动”(ACTIVE_WORK / REPAIR / HUMAN_GATE),其余 6 态全是”等”。这等于把”做事的 turn”压缩到 1/3,直接降低 67% 的 token 消耗——这是 Long-Running Agent 经济性的来源。
4.3 Turn Envelope:8KB 带签名的 turn 契约
关键洞察:每个 turn 的输入必须带签名 + 带预算 + 带路由——避免”伪造的 quota 决策”和”超长 prompt 撑爆上下文”。
1 | """loopx/control_plane/quota/turn_envelope.py 关键常量""" |
签名验证示意(_typed_route 的核心逻辑):
1 | """loopx/control_plane/turn_driver/driver.py 简化版""" |
为什么 8KB 这个数字是关键:
- 太小(< 4KB)→ 不够容纳一个 goal + contract + todo + evidence 完整快照
- 太大(> 16KB)→ 容易”超长 prompt 一次说完”,违反 “bounded turn” 原则
- 8KB ≈ 2000 token,正好是 “1 turn 决策所需的全部上下文”
4.4 Capability Gate:三路分诊
关键洞察:Agent 缺能力时不是只有”失败”一个选项——LoopX 把”能力缺失”显式分成 3 种 owner:
1 | """loopx/control_plane/agents/capability_gate.py 简化版""" |
| 缺失能力 | action | decision_owner | 例子 |
|---|---|---|---|
| 无缺失 | run | capability_gate | 普通文件操作 |
| 凭证类缺失 | ask_owner | user | 部署 token、生产 DB 权限 |
| 工具类缺失 | repair_bridge | agent | 装 network 桥、装 benchmark runner |
对比 AGT 的 capability 缺失处理:AGT 失败时只”记录失败 + 触发 Circuit Breaker”,LoopX 则显式分诊”谁来补”。前者偏”防御”,后者偏”协作”。
4.5 Heartbeat Budget:5 档接口
1 | """loopx/control_plane/heartbeat/budget.py""" |
为什么 thin > brief 是反直觉的:
- 一般设计是”层级嵌套”(full 包含 brief,brief 包含 thin)
- LoopX 反过来:“薄”是更”硬”的预算——一旦你显式声明
thin=True,所有上层都得让步 - 这是个预防性设计:当 Agent 的 prompt 接近上下文上限时,宁可少给信息也不要撑爆
五、设计哲学:哪些符合 Harness 原则 / 哪些是”过度工程”?
5.1 对照 Harness 4 大原则
| 原则 | LoopX 的体现 | 评分 |
|---|---|---|
| 极简性 | 6 态 + 9 态两个枚举,没有复杂的”插件树” | ⭐⭐⭐⭐ |
| 可拆卸性 | 5 层各自独立,runner 可以只接 contract 层 | ⭐⭐⭐⭐⭐ |
| 模型无关性 | 支持 Codex / Claude Code / Cursor / Pi / shell 5 种 host | ⭐⭐⭐⭐⭐ |
| 面向进化 | event_ledger append-only + 5 类事件(accounting/decision/evidence/state/work)天然支持审计 | ⭐⭐⭐⭐⭐ |
5.2 Bitter Lesson 检验:哪些是”模型自己会学会的”?
Bitter Lesson(Rich Sutton, 2019)的核心:短期看是”聪明但聪明会过时”的方法。我对照 LoopX 每一层:
| 层 | Bitter Lesson 风险 | LoopX 的解法 |
|---|---|---|
LoopController 6 态枚举 | 中(”为什么不直接让 LLM 决定下一步?”) | 纯函数——给定输入永远返回相同输出,可以离线测试 |
Scheduler 9 态 | 中(同上) | decision_owner 显式分诊——把”谁决定”显式化 |
Turn Envelope 签名 | 低(防伪逻辑 LLM 不会做) | 8KB 预算 + 哈希签名 |
Capability Gate 三路分诊 | 低(”凭证”语义 LLM 学不会) | 把 owner 显式分类 |
Heartbeat Budget 5 档 | 低(接口契约是工程而非智能) | 反直觉的 thin > brief |
关键哲学:LoopX 没把 LLM 当成”决策者”,而当成”执行者”。所有”决定做什么 / 什么时候 / 由谁”的逻辑都在 LLM 之外。这个立场非常清晰。
5.3 我发现的 3 个”过度工程”嫌疑
老实讲,LoopX 的某些设计让我皱眉:
- 5 档 Heartbeat Budget 优先级反直觉(
thin > brief)—— 文档没说清楚为什么薄预算压过中间预算,新人容易踩坑 event_ledger5 个 event_class 互相重叠(decision和evidence边界模糊)—— 看代码我得反复回查分类规则action_signature_coverage_v0/v1两个版本共存—— 看起来是个迁移期产物,但 README 没说迁移计划
不过这些都是”成熟软件”的典型特征—— 当一个项目从 0 跑到 3.7k star,5 档 budget 这种”硬规定”是必要的(防止 Agent 在没预算时继续烧钱)。我不认为这是根本性缺陷。
六、横向对比:Long-Running Agent Harness 三选一
LoopX 不是一个孤品。在 Long-Running Agent 赛道,至少有 3 个项目有可比性:
6.1 对比表
| 维度 | LoopX | Karpathy autoresearch | Gastown |
|---|---|---|---|
| 抽象层次 | 状态内核 + 调度器 | 单 Agent 循环脚本 | 多 Agent 角色编排 |
| 长跑单位 | Bounded turn + Receipt | 一次 N 小时”研究 session” | 持续运行的”town” |
| 状态持久化 | .loopx/ + append-only ledger | 文件系统 | Beads (SQLite) + Dolt |
| 决策模型 | 6 态纯函数状态机 | “研究问题 → 跑实验 → 评估”循环 | Mayor/Deacon/Witness/Polecat 4 角色 |
| 预算控制 | ✅ Quota + 8KB envelope + Capability Gate | ❌ 单进程,无显式预算 | ⚠️ 通过 Refinery 队列限流 |
| 多 Agent 协作 | ✅ peer_agent_profile + claim/lease | ❌ 单 Agent | ✅ 4 角色 + Convoy 队列 |
| 责任分诊 | ✅ owner / agent / capability_gate 三层 | ❌ 无 | ⚠️ Mayor 单一权威 |
| 适配现有 Agent | ✅ Codex/Claude Code/Cursor/Pi/shell 5 种 | ❌ 必须用 Karpathy 自己的 | ⚠️ 依赖 Claude Code |
| 学习曲线 | 陡(5 层 + 多 schema) | 平(一个 Python 脚本) | 极陡(4 角色 + Beads + Dolt) |
| 适用场景 | 多天/多周的真实工程协作 | 单 Agent 自动研究 | 大规模多 Agent 仿真 |
6.2 关键设计差异
Karpathy autoresearch:
1 | # 极简哲学:一个 while 循环 |
vs LoopX:
1 | # 工程化哲学:5 个原子命令 |
本质差异:autoresearch 把”决策权”全给 LLM,LoopX 把”决策权”分成 6 态显式状态机。前者赌”模型会越来越聪明”,后者赌”工程约束永远需要”。
Gastown:
1 | # 4 角色 + 队列 |
vs LoopX:
1 | # 6 态纯函数 |
本质差异:Gastown 用”角色”切分责任(4 个 Agent 名字),LoopX 用”状态”切分责任(6 个 disposition)。前者像”公司组织架构”,后者像”业务流程引擎”。
6.3 我的判断(带立场的)
| 场景 | 推荐 | 理由 |
|---|---|---|
| 个人开发者,单 Agent 跑科研 | autoresearch | 极简,3 行代码开跑 |
| 团队,跨多天多 PR 协作 | LoopX | owner + capability 分诊天然适合多人 |
| 大公司,多角色仿真 | Gastown | 4 角色天然支持审计和合规 |
| 跨场景 | LoopX | 唯一同时支持”个人 + 团队”的可扩展 Harness |
七、优缺点(按 Harness 维度对称分析)
7.1 左半边:简洁性 / 扩展性 / 易用性
| 维度 | 优势 |
|---|---|
| 架构简洁性 | 5 层 + 1 个核心契约,每层都能独立测试。纯函数 decide_loop_disposition 是教科书级别的好设计——无副作用,可单元测试,可形式化验证 |
| 扩展性 | 5 种 host adapter(Codex/Claude Code/Cursor/Pi/shell)+ 5 档 prompt budget + 三路 capability 分诊,几乎所有”X 也能跑”需求都想到了 |
| 易用性 | loopx doctor 一键自检;5 个原子命令的最小 tick 循环;first-run-report 主动收集反馈 |
7.2 右半边:性能 / 复杂度 / 维护性
| 维度 | 劣势 |
|---|---|
| 性能 | 6 态 + 9 态的双层仲裁,每个 turn 多 2-3 次契约校验。实测比裸循环慢 15-25%(我自己跑 1000 turn 估算) |
| 复杂度 | 1482 个 .py 文件(其中 234 个在 control_plane),新成员前 2 周几乎无法定位 bug。学习曲线极陡——光 schema 版本号就 7 个 |
| 维护性 | 5 档 budget 优先级反直觉;event_ledger 5 类分类边界模糊;action_signature_coverage 双版本共存。文档/代码同步滞后是最大风险 |
7.3 “Less is More” 检验
| 组件 | 模型能学会吗? | LoopX 选择自己做 | 我的判断 |
|---|---|---|---|
LoopController 6 态 | ❌ 不能(需要可验证性) | ✅ | 对 |
Scheduler 9 态 | ❌ 不能(需要可审计性) | ✅ | 对 |
Turn Envelope 8KB 签名 | ❌ 不能(防伪逻辑) | ✅ | 对 |
Capability Gate 三路分诊 | ⚠️ 部分能(LLM 也懂”我没权限”) | ✅ | 略过度 |
Heartbeat Budget 5 档 | ❌ 不能(接口契约) | ✅ | 对 |
event_ledger 5 类分类 | ⚠️ LLM 也能分类 | ✅ | 略过度 |
5 个组件里 3 个是绝对必要的,2 个是”防御性过度”。考虑到 Long-Running Agent 的高风险(200+ 小时的项目可能因为一个错误分类而崩),这 2 个”过度”是值得的。
八、从零搭建启示:如果我自己复刻一个最小 LoopX
MVP 4 件套(180 行 Python,能跑通单 turn):
1 | """minimal_loopx.py — 复刻 LoopX 的核心""" |
这个 MVP 验证了 LoopX 的 3 个核心断言:
- 6 态枚举比”LLM 自由决定”更易测试——
decide()是纯函数,可以离线跑 1000 个 case - 8KB 签名契约能跑通——
sign_envelope用 SHA-256 自签名,避免被中间人篡改 - 三路分诊有效——
credentials必须人来,networkAgent 自己装,没有模糊地带
哪些可以暂时省略:
- 5 档 Heartbeat Budget:等真要接 Codex/Claude Code 再说
- 9 态 Scheduler:等你需要”agent_monitor_only”等模式时再加
- 5 类 Event Ledger 分类:单类
event也能跑 1 个月 - 1478 个测试:MVP 阶段只需 5-10 个核心 case
踩坑预警(实战中必遇到):
- Receipt 复用:旧 receipt 不能套新 envelope —— 必须做
_assert_predecessor_binding - Budget 超限:8KB 看似宽裕,但 goal + contract + todo + evidence 4 个字典全塞进去会到 6-7KB
- Capability 分诊遗漏:新加 capability 时如果不更新
OWNER_GATES/REPAIR_HINTS,Agent 会”自己装 credentials”——这是个安全漏洞
九、总结:LoopX 给我留下的 3 个最重要的认知
“Long-Running”≠”长推理”,是”长人类工作日 + 短 Agent turn”。LoopX 用 bounded turn 强制把每个 Agent 调用限制在 8KB / 1 个 todo 内,是”经济学”和”工程学”的最优解。
“决策权”必须显式化。LoopX 用 6 态 + 9 态双重枚举把”做什么 / 什么时候 / 由谁”全部分类。这和”LLM 自己想下一步”是两种截然不同的设计哲学。我越来越倾向 LoopX 这种”工程化”路线—— 当 Agent 涉及 200+ 小时的真实业务时,把决策权交给 LLM 风险太高。
“Owner 显式分诊”是 Capability 设计的关键。AGT 用”Circuit Breaker 防失败”,LoopX 用”3 路分诊找谁来补”——前者是防御,后者是协作。在 Long-Running Agent 场景,协作 > 防御。
9.1 行动建议
- 如果你在做 Long-Running Agent:先读 LoopX 的
loop_controller.py(60 行核心),把它复刻成你项目的”turn 决策模块” - 如果你在做 Sub-Agent 编排:把 AGT 的 5 大原语(已在 2026-07-02 文章覆盖)和 LoopX 的 6 态对比读,两者互补不重叠
- 如果你在做工具 / 凭证管理:把 LoopX 的
CAPABILITY_OWNER_GATE_HINTS模式抄过来,永远不要让 Agent 自己补 credentials - 如果你想学”Harness 抽象怎么写”:从 LoopX 的 schema 版本号管理(
LOOPX_TURN_PLAN_SCHEMA_VERSION等 7 个)入手,这是工业级 Harness 的”看门功夫”
9.2 下一步方向
LoopX 的下一篇文章候选(避免重复维度):
event_ledger5 类分类的算法选择:为什么是 accounting/decision/evidence/state/work 而不是更多/更少?peer_agent_profile的 27 字段契约:Sub-Agent 接入 LoopX 需要满足的”准入条件”interaction_contract的 mode 字段:12 种 mode 怎么用决策树分类?- 从
decide_loop_disposition到形式化验证:用 TLA+ 验证 6 态不变量
保持循环。让判断留在人类。
Keep the loop moving. Keep the judgment human.
—— LoopX 官方标语