| 1 | # 工具中断与恢复 |
| 2 | |
| 3 | Reasonix 记录执行事实,保证 provider 请求的每个工具调用都有诚实结果。这些事实只描述不确定性,不会禁用后续工具。 |
| 4 | |
| 5 | | 结果 | 含义 | 后续行为 | |
| 6 | | --- | --- | --- | |
| 7 | | `not_started` | 尚未越过持久化启动边界 | 模型可重新发起调用 | |
| 8 | | 完成或失败 | 宿主收到可靠终态 | 保留结果和执行元数据 | |
| 9 | | 启动后中断 | 工具主体已进入,副作用可能已发生 | 提示检查状态,工具仍可用 | |
| 10 | | `unknown` | 恢复时只有启动记录,没有可靠终态 | 补齐一次未知结果,工具仍可用 | |
| 11 | |
| 12 | 工具主体开始前先持久化启动记录。取消会清理进程树并等待已启动调用收束;未启动调用得到明确结果。本地进程停止不代表远端副作用没有发生。 |
| 13 | |
| 14 | 恢复不会自动重放调用,不会根据当前状态合成成功,不会拦截相同参数,也不会安装全局只读屏障。重建上下文只列出未启动、已完成和未知调用,并建议按需重试只读或幂等操作;对有副作用的未知调用,应先核实外部状态。每条未知记录只持久化加入上下文一次,不会每轮动态改写系统提示。 |
| 15 | |
| 16 | Desktop 与 Serve 暂时保留 `GET /tool-recovery`、`POST /tool-recovery`、`GetToolRecoveryForTab` 和 `ResolveToolRecoveryForTab`。查询返回 `retired=true`、`retryEnabled=false` 的只读历史事实;动作端点稳定返回 `tool_recovery_retired`,不能确认、拒绝、重放或恢复操作。旧恢复卡只读显示,不再提供按钮。 |
| 17 | |
| 18 | 当前运行只把 `unknown` 写成执行事实。旧 `user_confirmed`、决策字段、Auto Guard sidecar 和恢复动作状态保持原值可读;当前运行不再创建这些状态,它们也不能恢复门禁。旧配置中的 `recovery_model` 和 Auto Guard 字段可解码,当前保存会省略。 |
| 19 | |
| 20 | 对于没有权威回执或幂等机制的外部服务,宿主不再提供 exactly-once 保证。重复未知副作用前需要由模型或用户检查服务端状态。 |
| 21 |