2026年10月4日 1 分钟阅读

AI Agent 总把流程走捷径?Stepgate 用可验证的步骤把执行关进护栏

tinyash 0 条评论

AI Agent 最危险的时刻,往往不是回答错一个问题,而是它自称“完成”了一个不能省略步骤的流程:研究报告少查了一个来源,CVE 分析跳过了复核,或者 Jira 工单已经写入,却没人知道中间哪些工具调用真正发生过。把流程写进提示词,依然把决定权留给了模型。

Stepgate 提供了另一种思路:用一个 YAML stepfile 描述输入、允许访问的 API、按顺序执行的步骤和每一步的 gate,再通过 MCP 暴露给 Claude Code、Cursor 或其他 MCP 客户端。项目采用 Apache-2.0 许可证,使用 TypeScript 和 Node.js 构建;仓库 README 还明确要求 Node.js 22.18 或更高版本。

它解决的不是“模型不够聪明”

Stepgate 的核心边界很清楚:Agent 只能看到当前步骤,不能直接跳到后面的步骤;步骤只有在机械检查通过后才会继续。gate 可以使用 JSON Schema、JSONLogic 或 HTTP verifier 检查输出,也可以把 API 实际返回的数据拿来对照,降低模型凭空编造值的空间。

这让“流程”从一段建议变成了可执行的约束。机械步骤可以由服务器调用 API 并用模板生成结果,需要判断的部分仍交给模型;如果某一步失败,诊断信息会返回给模型,但重试依然受限,不会变成无限循环。

另一个值得注意的设计是凭据边界。stepfile 需要声明它允许访问的主机,服务器负责附加凭据并拒绝未声明的目标。Agent 不直接持有密钥,流程执行还会留下哈希链账本,记录步骤、工具调用、gate 判定和重试;修改记录后,可以用 stepgate --verify 检查链是否断裂。

接入 MCP 客户端

Stepgate 的 Quick Start 不要求在客户端安装额外插件。以 market-research 示例为例,MCP 配置可以这样写:

{
  "mcpServers": {
    "stepgate": {
      "command": "npx",
      "args": ["-y", "stepgate", "market-research"],
      "env": {"TAVILY_API_KEY": "tvly-..."}
    }
  }
}

客户端连接后,Agent 会看到一个 market-research 工具。用户提供品牌和市场等输入,流程再按搜索、筛选、分析、报告的顺序推进。这里的重点不是示例本身,而是 stepfile 把“允许调用什么、必须产出什么、如何验收”集中到一个可迁移文件中。

如果要使用自己的流程,仓库文档建议把绝对路径指向 .stepfile.yaml 文件。这样可以先把团队已有的 SOP 改写成结构化步骤,再逐步补充校验规则,而不是一开始就重写整个 Agent。

本地运行、HTTP 服务与离线测试

Stepgate 默认可以通过 stdio 运行;需要以 HTTP 提供 MCP 服务时,README 给出了明确命令:

npx -y stepgate --http 3100 market-research
npx -y stepgate --list
npx -y stepgate --help

其中 --list 用来查看目录,--help 展示完整选项。开发 stepfile 时,--watch 可以在文件保存后重新加载;--test 用录制的案例离线检查 gate;--record-cases

则用于从真实运行中记录案例。这组命令把“流程修改”和“流程上线”分开,适合在 CI 中先验证,再接入生产 Agent。

什么时候值得使用

Stepgate 特别适合三类任务:一是研究、合规和安全分析,需要证明每个来源或检查步骤都执行过;二是会写入外部系统的自动化,例如 Jira、工单或审批流程;三是多工具链路较长、失败后需要知道从哪一步恢复的任务。

它并不能替代业务幂等设计,也不会自动判断所有结果是否正确。发送邮件、创建资源或执行支付等副作用操作,仍应配合幂等键、权限控制和人工审批。好的落地方式是先选一个边界清晰的流程,用 JSON Schema 或 HTTP verifier 固定可机械验证的部分,再把需要经验判断的部分留给模型。

AI Agent 的可靠性不只取决于模型回答得多像人。把步骤、权限、验收和审计移到运行时,才能让“完成”变成一个可检查的事实。Stepgate 的价值,正是用一个 MCP 服务器和一组可迁移的 stepfile,把这条边界具体化。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。