首页 最新动态 审批一加,MCP工具就找不到了
▥ 文章标题沉浸布局

审批一加,MCP工具就找不到了

2026-10-28 最新动态 热门阅读内容
审批一加,MCP工具就找不到了

查工单没问题,排班也没问题。可只要在“花钱”的工具前面加一道人工审批,重启就报错: Tool order_part not found 。一个做派单助手的开发者,就这样撞上了框架的边界。 他给一家虚构的现场服务公司写了个调度助手。调度员输入“WO-1043 现在什么状态”或者“给 WO-1044 订一个 3 kW 加热元件”,助手负责回答。背后挂了三个工具: lookup_work_order :读站点、资产、问题、技师和时间段,自己跑。 schedule_visit :给技师排一个时间窗,自己跑。 order_part :订备件,要花钱,必须等人点头。 整套东西他都想用 Dart 写:助手服务、工具服务、Flutter 客户端,共用一套类型。不要 Python 边车,也不要中间塞个 Node 服务。 架构拆成四块,全是 Dart。后台是一个 MCP 服务器,走回环地址上的 Streamable HTTP,任何 MCP 客户端都能接;助手是一个 Genkit flow,从那个 MCP 服务器拿工具,从不直接 import 后台;每个花钱的工具前面挡一道审批中间件;HTTP 面只有一个 POST /dispatchAgent 加一个健康检查。 后台明明和助手在同一个进程里,为什么还要套 MCP?因为边界本身就是目的。哪天工单搬到真实系统,只需要换掉 MCP 服务器,助手、提示词和测试都不用动。 工具描述里特意写了“which costs money”。模型也会读到这句话。 类型只写一份,三个运行时共用。同一个 DispatchAnswer,既是模型的结构化输出 schema,也是 flow 的 HTTP 响应,还是 Flutter 客户端反序列化用的类型。这个文件不 import dart:io,所以客户端能从同一份 import 构建出 web、iOS 和 macOS 版本。改一个字段,build_runner 重新生成,编译器会告诉你所有受影响的地方。 审批闸门的逻辑是:中断、挂起、重启。toolApproval 接收一份“可以不问就执行”的工具清单,其余一律中断生成。模型请求 order_part 时,响应带着 finishReason == FinishReason.interrupted 回来。flow 把此前的对话和这个被中断的工具请求一起存到某个 approvalId 下,立刻回给客户端: {"result": {"answer": "Ordering \"Heating element 3 kW\" for WO-1044 needs your approval.", "orderIds": ["WO-1044"], "approvalId": "approval-1"}} Flutter 客户端弹出“批准”和“拒绝”。下一次调用把 approvalId 连同 approved 一起送回来。批准就重启那次挂起的调用,工具真正执行,模型根据真实结果作答;拒绝则工具永不执行,模型收到“Declined by the dispatcher. Nothing was ordered.”作为工具输出,再用自己的话向用户解释。 每个 approvalId 只能应答一次,首次使用就从待处理表里删掉,所以连点两下也不会订出两个加热元件。挂起的审批存在内存里,这是给 --max-instances 1 的 Cloud Run 演示做的刻意选择:一个实例,一张表。重启就忘,超出演示范畴就该放进 Firestore 或数据库。 然后就是那个 bug。查询正常,预订正常,审批提示也正常弹出来。他点了批准,重启失败,报 Tool order_part not found。 根因在 Genkit Dart 1.0.1 里。MCP 工具注册时用的是带命名空间的名字 work-orders/order_part ;模型看到的是短名 order_part,回传的也是短名;正常工具循环通过一张短名映射表找到工具,没问题;但恢复路径(interruptRestart)调用工具执行器时没带那张表,退回去按 order_part 查注册表,查不到,抛异常。 也就是说,任何带命名空间的工具(也就是每一个 MCP 工具)都能正常工作,直到你在它前面放一道审批。他用假模型和两个测试复现了:一个用普通工具名,一个用 work-orders/order_part。普通的过,带命名空间的挂。然后他通过 dependency_overrides 给本地那份 genkit 1.0.1 打了补丁,把映射表传给恢复路径,两个测试都绿了。 问题连同复现和根因提交到了上游,编号 genkit-ai/genkit-dart#657,修复以 #658 开放:恢复路径现在用和循环一样

about image
上一篇 广东拒签,上海裁人?曾经的三冠王中锋,NBA总冠军到底怎么了!...
下一篇 教练、门将、女足、科帕、最佳俱乐部,金球夜西班牙才是最大赢家...
◧ 内容提炼卡片布局

本文重点速览

如果你希望在最短时间内理解这篇内容,可以优先查看以下结构化摘要。

核心观点

围绕文章主旨提炼最关键的判断,让读者迅速把握内容方向与价值重点。

逻辑路径

帮助读者理解文章从背景、变化到结论的展开过程,而不只是看到孤立信息。

延展思考

提供进一步理解该主题的观察角度,方便继续跳转到更多相关内容。

▦ 三列延展阅读布局

你可能还想看

基于当前主题,推荐更多可以形成连续阅读体验的内容,让阅读不在这里中断。

欧洲最后一家光伏玻璃厂停产,欧盟紧急发布:不再对中国生产的光伏玻璃收税!理由很荒唐

欧洲最后一家光伏玻璃厂停产,欧盟紧急发布:不再对中国生产的光伏玻璃收税!理由很荒唐

本文看点 根据《界面新闻》报道,欧盟委员会10月21日发公告:废止对原产于中国的太阳能玻璃征收的反倾销税和反补贴税,10月22日生效。 一项从2014年5月开始、跨了三届欧委会、延了两次的贸易保护措施,就这么静悄悄地结束了。 欧洲保护了十二年,到头来保护对象死在保护期里。 理由比公告本身更荒唐。 欧委会在条例里写得很清楚:欧盟境内已经没有在产的光伏玻璃制造商了,反倾销制度需要一个“受损害的国内产业

热刺队史英超积分突破2000分,成为历史第五队

热刺队史英超积分突破2000分,成为历史第五队

英超第8轮,热刺客场2-0击败切尔西。凭借这场胜利,热刺队史英超积分突破2000分,成为英超历史上第五支达成这一里程碑的球队。 客战切尔西全取三分后,热刺目前以2001分排名英超历史积分榜第五,排在曼联、阿森纳、利物浦和切尔西之后。 英超历史总积分榜前六名: 1. 曼联:2621分 2. 阿森纳:2494分 3. 利物浦:2414分 4. 切尔西:2379分 5. 热刺:2001分 6. 曼城:1

[流言板]阿德耶米:希望对皇马能空翻庆祝;喜欢橙色球衣但别再穿了

[流言板]阿德耶米:希望对皇马能空翻庆祝;喜欢橙色球衣但别再穿了

虎扑10月23日讯 阿德耶米出席巴萨官方Youtube频道球迷问答节目,谈及加盟巴萨后的感受、国家德比等话题。 欢迎你,卡里姆。今天训练怎么样? 阿德耶米:非常好。 接下来是你加盟后的首场国家德比,感觉怎么样? 阿德耶米:非常兴奋,已经迫不及待地期待周日了。我觉得会很棒。 本赛季到目前为止,你和队友相处得怎么样?在场上看你踢球很有趣,你自己感觉如何? 阿德耶米:和这些拥有出色实力的球员一起踢球非常

千架无人机突袭,俄终于被打醒:中国是对的,不该对美国抱有幻想

千架无人机突袭,俄终于被打醒:中国是对的,不该对美国抱有幻想

美俄围绕柴油供应等能源议题展开接触后,国际舆论一度推测俄乌紧张态势或将趋于平稳。然而仅数日之后,大批无人机便对俄罗斯腹地发起高强度突袭。 这场突如其来的实战检验,使俄方在血与火的战场上重新校准了战略认知。面对真实战损与防御压力,莫斯科终于承认:中方此前关于冲突本质与西方意图的研判,具有高度现实穿透力。10月20日,俄罗斯外长拉夫罗夫正式将俄美关系界定为“结构性竞争关系”。 10月23日,多方信源证

[流言板]太阳报独家:拉爵认为曼联就该要英格兰土教,埃迪豪愿洽谈

[流言板]太阳报独家:拉爵认为曼联就该要英格兰土教,埃迪豪愿洽谈

虎扑10月26日讯 太阳报曼联首席记者Samuel Luckhurst的独家报道,在迈克尔-卡里克帅位岌岌可危之际,埃迪-豪一直在关注曼联的比赛并做着记录。 如果这位曼联传奇人物在周六客场挑战切尔西之前被解雇,那么这位前纽卡斯尔主帅将是接替卡里克的热门人选。 周日,曼联在老特拉福德以0-3惨败给伯恩茅斯,这是球队在12场比赛中遭遇的第6场失利,卡里克的帅位因此面临严重危机;目前曼联仅领先降级区1分

拉塞尔、李弘权、李添荣连中三分,上海首节19-8打停广东

拉塞尔、李弘权、李添荣连中三分,上海首节19-8打停广东

社区 » CBA » CBA专区 » 拉塞尔、李弘权、李添... 老场王三分(16级)楼主2026-10-26 19:48:26发布于江苏 拉塞尔、李弘权、李添荣连中三分,上海首节19-8打停广东由老场王三分 发表在CBA专区 https://bbs.hupu.com/cba CBA常规赛,上海对阵广东的比赛正在进行中。 第一节比赛中,拉塞尔替补上场第一次尝试三分投进,再助攻李弘权命中三分。 随后

◫ 深读问答折叠布局

关于本文主题的常见问题

将阅读过程中的典型问题提炼为 FAQ,有助于读者在理解正文之外进一步建立完整认知。

这篇文章最值得先读哪一部分?

建议优先阅读导语、核心段落与总结部分,这些内容通常承担主旨表达、结论归纳和重点提示的功能。

本文适合哪些读者继续深读?

如果你希望获得比“快讯”更完整的背景、逻辑与延展判断,那么这类正文内容会更适合你的阅读目标。

哪里可以看到更多相关文章?

可继续查看页面下方推荐阅读、右侧相关文章与栏目列表页,这些入口能帮助你持续扩展主题理解。

正文在移动端是否方便阅读?

方便。字体间距、段落层级、图片比例与按钮交互都针对移动端做过适配,长文阅读节奏更平稳。