给 AI Agent 一个虚拟桌面:用 Amazon WorkSpaces 操作遗留桌面应用的完整实践

痛点:那些没有 API 的老系统

上周接到一个需求——把公司内部的药房管理系统接入 AI Agent,让它自动处理处方补充流程。

打开系统一看,我人傻了。这是一个纯桌面应用,没有 REST API,没有 GraphQL,连个命令行接口都没有。交互方式只有鼠标点点点、键盘敲敲敲。

这不是个例。Gartner 2024 年的数据显示,75% 的组织还在跑缺乏现代 API 的遗留应用。更夸张的是,71% 的财富 500 强公司的关键业务流程运行在没有 API 的大型机系统上。

传统思路是"应用现代化改造"——重写接口、加 API 层、做数据中间件。但现实是:改造周期长、风险高、预算批不下来。老板要的是"下个月就上线"。

所以当我看到亚马逊云科技推出 WorkSpaces AI Agent Desktop 的时候,直觉告诉我:这个方向对了。

思路转变:不改应用,改交互方式

WorkSpaces AI Agent Desktop 的核心思路很简单——既然人能通过桌面操作这些应用,AI Agent 为什么不行?

给 Agent 分配一个虚拟桌面环境,让它像人一样"看屏幕"和"操作鼠标键盘"。应用本身不用做任何修改。

具体来说,Agent 通过三个能力完成操作:

  1. Computer Vision — 对桌面截图做视觉理解,识别按钮、输入框、菜单等 UI 元素
  2. Computer Input — 模拟鼠标点击、键盘输入、滚动等操作
  3. Screenshot Storage — 存储操作过程的截图,用于审计和调试

Agent 通过 IAM 认证连接到 WorkSpaces 实例,整个过程在亚马逊云科技的安全体系内完成。不需要把凭证暴露给外部服务,不需要开额外的网络端口。

架构拆解

整体架构分三层:

┌─────────────────────────────────────────┐
│         AI Agent (你的业务逻辑)           │
│   LangChain / CrewAI / Strands Agents   │
├─────────────────────────────────────────┤
│           MCP 标准协议层                  │
├─────────────────────────────────────────┤
│      Amazon WorkSpaces Instance          │
│   ┌───────────────────────────────┐      │
│   │  Computer Vision (截图识别)    │      │
│   │  Computer Input (点击/输入)    │      │
│   │  Screenshot Storage (审计)     │      │
│   └───────────────────────────────┘      │
│          遗留桌面应用运行于此              │
└─────────────────────────────────────────┘

几个关键设计决策:

MCP 协议兼容:支持 Model Context Protocol 标准,意味着你不会被锁死在某个 Agent 框架里。今天用 LangChain,明天想换 CrewAI 或者 Strands Agents,迁移成本很低。

IAM 认证:Agent 用 IAM Role 连接 WorkSpaces,权限管理走亚马逊云科技统一的身份体系。可以精细控制哪个 Agent 能访问哪台桌面。

分辨率固定 1280×720 PNG:这个设计很务实。固定分辨率保证了 Computer Vision 模型的输入一致性,PNG 无损格式保证了 UI 元素的清晰度。

动手配置

配置过程比我预想的简单。核心步骤:

1. 创建 WorkSpaces Stack

在 WorkSpaces 控制台创建新的 Stack,这一步和创建普通 WorkSpaces 实例一样。

2. 启用 AI Agent 能力

在 Stack 配置里找到 AI agents section,勾选三个开关:

  • ✅ Enable Computer Input
  • ✅ Enable Computer Vision
  • ✅ Enable Screenshot Storage

3. 配置分辨率

设置桌面分辨率为 1280×720,截图格式 PNG。

{
  "screenResolution": {
    "width": 1280,
    "height": 720
  },
  "screenshotFormat": "PNG",
  "computerInput": true,
  "computerVision": true,
  "screenshotStorage": true
}

4. 设置 IAM 权限

给你的 Agent 配置 IAM Role,允许它连接到指定的 WorkSpaces 实例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "workspaces:DescribeWorkspaces",
        "workspaces:CreateConnect*",
        "workspaces:GetScreenshot",
        "workspaces:SendInput"
      ],
      "Resource": "arn:aws:workspaces:us-east-1:123456789012:workspace/ws-xxxxxxxxx"
    }
  ]
}

5. Agent 代码集成

亚马逊云科技在 GitHub 上提供了 starter code。以 Python + LangChain 为例,核心流程:

# 伪代码示意 Agent 操作流程
class WorkSpacesAgent:
    def __init__(self, workspace_id):
        self.workspace = connect_workspace(workspace_id)
    
    def execute_task(self, task_description):
        # 1. 截图获取当前桌面状态
        screenshot = self.workspace.get_screenshot()
        
        # 2. Computer Vision 理解界面
        ui_elements = self.vision.analyze(screenshot)
        
        # 3. 规划操作步骤
        actions = self.planner.plan(task_description, ui_elements)
        
        # 4. 逐步执行操作
        for action in actions:
            if action.type == "click":
                self.workspace.click(action.x, action.y)
            elif action.type == "type":
                self.workspace.type_text(action.text)
            elif action.type == "scroll":
                self.workspace.scroll(action.direction)
            
            # 每步操作后重新截图确认状态
            screenshot = self.workspace.get_screenshot()
            self.verify_state(screenshot, action.expected_state)

实战用例:处方补充 Agent

拿我接到的那个需求来说,处方补充的完整流程是:

  1. 查患者记录 — 在药房系统里搜索患者 ID,打开处方历史
  2. 搜药品 — 在药品库里查找对应药品的库存
  3. 下单 — 填写补充数量、选择配送方式
  4. 确认 — 检查信息无误后提交订单

每一步都是桌面上的鼠标点击和键盘输入。Agent 通过 Computer Vision 识别当前界面状态,判断该点哪里、该输入什么,然后用 Computer Input 完成操作。

关键的是——药房系统本身没有做任何修改。不需要加 API,不需要改代码,不需要更新版本。

踩坑记录

折腾过程中遇到几个坑,记录下来:

坑 1:UI 元素识别不稳定

老系统的 UI 设计比较"复古",按钮样式不统一,有些文字用的是位图渲染。解决办法是固定分辨率(1280×720)并确保字体渲染清晰。如果系统 UI 实在太模糊,考虑调整 Windows 的 ClearType 设置。

坑 2:操作节奏太快

Agent 执行操作的速度远快于人类,有些老系统的界面刷新跟不上。解决办法是在每步操作后加等待,用截图对比确认页面已经加载完成再进行下一步。

坑 3:弹窗和异常处理

老系统很爱弹各种警告框、确认框。需要在 Agent 逻辑里加异常检测——每次截图后先判断有没有意外弹窗,有的话先处理弹窗再继续主流程。

适用场景判断

这个方案不是万能的。我总结了几个适用判断标准:

适合用的场景:

  • 遗留桌面应用,无 API、无改造可能
  • 流程相对固定、步骤可预测
  • 对操作速度要求不是毫秒级
  • 需要审计追踪(截图自动存储)

不太适合的场景:

  • 高频交易类操作(延迟敏感)
  • UI 频繁变更的应用(Vision 模型需要重新适应)
  • 已有完善 API 的系统(直接调 API 更高效)

可用区域和费用

目前处于 Preview 阶段,AI Agent 相关能力不额外收费(WorkSpaces 实例本身的费用还是要付的)。

可用区域覆盖挺广:

  • 北美:US East、US West、Canada
  • 欧洲:Europe
  • 亚太:Tokyo、Mumbai、Sydney、Seoul、Singapore

下一步

如果你也有类似的遗留系统对接需求,建议的上手路径:

  1. 去 GitHub 拉 starter code 跑一遍 demo
  2. 选一个简单的、步骤少的流程先试水
  3. 逐步增加复杂度,加入异常处理逻辑
  4. 跑稳了再推到生产环境

官方资源:


这个方案最打动我的地方是务实——不搞理想化的"全面现代化改造",而是承认现实:老系统就是在那里,短期内改不掉,那就想办法让 AI 适应它。这种思路在企业里能落地。

posted @ 2026-05-23 07:36  亚马逊云开发者  阅读(0)  评论(0)    收藏  举报