第 2 章:接入业务系统:ERP 等系统的集成

2.1 为什么必须"接系统":AI 的三层能力

很多企业上了 AI 后发现"它是挺聪明,但查不到我的库存、看不到我的订单、进不了我的 ERP——那就是个高级聊天机器人"。AI Agent 真正的业务价值不在"能聊天",而在"能办事"。按需集成深度,AI 可分为三层:

层级能力示例是否需要集成
L1 对话层回答问题、生成内容"退货政策是什么?"不需要
L2 查询层读取业务数据"我昨天的订单发货了吗?"需要(只读 API)
L3 操作层执行业务操作"帮我把这个订单的地址改成 XX"需要(读写 API)

系统集成的深度,决定了 AI 在企业里的价值上限。 绝大多数企业做 AI 只做到了 L1,天花板很低。

2.2 三种集成方式:API / 数据库 / MCP

方式一:API 对接(最推荐,最安全)

AI 通过 Function Calling 调用企业系统的 REST API 读写数据。权限可控制在 API 层,标准化、易维护。

工作流程:用户提问 → AI 识别意图 → 调用"订单查询"工具 → API 请求 ERP → 返回订单状态 → AI 翻译成自然语言回复。

适合:目标系统有开放 API(金蝶云、用友云、织信 ERP、SAP 云等)。

方式二:数据库直连(Plan B)

目标系统没有 API 但有数据库时,用只读数据库账号直连查询。部署快,但安全性风险高。

⚠️ 数据库直连的强制安全措施(每条都是底线):

  1. 只给 AI 分配只读权限的账号,绝对不能有写权限;
  2. 对 AI 生成的 SQL 做白名单校验——只允许 SELECT,禁止 DROP / UPDATE / DELETE;
  3. 设置查询超时(如 5 秒),防止 AI 生成低效 SQL 拖垮数据库;
  4. 敏感字段(手机号、身份证等)返回前脱敏。
# 安全的 SQL 查询方案:预定义模板 + 参数填充
SQL_TEMPLATES = {
    "order_status": "SELECT status, logistics FROM orders WHERE order_id = %s",
    "inventory":    "SELECT product_name, stock FROM inventory WHERE sku = %s",
}

def safe_query(template_name: str, params: tuple) -> list:
    if template_name not in SQL_TEMPLATES:
        raise ValueError(f"未知查询模板: {template_name}")
    cursor.execute(SQL_TEMPLATES[template_name], params)
    return cursor.fetchall()

方式三:MCP 协议(新趋势)

MCP(Model Context Protocol)是 Anthropic 发起的开放协议,相当于"AI 世界的 USB 接口"。通过一个 MCP Server,多个 AI 客户端(Claude、Cursor、WorkBuddy、TRAE Work 等)都能标准化地访问同一数据源。

优点:标准化、可复用、社区生态发展快。缺点:协议仍在早期,需要一定的技术配置能力。

2.3 ERP 接入通用方法论:三层架构

针对不同成熟度的 ERP,推荐"API 为主、数据库只读为辅、老旧 ERP 用 RPA 兜底"的三层架构:

ERP 类型集成方式典型厂商
云端 ERPREST API 对接金蝶云、用友云、织信 ERP
本地部署 ERP数据库只读 + VPN/内网穿透K3 WISE、U9、SAP 本地版
老旧无 API 的 ERPRPA 模拟操作管家婆、速达、老版单机软件

三层架构选型流程(照着这个判断走,不纠结):

flowchart TD
    A[要接的 ERP 是什么形态?] --> B{有没有开放 API?}
    B -->|有| C[REST API 对接
最安全、最推荐] B -->|没有| D{能否开放只读数据库?} D -->|能| E[数据库只读 + VPN/内网穿透] D -->|不能| F[RPA 模拟操作
兜底方案] C --> G[权限拆分: 查询/制单账号分离] E --> G F --> G

2.3.1 前置准备(最容易翻车、最容易被跳过的环节)

原则:准备工作没做完,不做集成配置。 主数据不干净,后面所有自动化都是"垃圾进垃圾出"。

  1. 云端 ERP:向厂商申请开放 REST API、开通独立集成 Token、配置 IP 白名单。Token 权限要拆清楚,不要拿管理员 Token 直接上
  2. 本地 ERP:DBA 新建只读数据库账号,仅开放业务库查询权限,禁止 update/delete。梳理核心业务表(库存、销售订单、采购订单、应收应付、生产订单、BOM),不必全库暴露。
  3. 老旧 ERP:在专用虚拟机部署 ERP 客户端,RPA 固定账号登录,仅允许单据录入、报表导出,禁止反审核、删单操作

权限拆分铁律

2.4 具体示例一:金蝶云星空 MCP 接入

金蝶云星空(k3cloud)在国内中型制造企业铺得很广。通过社区开源的 kingdee-mcperp-mcp,可以让 Claude / Cursor / WorkBuddy 等直接查库存、建单、审批。

接入四步总览(本节 2.4 的四个步骤对应此图):

flowchart LR
    A[1 安装 MCP 包
pip install kingdee-mcp] --> B[2 金蝶后台授权
创建集成用户/AppID/AppSecret] B --> C[3 配置 AI 客户端
写入 claude_desktop_config.json] C --> D[4 重启客户端
自然语言直接操作 ERP]

第 1 步:安装

pip install kingdee-mcp
# 或更全的工具集(51 个工具,覆盖金蝶云星空 + 用友)
pip install erp-mcp

第 2 步:金蝶后台授权

进入「系统管理 → 第三方系统登录授权 → 新增」,创建集成用户,获取 AppID 和 AppSecret(或按旧接口配置账套 ID / 用户名 / 密码)。

第 3 步:配置 AI 客户端(以 Claude Desktop 为例)

编辑 %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "kingdee": {
      "command": "python",
      "args": ["-m", "kingdee_mcp.server"],
      "env": {
        "KINGDEE_BASE_URL": "https://your-org.ik3cloud.com/k3cloud",
        "KINGDEE_ACCT_ID": "你的账套ID",
        "KINGDEE_USERNAME": "集成用户名",
        "KINGDEE_APP_ID": "AppID",
        "KINGDEE_APP_SEC": "AppSecret"
      }
    }
  }
}

第 4 步:重启客户端,直接用自然语言操作

⚠️ 安全提醒:金蝶云星空的旧式认证直接把用户名密码 POST 过去拿 cookie,只适合内部使用,不要把 API 暴露到公网

2.5 具体示例二:用友 YonSuite 接入

用友 YonSuite / YonBIP 通过 erp-mcp 的适配器层对接,环境变量配置:

{
  "mcpServers": {
    "erp": {
      "command": "python",
      "args": ["-m", "erp_mcp.server"],
      "env": {
        "ERP_TYPE": "yonsuite",
        "YONSUITE_BASE_URL": "https://yapi.yonyoucloud.com",
        "YONSUITE_APP_KEY": "...",
        "YONSUITE_APP_SECRET": "...",
        "YONSUITE_TENANT_ID": "..."
      }
    }
  }
}

erp-mcp 提供 51 个工具,绝大多数只读(销售/采购/库存/客户/应收应付/生产/经营看板/财务对账),写操作仅审批与自升级两个,均带二次确认门——这与第二部第 13 章"审批链"思想一致:AI 可以提,但关键操作必须人确认。

2.6 常见企业系统对接速查

企业系统集成方式难度周期关键注意事项
企业微信/钉钉/飞书官方 Bot API1-2 周作为 AI 交互入口,最先要接
OA 审批系统API 对接2-3 周审批权限:AI 只能查自己发起的审批
ERP(用友/金蝶/SAP)API 或数据库直连3-6 周接口老旧且文档不全,预留更多时间
CRM 系统API 对接2-3 周主流 CRM 的 API 较完善
邮件系统IMAP/SMTP1-2 周注意收发权限与发信频率限制

2.7 与第二部框架的呼应:规则引擎兜底

接入系统后,AI 直接触达业务数据,风险也随之上升——这正是第二部"绳墨 Runtime"解决的核心问题。落地建议(呼应各章):

结论:工具(第 1 章)负责"把 AI 用起来",接入(本章)负责"把 AI 接进系统",而第二部原理负责"让 AI 接入后不闯祸"。三者缺一不可。