原子概念 / Agent Cancellation
取消语义
停止新行动并记录已开始操作的最终或未知结果。
检索别名:中断 · 停止任务
01 输入
- 用户取消范围
- 在途模型与工具调用
- 已提交副作用记录
02 处理机制
- 阻止新行动
- 传播中断信号
- 收集最终或未知结果
- 按需创建补偿任务
03 输出与证据
- 取消状态与原因
- 已发生效果清单
- 待对账操作
停止新行动并记录已开始操作的最终或未知结果。
取消是一种控制请求,不是现实世界的回滚。用户停止研究,可以阻止下一次模型调用;正在执行的只读查询可能可中断;已经发送的消息或成功创建的记录则不能靠取消Run自动撤回。界面与状态机必须分别表达这些结果。
OpenCode固定研发源码允许provider与tool fibers被中断,同时保护最终工具和step事件发布。这个细节很重要:工作停止后,系统仍需要记录已经发生或尚不确定的动作。若为了快速响应取消而跳过所有最终写入,就可能留下外部成功、内部未知的孤儿操作。
建议区分cancel_requested、已停止新动作、工具取消确认、结果未知和不可撤销已完成。收到取消后先阻止新排队与新权限提交,再向可中断操作传播信号;对已经发出的写操作继续获取最小必要回执或进行对账。用户若要求补偿,应创建新的授权动作,不把补偿假装成原操作从未发生。
多Agent场景还要定义父取消如何传递到子任务,以及独立后台任务是否属于同一取消范围。关闭聊天窗口也不应被默认为取消所有Task。测试在模型输出、工具调用、批准等待与子Agent合并四个阶段分别取消,检查费用、事件完整性、后续动作和用户可见解释。最有用的反馈是“停止了什么、哪些已发生、哪些仍需确认”。
取消确认还应说明预算会怎样结算。已发出的模型请求和工具工作可能仍产生费用,供应商也未必提供立即终止所有底层计算的保证。产品应根据实际回执显示状态,不承诺“点击停止即零费用”。对于仍在确认效果的动作,保留可见入口,让用户避免重复发起同一工作。
实践重点:区分取消请求、可中断工作和不可撤销效果;保留最终状态写入。
验证抓手:在模型流和工具执行期间取消,检查账本与回执。
常见误区:把任务cancelled误当撤销邮件、交易或已写业务记录。
RELATIONSHIP MAP
与其他节点的关系
箭头从本节点指向目标;关系是工程分析映射,不代表厂商合作或已披露的内部实现。
哪些节点指向本页 · 2
- OpenCode — 实现 → 取消语义
公开能力或可见源码体现取消语义的具体产品路线。
- DeepSeek Harness — 实现 → 取消语义
公开能力或可见源码体现取消语义的具体产品路线。
PRIMARY SOURCES
来源与阅读边界
来源按研究截止日整理。官方文档说明能力和约束,代码只证明对应版本,论文与讲座不自动证明生产效果。 资料截止:2026-10-15。
- OpenCode:流、工具和取消源码 ↗公开代码
观察基线:2026-10-15;固定源码与具体发行版本分别核验。
- Agents SDK:Session接口源码 ↗公开代码
观察基线:2026-10-15;固定源码与具体发行版本分别核验。