从 Codex CLI 可见 TUI 启动¶
Codex CLI 路径的关键约束是 visible and interruptible:工作应继续发生在用户可见的 TUI 中, 而不是为了“自动化”默认切换到隐藏的 headless worker。
成功标准¶
完成后,你应该能观察到:
codex从目标项目根目录启动;- setup Turn 复用或连接 LoopX 状态;
- 当前 Codex task 被设置为可见
/goal <thin task_body>; - 后续 Turn 在同一 TUI 中继续;
- LoopX 仍拥有 Todo、Gate、Quota 与 writeback;
- 用户可以随时查看、打断或恢复。
1. 启动可见 TUI¶
在 TUI 中发送:
连接当前项目到 LoopX。先运行 loopx doctor,复用已有 active state,
确认 .loopx/、.codex/goals/ 和 .local/ 已被 Git 忽略。不要使用隐藏的
headless execution。连接完成后,生成 thin heartbeat task body,并把当前
Codex CLI task 设置为可见的 /goal <task_body>。最后报告 active state id、
当前 user gate、top agent todo 和 next safe action。
setup Turn 的任务是建立连接和可见 continuation,不应顺手开始一大段未经规划的交付。
2. 用 $loopx 开始具体目标¶
安装 command facade 后,可以在 TUI 中使用:
Host 应保留 task text,规划 Todo,并生成适合 Codex CLI 的 Goal body。若 command skill 不可用, CLI fallback 是:
loopx start-goal --guided --project . \
--goal-text "为这个 CLI 增加兼容的 JSON 输出,补充测试并等待维护者确认 schema" \
--host-surface codex-cli-tui
输出是 guided packet,不会替你在另一个终端偷偷启动 Agent。它应该包含或指向可粘贴的
/goal <task_body>。
3. Native Goal 与 LoopX 的组合¶
Codex CLI native Goal 拥有同一 TUI 内的 continuation。LoopX 拥有项目级 frontier:
Visible Codex /goal
-> run LoopX quota decision
-> execute selected bounded Todo
-> validate
-> write LoopX state
-> continue, wait, block, or complete
当 LoopX 返回 Gate 时,Goal 可以进入 blocked 状态;当用户处理 Gate 后,再通过 Host 的 Goal 恢复表面继续。不要通过创建第二个 Goal 绕过原 Gate。
4. 验证 visible continuation¶
从另一个 shell 读取状态不会改变 TUI:
loopx status --goal-id <goal-id>
loopx history --goal-id <goal-id> --limit 10
loopx quota should-run \
--goal-id <goal-id> \
--agent-id <agent-id> \
--runtime-profile codex_cli
你应该看到 Host runtime 指向 codex_cli,scheduler owner 属于 Goal/agent loop,而不是 Codex App
heartbeat。若 packet 报告 scheduler context 缺失,先修复 runtime profile,不要忽略 warning。
5. 保持身份与 Todo 归属¶
新的 argument-bearing guided start 默认要求 fresh Agent identity,即使 Goal 中只有一个已注册身份。
已有 id 只在用户明确要求 takeover 那个 peer 时复用。完成选择后,visible Goal、quota、refresh 与
writeback 都应显式保留同一个 --agent-id;缺失或不匹配时应 fail closed,而不是回退到“唯一
身份”。
Agent identity 表达 LoopX 工作 lane,不证明具体 Host。判断工作是否真的在 Codex CLI 运行,要看
host_surface、runtime profile 或对应 run metadata。
交接时的正确顺序是:
- 当前 Agent 写回验证结果;
- 更新或完成 Todo;
- 新 Agent 以 fresh id 预览并完成原子注册;
- 新 Agent claim 未完成 Todo;
- 新 Host 读取同一 registry 与 Goal;
- 再启动 visible Goal。
恢复路径¶
TUI 关闭¶
重新从同一项目根目录启动 codex,读取 loopx status,再恢复原 Goal。不要重新 bootstrap
一个相同 objective。
/goal body 过期¶
稳定 body 不复制动态 Todo,但协议或 CLI 版本可能变化。重新生成当前 thin task body,并让 Host 替换 visible Goal;不要手改内部字段来“兼容”旧 prompt。
误用了隐藏 worker¶
停止该 worker,检查它是否写回了新 evidence 或 lease。先恢复 Todo ownership,再回到 visible TUI;不要让两个执行者并发修改同一工作树。
Goal 无变化轮询¶
达到 unchanged limit 后,Goal 应阻塞或安静等待。外部状态观察应转成 monitor Todo;用户通过 Host 的 Goal resume 表面恢复,而不是反复重发完整任务。
App 与 CLI 同时激活¶
检查 claim、lease 与 scheduler ownership。两种 Host 可以读同一 Goal,但同一个有副作用的 Todo 只能有一个合法执行者。
完成项目接入之后¶
到这里,你已经可以在不修改 LoopX core 的情况下:
- 让现有 Git 项目拥有可恢复的 Goal、Todo、Gate 与 evidence;
- 从 Codex App 或 visible Codex CLI TUI 启动同一套项目状态;
- 在 Host 切换时保留 authority、identity 与 workspace boundary;
- 用 status、history 与 quota 检查真实 continuation。
接下来按目标选择: