2026-08-28·by Sijie Wang#cybernetics#engineering

loop-termination-is-a-gate

循环终止是一道闸门

#thread/agent-loop

agent 循环(GPT 和 Claude 共享同一个骨架):model → tool calls → feed results back → repeat → stop。两者的主要差异在于谁掌控这个循环——原始 API(由你自己驱动:finish_reason/stop_reason)对比托管式(OpenAI Assistants/Responses 的 "runs",Anthropic 的 Agent SDK / Claude Code)。

核心在于终止:谁来判定"完成"? 在朴素循环里,执行者(模型)自证完成(end_turn / finish_reason=stop)。这正是不可靠的那一点——和贯穿本笔记库的那根神经一样:一个随机的执行者自行宣布成功,恰恰是你不能信任的东西(gatekeeper-not-driver)。

控制终止的三种方式 = 八种控制手段中的三种(control-methods):

  • 信任执行者(朴素循环)
  • 计量它——最大迭代次数 / 超时(StandMeet 的 force-final-answer;控制 #4)
  • 设闸——持续运行直到某个条件成立(/goal;控制 #2)

/goal = 循环出口上的一道语义闸门(据文档确认)

/goal <condition> 是一个会话作用域的基于 prompt 的 Stop hook。每一轮结束后,(condition + transcript) 会被发送给一个独立的、全新的小模型(默认是 Haiku),由它返回是/否加一个理由;条件未满足 → 理由被反馈回去,循环继续。

  • 生成者 ≠ 验证者,被产品化了。 做事的模型不是判定它完成与否的那个模型——由一个对这项工作没有既得立场的全新评估者来判。recognizer-not-generator 在这里被落地实现;文档明确把它点名为对抗"写代码的模型自己宣称代码正确"的防护手段。
  • verify-cheaper-than-execute,字面意义上的体现——评判者是一个便宜的小模型;评估所耗的 token 相对于实际工作可以忽略不计。
  • 局限(说实话): 评判者只能看到对话记录——它不能跑测试,也不能读文件。所以它判断的只是声称的内容 + 可见的输出语义闸门是可以被刷分的(Goodhart 定律),只要你能让表面上说得过去的东西冒出来就行。因此才要"把条件写成输出本身能够证明的东西"。

两种闸门("eval 即类型系统"的分野)

  • 机械闸门(脚本化的 hook,退出码):确定性强、可靠,但只能编码可判定的谓词(测试通过、文件存在)。
  • 语义闸门/goal 的 LLM 评判者):能处理模糊的"完成"(比如"每篇论文都是 A 级"),但评判者本身会出错。它靠分离(不同的模型、空白的上下文)去偏,而不是靠自身绝对正确。

→ 终止是任何 agent 循环中最承重的那个决策,而在那里设一道闸(机械的或语义的)就是让你不再盲目相信"我完成了"这句话的方法。

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →

loop-termination-is-a-gate