一、传统对账的痛点与 AI 的切入点
在支付业务中,商户对账是一个高频且关键的操作。每天,平台需要将自身的交易记录与银行、第三方支付渠道的账单进行逐笔比对,找出金额不一致、遗漏、重复等异常记录。
传统的自动对账系统依赖预先定义的匹配规则,例如:
- 精确匹配:交易金额 + 交易时间 + 商户订单号完全一致。
- 模糊匹配:允许金额微小差异(如手续费扣除),时间偏移在 N 分钟以内。
- 聚合匹配:一笔平台交易对应多笔渠道交易(如分润拆分)。
问题在于,真实业务场景中的异常类型远比上述规则复杂。例如:渠道侧汇率转换导致的金额差异、跨时区交易时间不匹配、渠道批量合并后拆分不清等。每当出现新的异常模式,都需要开发人员新增匹配规则,维护成本极高。
我们的思路是:让 AI Agent 具备对账领域知识,当规则引擎无法匹配时,将差异数据交给 Agent 进行根因分析和智能推荐。
二、MCP Server 工具设计
MCP(Model Context Protocol)是 Anthropic 提出的一种标准化协议,用于让 AI 模型与外部工具和数据源进行交互。我们将对账系统中的核心能力封装为 MCP Server 暴露给 Agent:
{
"server": "reconciliation-mcp-server",
"tools": [
{
"name": "query_bill_records",
"description": "查询指定商户在指定时间范围内的账单记录",
"parameters": {
"merchantId": { "type": "string", "required": true },
"startDate": { "type": "string", "format": "date" },
"endDate": { "type": "string", "format": "date" },
"status": { "type": "string", "enum": ["matched", "unmatched", "pending"] }
}
},
{
"name": "query_channel_records",
"description": "查询渠道侧的交易流水,支持按银行、支付机构过滤",
"parameters": {
"channelCode": { "type": "string", "required": true },
"traceNo": { "type": "string" },
"timeRange": { "type": "object" }
}
},
{
"name": "analyze_exchange_rate",
"description": "分析指定日期和币种对的汇率转换差异",
"parameters": {
"fromCurrency": { "type": "string" },
"toCurrency": { "type": "string" },
"date": { "type": "string" }
}
},
{
"name": "generate_reconciliation_report",
"description": "生成对账差异分析报告,包含根因分类和修复建议",
"parameters": {
"merchantId": { "type": "string", "required": true },
"diffIds": { "type": "array", "items": { "type": "string" } }
}
}
]
}
MCP Server 的实现基于 Java + Spring Boot,通过 SSE(Server-Sent Events)与 Agent 客户端通信。每个 Tool 对应一个 Spring Bean,内部封装了实际的业务逻辑调用:
@Component
public class QueryBillRecordsTool implements McpTool {
@Autowired
private BillQueryService billQueryService;
@Override
public String getName() { return "query_bill_records"; }
@Override
public ToolResult execute(Map<String, Object> params) {
String merchantId = (String) params.get("merchantId");
String startDate = (String) params.get("startDate");
String endDate = (String) params.get("endDate");
List<BillRecord> records = billQueryService.query(
merchantId, startDate, endDate);
return ToolResult.success(JSON.toJSONString(
records.stream()
.map(BillRecord::toSummary)
.collect(Collectors.toList())
));
}
}
三、远端知识库与 Skill 封装
Agent 仅有工具调用能力是不够的,它还需要具备对账领域的专业知识。为此我们构建了一个远端知识库,包含:
- 异常模式库:积累了过去 3 年的 2000+ 真实异常案例及处理方式。
- 渠道规则文档:各银行和支付机构的对账文件格式、编码规则、特殊处理逻辑。
- 监管合规要求:涉及反洗钱、外汇管理的对账合规标准。
知识库基于向量数据库(Milvus)存储,在 MCP Server 中封装为 search_knowledge_base 工具,当 Agent 分析异常时可以主动检索相关知识:
// Agent 的推理链路示例(简化描述)
// 1. Agent 发现商户 M001 有 5 笔未匹配记录
// 2. 调用 query_bill_records 获取平台侧数据
// 3. 调用 query_channel_records 获取渠道侧数据
// 4. 发现差异集中在跨币种交易
// 5. 调用 search_knowledge_base 检索"跨币种汇率差异"相关案例
// 6. 调用 analyze_exchange_rate 验证汇率差异
// 7. 输出根因分析:渠道侧使用的是当日开盘汇率,平台侧使用的是实时汇率
// 8. 调用 generate_reconciliation_report 生成报告
为了让 Agent 的行为更加可控和可复现,我们将常见的对账分析流程封装为 Skill(技能):
- Skill: 单商户差异分析 -- 针对单个商户的所有未匹配记录进行批量分析,输出差异分类统计和修复建议。
- Skill: 渠道侧批量排查 -- 当某个渠道出现大量异常时,自动排查是否为渠道侧系统故障或文件格式变更。
- Skill: 汇率差异核算 -- 专门处理涉及多币种交易的汇率转换差异,自动计算合理的差异阈值。
每个 Skill 本质上是一个 Prompt 模板 + 工具调用编排,由 Agent 运行时按需选择和组合。运营人员只需通过自然语言描述需求,Agent 就能自动选择合适的 Skill 来执行。
四、落地效果与思考
系统上线后的核心指标:
- 异常分析效率从平均 40 分钟/笔降至 5 分钟/笔,提升 8 倍。
- 新增异常模式的识别准确率达到 92%(经过 3 个月的人工校准后)。
- 运营团队从 6 人缩减到 3 人,释放的人力投入到更高价值的渠道对接工作中。
在实际落地过程中,我们也踩了一些坑:
- 幻觉问题:早期 Agent 有时会"编造"不存在的渠道规则作为解释。通过引入 RAG + 强制引用来源的方式,幻觉率从 15% 降到 2% 以下。
- 延迟敏感:Agent 的多轮工具调用需要 10-30 秒,对于实时性要求高的场景并不适用。我们将 Agent 定位为辅助分析工具,而非替代规则引擎。
- 成本控制:大模型 API 调用费用需要精细化控制,通过 Token 预算限制和结果缓存,将单次分析成本控制在 0.1 元以内。
总体而言,MCP + Agent 的组合在商户对账场景中展现出了明显的价值。它不是要替代传统的规则引擎,而是在规则引擎无法覆盖的"长尾异常"领域提供了一个智能的补充方案。对于 AI 与传统业务系统的融合,我们的经验是:让 AI 做推理和决策,让传统系统做执行和保障,两者各司其职,才能发挥最大的效能。