# 从工具调用到智能体计算机：架构如何演进

从工具调用循环到能执行真实任务的计算机：用报价对比说明任务隔离、状态保存、权限和进度管理如何进入架构。

Canonical page: https://beeuni.ai/blog/zh/from-tool-calls-to-agent-computer

假设你想在产品里加一个“对比供应商”按钮。客户选中几份报价，希望得到一张表格，列出价格、交付日期和条款差异。第一个原型把文本发给模型，处理简短报价没有问题。随后，客户给出了扫描版 PDF、电子表格，以及供应商网站的链接。

这个功能现在需要打开文件、提取表格、查看网站、把价格换算到同一标准，再生成可下载的表格。模型帮助决定该做什么，但还需要一个地方来运行真正完成这些工作的程序。智能体计算机就在这里派上用场。

## 模型说要运行命令，接下来谁来执行？

工具调用是模型发给程序的请求。例如，模型可能要求执行一段读取报价的脚本。你的程序仍然要准备输入文件、安装解析工具、运行脚本，再返回输出。如果解析工具读不了扫描页，智能体就需要查看失败原因，并尝试其他可用的提取方法。

这些步骤都可以自己搭建。随着功能扩展，你还需要浏览器、文件访问、命令输出，以及区分不同客户任务的方法。Beeuni 把它们放进一个会话：智能体在云端计算机中读取文件、编写代码、运行命令、操作浏览器。

做报价对比时，智能体可以保存提取出的数据，编写计算脚本并运行，还可以打开供应商的公开网页核对交付条件。某一行缺少明确单位或交付日期时，可以在结果中标出来，留给客户确认。最后交付的是一张附有来源、客户可以检查的表格。

## 从调用工具，到在计算机上执行工作

熟悉的工具循环仍然负责推理：询问模型、执行它要求的操作、返回结果，再次询问。处理 PDF 时，计算机执行提取脚本，返回退出码、输出和报错。智能体先读这些结果，再决定下一步。解析失败、表格为空和成功提取数据，需要不同的处理。

把原始 PDF、extracted.csv、计算脚本和最终表格分别保存。如果最后的数字不对，就能沿着这些文件往回查。修改计算方式前，先让智能体把提取的一行数据与原始页面对照，找到是哪一步丢失了信息。

工具还可能启动比调用本身运行更久的进程。例如，请求已经超时，文档转换任务却还在运行。执行程序的一侧需要能查看进程和输出。如果直接让模型再启动一次，可能会出现两个转换任务，而没有解决原来的等待。

## 让不同任务在各自的环境中运行

两项对比共用一个目录时，可能互相覆盖 extracted.csv，或安装对方无法使用的依赖版本。每个 Beeuni 会话都有自己的执行环境，将这些本地文件和进程分开。有代码库的会话还有独立分支，代码变更进入默认分支前可以先审核。

共享应用还要单独考虑。如果两个会话都能修改采购系统中的同一条记录，换两台计算机也无法避免冲突。需要决定任务是否只能读取这些记录，还是更新操作必须批准。

## 先决定停止或故障后要保留什么

保存的会话记录说明智能体做过什么；磁盘保存提取文件和表格；运行中的进程可能还有未写入文件的工作。这些是不同的状态。恢复了消息，不代表转换程序会从之前中断的位置继续。

正常停止会保留计算机磁盘。删除或丢失计算机，需要另一种恢复方式：在条件允许时利用保存的对话和代码库内容。重要输出应保存到选定存储，需要保留的代码变更应推送到代码库。[会话指南](/docs/zh/work/sessions)说明了每项操作会保留什么。

## 对重要操作配置权限

对比智能体可能需要读取供应商文档，但下单应由人决定。Beeuni 的[连接器策略](/docs/zh/connect/connectors)可以允许工具操作、要求批准或阻止操作。应直接配置对应操作的权限，而不只依赖任务里的一句要求。计算机可以隔开本地工作，但连接的工具仍然能影响真实采购系统。

你的产品还要检查哪些客户能打开每项对比及其文件。服务端保存的 API 密钥让 Beeuni 识别你的应用；你自己的访问检查，负责确认请求来自有权查看结果的人。

## 让长任务不依赖一条连接

转换过程中，客户可能关闭页面。把 Beeuni 会话 ID 存进对比记录，页面回来时就能找到同一项工作。事件流显示实时进度，保存的日志则可以补上错过的过程。计算机可访问时，智能体可能正忙、已完成或等待输入，所以界面既要显示计算机是否可用，也要显示任务状态。

重发中断的请求前，先检查实际发生了什么。外部操作尤其如此：即使没有收到确认，订单也可能已经创建。[智能体后端接入教程](/blog/zh/use-beeuni-as-your-agent-backend)介绍了应用侧的记录和重新连接处理。

## 出了问题，能找到原因

假设生成的表格中价格列是空的。打开会话文件和命令输出看看：PDF 解析工具是不是没有读出数据？脚本是不是在找 Price 列，而报价中写的是 Unit cost？供应商页面是不是要求登录？原因不同，修复方式也不同。

智能体使用的是真实文件和程序，所以你可以让它查看中间生成的 CSV，修正列名映射，再重新运行计算。比起不知道哪里失败、只让模型重新生成最后的答案，这样通常更有用。

## 看清哪一步慢，再优化哪一步

这个功能的耗时可能来自准备计算机、等待模型回复、提取文档或加载网页。调整架构前，先看一次真实的报价对比。如果智能体反复打开同一份 PDF，就保存提取出的文本，后续直接处理文本。如果计算脚本慢，就检查脚本。供应商网站慢，换模型并不会让网页加载得更快。

每次改动后都检查表格。提取变快，前提是仍能正确获取价格和条款。用相同文档和模型设置对比，才能看出改动有没有帮助。

## 这些变化为架构增加了什么

模型仍然通过工具循环选择操作。在它周围，服务还要执行程序、隔离任务、保存有用成果、应用权限规则，并提供查看进度的方式。这就是引入智能体计算机后的架构变化。Beeuni 提供这些执行和会话接口，让你的应用可以发送任务，也能在工作过程中查看实际情况。

准备数据集或测试网站，也可以采用这种方式。文件、命令和预期输出会变化，但你的产品仍然是启动会话、跟进工作，再把可用结果交给客户。

从[通过代码管理会话](/docs/zh/sdk/sessions)和[身份验证](/docs/zh/sdk/auth)开始接入。想了解产品概念，可以阅读[什么是 AI Computer？](/blog/zh/what-is-an-ai-computer)。
