不等终局再 reset:Continual Harness 在单集中途改写自己的 prompt、子代理与技能
arXiv:2605.09998 · 参考实现 sethkarten/continual-harness(MIT)
Claude Code / OpenHands 这类 coding harness 会给基础模型补上工具、记忆与规划,但长 horizon、部分可观测的具身决策一直没有对等封装。Continual Harness 是一个 reset-free 的自改进框架,评测域是 Pokémon Red/Emerald:起点只有一个极简环境接口(帧、ASCII 文本地图、按钮输入),随后由一个 LLM Refiner 在 episode 中途直接改写整套 harness 状态,全部通过在线 in-context learning 完成。
Refiner 四 pass 在线 CRUD
Harness 状态就是四件东西:
p:system promptG:子代理集合K:技能库M:记忆
每 F 步触发一轮精炼:Refiner 先读最近一段 trajectory,识别失败签名(navigation loops、tool-call failures、stalled objectives、missed exploration),再依次跑四个 pass:
- 重写 system prompt
p - 对子代理
G做 CRUD - 对技能
K做 CRUD - 对记忆
M做 CRUD
对 agent 侧只暴露一个工具 evolve_harness。实现集中在 agents/utils/harness_evolver.py,工具注册在 agents/tools/registry.py。
省在更新落在当前局内
GEPA 这类 prompt-optimization 方法要跑完整条 episode,每次更新之间都把环境 reset。Continual Harness 的更新点在 episode 中间:失败签名出现后立即重写 p/G/K/M,当前 episode 剩余帧直接按新 harness 执行,已经走过的 trajectory 和付掉的按钮成本不需要重放。换句话说,改进在 reset 之前就已经开始在同一个局里计价。
收益随模型能力缩放
在 Pokémon Red/Emerald 上用 Gemini 3 Pro / Flash / Flash-Lite 从零开始跑,整体相对 minimalist baseline 显著降低 button-press cost,并追回了与专家手工 harness 之间的大部分差距。但收益严格依赖能力档位:
- Gemini 3 Pro:严格 Pareto 占优;
- Gemini 3 Flash:有改善,但方差高;
- Gemini 3 Flash-Lite:低于 minimalist baseline。
边界很干净:弱模型不要指望 bootstrap 自动补强,收益不随框架单独缩放。
启动与 bootstrap 三种变体
基础启动命令:
python run.py --game red --scaffold continualharness --enable-prompt-optimization --optimization-window-length 50 --backend gemini --model-name gemini-3-pro-preview --port 8000 --agent-auto
不带 --enable-prompt-optimization 时行为退化为 simple + stub。
bootstrap 三变体:
- from scratch:不带
--bootstrap-from,精炼全程开启 - bootstrap frozen:带
--bootstrap-from,但不带更新 flag - bootstrap updating:
--bootstrap-from与更新 flag 同时给,装载后继续在线演化
服务端与端口布局
Headless 架构里 game + emulator 放在 server 进程,agents / UI 都是 client:
run.py:启动 FastAPI game server 与 frame stream,绑定port+1run_cli.py:额外启动 MCP proxy,绑定port+2,供容器化 CLI agent(Claude Code、Gemini CLI、Codex、Hermes)接入- web UI:
http://localhost:{port}/stream
项目前身是 sethkarten/pokeagent-speedrun,改名并泛化为现在的形态。
ARC-AGI-3 移植
社区移植版 feng-rrRay/Continual-Harness-ARC-AGI-3(MIT)把同一套方法搬到不提供规则与领域知识的交互式推理 benchmark 上。需要 Python ≥ 3.12、uv、ARC_API_KEY(three.arcprize.org)和 GEMINI_API_KEY:
uv run main.py --agent=continualharness --game=ft09