把 LoopX 嵌入你的 Agent Runner¶
这篇指南面向已经在远端开发机、自有 Agent CLI 或工作流 supervisor 中运行 Agent 的 开发者。你不需要替换现有 runtime,也不需要把领域编排搬进 LoopX。保留自己的 runner, 把 LoopX 作为跨 Turn 的持久控制面合同即可。
最小心智模型只有三部分:
| 部件 | 负责什么 | 不负责什么 |
|---|---|---|
| LoopX CLI | 持久化 goal、todo、claim、gate、quota、evidence、monitor、scheduler hint 和已接受的 writeback | Agent 推理、工具或外部系统本身 |
| 轻量 skill / re-entry instruction | 教 Agent 每轮读取新鲜 LoopX packet、遵守边界、验证并写回 | 保存当前任务状态或再造一个 scheduler |
| 你的 runner | 唤醒、workspace/session、调用 Agent,以及应用真实 timer/scheduler 值 | LoopX policy、隐式授权或领域事实 |
CLI 是事实源,skill 是小型行为合同,你的 runner 是 loop driver。
flowchart LR
R["你的 runner<br/>唤醒 · session · workspace"] --> Q["loopx quota should-run"]
Q --> P["新鲜 CLI packet<br/>interaction · boundary · next action"]
P --> A["Agent + 轻量 skill"]
A --> X["工具 / 外部系统"]
X --> V["独立验证 / readback"]
V --> W["LoopX writeback<br/>todo · evidence · refresh · spend"]
W --> R
不需要先建设什么¶
不需要常驻的 leader Agent、第二套编排数据库,也不需要为每件事定义一个 LoopX Capability。Agent 可以根据目标做方案、拆任务、调用工具,并根据新事实创建 successor todo。
Agent A 完成后若应由 Agent B 接力,A 通过 LoopX 写入或链接 successor todo;下一次 host 唤醒重新读取 frontier,由 B 认领即可。无需一个中央模型记住并人工路由整个交接。
只有当调用方需要稳定、provider-neutral 的结果合同,并且 observation 归一化、验证和 transition policy 可复用时,才值得新增 Capability;外部实现放在 Provider 后面。普通推理、 仓库修改和一次性工具使用仍然属于 Agent 工作。
接入 Custom Host¶
先在拥有项目 workspace 的机器上安装 CLI:
curl -fsSL https://raw.githubusercontent.com/huangruiteng/loopx/main/scripts/install-from-github.sh | bash
export PATH="$HOME/.local/bin:$PATH"
loopx doctor --agent-type other-agent
不要自己猜一套固定命令,让 LoopX 生成当前 custom-host packet:
loopx agent-onboard \
--agent-type other-agent \
--project . \
--goal-id <goal-id> \
--agent-id <agent-id> \
--task-text "<第一个任务>" \
--available-capability shell
packet 会返回当前 doctor/install、bootstrap command pack、quota guard 和 recheck
命令。只声明 host 真实具备的 capability。--available-capability 表示观察到的执行能力,
不授予权限,也不能替代 user gate。
对于 other-agent,doctor 会有意跳过 ~/.codex/skills 检查。CLI 健康与 workflow
交付是两件事:custom host 仍需通过自己的 skill manifest 或等价 prompt injection,
从同一 LoopX revision 交付 loopx-project、loopx-pr-review、
loopx-doc-registry 和 loopx-self-repair。当当前 goal 启用
change_quality_qualification 时,onboarding packet 会额外把
loopx-change-quality 列为 active project skill;host 需要交付该 workflow,
或注入等价的自包含 prepare packet 指令。随后 readback integration mode、
loaded skill ids 和 source revision。不要假设未知 host 采用 Codex、Claude 或
OpenCode 的目录布局。加载质量 skill 不代表启用,是否生效由当前 goal policy 决定。
如果 host 没有 skill 系统,就注入等价的 SKILL.md 指令,并保留一段短
re-entry instruction,要求 Agent:
- 为当前 goal 与 Agent 读取新鲜 JSON quota packet;
- 遵守
interaction_contract、goal_boundary和 selected todo; - 只做一次有界动作,并验证真实 postcondition;
- 通过 LoopX 写回结果;
- 在下次唤醒前应用并 ACK scheduler hint。
这段 re-entry instruction 应保持稳定,不能缓存上一轮 CLI packet、todo 列表、cadence 或 项目 policy。
跑一个自驱动 Tick¶
机器路径使用 JSON:
loopx --format json \
--registry "$HOME/.codex/loopx/registry.global.json" \
quota should-run \
--goal-id <goal-id> \
--agent-id <agent-id> \
--available-capability shell
然后按以下闭环运行:
- 决策: 把
should-run和interaction_contract当作 gate。quiet、wait 或 monitor-only 不调用模型,也不花 quota。 - 路由: user channel 要求动作时,展示具体 user todo 或问题;缺少 payload 时不要只说 “owner gate”。
- 认领: 在可写执行前 claim selected executable todo。独立交接默认保持 unclaimed, 除非已有明确 assignment。
- 执行: 只把当前 objective、selected todo、boundary、紧凑 evidence ref 和 writeback contract 交给 Agent,让它动态规划本轮有界动作。
- 验证: 读取真实 repository、测试、CI、服务或 Provider 结果。Agent 自称完成不是 proof。
- 写回: complete、update、block、defer 或新增 successor todo,记录紧凑 evidence,
再运行
refresh-state。 - 计费: 只有验证通过并完成持久 writeback 后才 spend。validator 失败、cadence 更新、 quiet monitor poll 和 no-op retry 都不 spend。
- 调度: runner 应用当前 scheduler hint,readback 实际生效值,再执行 packet 返回的 ACK CLI。
非平凡交付前,先读取 goal 的 change-quality policy。启用后运行
change-quality prepare,review 精确 final diff,并记录 receipt。没有 skill 系统的
custom host 可以直接消费自包含的 prepare packet。safe_fix 允许一次有界修复;
strict_receipt 会让 canary premerge --goal-id <goal-id> 拒绝缺失或已失效的
receipt。
每次新唤醒都重新从第 1 步开始,不能依赖模型记忆或缓存 packet 续跑。
选择合适的执行边界¶
接入深度有两种,都合理;无论选择哪种,外层唤醒与调度循环仍由你的 runner 负责:
| 路径 | 适用情况 | 边界 |
|---|---|---|
| 直接编排 CLI | 你的 runner 已经会调用 Agent,并能独立验证结果 | runner 消费 quota should-run、todo lifecycle、refresh、spend 和 scheduler ACK 合同 |
| LoopX Turn adapter(experimental) | 希望由一条 typed command 完成 plan、调用一次 bounded host、验证和 commit | 使用 turn run-once 的内置 codex-cli adapter,或薄 generic-cli adapter |
直接编排 CLI 是当前兼容基线;LoopX Turn 是 runner 内部 experimental 的
transaction boundary,不是常驻 scheduler 或多 Agent 调度中枢。每个 tick 只能有一个
decide、validate、writeback 和 spend owner;同一逻辑动作不能同时跑手工闭环与
turn run-once。
新的 Turn 接入应被视为开发与 qualification 工作。依赖它之前,需要证明 host adapter 能返回 typed result contract、validator 与执行器独立、retry/resume/replay 不会重复产生 effect,并且外层 runner 能正确应用和 ACK scheduler state。这些正是继续提升 Turn 成熟度的 extension / contribution surface;Agent 进程退出码或从 transcript 猜结果不能 替代这些证明。
验收清单¶
在把集成称为“自主运行”前,至少证明:
- runner 重启后能从 LoopX state 恢复,不依赖 transcript replay;
- 具体 user action 会被投影,同时无关的安全 todo 仍可继续;
- 两个 Agent 不会静默认领同一份工作;
- 验证失败不能完成 todo 或 spend quota;
- scheduler 应用和 ACK 幂等;
- raw transcript、credentials、私有路径和无界日志不进入 LoopX state;
- Agent 能通过 successor todo 接力,不依赖常驻 leader。
精确读写合同见 Host Integration Surface v0; 可选的 typed Turn 路径见 Run One LoopX Turn With Codex CLI。