Agent 时代的 Serverless 入口:veFaaS CLI 实战
如果你了解过火山引擎函数服务 veFaaS就知道它就像一个“随叫随到”的代码运行环境 —— 既支持免运维、弹性计费地部署 Python/Golang/Node.js 等代码包也支持通过自定义镜像搞定更复杂的环境依赖。但今天我们要聊的不是“怎么用”而是 AI Agent 来了之后用法变了。Agent 的运行特点很直接秒级拉起一个干净沙箱跑代码、搜网页、调工具然后销毁。veFaaS 的云沙箱能力恰好与这一模式天然匹配 —— 弹性伸缩与按需计费对应的是 Agent 任务高频创建、短生命周期、用完即焚的运行节奏。在可信沙箱内Agent 可以安全地完成各类工具调用无需担心资源残留或环境冲突每一次执行都是一次干净的“即用即走”。问题在于调用方式——过去开发者管理函数服务主要依赖 Web 控制台或脚本。但当 AI Agent 介入开发、部署和运维流程时传统控制台的交互方式并不友好一个任务往往需要横跨多个页面操作路径冗长且伴随学习成本难以被 Agent 高效调用。传统方式 vs Agent CLI针对这个问题火山引擎推出veFaaS CLI它的解决思路是将函数与沙箱的部署、管理等操作封装为一套稳定、可复用的命令集。这套命令集不区分操作主体 —— 无论是开发者、AI Agent 还是 CI/CD 流水线都能通过同一套命令完成 Serverless 服务的一站式生命周期管理。它提供以下核心能力一键部署vefaas inspect自动检测项目类型vefaas deploy一行实现从本地到线上服务的部署运行可观测vefaas fn logs / invoke / revisions / instances上线后持续可见配置管理vefaas fn config / scale / env / strategy管理函数配置、资源规格文档即查vefaas doc search / doc api / doc sdk不离开终端沙箱配置vefaas sandbox create / instance create / webshell创建沙箱、拉起实例、调试CI/CD 原生支持结构化输出、非交互模式适配主流流水线上手 veFaaS CLI只需三步第一步安装 CLInpx volcengine/vefaas-clilatest install vefaas --version或者和你的 Agent 对话帮我通过 npx volcengine/vefaas-clilatest install 安装 vefaas cli 和对应技能第二步登录账号安装完成后登录方式分两种场景1. 日常开发可以直接在浏览器登录火山引擎账号通过 SSO 完成授权随后执行部署、日志查询、文档检索等操作vefaas login --sso vefaas whoami2. 在脚本或 CI/CD 环境里也可以通过 AK/SK 或 STS 等方式完成登录认证export VOLC_ACCESS_KEY_IDAK export VOLC_SECRET_ACCESS_KEYSK vefaas login --check第三步开始使用登录之后可以直接和 Agent 对话了解 veFaaS CLI 的能力范围看一下 veFaaS CLI 能做什么帮我简短总结一下。我看的是本机 vefaas 的 CLI help。它主要能做这些 应用部署init / link / deploy / domains / app把本地项目部署成 veFaaS 应用查看访问地址、发布记录、部署日志。 函数管理fn list/create/info/release/rollback/logs/invoke/pull/push管理函数、版本、实例、日志、调用测试、代码拉取推送。 沙箱管理sandbox管理沙箱应用、实例、镜像、发布、回滚、日志、WebShell。 配置与环境变量config / env改内存、CPU、超时、端口、启动命令、构建命令、环境变量等。 网关和触发器gateway / trigger管理 APIG 网关、路由以及 Timer/Kafka/RocketMQ/BMQ/TLS 等触发器。 排查与底层能力doctor / whoami / overview / resource / api诊断本地和鉴权问题、看资源概览必要时直接调用 veFaaS OpenAPI。 一句话它是 veFaaS 的终端控制台覆盖从本地初始化、部署上线到函数/沙箱运维、日志诊断和 OpenAPI 调用。在实际使用中用户无需关心控制台或 API 中某个功能对应哪个页面、哪个字段Agent 可以通过 CLI 的分层命令、帮助指令与示例自由探索。更多典型场景可以查看官方文档https://www.volcengine.com/docs/6662/2221523从代码上线veFaaS CLI 实战下面我们结合一个城市明信片的 Agent 全栈项目完整走一遍 veFaaS CLI 在 Serverless 不同生命周期中的用法。第一站 · 城市明信片Passing City 是一个城市明信片生成器。用户选一座城市填上停留时间、心情和画面风格它就能生成一张有图、有字、还能翻到背面的明信片。它的产品入口像一个写信台包含城市、停留时间、心情、画面风格。选一座城市写下此刻的心情收回一张城市明信片点击生成后这些输入变成一张卡片 —— 正面是一幅城市图背面是一段小短文附几条适合慢慢走的路线。一个能生成、能翻看、能分享的 AI 小应用。正在生成通过 Seedream 生成明信片生成结果泉州午后巷陌一张图配上标题、背面短文和几条小路线第二站 · 代码在做什么从代码结构看城市明信片是一个前后端分离的项目。Web 侧负责表单、状态和明信片正反面的展示Server 侧通过 Express 处理路由、组织 prompt、调用模型并返回结构化结果。Express 暴露/api/postcard等供 App 使用的路由router.post(/api/postcard, asyncRoute(async (req, res) { const input postcardInputSchema.parse(req.body); const postcard await createPostcard(config, input, same_mood, requestBaseUrl(req)); res.json(postcard); }));模型调用链路是先生成imagePrompt再调用火山方舟 API 执行 Seedream 图像生成模型。const imagePrompt buildImagePrompt(input); const imageUrl await generateArkImageUrl(config, imagePrompt); asyncfunctiongenerateArkImageUrl(config, prompt) { const endpoint ${config.arkBaseUrl}/images/generations; const response await fetch(endpoint, { method: POST, headers: { authorization: Bearer ${config.arkApiKey}, content-type: application/json, }, body: JSON.stringify({ model: config.arkImageModel, prompt, size: 2K, response_format: url, extra_body: { watermark: false }, }), }); return (await response.json()).data?.[0]?.url; }第三站 · 部署到云上对于前后端分离的项目可直接通过 CLI 部署全栈服务到函数上。Inspect 会探测代码的技术栈API Server 是 Express Web 服务Web 是 Vite 静态站点。# apps/api $ vefaas inspect -o json { installCommand: npm install, buildCommand: npm run build, startCommand: npm run start, port: 3000, runtime: native-node20/v1, framework: express, isStatic: false } # apps/web $ vefaas inspect -o json { installCommand: npm install, buildCommand: npm run build, outputPath: dist, startCommand: caddy run --config DefaultCaddyFile --adapter caddyfile, port: 8000, runtime: native-node20/v1, framework: vite, isStatic: true }发布时按职责分开部署Server 负责模型调用和后端逻辑ARK_API_KEY 通过环境变量注入。执行部署拿到 API 域名后再构建 Web 端cd apps/api vefaas link --newApp city-postcard-api --gatewayName gateway -y vefaas env set ARK_API_KEY secret -y vefaas deploy -y vefaas domains -o json cd ../web VITE_API_BASE_URLhttps://api-domain \ vefaas deploy --newApp city-postcard-web --gatewayName gateway -y从本地项目到线上运行veFaaS CLI 部署流程上线后应用能享受 Serverless 的按量计费与动态扩缩容能力低流量时减少空闲资源成本高流量时自动扩展实例应对访问峰值。同时这不是一次性的部署 —— 后续有代码或配置变更时也可以继续通过 CLI 完成新版本发布、按流量比例灰度、快速回滚等操作让项目从本地走向线上稳定运行。在实际生产中前端项目可通过 CDN 与 TOS 实现静态资源加速访问和可控的流量成本比如通过火山 IGA (https://www.volcengine.com/docs/6559/2188992?langzh) 部署静态站点函数托管静态服务更适合原型和概念验证。对于后端服务则可以充分使用 Serverless 的弹性能力对于有状态的数据库需求也可以配合火山 Supabase (https://www.volcengine.com/docs/87275/2105761?langzh) 使用。第四站 · 持续维护应用上线后真正承载代码、版本、实例和运行日志的是函数。通过函数 ID一条命令就能完成控制台级别的运维操作排查时先确认函数发布状态和当前版本vefaas fn info --id function-id -o json vefaas fn revision list --id function-id -o table再做一次请求测试并拿到实例与日志vefaas fn invoke --id function-id --method GET --path / -o json vefaas fn instances --id function-id -o table vefaas fn logs --id function-id --instance instance-name --lines 50如果还需要现场则可以进入实例 webshell 进行分析# 日志不够时进入函数容器现场 vefaas fn webshell --id function-id --instance instance-name --connect # 执行检查 cat file ps aux curl -fsS http://127.0.0.1:port/第五站 · 互动展间普通明信片可以通过生图模型直接生成结果。但当一张明信片要变成可翻页、可点开路线、能独立运行的幻灯片时产品需要把一段代码逻辑放进隔离环境运行再把预览结果代理回主应用。这道边界正是沙箱的价值。服务端的实际流程并不复杂Web 请求POST /api/workshop/jobs服务调用CreateSandbox创建隔离实例服务执行 Agent 逻辑通过幻灯片技能生成代码并通过沙箱接口写入文件Sandbox 内启动一个轻量服务服务代理展示 Sandbox 内的预览页幻灯片通过图片和输入生成可交互的在线网站Sandbox 产物隔离环境里运行交互页Agent 需要先确认 CreateSandbox 属于云沙箱实例接口入参需要 FunctionId返回值里会拿到 SandboxId。后端代码再用这个实例继续写文件、启动服务并把代理预览地址返回给前端。由于沙箱涉及到 CreateSandbox 等 OpenAPI 调用因此需要使用火山 SDK 调用函数服务有一定的上手成本。现在则可以交给 vefaas doc sdk查询 OpenAPI 参数和 SDK 使用直接编写如下的业务逻辑const sandbox await vefaas.CreateSandbox({ FunctionId: sandboxAppId, Timeout: 60, }); const sandboxId sandbox.SandboxId;沙箱 ID 对应一个唯一的访问地址可通过域名访问沙箱服务。对于开箱即用的 AIO Sandbox 模板创建实例后可通过/v1/shell/exec执行 shell 命令await fetch(${aioBaseUrl}/v1/shell/exec, { method: POST, headers: { content-type: application/json, x-faas-instance-name: sandboxId, }, body: JSON.stringify({ command: node server.mjs, timeout: 60 }), });整个过程中Agent 背后的 CLI 查询链路是vefaas doc search CreateSandbox vefaas doc api CreateSandbox vefaas api CreateSandbox --helpveFaaS CLI 提供了面向官方文档、API 和 SDK 的查询入口。Agent 可以直接检索相关文档查看 API 参数与 SDK 调用方式再结合当前任务生成更可靠的执行方案。如果还没有沙箱应用可以先访问火山引擎 veFaaS 控制台 https://console.volcengine.com/vefaas点击「云沙箱 沙箱应用」进入 All-in-One Sandbox 模板快速创建或体验一套可用环境。All-in-One Sandbox 提供单一容器镜像集成浏览器、终端、文件系统、VS Code、Jupyter 和 MCP 服务器。可作为工具沙箱或 Agent 执行环境快速集成使用。veFaaS 可快速创建基于 AIO 镜像的沙箱应用并完成集成。关于 AIO 项目本身和配套的 SDK更多信息可参考 https://sandbox.agent-infra.com/不止 AgentIDE 插件与持续交付我们聊了这么多 Agent 场景但 veFaaS CLI 的价值远不止于此。命令行对自动化和 CI 天然友好不过在日常开发中很多开发者仍然习惯在 IDE 里完成整个编码、调试、发布流程。veFaaS 同时提供了 veFaaS Code Deployer 插件支持 VS Code 和 JetBrains 系列 IDE。安装后就能查看函数列表、绑定函数、下载代码改完直接上传部署 —— 不需要离开编辑器也不需要手动拼接命令参数。IDE 函数插件如果你更习惯命令行CLI 覆盖了从项目识别到日志排障的完整链路如果你更习惯 IDE插件把同样的能力放进了侧边栏。两条路径共享同一套后端能力可按场景自由选择。在流水线中使用在团队协作中应用发布往往不只发生在开发者本地。代码合并、版本发布、部署验证都可以放进流水线中执行。如果自己编写脚本通常要处理构建、多个 API 调用、边界处理等细节。项目和环境一多这些脚本不利于维护和复用同时成本相对较高。而 veFaaS CLI 支持非交互模式和结构化输出天然适合 GitHub Actions、GitLab CI 等流水线环境vefaas deploy --funcId $FUNCTION_ID -o json --yes vefaas domains -o json vefaas fn logs --id $FUNCTION_ID --lines 50代码合并到指定分支后流水线自动触发部署发布后查询函数状态判断是否成功。结构化输出也方便下游任务处理 —— 把访问地址写入构建产物或在失败时自动收集日志。以一个最小 FastAPI 项目为例仓库里只需要应用代码、依赖、启动脚本和工作流配置。from fastapi import FastAPI app FastAPI(openapi_urlNone, docs_urlNone, redoc_urlNone) app.get(/) defindex_handler(): returnHello FastAPI From FaaS native python3! app.get(/v1/ping) asyncdefping_handler(): returnPing healthcheck合并到main后自动部署可以新增.github/workflows/deploy.ymlname:DeploytoveFaaS on: push: branches: [main] jobs: deploy: runs-on:ubuntu-latest steps: -uses:actions/checkoutv4 -uses:actions/setup-nodev4 with: node-version:20 -name:InstallveFaaSCLI run:npmi-gvolcengine/vefaas-clilatest -name:Deploy env: VOLC_ACCESS_KEY_ID:${{secrets.VOLC_ACCESS_KEY_ID}} VOLC_SECRET_ACCESS_KEY:${{secrets.VOLC_SECRET_ACCESS_KEY}} FUNCTION_ID:${{secrets.FUNCTION_ID}} run:| vefaas deploy --funcId $FUNCTION_ID -o json --yes vefaas domains -o json触发 GitHub Action 后流水线会下载 CLI、读取 secrets、执行部署命令。通过 Github Actions 或 GitLab CI 可快速在用户现有工作流中集成函数管理功能。同时火山引擎也提供 持续交付服务。可通过函数服务提供预置能力可视化集成代码包、镜像发布流水线。详情可参考 https://www.volcengine.com/docs/6461/1582687结语从本地代码到线上服务从函数部署到沙箱调试 —— veFaaS CLI 正在将函数服务的能力抽象为一套标准化的工作流既适配人的操作习惯也兼容 Agent 的调用方式。对于开发者它是一个命令行工具。对于 AI Agent它是一组可理解、可执行、可校验结果的云端能力接口。这正是 veFaaS CLI 的设计初衷让函数服务不局限于控制台而是可以被终端、流水线和 Agent 自然调用真正融入开发和运维的每一个环节。如果你对 veFaaS CLI 感兴趣或在使用中有任何疑问和建议欢迎交流反馈。继续了解veFaaS CLI 使用指南GitHub - vefaas-dev/skills · GitHubveFaaS Code Deployer 插件veFaaS Code Deployer - Visual Studio Marketplace