使用 Novita Sandbox 模板托管 Clawdbot (OpenClaw) 完整指南

使用 Novita Sandbox 模板托管 Clawdbot (OpenClaw) 完整指南

想象一个不会坐等指令的 AI 助手,它会在你忘记之前主动发送提醒、管理你的收件箱、自动为你的航班办理值机。这就是 OpenClaw(原 Clawdbot),一个在 GitHub 上获得超过 107,000 星标的热门开源项目。

问题在于,设置自托管的 AI 代理通常需要处理服务器、依赖项和配置文件。这正是 Novita Sandbox 发挥作用的地方。借助预置模板和隔离环境,你可以在几分钟内(而不是几小时)让 OpenClaw 运行起来。

本指南涵盖从初始设置到部署的所有内容,无论你是想自动化工作流、保持数据私密,还是单纯对 AI 代理的能力感到好奇。

什么是 OpenClaw?

OpenClaw 是一款运行在你自有硬件上的开源 AI 助手,它能够主动发起行动。它连接到 WhatsApp、Telegram、Discord、Signal 和 Slack,可以:

  • 发送智能提醒
  • 处理电子邮件和日历任务
  • 控制智能家居设备
  • 自动预订航班并办理值机
  • 运行自定义脚本
  • 理解视频内容
  • 在不同平台上发起对话

由于它运行在你的 Mac Mini、VPS 或 Novita Sandbox 上,你可以完全掌控自己的数据。

安装 Novita SDK/CLI

# 安装 Novita SDK 
pip install novita-sandbox

# 安装 Novita CLI
npm i -g novita-sandbox-cli

启动 Sandbox

CLI

# 登录
novita-sandbox-cli auth login

# 使用 clawdbot 模板创建 sandbox
# 注意:退出后 sandbox 将被销毁
novita-sandbox-cli sandbox create clawdbot

SDK(推荐)

获取 API KEY

登录 Novita 控制台,点击头像进入 API Keys。

登录 Novita 控制台,点击头像进入 API Keys。

点击创建 API Key 并复制。

创建 Sandbox

以下是一个简单的 SDK 脚本 sandbox_novita.py,可用于后续演示。

#!/usr/bin/env python3
"""
Novita Sandbox SDK Simple Example

Usage:
    python sandbox_demo.py create [--template base] [--timeout 300]
    python sandbox_demo.py list
    python sandbox_demo.py set-timeout <SANDBOX_ID> <SECONDS>
    python sandbox_demo.py get-url <SANDBOX_ID> <PORT>

Environment Variables:
    NOVITA_API_KEY=sk_xxx
    NOVITA_DOMAIN=sandbox.novita.ai
"""

import os
import sys

from dotenv import load_dotenv
load_dotenv()

from novita_sandbox.core import Sandbox

API_KEY = os.getenv("NOVITA_API_KEY", "")
DOMAIN = os.getenv("NOVITA_DOMAIN", "sandbox.novita.ai")

def check_config():
    if not API_KEY:
        print("Error: NOVITA_API_KEY not set")
        sys.exit(1)

def cmd_create(args):
    """Create sandbox"""
    check_config()
    template = "base"
    timeout = 300
    
    i = 0
    while i < len(args):
        if args[i] == "--template" and i + 1 < len(args):
            template = args[i + 1]
            i += 2
        elif args[i] == "--timeout" and i + 1 < len(args):
            timeout = int(args[i + 1])
            i += 2
        else:
            i += 1
    
    sandbox = Sandbox.create(
        template=template,
        timeout=timeout,
        api_key=API_KEY,
        domain=DOMAIN,
    )
    print(f"Created: {sandbox.sandbox_id}")

def cmd_list():
    """List sandboxes"""
    check_config()
    paginator = Sandbox.list(api_key=API_KEY, domain=DOMAIN)
    
    sandboxes = []
    while paginator.has_next:
        sandboxes.extend(paginator.next_items())
    
    if not sandboxes:
        print("(no sandboxes)")
        return
    
    for sbx in sandboxes:
        print(f"{sbx.sandbox_id}  |  {sbx.template_id}  |  {sbx.started_at}  |  {sbx.end_at}")

def cmd_set_timeout(sandbox_id, seconds):
    """Set timeout"""
    check_config()
    Sandbox.set_timeout(sandbox_id, int(seconds), api_key=API_KEY, domain=DOMAIN)
    print(f"Set {sandbox_id} timeout to {seconds}s")

def cmd_get_url(sandbox_id, port):
    """Get URL"""
    check_config()
    sandbox = Sandbox.connect(sandbox_id, api_key=API_KEY, domain=DOMAIN)
    host = sandbox.get_host(int(port))
    print(f"https://{host}")

def print_help():
    print(__doc__)

def main():
    if len(sys.argv) < 2:
        print_help()
        return
    
    cmd = sys.argv[1]
    args = sys.argv[2:]
    
    if cmd == "create":
        cmd_create(args)
    elif cmd == "list":
        cmd_list()
    elif cmd == "set-timeout":
        if len(args) < 2:
            print("Usage: set-timeout <SANDBOX_ID> <SECONDS>")
            sys.exit(1)
        cmd_set_timeout(args[0], args[1])
    elif cmd == "get-url":
        if len(args) < 2:
            print("Usage: get-url <SANDBOX_ID> <PORT>")
            sys.exit(1)
        cmd_get_url(args[0], args[1])
    else:
        print_help()

if __name__ == "__main__":
    main()

# NOVITA_API_KEY:填写你自己的 API Key
# template:指定 clawdbot
# timeout:Sandbox 生命周期,单位秒(s)。注意:最大 3600,如需延长请联系我们
NOVITA_API_KEY=sk_xxx python3 sandbox_novita.py create --template clawdbot --timeout 300

保存返回的 sandbox ID,后续登录 sandbox 时会用到。

启动 Clawdbolt

登录沙箱

使用 novita-sandbox-cli 登录沙箱。

novita-sandbox-cli sandbox connect <sandbox_id>

初始化 Clawdbolt

运行以下命令初始化 Clawdbot。

clawdbolt onboard

执行 clawdbot onboard 后,通过键盘完成后续配置。

关键操作:使用方向键浏览选项,按 Enter 选择并确认。

1. 同意风险说明

此处会说明风险 —— AI 意外删除文件的情况并不少见。不过请放心,我们的 Sandbox 提供了安全隔离。

选择 Yes

2. 选择上线模式

选择 QuickStart。

3. 配置模型

系统会提示你选择 模型提供商 和默认使用的模型,并填写你的 API Key

4. 配置通道

系统会要求你配置 Clawdbot 的交互方式,例如 Telegram Bot、WhatsApp、Discord Bot 等。

这里我选择 Telegram

5. 获取 Telegram Bot Token

选择 Telegram 后,输入 bot token(附有获取说明)。

1、在 Telegram 中搜索 @BotFather

2、输入 /newbot 创建新机器人

6. 技能和钩子

此处暂时跳过。

注意:使用空格键选择,按 Enter 确认。

启动 Clawdbot

运行以下命令启动 Clawdbot。

clawdbot gateway run --port 18789

配对并使用 Telegram Bot

Telegram 机器人会提示进行配对,使用方框中的 配对码 完成配对。

另开一个终端并登录沙箱:

novita-sandbox-cli sandbox connect <sandbox_id>

配对 Telegram 机器人:

clawdbot pairing approve telegram <配对码>

成功配对后,即可正式开始使用。

运行演示

我让它根据提示创建一个艺术风格的网页,并在沙箱中公开部署。

  1. 直接与机器人对话,部署网站。

  1. 访问网站

使用 SDK 脚本,传入 sandbox ID 和端口即可获取访问链接。

NOVITA_API_KEY=sk_xxx python3 sandbox_novita.py get-url <sandbox_id> <port>

接下来,在浏览器中输入刚获取的访问链接:

总结

Novita Sandbox 大大简化了常见的部署难题。你无需接触服务器配置或担心安全风险,即可获得一个可用的 OpenClaw 实例。这个机器人可以处理从基本提醒到启动 Web 应用的各种任务,同时让你的数据始终掌握在自己手中。

想试一试?前往 Novita AI 立即获取你的实例。

Novita AI 是领先的 AI 云平台,为开发者提供易用的 API 以及经济实惠、可靠的 GPU 基础设施,用于构建和扩展 AI 应用。