@dbx-工具/appkit-lakebox
给每个经过认证的Databricks App用户一个持久的Linux家,终端, 桌面、 OCI 图像服务、 代理工具、 以及共享的机器度量衡 数据砖湖盒.
注册插件
import { createApp, lakebase, server } from "@databricks/appkit";
import { lakebox, LakeboxRuntime } from "@dbx-tools/appkit-lakebox";
import { resolveLakeboxPluginConfig } from "@dbx-tools/appkit-lakebox/config";
const runtime = new LakeboxRuntime(resolveLakeboxPluginConfig({ idleTimeoutSeconds: 1_800 }));
await createApp({
plugins: [server(), lakebase(), lakebox({ runtime })],
});
Lakebase 坚持使用 Databricks 指派的 Lakebox ID, 序列化的首次创建
并保留最后观察到的服务定义,同时
机器已经停止了。 注册应用程序 lakebase() 用户前的插件
进入Lakebox线路.
连接 Mastra 到同一运行时间
传出同样的 LakeboxRuntime 到 AppKit 插件和 Mastra 沙盒。 这个
将命令、服务、路线、度量衡和用户账户保持在同一位置
湖边:
import { createApp, lakebase, server } from "@databricks/appkit";
import { lakebox, LakeboxRuntime } from "@dbx-tools/appkit-lakebox";
import { resolveLakeboxPluginConfig } from "@dbx-tools/appkit-lakebox/config";
import { lakeboxSkillMounts } from "@dbx-tools/appkit-lakebox/skills";
import { lakeboxWorkspaceSandbox } from "@dbx-tools/appkit-lakebox/workspace";
import { agents, mastra } from "@dbx-tools/appkit-mastra";
const runtime = new LakeboxRuntime(resolveLakeboxPluginConfig());
const analyst = agents.createAgent({
name: "Analyst",
instructions: "Use the workspace when the task requires files or commands.",
});
await createApp({
plugins: [
server(),
lakebase(),
lakebox({ runtime }),
mastra({
agents: { analyst },
sandbox: lakeboxWorkspaceSandbox(runtime),
localSkillMounts: lakeboxSkillMounts(),
}),
],
});
沙盒解决每个请求的认证 Mastra 用户 。 没有
在代理注册时创建计算。 第一个命令或服务开始
湖边 auto 已启用.
将"湖箱UI"渲染
注册后端插件,然后将 React 软件包制成相同的 应用程序 :
import { LakeboxIndicator, LakeboxPanel } from "@dbx-tools/ui-lakebox/react";
export function LakeboxPage() {
return (
<>
<LakeboxIndicator />
<LakeboxPanel />
</>
);
}
在您的 AppKit 用户界面主题后导入软件包样式表 :
@import "@dbx-tools/ui-lakebox/styles.css";
组件从插件已发布的客户端读取 API 基础路径 配置 。 不需要复制路由字符串或通过 Databricks 证书到浏览器.
创建服务
特工打电话来 create_lakebox_service. REST 客户端发送
POST /api/lakebox/services数字 :
{
"name": "hello",
"image": "docker.io/library/python:3.12-alpine",
"command": ["sh", "-lc", "python -m http.server \"$SERVICE_PORT\" --bind 127.0.0.1"],
"mounts": [{ "source": "data", "target": "/data" }]
}
服务后调用返回 。 运行时间注入
SERVICE_NAME, (中文(简体) ), SERVICE_PATH, (中文(简体) ), SERVICE_PORT,以及 PORT. 线路服务
必须听 127.0.0.1:$SERVICE_PORT上山源相对
用户的家.
这是受限的容器API,而不是多克CLI. 没有守护进程, 端口发布,特权模式,设备访问,或桥梁网络. 一个湖盒 停止并启动从已保存定义中重新启动服务。 进程内存 不恢复.
使用代理工具
| 工具 | 效果 |
|---|---|
get_lakebox | 返回状态, 当前用户的账户, 和不创建 Lakebox 的服务 . |
execute_lakebox_command | 运行一个命令作为用户账户 . |
list_lakebox_services | 列出用户服务. |
create_lakebox_service | 创建或替换一个图像服务并等待到准备好 . |
start_lakebox_service, (中文(简体) ), stop_lakebox_service | 开始或停止保存的服务, terminal,或 desktop。 。 。 . |
remove_lakebox_service | 删除已保存的服务 。 须经批准. |
get_lakebox_service_logs | 读取限定的服务日志 . |
插件为命令和服务变异创建或启动 Lakebox
何时 auto 已启用。 列表和状态操作不会创建.
了解生命周期
应用服务校长拥有Lakebox生命周期电话. 一个半用户 身份选择用户的 Linux 账户并授权路由, 但从未 创建、启动、停止或删除 Databricks 资源.
生命周期行为是:
- 第一个明确的启动、命令、服务突变或路由请求 当不存在时创建应用程序的"湖盒".
- 运行时间启动"湖盒"并恢复被保存的服务定义.
- 每张认证身份地图到一个锁定的非苏多账户,其中有一个 持续的家用和私人服务港口.
- Databricks平台在配置的闲置期后停止了Lakebox.
- 后一请又起. 用户文件和保存的服务定义 持续,但过程内存没有.
runtime.stop() 停止每个用户共享的湖箱. runtime.delete()
永久删除"湖盒"和每个用户的文件. 普通 AppKit 关闭
关闭 SSH 会话并转发桥接, 但将闲置的关机留给
平台.
配置
| 选项 | 默认 | 说明 |
|---|---|---|
application | DBX_TOOLS_LAKEBOX_APPLICATION, (中文(简体) ), DATABRICKS_APP_NAME,或项目目录 | 持续存在的 Lakebox 资源标识的稳定密钥 . |
idleTimeoutSeconds | 3600 | 平台闲置超时,60至86400秒. |
auto | true | 按需要创建或启动 Lakebox . |
routePrefix | /lakebox | 服务路线的 AppKit 根 . |
metricsIntervalSeconds | 5 | 客户端观察度量衡时的样本间隔 . |
sshTransport | auto | auto, (中文(简体) ), openssh,或 ssh2。 。 。 . |
ssh2Patch | auto | 应用 Ssh2 缺失 - 执行 - 备份工作 只在开发, 永远, 或永远. |
gatewayPort | 2222 | 湖口SSH网关端口. |
connectTimeoutMs | 30000 | SSH 连接超时. |
commandTimeoutMs | 120000 | 默认命令超时 . |
keyDirectory | ~/.dbx-tools/lakebox | 可选服务器侧 SSH 密钥和已知主机存储根 . |
交互式测试
test/cli.ts 作为任何用户运行工作空间配置的实时运行 :
bun packages/js/node/appkit-lakebox/test/cli.ts --profile <profile> --user [email protected] status
bun packages/js/node/appkit-lakebox/test/cli.ts --profile <profile> --user [email protected] exec id
bunx tsx packages/js/node/appkit-lakebox/test/cli.ts --profile <profile> --user [email protected] serve
serve 启动该用户的终端和桌面并代理其路径
http://127.0.0.1:8787 (中文(简体) )。 。 。 .
明确传递配置配置 。 在这个绳子上, 特征特征 代理应用服务校长.
了解安全和运行时间限制
- 每个应用程序最多有一个管理好的"湖箱". 用户共享机器,但不共享 Linux 账户,家园,或服务端口.
- 命令和服务不接受 Databricks 环境变量, 转发证书、饼干或 SSH 代理访问.
- 当一个非启动请求没有认证时, 服务线路失败 身份证明.
- 图像服务与私人 PID, IPC, Mount, 和用户名空间运行. 他们 共享主机网络, 并且只必须绑定到被注入回路端口 .
- 量子覆盖了机器CPU,内存,持续存储,以及网络计数器. 它们不披露过程数据,只在客户端观看时进行采样.
- Lakebase是应用软件资源识别、复制式聚合以及 最后已知的服务定义.