阿里云函数计算 AgentRun 全新发布后,我们整理了「探秘 AgentRun」系列文章,本系列将梳理企业落地 Agent 常见难题,给出具体解法,助力 Agentic AI 快速走进生产级环境。 欢迎加入「函数计算 AgentRun 客户群」与我们交流,钉钉群号:134570017218。
从单纯的代码补全(Copilot),到直接生成可运行的 UI 组件和页面,AI 编程助手正在经历一次体验跃迁:用户不再只看到静态代码,而是 所见即所得——生成即运行、即预览。这种「边写边看」的 Vibecoding 体验,正在成为下一代 AI 编程助手的标配。
大模型只负责「写」,谁来负责「跑」?在云端 安全、快速地执行不受信任的 AI 生成代码,并对外暴露 Web 访问,是构建此类 AI Agent 的核心门槛:
阿里云函数计算推出的 AgentRun Sandbox,正是为上述场景设计的一站式执行基座: 秒级冷启动、免运维、原生支持公网访问,并在此基础上提供了 多端口动态路由能力——单一入口即可按端口精准转发到沙箱内的任意服务。这使得「生成代码 → 云端运行 → 即时预览」的闭环得以在安全、可控的架构下实现,是构建「在线代码预览」与全栈 Vibecoding 的理想基础设施。
运行一个现代前端项目时,往往同时存在多个监听端口:
| 场景 | 典型端口 | 说明 |
|---|---|---|
| 主应用 | 5173 | Vite 默认;用户访问的页面 |
| HMR / 热更新 | 5173 或独立 | 热模块替换的 WebSocket 等 |
| Mock API | 3000、8080 等 | 前端自带的 Mock 或 BFF 服务 |
| 自定义服务 | 8000–9999 | 用户
npm run 或
python -m http.server 等 |
若沙箱只暴露一个固定端口,上述多服务无法同时被正确访问。 多端口访问模式使平台能够通过 同一入口,根据「目标端口」将请求精准转发到沙箱内对应进程,从而完整支持前端开发服务器与自定义 Web 应用的预览。
AgentRun Sandbox 支持两种多端口访问方式,可依据自身网络与域名条件选择。
机制:通过子域名区分端口流量。约定格式为:
{目标端口}-{沙箱实例标识}.{您的泛域名}
例如:
5173-abc123.sandbox.example.com 表示访问该沙箱实例内的
5173 端口;
3000-abc123.sandbox.example.com 表示访问同一沙箱内的
3000 端口。
优势:路由语义清晰,完全模拟真实的多子站、多端口场景;前端代码中的 BaseURL、代理配置与本地开发一致,无需为沙箱做特殊适配。
机制:仅有一个域名时,通过 HTTP 请求头传递「沙箱 ID」与「目标端口」:
X-Sandbox-ID: {沙箱ID}
X-Sandbox-Port: {目标端口}
例如:
X-Sandbox-Port: 5173 表示将本次请求转发到该沙箱实例的 5173 端口。
优势:在无法配置泛域名解析、或存在严格域名白名单的网络环境下,仍可完成多端口访问,兼容性极强。
{uid}.agentrun-data.cn-hangzhou.aliyuncs.com(其中
{uid} 为阿里云账号 ID)。

https://{port}-{sandboxID}.{domain} 访问沙箱内指定端口。X-Sandbox-ID: {sandboxID}、
X-Sandbox-Port: {port},即可访问对应端口。端口有效范围为 3000–65535(系统保留端口如 5000、5001、3000 等由网关与内置服务使用,不对外作为用户自定义端口暴露)。
一种典型的 Vibecoding 链路是:用户通过某个 Channel(如 IM、钉钉)与 OpenClaw 交互,要求生成程序或 HTML 页面 → LLM 生成 HTML/JS 或 React 等源码 → 调用 AgentRun Sandbox Skills 在沙箱内执行该程序(如启动 HTTP 服务)→ 依赖 泛域名生成预览 URL → 用户直接点击链接访问运行中的应用。
整体流程可概括为:
用户 → Channel → OpenClaw → LLM 生成代码/HTML → AgentRun Sandbox Skill(创建沙箱、执行代码/命令、生成预览 URL) → 泛域名返回预览 URL → 用户浏览器访问对应端口
agentrun-aio-sandbox-skill 是基于阿里云 AgentRun AIO(All-In-One)沙箱封装的一套 OpenClaw Skill,将沙箱的创建、代码执行、Shell 命令执行、多端口预览域名生成与沙箱销毁等能力,以 工具(Tools)形式暴露给 OpenClaw。接入该 Skill 后,OpenClaw 无需在本地或自有服务器部署任何执行环境,即可在对话中按需调用云上沙箱:大模型根据用户意图自动完成「创建沙箱 → 写入文件 / 执行代码或命令 → 生成预览链接 → 适时释放资源」的完整链路,用户获得真正的「对话即运行、即预览」体验。
Skill 提供的主要能力包括:
| 能力 | 说明 |
|---|---|
| 创建沙箱(create_sandbox) | 在 AgentRun 上按已配置的 AIO 模板创建隔离沙箱实例,返回沙箱 ID 与访问 base_url,供后续调用使用。 |
| 执行 Python 代码(execute_python_code) | 在指定沙箱内执行 Python 代码,支持多轮对话下的上下文保持(context_id),适合数据分析、脚本运行等场景。 |
| 执行 Shell 命令(execute_shell_command) | 在沙箱内执行 Shell 命令,适合启动常驻服务(如
python3 -m http.server ),配合多端口域名实现 Web 预览。 |
| 生成预览域名(generate_preview_domain) | 按规则
{port}-{sandbox_id}.{泛域名} 生成指定端口的访问域名,用户通过该链接即可在浏览器中访问沙箱内对应端口的服务。 |
| 销毁沙箱(destroy_sandbox) | 释放云上沙箱实例,停止计费并清理资源。 |
通过这一 Skill,OpenClaw 从「仅能生成代码」升级为「能生成并在云上运行代码、并返回可访问的预览链接」,将 AgentRun Sandbox 的秒级冷启动、多端口路由与按量计费能力与对话式交互结合,是构建 Vibecoding 与全栈预览场景的轻量级集成方式。
在 OpenClaw 中接入 AgentRun 能力前,需要先完成以下准备:
your-aio-template)。xxx.sandbox.example.com),并确保 DNS 已正确 CNAME 到 AgentRun 网关。后续预览 URL 将按
{port}-{sandboxID}.{domain} 规则生成。重要说明:当前提供的 agentrun-aio-sandbox-skill 仅用于测试与演示,用于验证多端口预览链路与 OpenClaw 集成方式; 请勿直接用于生产环境。
python3 -m http.server <port> --bind 0.0.0.0(或等价命令)→ 使用
generate_preview_domain(wildcard_domain, port, sandbox_id) 得到预览域名。https://{port}-{sandbox_id}.{domain} 返回给用户;用户点击即可在浏览器中访问该沙箱内对应端口的服务,实现「生成即运行、即预览」。


本节从实现视角说明:在 Serverless 场景下,面对海量并发的动态沙箱实例,请求如何 精准、低延迟地被送到「指定沙箱的指定端口」。AgentRun Sandbox 镜像内采用 OpenResty(Nginx + Lua) 作为统一网关,实现单一入口、多端口动态路由。
平台对外只暴露
一个入口端口(如 5000),而沙箱内部同时存在多个服务(Code Interpreter 5001、Browser Tool 3000、用户自定义 5173/8080 等)。网关必须回答两个问题:
当前请求要访问哪个端口? 以及
如何把请求正确转发到该端口? 端口信息来自两种渠道:
Host 头中的泛域名(如
5173-xxx.sandbox.com)或
HTTP 头(如
X-Sandbox-Port: 5173)。
网关由
单一
location / 承接所有请求,在 Lua 中分两阶段完成路由:
阶段一:rewrite** by lua_** block(路由派发)
X-Sandbox-Port 头;若无,再从
Host 中用正则提取子域名前缀端口(如
string.match(host, "^(%d+)%-") 得到
5173)。proxy_pass 动态转发到
127.0.0.1:$target_port。/health →
@health_aggregated,
/execute、
/contexts 等 → Code Interpreter,
/api/v1/ → Browser Tool),通过
ngx.exec("@xxx") 做内部重定向。阶段二:access** by lua_** block(动态端口赋值)
target_port、
proxy_host 等。proxy_pass http://127.0.0.1:$target\_port\,将请求转发到沙箱内对应端口。这样设计保证了: 有端口信息时,一律按端口转发;无端口时,才走路径匹配与默认后端(如 5001 Code Interpreter)。从而避免「用户访问 5173 上的 /health」被误匹配到网关自身的健康检查。
Nginx 的
location 规则中,
精确匹配(如
location = /health)会优先于通用
location /。若直接写
location = /health,则像
5173-xxx.sandbox.com/health 的请求也会被命中,无法转发到用户 5173 端口的服务。因此实现上采用:
@health_aggregated、
@path_ci、
@api_v1)。命名 location 不参与外部请求的自动匹配,只能通过 Lua 的
ngx.exec() 显式派发。location /,在 Lua 中先判断「是否有端口」,再决定「动态转发」或「按路径派发到命名 location」。这样就从机制上保证了 端口优先于路径的语义。
用户请求 Sandbox 域名(如 5173-xxx.sandbox.example.com) → AgentRun 平台网关(会话亲和、鉴权、路由到对应沙箱实例) → 沙箱实例内的 Nginx(OpenResty)监听 5000 → Lua 解析 Host 得到端口 5173 → proxy_pass http://127.0.0.1:5173 → 沙箱内监听 5173 的用户进程(如 Vite)处理请求
不同沙箱实例之间由 AgentRun 与函数计算做
会话隔离与网络隔离;同一沙箱内,Nginx 仅转发到本机回环地址的指定端口,不暴露内部服务到公网,从而在支持多端口的同时保证安全与可观测性(如自定义日志格式中记录
target_port、
port_source 等)。
AgentRun Sandbox 的 多端口特性,本质上是补齐了「AI 全栈开发」中最关键的一环:把 生成代码变成真正的 生成应用——在隔离沙箱中运行、通过泛域名或 Header 按端口访问、秒级冷启动与按量计费,让 Vibecoding 从「能写」走向「能跑、能看」。
行动呼吁(Call to Action):若你正在构建 AI 编程助手、在线 IDE 或全栈预览能力,欢迎将 AgentRun Sandbox 的多端口能力集成到自己的产品中。可从以下入口开始:
欢迎加入「函数计算 AgentRun 客户群」交流多端口与沙箱实践,钉钉群号:134570017218。
一句话介绍: 函数计算 AgentRun 是一个以高代码为核心的一站式 Agentic AI 基础设施平台。秉持生态开放和灵活组装的理念,为企业级 Agent 应用提供从开发、部署到运维的全生命周期管理。

函数计算 AgentRun 架构图
AgentRun 运行时基于阿里云函数计算 FC 构建,继承了 Serverless 计算极 致弹性、按量付费、零运维的核心优势。通过深度集成 AgentScope、LangChain、RAGFlow、Mem0 等主流开源生态。函数计算 AgentRun 将 Serverless 的极 致弹性、零运维和按量付费的特性与 AI 原生应用场景深度融合,助力企业实现成本与效率的极 致优化,平均 TCO 降低 60%。
让开发者只需专注于 Agent 的业务逻辑创新,无需关心底层基础设施,让 Agentic AI 真正进入企业生产环境。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69981534/viewspace-3113723/ ,如需转载,请注明出处,否则将追究法律责任。