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

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

想像一個 AI 助手不會呆呆等著你下指令,反而會在你忘記之前發送提醒、管理你的收件匣、自動為你辦理航班報到。這就是 OpenClaw(前身為 Clawdbot),一個在 GitHub 上獲得超過 10.7 萬顆星的開源專案。

但問題是?設定自託管 AI 代理通常得折騰伺服器、依賴套件和設定檔。這時候 Novita Sandbox 就派上用場了。它提供預建模板和隔離環境,讓你能在幾分鐘內而非數小時內啟動 OpenClaw。

本指南涵蓋從初始設定到部署的所有步驟,無論你是要自動化工作流程、保障資料隱私,還是單純好奇 AI 代理能做什麼,都能找到對應內容。

什麼是 OpenClaw?

OpenClaw 是開源 AI 助手,可運行在你的自有硬體上,甚至會主動採取行動。它支援連接 WhatsApp、Telegram、Discord、Signal 和 Slack,能夠執行以下任務:

  • 傳送智慧提醒
  • 處理電子郵件和日曆任務
  • 控制智慧居家裝置
  • 自動預訂航班並辦理報到
  • 執行自訂腳本
  • 理解影片內容
  • 跨平台發起對話

由於它可運行在 Mac Mini、VPS 或 Novita Sandbox 上,你能完全掌控自己的資料。

安裝 Novita SDK / CLI

# Install Novita SDK 
pip install novita-sandbox

# Install Novita CLI
npm i -g novita-sandbox-cli

啟動 Sandbox

CLI

# Log in
novita-sandbox-cli auth login

# Create a sandbox using the clawdbot template
# Note: The sandbox will be destroyed upon exit
novita-sandbox-cli sandbox create clawdbot

SDK(推薦)

取得 API 金鑰

登入 Novita Console,點擊你的頭像即可存取 API 金鑰。

登入 Novita Console,點擊你的頭像以存取 API 金鑰。

點擊建立 API 金鑰並複製它

建立 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: Fill in your own API Key
# template: Specify clawdbot
# timeout: Sandbox lifecycle in seconds (s). Note: Max 3600, contact us for an extension
NOVITA_API_KEY=sk_xxx python3 sandbox_novita.py create --template clawdbot --timeout 300

儲存回傳的 sandbox ID,後續登入 sandbox 時會用到。

啟動 Clawdbolt

登入 sandbox

使用 novita-sandbox-cli 登入 sandbox。

novita-sandbox-cli sandbox connect <sandbox_id>

初始化 Clawdbolt

使用以下指令初始化 Clawdbot:

clawdbolt onboard

執行 clawdbot onboard 後,透過鍵盤完成後續設定。

操作提示:使用方向鍵瀏覽選項,按下 Enter 鍵選擇並確認。

1. 同意風險提示

此處會標註風險提示——畢竟 AI 意外刪除檔案的情況相當常見。但請放心,我們的 Sandbox 提供安全的隔離環境 :)

選擇 Yes

2. 選擇入門模式

選擇 QuickStart。

3. 設定模型

系統會提示你選擇模型供應商、要使用的預設模型,並填寫你的API 金鑰

4. 設定頻道

系統會要求你設定 Clawdbot 的互動方式,例如 Telegram Bot、WhatsApp、Discord Bot 等。

此處我選擇 Telegram

5. 取得 Telegram Bot Token

選擇 Telegram 後,輸入bot token(附帶取得方式說明)。

1、在 Telegram 中搜尋 @BotFather

2、輸入 /newbot 建立新的 bot

6. 技能與鉤子

此步驟先跳過。

提示:使用空白鍵選擇,按下 Enter 鍵確認。

啟動 Clawdbot

執行以下指令啟動 Clawdbot。

clawdbot gateway run --port 18789

配對並使用 Telegram Bot

Telegram bot 會提示進行配對,使用框選的配對碼完成配對。

開啟另一個終端機並登入 sandbox:

novita-sandbox-cli sandbox connect <sandbox_id>

配對 Telegram bot:

clawdbot pairing approve telegram <Pairing code>

配對成功後,你就可以正式開始使用了。

示範操作

我透過提示詞要求它建立一個藝術風格的網頁,並在 sandbox 中公開部署。

  1. 直接與 bot 對話以部署網站。

  1. 存取網站

只需傳入 sandbox ID 和端口,即可透過 SDK 腳本取得存取連結。

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

接著在瀏覽器中輸入你剛取得的存取連結:

結論

Novita Sandbox 解決了常見的部署痛點。你不需要碰伺服器設定,也不用擔心安全風險,就能取得可運行的 OpenClaw 實例。這個 bot 能處理從基本提醒到部署網頁應用程式的所有任務,同時讓你完全掌控自己的資料。

想試試看嗎?前往 Novita AI 啟動你的實例吧。

Novita AI 是領先的 AI 雲端平台,為開發者提供易於使用的 API,以及實惠、可靠的 GPU 基礎設施,用於構建和擴展 AI 應用程式