纯 Dart 的人机协同代理:把审批闸门放在花钱的工具前
来源:dev.to — 2026-10-27
📋 概述
作者用一个虚构的外勤服务公司做派工助手:调度员输入「WO-1043 现在什么状态」或「给 WO-1044 订一个 3 kW 加热元件」,代理就去查工单、排班或者订零件。区别在于订零件要花钱,不能由模型自己决定。整套四个部件全部用 Dart 写:把后台系统包成 MCP 服务器,Genkit flow 当代理并从 MCP 取工具,用 genkit_middleware 的 toolApproval 给花钱的工具加审批闸门,最后用 genkit_shelf 只暴露一个 POST /dispatchAgent 加健康检查。作者说,后台系统明明在同一个进程里却还要包一层 MCP,是因为边界本身就是目的:哪天工单搬到真实系统,只需要换 MCP 服务器,代理、提示词和测试都不用动。
🔑 核心要点
- 查工单和排班自动执行,只有花钱的 order_part 停下来等人点头
- 后台系统包成 MCP 服务器,任何 MCP 客户端都能接,不限于这个代理
- 代理服务器、工具服务器和 Flutter 客户端共用一套 schemantic 类型,没有 dart:io
- 工具描述里明写「which costs money」,因为模型也会读描述
💡 金句
“Why MCP for a back office that lives in the same process? Because the boundary is the point.”
译:后台系统明明就在同一个进程里,为什么还要套一层 MCP?因为那道边界本身就是目的。
← 返回 dev.to 首页