第 09 章:工具执行不是插件调用
工具管道分阶段,界面与转录采用不同顺序。
本文目录 2
阅读日期:2026-09-14。书中版本基线:核心分析 v0.66.0,作者自述对照 v0.82.1;本笔记未独立验证源码或发行版本。
设计问题、机制与取舍
prepare 先找工具、预处理和验证参数,再运行前置钩子;失败返回即时错误。execute 接收取消信号及进度回调,异常转工具错误;finalize 可按字段改结果,再产生最终消息。
默认并行也先按源顺序 prepare,随后并行执行与结算;结束事件按完成顺序,写入历史的结果按调用顺序。任一工具要求 sequential 可使整批串行。addedToolNames 记录工具开放的消息位置,实际激活由上层负责。钩子提供控制点,但并行工具的依赖与副作用仍需额外处理。
来源:本章原文。这是压缩后的原创读书笔记,完整论证、示例及版本说明请回到原章。
工程应用检查(整理者推导)
知识库 MCP 中,搜索和读取可以独立并行;两个操作若都要更新同一条笔记,就需要基于版本与存储锁处理冲突,不能仅靠调用数组排序。串行执行也不保证第二个请求自动使用第一个请求的结果,参数若早已生成,仍可能过时。
为批量吸收设计一份操作回执:每项有来源、目标条目、预期版本、执行结果和是否落盘。UI 可以先展示已完成项目,但最终导入清单按照输入章节排序,便于发现遗漏。参数校验失败要明确告诉调用方哪一项不合格;未知工具不能退化为任意命令执行。
后置钩子改写成功标记时,要确保不会把实际写入失败包装为成功。进度通知失败与业务执行失败也应分别诊断,否则工具已经完成却可能被误判后重试。这些检查是整理者提出的落地要求,不能视为原章已经提供了事务、权限或幂等保证。
读到这里,有新的想法?
围绕本文聊聊