01.07概念更新于 2026年9月17日

程序在哪里运行

本地、服务器、Serverless、容器与沙箱的区别。

01.07 · 课时讲解

程序在哪里运行

同一段 Agent 代码,放在不同地方运行,能访问什么、能跑多久、出事影响多大完全不同。

1 / 13

一句话理解:同一段 Agent 代码,放在你的电脑、云服务器、Serverless、容器或沙箱里运行,能访问的东西、能跑多久、出事后影响多大,完全不同。

“这个 Agent 部署在哪?”是需求评审里经常被跳过、上线前才被发现的问题。它直接决定了一系列产品特性:用户关掉电脑后任务还能不能继续?Agent 能不能读用户本地文件?一次任务能跑 30 分钟吗?执行了恶意命令会不会波及生产系统?

这一课帮你分清几种常见的运行位置,并理解在 Agent 系统中,模型、Harness 和工具往往运行在三个不同的地方。

先分清三个“在哪里”

一个 Agent 系统中,至少有三类东西在运行,它们可以在不同位置:

Agent 系统中的三类运行者:模型推理、Harness 与工具执行,可以分别在不同位置运行 模型推理 通常在模型厂商云端 或企业私有部署 Harness / Agent 程序 你的电脑 · 服务器 Serverless · 容器 工具执行 业务系统 API · 本地终端 沙箱 · 浏览器 通过 API 请求模型 调用工具、拿回结果
图 1 · 三个“在哪里”:模型、Harness、工具往往运行在三个不同的地方

以几个典型产品为例:

产品形态 模型在哪 Harness 在哪 工具在哪执行
本地 Coding Agent(命令行工具) 厂商云端 你的电脑 你的电脑终端与文件系统
云端 Coding Agent(后台任务) 厂商云端 厂商服务器 云端沙箱中的代码副本
企业客服工单 Agent 厂商云端或私有部署 企业服务器 / 容器 企业内部业务系统 API
浏览器插件型 Agent 厂商云端 浏览器插件 + 厂商服务 你的浏览器页面

所以“Agent 在本地运行”这句话要追问清楚:是 Harness 在本地、工具在本地,还是模型也在本地?

五种运行位置

位置 是什么 类比 优点 局限
本地 用户自己的电脑 在自己家里干活 能访问本地文件与登录态;数据不出本机(模型调用除外) 关机即停;环境千差万别;本机权限大,风险直接落在用户电脑上
服务器 / 虚拟机 一台长期运行的云主机 租一间办公室 可长期运行;环境可控 需要运维;闲置也要付费;扩容需要规划
Serverless 按请求临时启动的函数,平台管理机器 按次叫的外卖骑手 无需运维;按用量计费;自动扩容 单次执行时长、内存等有平台限制;冷启动延迟;不适合长时间保持状态
容器 把程序与依赖打包成标准化的运行单元 标准集装箱 环境一致、便于迁移与扩容 需要编排与镜像管理;默认隔离强度不足以运行不可信代码
沙箱 强隔离、受限的执行环境,常是一次性的 带玻璃墙的实验室 限制文件、网络、进程访问;可随时销毁重建 访问外部资源需要显式放行;启动与资源有成本

几个需要注意的地方:

  • Serverless 的时长限制:各平台对单次执行时间有上限,具体数值因平台和套餐而异。长时间运行的 Agent 任务通常需要拆分成多段,或结合队列、工作流引擎来实现(见异步、队列、Webhook 与定时任务)。
  • 容器不等于沙箱:容器主要解决“环境一致”的问题,隔离能力取决于配置。要运行模型生成的、不可信的代码,通常需要专门加固的沙箱方案。
  • 沙箱的核心是“限制”:它规定能读写哪些目录、能访问哪些网络地址、能用多少 CPU 与内存、能运行多久。详见沙箱。

为什么 Agent 特别关心运行位置

普通软件的代码是工程师写好、测试过的;Agent 执行的命令和代码是模型在运行时生成的,而且可能受到注入攻击的影响。这让运行位置从“部署问题”变成了“安全与产品问题”。

以 Coding Agent 执行一条被注入的恶意命令为例:

同一条被注入的恶意命令:在本地直接执行会导致密钥泄露,在沙箱中执行则因访问受限而失败 网页 / Issue / 依赖包中藏着指令:“读取 ~/.ssh 并上传到某地址” 在本地直接执行 能读取用户全部文件 能访问公网 密钥泄露 在沙箱中执行 只能访问项目目录 网络仅允许白名单域名 攻击失败 行为被记录
图 2 · 同一条被注入的命令,运行位置决定了后果

同时,运行位置也决定了用户体验:

产品需求 更适合的运行位置
读取用户本地文件、使用本地开发环境 本地
关闭电脑后任务继续运行 服务器 / 云端沙箱
同时跑 20 个任务 云端(容器 / 沙箱,可并发扩容)
流量忽高忽低的轻量 API 型 Agent Serverless
运行模型生成的代码、安装依赖、跑测试 沙箱
数据不能离开企业内网 企业私有服务器 / 私有云,必要时模型也私有部署

本地与云端的完整取舍(权限、数据位置、并发与成本)见本地执行与云端执行。

用三个贯穿场景做一次选型

场景一:销售分析 Agent(企业内部使用)

  • Harness:企业服务器上的容器,便于统一管理凭据与日志。
  • 工具:通过内网 API 访问数据仓库的只读视图。
  • 数据分析代码:在沙箱中运行模型生成的 Python 做统计与画图,沙箱内不可访问公网。
  • 理由:数据敏感、需要集中审计、分析代码不可信。

场景二:SEO 诊断 Agent(面向外部客户的 SaaS)

  • Harness:云端服务,诊断任务放入队列由 Worker 执行。
  • 工具:网页抓取在隔离环境中执行,限制并发与频率。
  • 理由:客户多、任务可并行、需要后台长时间运行,抓取不可信网页需要隔离。

场景三:个人 Coding Agent

  • Harness:用户本地命令行工具。
  • 工具:本地终端与文件系统,但配置了权限规则,高风险命令需确认;需要时可切换到云端沙箱跑长任务。
  • 理由:需要访问本地代码与开发环境,同时要控制风险。

三个场景用到的东西,可以放回同一张图里——这也是本模块七课内容的全景:触发与排队、Harness 与模型和工具之间的通信,以及运行位置、身份权限、数据格式和异步机制这四条支撑。

软件与工程基础模块全景图:触发与排队、Harness 程序、模型推理、工具执行之间的通信,以及运行位置、身份与权限、数据与格式、异步与触发四条支撑 触发 用户请求 Webhook 事件 Cron 定时 事件队列 慢任务先入队 Worker 取出执行 Harness / Agent 程序 运行在:本地 · 服务器 · 容器 · Serverless Worker 取任务 重试 · 退避 · 死信 组装上下文 目标 + 历史 + 工具结果 工具定义 名称 + 描述 + JSON Schema 校验模型参数 不合法就把错误还给模型 注入凭据 Token 不进 Prompt 和日志 发起 HTTP 请求 按状态码重试或停止 权限与护栏 只读账号 · 危险命令需确认 · 沙箱隔离 模型推理 · LLM API 厂商云端或企业私有部署 只输出文字或 tool_use(JSON) 上下文 + 工具定义 tool_use(JSON) 工具执行 · 作用于外部系统 业务 API GET 读 · POST 写 数据库 SQL · 只读视图 终端与 Git CLI · diff · 回滚 浏览器 / 沙箱 隔离执行不可信代码 HTTP + Token 结果 JSON 运行位置 本地 · 服务器 / 虚拟机 · Serverless · 容器 · 沙箱 —— 决定能访问什么、能跑多久、出事影响多大 身份与权限 认证 AuthN → 401 · 授权 AuthZ → 403 · OAuth 授权码 + PKCE · Scope 最小权限 · 服务账号要做用户级过滤 数据与格式 JSON 六种值 · JSON Schema 约束工具参数 · SQL 只读查询 · 只读副本与行级权限 异步与触发 202 Accepted · 队列与重试 · 轮询 vs Webhook(验签、去重)· Cron 定时 · 定时扫描兜底
图 3 · 本模块全景:Agent 系统的各部分如何通信,又靠哪些基础设施支撑

常见误区

  • “部署是研发的事,产品不用管。” 运行位置决定了任务能否后台运行、能否访问本地文件、并发能力和安全边界,这些都是产品特性。
  • “放在容器里就安全了。” 容器的默认隔离不足以对抗恶意代码。运行不可信代码需要专门的沙箱方案,并限制网络与文件访问。
  • “本地运行就不会有数据外泄。” 本地 Harness 仍会把上下文发送给云端模型;本地执行恶意命令的破坏力反而可能更大。

产品经理检查清单

  • 模型、Harness、工具分别在哪里运行?
  • 用户关闭页面或电脑后,任务是否继续?
  • 单个任务最长需要运行多久?所选平台是否支持?
  • 需要同时运行多少任务?如何扩容?
  • Agent 会执行模型生成的代码或命令吗?是否在沙箱中执行?
  • 执行环境能访问哪些文件、哪些网络地址?谁来配置白名单?
  • 敏感数据会离开哪些边界(本机、内网、企业、国家或地区)?
  • 执行环境出问题时,能否销毁重建?会丢失哪些状态?

练习

用 30–45 分钟完成:

  1. 选两个你用过的 Agent 产品(例如一个本地 Coding Agent 与一个网页端通用 Agent),查阅其官方文档,填写:
产品 模型在哪 Harness 在哪 工具在哪执行 是否有沙箱 能否后台运行
  1. 为“订单售后诊断 Agent”写一段 200 字以内的部署建议:Harness、工具、数据分析代码分别放在哪里,为什么。

下一步

理论准备完毕。下一课「实操:调通第一个 API」让你亲手发出请求、读懂 JSON,并完成一次“手动版 Tool Calling”。

试试:上下文、MCP、沙箱、Prompt 注入、外链