7 天 Agent Harness:让 Agent 无人值守跑一整夜
为什么 Agent 跑过第二个上下文窗口就开始退化
先说清楚长时程任务与交互式对话的根本差别,再用一次跑穿两个窗口的实验把退化现象亲手复现出来:第二个窗口把第一个窗口做过的事又做了一遍,而它并不是变笨了,只是在上下文里找不到任何做过的证据。
状态与上下文的分界:把权威状态搬出窗口
把昨天那个退化修掉:权威进度写进磁盘,窗口重置后从磁盘重建一个等效上下文。重点不是怎么写文件,而是这条分界线该画在哪里,以及为什么重建的目标是等效而不是还原。
initializer agent:init.sh、进度文件与第一个 commit
无人值守运行的第一分钟决定后面几小时的效率。今天把初始化独立成一个阶段:写一个能把环境跑起来的脚本、一份给后来者看的进度文件、一个干净的初始提交,让任何新窗口三分钟就能上手。
一次只做一件事:feature 清单与 git 纪律
今天这一天从一个反转开始:手搓 Coding Agent 那门课明确裁定过不能用 git 提交,而本课的 git commit 就是进度的权威记录。两个结论相反而都对,因为前提不同。理解这个区别,才能理解清单驱动与绿点回滚。
自验证:端到端闸门、谎报完成与打转的自动干预
无人值守最贵的两种失败是谎报完成和原地打转。今天给 harness 装上端到端闸门与停滞检测,并且把重点放在发现之后怎么办:换任务、回滚、停机报警三者各有判据。
崩溃续跑、预算熔断与 governance decay
夜里会断电、会 OOM、会把钱烧光,也会悄悄忘掉你最初的规矩。今天补上三件事:中途被强杀能续上、超预算立刻停机、以及压缩之后约束还在——最后这件是一个被实测量化过的真实风险。
综合:让它跑一整夜,早上验收
把六天的模块合成一个能交差的运行时,真跑一次长时程,然后交出一份人能在三分钟内看懂的夜跑报告:做成了什么、卡在哪、为什么停、下一步该人做什么。