Skip to content

feat(studio): support VeStack deployment and personal sandbox agents - #1057

Merged
yaozheng-fang merged 2 commits into
volcengine:mainfrom
Xiaoaier-Z-L:fix/vestack-studio-pr-clean
Sep 4, 2026
Merged

feat(studio): support VeStack deployment and personal sandbox agents#1057
yaozheng-fang merged 2 commits into
volcengine:mainfrom
Xiaoaier-Z-L:fix/vestack-studio-pr-clean

Conversation

@Xiaoaier-Z-L

Copy link
Copy Markdown
Contributor

背景

VeADK Studio 当前主要通过公有云 VeFaaS Application 部署。VeStack 环境缺少对应的 Application/BFF 能力,需要使用预构建镜像创建 VeFaaS Function,并通过 APIG 暴露浏览器访问地址。

此外,Studio 原有权限将“通用 Runtime 部署”和“个人 Sandbox 智能体创建”绑定在一起,导致普通用户无法创建 Codex、Hermes、DeepSeek Harness 等个人智能体。

VeStack 新增能力

Studio 混合云部署

新增 veadk studio deploy --deploy-target vestack

  • 使用预构建的 linux/amd64 镜像创建或更新 VeFaaS Function;
  • 绑定 IAM Role,由 VeFaaS 向 Pod 挂载可刷新的 STS 凭证;
  • 发布 Function;
  • 创建或复用 APIG Gateway、Service、Upstream 和 Route;
  • 使用独立域名对外暴露 Studio;
  • 注册 Identity 用户池 OAuth Callback;
  • 不依赖公有云 VeFaaS Application API;
  • 不向镜像或 Function 环境注入部署 AK/SK。

可配置的 VeStack 环境参数

支持配置:

  • VeStack OpenAPI 地址;
  • AgentKit TOP Host 和 Region;
  • Studio 镜像和对外域名;
  • APIG Cluster、Namespace 和名称;
  • IAM Role 和 Project;
  • Codex 端口,默认 8642;
  • Hermes 端口,默认 4500;
  • Hermes Model Center API Base、模型名称、模型 ID 和凭证。

代码中没有写死 e70、节点 IP、域名或 NodePort。只有明确指定 --deploy-target vestack 时才进入混合云部署分支。

VeStack Studio 镜像

新增 VeStack Dockerfile、启动脚本和构建文档:

  • 复用标准 run.sh
  • Studio 监听 8000 端口;
  • 支持本地或 CI 构建 linux/amd64 镜像;
  • 支持私有 PyPI 和预置 wheel;
  • 不在镜像内保存长期凭证。

独立 Managed Tool

VeStack 不依赖全局 Sandbox Tool,而是为每个个人智能体创建独立 Tool:

  • Codex 使用 CodeEnv;
  • Hermes 使用 Station-Hermes;
  • DeepSeek Harness 使用 Code Sandbox;
  • Tool 写入 owner、智能体类型和 Studio 来源标签;
  • 用户只能查看、打开和删除自己的个人智能体;
  • Hermes 模型配置通过创建 Tool 时的环境变量注入。

强制磁盘持久化

VeStack Managed Tool 使用 DiskGb

  • 默认启用且不允许关闭持久化;
  • 用户可以修改磁盘大小;
  • 默认 10 GiB;
  • 可选范围 5–100 GiB;
  • 不使用公有云 Snapshot 作为持久化实现。

VeStack IAM 隔离

新增独立的 VeStack IAM 分支:

  • 支持自定义 IAM Host 和 Scheme;
  • CreateRole 兼容 VeStack 所需的 DisplayName;
  • VeStack 缺少部分公有云可选系统策略时,仅跳过缺失的可选策略;
  • Studio 自定义 Policy 仍必须成功绑定;
  • 其他 IAM 错误仍然失败。

公有云修改

普通用户创建个人智能体

新增 createPersonalAgents 权限,与 createAgents 分离:

角色 创建通用 Runtime 创建个人 Sandbox 管理通用 Runtime
Admin
Developer
普通用户

普通用户现在可以创建 Codex、Hermes、DeepSeek Harness 和 OpenClaw,但仍不能创建或管理通用 Runtime。

该权限调整同时适用于公有云和 VeStack。

创建界面能力协商

Sandbox 创建窗口会读取后端能力,判断:

  • 是否支持持久化;
  • 是否强制持久化;
  • 使用 Snapshot 还是 Disk;
  • 默认、最小和最大磁盘大小。

公有云继续使用原有 Snapshot 逻辑;DiskGb 只在 VeStack Managed Tool 模式使用。

Hermes 和 Sandbox 代理

完善 Studio 内的 Sandbox 访问:

  • Hermes Dashboard 使用 4500 端口;
  • 支持 Chat、WebSocket、SSE 和 Terminal;
  • 向 Hermes 后端转发 Session Token;
  • 修复静态资源和子路径重写;
  • 清理页面中的 Sandbox 内部 Authorization 和实例查询参数;
  • 避免内部访问凭证暴露给浏览器。

这些代理能力同时支持公有云共享 Tool 和 VeStack 独立 Tool。

公有云兼容性

公有云默认部署逻辑保持不变:

  • veadk studio deploy 默认仍使用 application 模式;
  • 仍通过公有云 VeFaaS Application 部署;
  • 仍使用共享的 Codex、Hermes 和 OpenClaw Tool;
  • 仍使用 Snapshot 持久化;
  • 仍使用公有云默认 OpenAPI Endpoint;
  • 公有云 IAM 策略校验没有放宽;
  • 不会访问 VeStack OpenAPI;
  • 不会创建 VeStack APIG Cluster-native 资源;
  • 不会启用 Tool-per-Agent 或 DiskGb。

VeStack 特有逻辑由 --deploy-target vestackVEADK_STUDIO_DEPLOY_TARGET=vestack 显式隔离。

安全性

  • 部署 AK/SK 仅用于 CLI 签名控制面请求;
  • AK/SK 不进入 Studio 镜像和 Function 环境;
  • Studio Function 使用 IAM Role STS 临时凭证;
  • Function 更新时保留已有非敏感环境变量;
  • Sandbox 内部 Authorization 不返回浏览器;
  • Tool、Session 和代理访问按登录用户隔离。

验证

分支:fix/vestack-studio-pr-clean

提交:

  • 92c3ed80 feat(studio): add VeStack deployment and managed sandboxes
  • f0d2ea7a feat(studio): expose personal sandbox controls to users

已覆盖:

  • VeStack IAM、VeFaaS、APIG 和部署流程;
  • VeStack Managed Tool 创建和用户隔离;
  • Hermes 页面、WebSocket 和 Terminal 代理;
  • DiskGb 持久化参数;
  • Admin、Developer、普通用户权限;
  • 普通用户个人智能体创建入口;
  • 公有云默认部署和共享 Sandbox Tool 回归。

补充执行结果:

  • Backend focused tests:3 passed
  • Frontend access/MyAgents tests:49 passed

验证当前分支的注意事项

当前提交尚未发布到 PyPI。公有云部署当前 checkout 时必须增加 --from-source

uv run veadk studio deploy --from-source ...

只进入源码目录执行 veadk studio deploy 不会自动打包当前 checkout;未指定 --from-source 时,Function 默认安装 PyPI 版本。

@Xiaoaier-Z-L
Xiaoaier-Z-L force-pushed the fix/vestack-studio-pr-clean branch from 7c72881 to 84ae3fa Compare September 4, 2026 04:28
@yaozheng-fang
yaozheng-fang merged commit 2357e86 into volcengine:main Sep 4, 2026
10 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants