技术领导力 · 2025年10月7日 · 3 分钟

存量系统 AI 化改造:从「能用」到「智能」

不改存量系统也能接入 AI——数据库直连、API 封装、屏幕抓取三种模式的选择与组合策略。

重构一个系统给 AI Agent 用,成本高、风险大。但大部分企业面临的情况是:老系统不能动,但需要让它变"智能"。

这篇文章不讲怎么"重写一个 AI 原生应用",而是讲怎么给存量系统加上 AI 能力,不拆不重建。

三种存量接入模式

面对一个老系统,有三种方式让 AI 能"理解"和"操作"它:

模式一:数据库直连
  Agent 直接读/写数据库
  优点:最直接,不需要改系统
  缺点:没有业务语义,需要自己补

模式二:API 封装
  给老系统的操作封装成 API
  优点:有业务语义,安全可控
  缺点:老系统不一定有 API

模式三:屏幕抓取(多模态)
  Agent "看"系统的 UI,模拟人操作
  优点:系统完全不需要改
  缺点:不稳定,延迟高

三种模式从易到难,也对应了不同的"侵蚀度"。

模式一:数据库直连

最简单粗暴的方式。让 Agent 直接连接老系统的数据库,读数据、写数据。

# Agent 工具:直接查数据库
@tool
def query_sales_data(date_from: str, date_to: str, region: str = None):
    """查询指定时间范围和区域的销售数据"""
    sql = """
    SELECT product, SUM(amount) as total, COUNT(*) as orders
    FROM orders
    WHERE order_date BETWEEN ? AND ?
    """
    params = [date_from, date_to]
    if region:
        sql += " AND region = ?"
        params.append(region)
    sql += " GROUP BY product ORDER BY total DESC"
    return db.execute(sql, params).fetchall()

优点

  • 存量系统完全不需要改
  • 数据实时,没有延迟
  • Agent 可以执行任意复杂的数据分析 SQL

风险与应对

风险 1Agent 写操作导致数据错误
  应对:只读模式(Read-Only Agent)
  如确实需要写:用独立写库,再同步回主库

风险 2:复杂查询造成数据库压力
  应对:设置超时(statement_timeout)
  限制并发查询数
  读从库 / 只读副本

风险 3:直接暴露表结构缺乏业务语义
  应对:给 Agent 提供"业务视图"而非原始表
  比如 orders 表对外暴露为"销售订单视图"

模式二:API 封装

对老系统的操作封装成 RESTful API,Agent 通过 API 与系统交互。

如果你的系统已经有 API,那大半的工作已经完成了——Agent 只需要知道 API 的 endpoint 和参数。如果没有,那就封装一层:

存量系统
    │
    ▼
┌──────────────────┐
│  AI 适配层       │
│  (新写的一层)     │
│                   │
│  输入:自然语言    │
│  处理:调用老系统  │
│  输出:标准化响应  │
└──────────────────┘
    │
    ▼
Agent / LLM 应用

API 封装的几个关键点:

封装粒度

太细:Agent 需要多次交互才能完成一个业务操作
  - get_user_by_id
  - get_user_orders
  - get_order_details
  
太粗:Agent 无法灵活组合
  - generate_full_report(做了太多事,Agent 无法只取部分数据)

适度:每个 API 完成一个业务原子操作
  - search_users(keyword, page, size)
  - create_order(customer_id, items)
  - get_order_status(order_id)
  - cancel_order(order_id, reason)

无状态 API:Agent 不维护会话状态,每个 API 调用独立完成。这样 Agent 在重试、多轮交互时不需要考虑状态恢复。

幂等性:写操作(创建、更新、删除)应该是幂等的。Agent 可能会因为超时重试同一个操作,幂等保证不会重复扣款、重复下单。

# 幂等 API 示例:用 idempotency_key 保证不重复处理
@router.post("/orders")
async def create_order(
    order_data: OrderCreate,
    idempotency_key: str = Header(...)
):
    # 检查是否已处理过
    existing = await check_idempotency(idempotency_key)
    if existing:
        return existing  # 返回之前的结果
    
    # 实际处理
    order = await process_order(order_data)
    await save_idempotency(idempotency_key, order.id)
    return order

模式三:屏幕抓取(多模态)

最极端的情况——老系统没有 API、不能直连数据库、系统甚至不是 HTTP 的(桌面应用、老式终端)。

解决方案:让 Agent "看"屏幕 + 模拟操作。本质上是 RPA(机器人流程自动化)的 AI 升级版。

Agent 收到任务:"导出上个月的订单报表"

步骤:
  1. 截图 → VLM(视觉语言模型)识别当前界面
     → "这是一个登录页面"
  2. Agent 模拟操作:输入用户名密码,点击登录
  3. 截图 → VLM 识别 → "已进入系统主页"
  4. Agent 模拟操作:点击"报表"菜单 → 选择"订单报表"
  5. 截图 → VLM 识别 → "已进入报表页面"
  6. Agent 模拟操作:设置时间范围 → 点击导出
  7. 截图 → 确认导出成功
  → 通知用户:报表已生成

这个方法看着像黑科技,但在 2025-2026 年已经有不少落地案例。Claude Computer Use、GPT-4o 的屏幕理解能力,让"Agent 看屏幕操作"从实验走向了实用。

适用条件

✅ 适合:
  - 完全无法改造的老系统(20 年前的终端系统)
  - 没有 API 的第三方系统
  - 临时方案(后续还是要改造)

❌ 不适合:
  - 需要高频操作(截图识别太慢)
  - 对一致性要求极高(识别偶尔出错)
  - 涉及财务/关键业务(不确定性高)

三种模式的组合使用

实际项目中,三种模式不是互斥的。

场景:一个电商存量系统

读操作(报表查询)→ 数据库直连(模式一)
  快、准、实时

写操作(下单、退款)→ API 封装(模式二)
  安全、可控、幂等

无法改动的第三方组件 → 屏幕抓取(模式三)
  不侵入、可独立迭代

针对同一个系统,不同模块用不同的接入方式。关键在于根据操作的风险等级实时性要求选择对应模式。

改造路径图

从零到完成存量系统 AI 化改造的路径:

评估阶段(1-2 周)
  ├─ 盘点存量系统的数据源和操作
  ├─ 决定哪些用模式一、哪些用模式二、哪些用模式三
  └─ 评估风险和优先级

基础建设(2-4 周)
  ├─ 模式一:创建只读数据库视图、设置超时和限流
  ├─ 模式二:封装核心 API(优先只读 API)
  └─ 模式三:搭建截图 + VLM 识别流水线

AI 接入(1-2 周)
  ├─ 注册工具(数据库视图/API/屏幕操作)
  ├─ 编写 System Prompt
  └─ 测试:从简单的查询开始

渐进扩展(持续)
  ├─ 先覆盖非核心操作(查询、统计)
  ├─ 再覆盖核心操作(审批、创建)
  └─ 最后覆盖高风险操作(删除、修改)

安全加固(持续)
  ├─ 审计日志
  ├─ 操作确认门
  └─ 异常告警

不要一开始就想着覆盖所有功能。从 20% 最高频的操作开始,覆盖 80% 的用户需求。剩下的 20% 需求慢慢补。

风险控制

存量系统 AI 化改造中,最常见的失败原因不是技术没做好,而是风险控制没做好

安全原则:
  1. 只读优先:默认所有操作是只读的,写操作需要显式授权
  2. 操作确认:删除、修改、扣款等操作需要二次确认
  3. 权限隔离:Agent 使用专门的只读账号,不做写操作
  4. 审计追踪:记录 Agent 的所有操作,包括查询

灰度策略:
  5% 的查询 → 观察效果、补 bad case
  20% 的查询 → 稳定运行 1-2 周
  80% 的查询 + 少量简单写操作 → 持续观察
  全量 + 所有安全操作 → 稳定运行

总结

存量系统的 AI 化改造,核心不是技术选型,而是在不改变现有系统的基础上找到 AI 的切入方式

三个原则:

  1. 不动存量——能不改造老系统就不改造,加一层而非改一层
  2. 从读开始——只读查询是 AI 化改造最安全、最快见效的切入点
  3. 渐进、安全——覆盖 20% 的功能就能解决 80% 的需求,从灰度高到全量逐步放开

存量系统的 AI 化不是一场革命,而是一个渐进式的嵌入过程。最快的方案不一定是数据库直连、也不一定是 API 封装,而是先做起来的那一个

继续阅读

评论