如何在 VPS 上使用 Claude 构建 AI 智能体
了解如何在自有 VPS 上运行 Claude 智能体:Messages API 负责推理,工具调用驱动执行循环,MCP 连接外部工具与数据,同时保留服务器控制权。
使用 Claude 构建代理意味着什么
使用 Claude 构建代理,意味着将 Claude 用作推理核心,而循环、工具和数据运行在您自己的服务器上。Claude 决定执行什么操作,您的 VPS 负责执行。您向 Claude 发送任务和当前状态,Claude 返回答案,或请求使用您的某个工具;您的代码运行该工具,再将结果发回 Claude。循环会持续进行,直到任务完成。智能部分是您通过互联网调用的一项服务。除此之外的一切都由您控制。
这种分工正是其优势所在。您无需运行模型即可获得前沿级别的推理能力,同时可以完全控制代理能够访问的内容,因为工具运行在您拥有的硬件上。如果您已经构建了第一个 Claude 程序,请参阅 在 VPS 上构建第一个 Claude 应用的指南。本指南将在其基础上继续介绍。
Claude 是大脑:Messages API
Claude 的每次调用都通过一个端点,即 Messages API。您发送当前为止的对话,以及代理可以使用的工具列表;Claude 返回下一条消息。这条消息要么是最终答案,要么是调用工具的请求。对于自行构建的方案,没有单独的“代理 API”:工具调用是这个单一端点的一项功能,而围绕该端点运行的循环由您负责。
Claude 在调用之间不会保留状态,也就是说,它不会自行记住任何内容。每个请求都包含完整的对话。您的代码保存历史记录,并在每一轮都发送这些记录,这就是 长会话中每一轮消耗的 token 都比上一轮更多的原因。这与其说是限制,不如说是一种设计选择:由于状态保存在您的服务器上,您可以准确决定 Claude 能看到的内容,任务数据也不会存储在任何您无法控制的位置。但这意味着提示会持续变长。Claude 的上下文窗口可以轻松容纳这些内容,但同一循环中的本地模型无法做到,这就是为什么 必须先提高 Ollama 的 num_ctx,才能避免长提示被截断。
工具调用构成智能体循环
使用 Claude 的智能体循环很容易描述。您发送一个包含工具的请求。Claude 读取任务,如果需要执行操作,就会返回一个工具调用请求,其中指定工具并填写输入参数。您的代码运行该工具,然后在下一次请求中将结果发送回 Claude。Claude 读取结果后,要么请求调用另一个工具,要么生成最终回复。当它不再请求工具时,任务就完成了。
您可以用几行代码手动编写这个循环。许多人这样做,因为流程清晰且易于控制。官方 SDK 也提供了工具运行器,可以代您驱动循环:您提供工具函数,SDK 负责反复调用 Claude、运行工具并将结果反馈给 Claude,直到 Claude 完成任务。无论采用哪种方式,流程结构都相同。运行器只是省去了手动编写循环的工作。如果您仍觉得这个循环过于抽象,最有效的方法是在使用运行器之前先编写一个最小实现;后续所有内容都建立在这一步之上,参见这条从零开始学习 AI 智能体的分阶段路径。
三种构建方式,以及适合 VPS 的方案
构建 Claude agent 有三种方式。它们的区别在于由您运行多少底层组件。
第一种方式是编写自己的代码,通过自定义工具调用 Claude API。您可以编写循环,也可以使用 SDK 的工具运行器,然后将整个程序托管在 VPS 上。这是常见的选择,因为您可以完全控制工具、数据和安全性,而且程序会像普通应用一样运行在服务器上。本指南的大部分内容都基于这种方式。
第二种方式是 Claude Agent SDK。这是作为库提供的 Claude Code,即编码 agent,您可以在其基础上进行构建。它提供完整的 agent 循环,以及用于读写文件、运行 shell 命令和搜索的内置工具,因此您无需从头组装这些功能。它同样运行在您自己的服务器上。如果您希望获得功能完整的文件和 shell agent,又不想自行构建运行框架,那么它非常适合 VPS。能够读取文件并运行 shell 命令的 agent 在无人值守运行前必须受到隔离;在服务器上安全运行 Claude Code介绍了权限系统、沙箱和隔离选项。
第三种方式是 Managed Agents,由 Anthropic 运行循环。默认情况下,agent 的工具会在 Anthropic 托管的沙箱中执行,因此 agent 的工作区位于 Anthropic 的基础设施上,而不是您的 VPS 上。截至 2026 年 10 月 11 日,仍处于 beta 阶段的自托管沙箱选项允许您在自己的服务器上运行 worker 进程来执行工具调用,同时由 Anthropic 运行循环。如果您希望尽量减少运维工作,并且不要求循环本身运行在自己的机器上,可以选择 Managed Agents。对于另外两种方式,您的服务器承载整个 agent;本指南其余内容讨论的就是这种方式。
连接工具与 MCP
无论选择哪种方案,都需要将 agent 连接到真实系统,而 Model Context Protocol 是实现这一点的简洁方式。MCP 是一种开放标准,用于向 agent 提供工具和数据。无需为每项服务分别手写集成代码,只需将 Claude 指向一个已将这些功能作为工具提供的 MCP server。您可以将 MCP server 作为小型服务运行在同一台 VPS 上,并仅授予每个服务所需的访问权限。相关内容请参阅在 VPS 上运行 MCP server。
选择模型
Claude 提供多个模型,选择时需要在能力、速度和成本之间权衡。截至 2026 年 10 月 11 日,当前产品线包括 Claude Opus 5.5(claude-opus-5-5)。Anthropic 建议大多数工作负载从该模型开始,并使用它执行长期运行的代理式编码和知识工作;Claude Sonnet 5.5(claude-sonnet-5-5)是更均衡的选项,成本更低、速度更快;Claude Haiku 5.5(claude-haiku-5-5)速度最快、成本最低,适合简单且高频的步骤。此外还有 Claude Fable 5.1(claude-fable-5-1),这是面向所有客户开放的能力最强模型,适合高难度推理和长周期代理式工作。Claude Opus 4.8 和 Claude Fable 5 等旧模型仍可用,但现在已标记为 legacy。在代码中使用准确的模型标识符,不要向其中添加日期。
一种实用做法是混合使用这些模型。让成本较低的模型处理常规工具调用,让能力更强的模型处理复杂决策。由于模型在请求中只是一个字符串,切换模型只需修改一行代码。因此,应先使用能力较强的默认模型,再针对更重视速度或成本、而非最后一点质量的场景,逐步改用较低级别的模型。
在 VPS 上将其作为强化服务运行
代理只有持续运行才有用,只有受到隔离才安全。在 VPS 上,应将代理作为强化的系统服务运行,而不是在终端中手动启动程序。作为服务运行时,它会在系统启动时自动启动,崩溃后自动重启,并将日志写入 journal。经过强化后,代理以非特权用户身份运行,只获得所需的访问权限,因此即使存在漏洞或收到错误指令,影响范围也受到限制。服务单元可以限制进程能够访问的对象,以及可使用的内存、CPU 和任务数量,但无法判断代理会如何使用这些权限。因此,其余控制措施必须放在代理自身的 harness 中。值得安装的 DeepSeek Harness 插件会在另一套技术栈中处理这项工作,包括支出上限、按工具设置的权限规则和提示注入扫描。
最重要的一条规则是将 Claude API key 保留在服务器端。该 key 用于支付每次调用并授予调用权限,因此应存放在只有代理用户可读取的文件中,再作为环境变量加载到服务中。不要将其写入代码、提交到仓库,或放在浏览器能够访问的任何位置。在此为代理生成完整的强化服务单元:
然后完成服务器本身的配置。仅允许使用 SSH key 登录,并锁定管理账户的访问方式,具体可参考 VPS 上的 SSH 强化。如果你希望在构建代理时通过交互式会话控制它,可以参考 使用 tmux 在 VPS 上运行 Claude Code。在同一台服务器上打开第二个会话后,两个会话可以互相传递任务,无需你在两个窗格之间转发每条指令。如果你希望了解这些做法背后的概念,而不将其绑定到某个模型,姊妹指南 在 VPS 上构建自己的 AI 代理介绍了相关基础。
如果你需要的是终端编码助手,在 VPS 上运行编码 AI 代理介绍了 Aider 和 Goose。
FAQ
构建智能体应使用哪个 Claude 模型?
从 Claude Opus 5.5(claude-opus-5-5)开始。Anthropic 建议大多数工作负载使用该模型,然后根据实际情况调整。Claude Sonnet 5.5(claude-sonnet-5-5)在大多数任务中更便宜、速度更快;Claude Haiku 5.5(claude-haiku-5-5)最适合简单且高并发的步骤;Claude Fable 5.1(claude-fable-5-1)处理最困难的任务时能力最强。一种常见做法是:常规步骤使用更便宜的模型,关键决策使用更强的模型。切换模型只需修改一行配置。
应该在 VPS 上运行整个智能体,还是由 Anthropic 运行?
这取决于所采用的方式。如果您直接调用 Claude API 编写自己的循环,或使用 Claude Agent SDK,智能体会完全在您的 VPS 上运行,只有模型调用会发送到 Anthropic。如果使用 Managed Agents,Anthropic 会运行循环,并默认托管工具执行所需的沙盒。因此,较少组件会运行在您的服务器上。截至 2026 年 10 月 11 日,beta 版的自托管沙盒选项可将工具执行转移到您自己的机器上,同时保留由 Anthropic 运行的循环。如果您希望智能体完全在自己的机器上运行,请使用前两种方式之一。
Claude API 与 Claude Agent SDK 有什么区别?
Claude API 是原始的 Messages 端点:您发送对话和工具,并围绕它编写智能体循环;也可以使用 SDK 的工具运行器驱动该循环。Claude Agent SDK 是更高层的库,是为构建应用而打包的 Claude Code。它提供完整的循环,以及内置的文件、shell 和搜索工具。如果您希望完全自行定义各部分,请使用 API;如果您希望直接获得功能完整的智能体,而不必自行组装运行框架,请使用 Agent SDK。
如何在服务器上保护 Claude API key?
将它保留在服务器端,并且不要写入代码。将其存储在只有智能体运行账户可读取的文件中,再将其作为环境变量加载到服务中。不要将其提交到代码仓库,也不要将其暴露给浏览器。每个 Claude 请求都从您的服务器发出,因此 key 无需传到用户设备。这使得在服务器上运行的智能体比嵌入客户端应用的智能体更容易保护。
使用 Claude 构建智能体是否需要自行托管模型?
不需要。Claude 是通过 API 调用的托管服务,因此无需在 GPU 上运行任何组件。您的 VPS 运行智能体循环、工具和数据,推理则在 Anthropic 侧完成。这使得配置一般的服务器也能运行功能强大的智能体。如果您希望改用完全本地运行的模型,请参阅配套指南《构建自己的 AI 智能体》中的自托管方案。