一、真正的问题不是“有没有 API”,而是“哪一条动作可以先交给 Agent”

很多存量系统已经具备不错的接口基础:

  • 商城有订单、商品、库存和售后接口;
  • CRM 有客户、跟进记录和商机接口;
  • ERP 有采购、库存和调拨接口;
  • SaaS 后台有员工、权限、配置和报表接口;
  • 工单系统有创建、分派、回复和关闭接口。

于是团队很容易产生一个判断:

既然 OpenAPI 已经写好了,把它交给大模型不就可以了吗?

连接层面,这件事可能很快。

但“模型看见了接口”只证明它知道可以发送什么请求,并不自动回答下面的问题:

  1. Agent 代表谁执行?
  2. 当前用户属于哪个租户?
  3. 这项接口会产生什么业务后果?
  4. 哪些字段可以由模型填写,哪些必须来自可信系统?
  5. 什么情况下必须审批?
  6. 请求超时后能不能重试?
  7. 业务系统最终还会检查什么?
  8. 执行以后怎样证明真的成功或明确失败?

因此,第一次评估不应该从“导入 300 个接口”开始,而应该从下面这个最小单位开始:

一个已有业务系统
+ 一个真实使用者
+ 一个明确业务对象
+ 一条可观察后果的业务动作
+ 一组可验证的成功与拒绝结果

例如:

CRM + 已登录销售 + 当前租户客户 + 新建一条跟进记录
商城 + 已登录客服 + 当前租户订单 + 创建售后工单
ERP + 已登录仓管 + 指定商品 + 提交补货申请
SaaS + 已登录管理员 + 当前门店员工 + 修改非敏感备注

这一条动作能够被说清楚,才值得继续讨论 Agent、MCP 或控制面。

二、第一条真实动作应该怎样选?

不是所有高频接口都适合作为第一次评估对象。

一条合格的首个动作,最好同时具备下面五个特点:

判断项合格表现
业务边界只影响一个明确对象或创建一条独立记录
使用者能说清 Agent 代表哪个岗位或已登录用户
结果成功后有真实编号、状态或可查询的数据变化
风险失败影响可控,写操作可以撤销、补偿或进入人工流程
验证能在非生产环境完成正常、越权、重复与失败测试

首轮可以优先选择:

  • 查询一笔订单;
  • 查询一位客户;
  • 新建客户跟进记录;
  • 为订单创建售后工单;
  • 提交补货申请;
  • 修改一项非敏感、可回滚的业务备注。

首轮通常不建议选择:

  • 自动退款或资金划拨;
  • 批量改价或批量改库存;
  • 删除客户、订单或财务记录;
  • 冻结账号、修改角色或提升权限;
  • 直接执行生产运维命令;
  • 需要跨多个系统完成长事务且没有补偿机制的动作。

这并不是说高风险动作永远不能交给 Agent,而是第一次评估应该先验证最基本的责任链能否成立。

三、用一条“新建客户跟进记录”做脱敏示例

假设现有 CRM 已经有这样一条接口:

POST /api/customers/{customer_id}/follow-up-notes
Content-Type: application/json

{
  "content": "已沟通续费计划,下周再次联系",
  "next_contact_at": "2026-09-08T10:00:00+08:00"
}

成功后返回:

{
  "note_id": "note_demo_001",
  "status": "created"
}

从普通后台表单看,这似乎已经足够。

但如果要把它开放给 Agent,至少还要补齐这些问题:

谁可以创建?
  -> 当前已登录销售,还是任意拥有 API Token 的调用者?

可以给谁创建?
  -> 只能给当前租户、当前销售可见的客户创建吗?

谁提供 tenant_id 和 user_id?
  -> 业务服务端登录态,还是让模型从参数中填写?

重复提交怎么办?
  -> 超时重试会不会创建两条相同记录?

成功如何确认?
  -> 返回真实 note_id,还是只返回“操作成功”?

失败如何区分?
  -> 客户不存在、跨租户、无权限、参数错误和系统超时是否有不同结果?

如果这些问题没有答案,接口虽然能被调用,却还不是一项适合 Agent 使用的业务能力。

四、第一项检查:接口表达的是业务动作,还是过宽的通用 CRUD?

Agent 更适合调用边界明确的业务动作,而不是可以任意修改对象的通用接口。

例如下面这项能力相对清楚:

crm.customer_follow_up.create

它表达的是“为客户创建一条跟进记录”。

相比之下,下面这种接口虽然对后台表单很方便,对 Agent 却可能过宽:

PATCH /api/customers/{customer_id}

{
  "any_field": "any_value"
}

因为同一个 PATCH 可能同时修改:

  • 客户名称;
  • 联系方式;
  • 负责人;
  • 客户等级;
  • 归属门店;
  • 风控状态;
  • 其他未来新增字段。

当接口边界过宽时,工具描述再详细,也无法替代服务端的字段白名单和业务校验。

更合理的做法通常是保留原系统,不重写全部接口,只增加一层很薄的 Agent-facing 适配:

Agent 工具:创建客户跟进记录
  -> 只接受 customer_id、content、next_contact_at
  -> 从可信上下文读取 tenant 和 acting user
  -> 调用现有 CRM Service
  -> 返回 note_id 和明确状态

评估时可以先问一句:

如果模型填错一个字段,这条接口最坏能改变什么?

如果答案是“几乎整个对象都能被改”,就应该先收窄接口,而不是先开放给 Agent。

五、第二项检查:行动主体和租户从哪里来?

Agent 可以生成业务参数,但不能生成自己的权限。

下面这种设计是不可信的:

{
  "customer_id": "customer_demo_001",
  "content": "已完成回访",
  "tenant_id": "tenant_a",
  "user_id": "sales_001"
}

如果 tenant_iduser_id 只是模型参数,那么模型改一下字符串,就可能尝试代表另一个用户或访问另一个租户。

更可靠的链路应该是:

业务系统当前登录态
  -> 业务授权页或可信服务端派生主体
  -> Agent Session 绑定该主体和允许的工作区
  -> 中枢在执行时重验主体、路由和能力范围
  -> 业务接口再次按当前用户、租户和对象归属校验

因此,提交评估材料时需要说明:

  • Agent 代表个人用户、服务账号,还是某个组织角色?
  • 用户和租户由哪一层登录态产生?
  • 当前接口怎样判断该主体可以访问目标对象?
  • 员工离职、角色变化或授权撤销后,旧会话怎样失效?

如果当前答案是“还没有设计”,也没有关系。

这恰恰是接入评估需要提前发现的问题,而不是等接口进入生产后再靠提示词补救。

六、第三项检查:业务系统是否仍保留最终授权?

控制面可以限制 Agent 能看见和尝试调用哪些能力,但它不能替代业务系统掌握的实时事实。

以“新建客户跟进记录”为例,CRM 仍然需要判断:

  • 当前客户是否属于这个租户;
  • 当前销售是否能查看或跟进该客户;
  • 客户是否已经被删除、合并或转移;
  • 当前角色是否允许写跟进记录;
  • 这条记录是否违反字段、长度或状态规则。

因此,一条正确的授权链不是:

中枢放行 = 业务一定执行

而是:

中枢限制本次 Agent 可以到达的能力范围
  + 业务系统根据实时身份、对象和状态作最终裁决
  = 本次调用才可能成立

在 Agent-to-Business(A2B)场景里,可以把这两层理解为:

  • Reach:Agent 本次能够到达哪些业务能力;
  • Authority:业务系统此刻是否真正允许这项操作发生。

Agent Capability Contract(ACC,Agent 能力契约)可以声明能力的风险、主体、审批和审计意图;BailingHub 可以在运行时执行能力范围、可信上下文、人工介入和审计追踪;业务系统仍必须保留最终 Authority。

七、第四项检查:这项动作是什么风险,什么时候需要审批?

“写接口”不等于“一律审批”,也不等于“低风险就永远不用审批”。

评估一项动作时,至少要写清:

问题示例
可观察后果新增一条客户跟进记录
默认风险低风险、可追踪写入
需要审批的条件批量创建、包含敏感字段、跨负责人操作
必须绑定的参数customer_id、content、next_contact_at
执行前重验用户权限、客户归属、客户当前状态

审批如果存在,不能只保存一个 approved=true

它应该对应用户当时看到并确认的具体动作和参数。否则模型在审批后重新生成了另一组内容,系统仍然使用旧的布尔结果放行,审批就失去了意义。

对于第一条低风险动作,可以根据组织政策选择不要求人工审批,但仍然需要:

  • 可信主体;
  • 精确能力范围;
  • 参数校验;
  • 业务最终授权;
  • 幂等与审计。

不要用“无需审批”代替其他安全边界。

八、第五项检查:超时、重试和“结果未知”怎样处理?

Agent 会自动规划多步任务,本地客户端、网络和业务接口也可能发生超时。

最危险的处理方式是:

没有及时收到成功响应
  -> 默认失败
  -> 重新调用一次写接口

第一次请求可能已经成功,只是响应在返回途中丢失。第二次调用就会创建重复业务数据。

因此,写操作评估至少要回答:

  1. 是否支持稳定的 request_id 或幂等键?
  2. 相同幂等键重复请求是否返回同一业务结果?
  3. 超时后能否查询原任务,而不是重新创建?
  4. 业务系统能否区分“明确失败”和“结果未知”?
  5. 如果动作无法撤销,是否存在补偿或人工处理入口?

示意请求可以变成:

POST /api/customers/{customer_id}/follow-up-notes
Idempotency-Key: request_demo_001

{
  "content": "已沟通续费计划,下周再次联系",
  "next_contact_at": "2026-09-08T10:00:00+08:00"
}

这并不要求所有旧接口立刻支持复杂事务。

但至少要知道:重复调用会发生什么,以及客户端什么时候应该继续查询原任务。

九、第六项检查:执行后能否得到真实、结构化、可核对的结果?

下面这类回答不能作为业务动作成功的证据:

已经帮你记录好了。

它可能只是模型根据上下文生成的一句话。

更适合验证的结果应该包含真实业务返回,例如:

{
  "note_id": "note_demo_001",
  "customer_id": "customer_demo_001",
  "status": "created"
}

同时,中枢和业务系统应能还原:

  • 哪个会话提出了目标;
  • 本地 Agent 选择了哪项工具;
  • 工具使用了哪个可信业务主体;
  • 是否触发审批,审批绑定了哪些参数;
  • 业务系统最终接受还是拒绝;
  • 返回了什么结构化状态;
  • 是否发生重试、超时或恢复。

对话记录、执行轨迹和业务审计不是同一份数据,但它们应该能够通过稳定任务标识关联起来。

审计也不能成为新的秘密泄露源。Token、Cookie、完整客户数据和敏感响应正文不应该被直接写入公开日志或前端轨迹。

十、至少做八组正向与负向验证

一条接口能够正常返回 200,并不代表它已经适合交给 Agent。

首轮评估建议至少验证:

场景预期结果
正确用户、正确租户、合法对象创建成功,返回真实业务编号
缺少可信主体在调用业务接口前拒绝
A 租户请求 B 租户对象业务系统明确拒绝,不降级为匿名
当前角色没有写权限明确拒绝,不因模型要求而放行
同一幂等键重复提交不产生第二条业务记录
请求超时但业务已成功通过原任务或幂等结果恢复,不重新创建
对象状态在查询后发生变化执行时重新校验并拒绝过期操作
Agent 提交未声明字段服务端字段白名单拒绝或忽略,不能任意落库

如果其中任何一项只能回答“理论上应该没问题”,就还没有完成真实接入评估。

十一、评估完成后,通常会得到三种结论

结论 A:现有接口可以直接接入

一般需要满足:

  • 动作语义清楚;
  • 输入范围明确;
  • 可信主体和租户不依赖模型参数;
  • 原系统权限完整;
  • 结果可核对;
  • 写操作具备幂等或明确的重复处理语义;
  • 失败状态可以区分。

这种接口通常只需要补充 Agent-facing 能力声明、路由范围和审计映射。

结论 B:需要一层薄适配

常见原因包括:

  • 原接口是过宽的通用 CRUD;
  • 身份字段仍由前端自由传入;
  • 返回结果只有模糊消息;
  • 缺少幂等键;
  • 内部错误无法映射成可解释状态;
  • 多个底层接口需要组合成一个边界清楚的业务动作。

这里的“薄适配”不是重写业务系统,而是把已有 Service 封装成更窄、更稳定、更容易治理的一项动作。

结论 C:暂时不适合开放

如果一项操作同时具有以下问题,就应该先停下来:

  • 无法确认 Agent 代表谁;
  • 原系统没有对象级或租户级权限;
  • 高后果操作没有审批或复核机制;
  • 重试可能制造不可恢复的重复后果;
  • 业务状态变化后仍会盲目执行;
  • 无法证明成功、失败或结果未知;
  • 只能依赖提示词约束模型。

暂缓开放不是项目失败,而是评估发挥了作用:它在真实业务后果发生前暴露了缺口。

十二、提交接入评估时,最少准备哪些材料?

不需要一开始就公开整套内部接口文档,也不需要发送业务 Token。

一份最小、脱敏的评估材料可以只包含:

  1. 当前阶段:架构调研、自部署评估、接入阻塞,还是已经跑通 Demo;
  2. Agent 或运行时:Dify、OpenClaw、DeepSeek Harness、自研 Agent,或者尚未决定;
  3. 一个业务动作:谁要对什么对象做什么,会产生什么后果;
  4. 可观察后果:只读、创建或修改、删除或撤销,还是高后果动作;
  5. 脱敏接口形态:一条 route、请求字段和返回字段;
  6. 行动主体与最终权限:Agent 代表谁,原系统在哪里判断权限;
  7. 主要治理问题:身份、审批、审计、重试或失败处理中最想先确认什么;
  8. 期望结果:希望得到职责边界、最小拓扑,还是一条可复现路径。

例如:

业务系统:多租户 CRM
业务动作:已登录销售为其可见客户创建跟进记录
后果:新增业务数据,低风险、可追踪
接口形态:POST /customers/{customer_id}/follow-up-notes
可信主体:来自 CRM 服务端登录态
最终权限:CRM 检查 tenant、sales_user 和 customer ownership
主要问题:是否需要审批,以及怎样处理超时重复提交
希望结果:确定最小适配层和首轮负向测试清单

公开提交前必须删除:

  • API Key、Token、Cookie 和签名 Secret;
  • 私有域名、内网 IP 和生产数据库信息;
  • 客户姓名、手机号、订单内容等真实数据;
  • 员工个人信息和租户标识;
  • 完整内部 OpenAPI 文档;
  • 任何能够用于访问生产系统的配置。

一条脱敏动作足以开始技术评估。

十三、现有接口必须先改成 MCP Server 吗?

不一定。

MCP 可以帮助 Agent 宿主发现和调用工具,但“是否适合交给 Agent”与“采用哪种连接协议”是两个问题。

如果现有系统已经有稳定的 OpenAPI/HTTP 接口,可以先围绕这条接口完成:

  • 动作收窄;
  • 可信主体绑定;
  • 风险与审批声明;
  • 幂等与失败处理;
  • 业务最终授权;
  • 审计与结果映射。

然后再根据宿主和部署架构决定通过 OpenAPI、MCP、SDK 或其他适配器连接。

不要为了接入 Agent,先把全部业务逻辑复制到一个新的 MCP Server 中。连接器应尽量保持薄,最终业务规则仍留在原系统。

十四、BailingHub 在这项评估中负责什么?

BailingHub v0.5.0 已经提供面向本地 Agent 和既有业务系统的公开接入边界,包括:

  • 工具源与 route 的能力裁剪;
  • Agent Client 的浏览器授权与可信 Agent Session;
  • 本地 Agent Runtime 的工具发现和调用边界;
  • 写操作范围与 ACC 审批语义;
  • 任务、Agent Run、工具调用和审计轨迹;
  • 业务系统授权页与 Tool Provider 的最终身份、验签和业务授权协作。

它不会把业务账号密码、Cookie、Tool Provider Secret 或完整业务接口交给本地模型,也不会替业务系统判断实时业务权限。

这项公开接入评估的目标,是共同判断:

这条业务动作是否足够清楚?
哪些责任留在业务系统?
哪些治理边界由中枢执行?
第一条可复现路径需要补什么?

它不是托管接入服务、安全认证、平台推荐或生产上线承诺。

十五、一张可以直接复制的评估清单

在决定把一项接口交给 Agent 前,可以逐项回答:

  • 这是一项边界明确的业务动作,而不是任意字段 CRUD;
  • 能说清它操作的业务对象和可观察后果;
  • 能说清 Agent 代表哪个真实用户、服务账号或组织角色;
  • 用户和租户来自可信登录态,不由模型自由填写;
  • 业务系统仍会校验当前权限、对象归属和实时状态;
  • 风险等级和需要审批的条件已经明确;
  • 审批若存在,会绑定具体动作和参数;
  • 写操作具备幂等键或明确的重复提交处理方式;
  • 超时后可以查询原结果,不会盲目重复执行;
  • 成功返回真实业务编号或结构化状态;
  • 拒绝、失败和结果未知能够被区分;
  • 对话、执行轨迹和业务审计可以关联;
  • 日志与评估材料不包含密钥、Cookie 或真实客户数据;
  • 已设计正常、越权、跨租户、重复和状态变化测试;
  • 已经明确本次评估证明什么、没有证明什么。

如果大部分问题都有清楚答案,这条接口就具备进入最小 Agent 接入验证的基础。

如果答案集中在“由模型判断”“提示词里限制”或“应该不会重复”,应该先补接口和权限边界。

常见问题

1. 只有只读接口,也可以提交评估吗?

可以。只读动作同样需要可信主体、租户隔离、字段裁剪和审计。它通常也是最适合开始的第一步。

2. 所有写操作都必须人工审批吗?

不需要机械地一刀切。是否审批应结合动作风险、参数、主体和组织政策;但不审批不等于不需要身份、权限、幂等和审计。

3. 原系统已经有 RBAC,还需要中枢吗?

RBAC 负责原系统权限,不能单独决定模型本轮能看见哪些工具、审批如何绑定参数、任务如何恢复以及怎样记录 Agent 执行轨迹。两者职责不同,业务系统仍保留最终裁决。

4. 可以直接提交完整 OpenAPI 文件吗?

公开评估不建议这样做。先提交一条经过脱敏的 operation、请求字段和返回字段即可,不要包含私有域名、真实数据和凭据。

5. 接入评估通过就代表可以直接上生产吗?

不是。它只是公开的预接入技术评审,用于发现边界和形成最小验证路径,不是安全认证、生产授权或可用性保证。

6. 第一条动作应该选查询还是写入?

团队第一次接入时通常先选择可核对的只读动作;身份和对象权限走通以后,再增加一项低风险、可回滚或可进入人工流程的写操作。

7. 如果业务系统不能公开任何接口细节怎么办?

可以只描述动作、字段类型、主体来源和治理问题,并用占位名称替换路径和对象。不要为了获得评估而披露生产秘密。

结语:别先交出整套后台,先拿出一条真实动作

现有业务系统接入 AI Agent,真正困难的通常不是发送一次 HTTP 请求。

困难的是让下面这些事实同时成立:

Agent 知道可以做什么
  + 它代表一个可信业务主体
  + 中枢只开放当前场景需要的能力
  + 审批与具体动作和参数绑定
  + 业务系统保留最终权限和状态判断
  + 超时和重试不会制造重复后果
  + 执行结果能够被真实核对和还原

所以,不要从“把所有 OpenAPI 导入模型”开始。

先选择一条真实、脱敏、允许测试的业务动作,用本文清单判断它能否直接接入、是否需要薄适配,或者应该暂缓开放。

当第一条动作能够通过正常、越权、跨租户、重复和状态变化测试以后,再扩展第二条、第三条能力,系统的边界会清楚得多。

如果你正在评估商城、CRM、ERP、工单或 SaaS 后台,可以只提交:

一个业务系统 + 一个真实动作 + 一条脱敏接口 + 一个最想先确认的治理问题。

这已经足够开始第一次接入评估。


项目与延伸阅读:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐