跳转至

Nexa 3.0 中的 2.4 兼容路径

本页说明保留的 2.4 语言与运行时路径,无版本声明的源码继续使用此入口。新 Open Programs 从 Nexa 3.0 开始,合同差异见迁移指南。

错误传播与恢复边界

语法级错误处理适合局部控制流;持久运行状态和未知副作用由运行时契约处理。先判断错误发生在哪一层,再选择恢复入口。

机制 用途
try / catch 捕获语句范围内的异常
try_agent / catch_correction 进入明确的纠正分支
? 解包 NexaResult,失败向调用方传播
otherwise 对错误结果提供本地回退
defer 已有解析与调度器支持;当前生成程序执行失败,见下方限制

完整纠正示例

flow main {
    result = "before";
    try_agent {
        assert false;
    } catch_correction(e: Exception) {
        result = "corrected";
    }
}

离线执行得到 corrected。NexaAgent.run_result() 为 Python 调用方提供显式 NexaResult;execute() 返回含 status 和 error 的 RunState。

有副作用的失败

工具已发出请求且结果未知时,抛出 ToolOutcomeUnknown。普通成功字符串会成为已知结果,影响恢复判断。保留 checkpoint,由操作者核实结果后调用 resolve_tool。详见未知结果恢复。

预算耗尽、取消和超时由执行状态区分;继续新一轮任务使用 continue_run。

当前生成路径限制

defer 的 parser 和独立调度器测试存在;完整 flow main { defer print("closed"); result = 1; } 目前执行时报告 name 'defer' is not defined。关键资源清理应放在受信任 Python 工具的 try/finally 中,直到生成路径完成验收。

带 requires / ensures 的 flow 在当前生成路径中会因 ContractClause 构造参数不匹配失败。使用已执行验证的 verify、工具参数 schema 与明确错误状态建立当前任务的约束。


来源与验证 · language / execution / checkpoint