第 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 但有数据库时,用只读数据库账号直连查询。部署快,但安全性风险高。
⚠️ 数据库直连的强制安全措施(每条都是底线):
- 只给 AI 分配只读权限的账号,绝对不能有写权限;
- 对 AI 生成的 SQL 做白名单校验——只允许 SELECT,禁止 DROP / UPDATE / DELETE;
- 设置查询超时(如 5 秒),防止 AI 生成低效 SQL 拖垮数据库;
- 敏感字段(手机号、身份证等)返回前脱敏。
# 安全的 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 类型 | 集成方式 | 典型厂商 |
|---|---|---|
| 云端 ERP | REST API 对接 | 金蝶云、用友云、织信 ERP |
| 本地部署 ERP | 数据库只读 + VPN/内网穿透 | K3 WISE、U9、SAP 本地版 |
| 老旧无 API 的 ERP | RPA 模拟操作 | 管家婆、速达、老版单机软件 |
三层架构选型流程(照着这个判断走,不纠结):
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 前置准备(最容易翻车、最容易被跳过的环节)
原则:准备工作没做完,不做集成配置。 主数据不干净,后面所有自动化都是"垃圾进垃圾出"。
- 云端 ERP:向厂商申请开放 REST API、开通独立集成 Token、配置 IP 白名单。Token 权限要拆清楚,不要拿管理员 Token 直接上。
- 本地 ERP:DBA 新建只读数据库账号,仅开放业务库查询权限,禁止 update/delete。梳理核心业务表(库存、销售订单、采购订单、应收应付、生产订单、BOM),不必全库暴露。
- 老旧 ERP:在专用虚拟机部署 ERP 客户端,RPA 固定账号登录,仅允许单据录入、报表导出,禁止反审核、删单操作。
权限拆分铁律:
- 查询账号:只读销售/采购/库存/财务/生产单据,无任何修改权限;
- 制单账号:仅允许新增订单、入库单、凭证草稿,禁止删除、过账、反审核。
2.4 具体示例一:金蝶云星空 MCP 接入
金蝶云星空(k3cloud)在国内中型制造企业铺得很广。通过社区开源的 kingdee-mcp 或 erp-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 步:重启客户端,直接用自然语言操作
- "帮我看下金蝶里有多少个未审核的销售订单"
- "查一下物料编码 MAT001 的即时库存"
- "帮我新建一张采购订单,供应商 S001,物料 MAT001,数量 100"
- "审核这几张入库单:12345, 12346"
⚠️ 安全提醒:金蝶云星空的旧式认证直接把用户名密码 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 API | 低 | 1-2 周 | 作为 AI 交互入口,最先要接 |
| OA 审批系统 | API 对接 | 中 | 2-3 周 | 审批权限:AI 只能查自己发起的审批 |
| ERP(用友/金蝶/SAP) | API 或数据库直连 | 高 | 3-6 周 | 接口老旧且文档不全,预留更多时间 |
| CRM 系统 | API 对接 | 中 | 2-3 周 | 主流 CRM 的 API 较完善 |
| 邮件系统 | IMAP/SMTP | 低 | 1-2 周 | 注意收发权限与发信频率限制 |
2.7 与第二部框架的呼应:规则引擎兜底
接入系统后,AI 直接触达业务数据,风险也随之上升——这正是第二部"绳墨 Runtime"解决的核心问题。落地建议(呼应各章):
- 只读查询(L2):用规则引擎校验参数(如订单号格式、库存查询的物料是否存在),呼应第 11 章;
- 写操作(L3):接入七层审核链,AI 生成"待确认"操作,人确认后才落库,呼应第 13 章;
- 权限:按角色/属性控制 AI 能看到的数据范围,呼应第 12 章;
- 审计:AI 的每次操作留痕、可追溯,呼应第 12 章七层审核链与 WORM 审计。
结论:工具(第 1 章)负责"把 AI 用起来",接入(本章)负责"把 AI 接进系统",而第二部原理负责"让 AI 接入后不闯祸"。三者缺一不可。