Browse this library

Chinese source article

3.2 · 可执行计划与工具语义

把代码、工具调用和副作用放进同一套可执行语义,连接计划表达、验证与回滚。

View original Markdown ↗

自然语言计划适合表达意图,却不擅长精确保存循环、分支、异常处理和中间结果。任务一长,模型会反复描述同一流程,也容易漏掉某个失败分支。代码和结构化工具调用可以把一部分控制流外置:程序保存变量,运行时调度步骤,测试检查性质,版本系统记录变化。Agent 此时不必在每轮对话里重新模拟整个执行过程。

代码也会把错误固化。模型生成的脚本可能拥有过宽权限,重试可能重复副作用,并行分支可能在共享文件上互相覆盖。可执行并不等于可信;它只是让行为更容易复现和检查。外层 Harness 仍要限制能力、记录输入输出,并把工具的真实返回值与模型原始动作分开保存。

1. 工具动作需要明确的效果语义

同一个 run 调用可能只读文件,也可能写库、发消息或付款。长程系统至少要知道动作是否可重放、是否可撤销、如何确认完成以及幂等键是什么。对于可逆写操作,checkpoint 可以保存前态并提供补偿动作;对于不可逆动作,系统应在执行前完成验证和授权,而非出错后假装能够回滚。

代码 Harness 与副作用从代码作为 Agent Harness 的三层结构进入,讨论沙箱、事务、并发冲突和可执行记忆。已经验证的解析器与测试可以复用为程序化记忆,但它们必须携带适用前提和版本;脱离原环境直接复用,可能把过去的偶然条件当成一般规律。

2. 可执行策略怎样接受因果检验

把计划写成程序以后,可以记录每个分支的输入、输出和环境变化,并在同一初态下替换一个组件做对照。这样的实验比阅读最终代码更接近因果归因:关闭自动重试、限制工具权限、替换验证器,再观察成功率、无效动作和恢复成本如何变化。若关闭某组件后只减少运行时间却不影响任务质量,它可能只是吞吐优化;若关键状态不再能够恢复,它才是长程闭环的一部分。

可执行策略与因果评测进一步给出生成代码的生命周期、动作事务语义、人类监督位置和因果消融。两篇文章共同强调一条边界:代码适合承载确定控制与可验证中间结果,模型适合处理开放语义与提出候选方案,环境负责给出事实。可靠系统来自三者接口清楚,不来自把更多逻辑塞进任何一层。

3. 从一次工具调用看完整边界

以「修改配置并重启服务」为例。模型提出目标文件和新值,工具层先读取当前版本并校验前置条件,写入时产生新的内容哈希,重启命令返回进程状态,验证器再从服务接口检查配置是否生效。若验证失败,系统根据写入前哈希回滚文件,并确认旧服务恢复。这里至少有候选动作、实际副作用、观察和验收四种对象。日志若只保留一句「配置已更新」,后续既无法判断重启是否发生,也无法安全重试。明确的效果语义把这些差别留了下来。