星图平台快速搭建 Clawdbot:私有化本地 Qwen3-VL:30B 并接入飞书平台(上篇)

星图平台快速搭建 Clawdbot:私有化本地 Qwen3-VL:30B 并接入飞书平台(上篇)

本项目通过 CSDN 星图 AI 云平台,零基础教你私有化部署最强多模态大模型 Qwen3-VL:30B,并通过 Clawdbot 搭建起一个既能"看图"又能"聊天"的飞书智能办公助手。

实验说明 :本文所有的部署及测试环境均由 CSDN 星图 AI 云平台提供。我们使用官方预装的 Qwen3-VL-30B 镜像作为基础环境进行二次开发。

项目镜像地址: 星图 AI-星图平台上篇镜像

部署流程下篇: 星图平台快速搭建 Clawdbot:私有化本地 Qwen3-VL:30B 并接入飞书平台(下篇)

硬件环境概览

GPU 驱动 CUDA 版本 显存 CPU 内存 系统盘 数据盘
550.90.07 12.4 48GB 20 核心 240GB 50GB 40GB

一、 基础镜像选配与连通性测试

1.1 社区镜像选配

为了获得顶级的多模态交互体验,我们选择目前最强的 VL-30B 模型进行服务部署。

  • 快速定位 :若镜像列表较长,建议直接通过搜索框输入关键字 Qwen3-vl:30b 快速锁定目标镜像。

1.2 镜像部署

Qwen3-VL-30B 属于高参数量的多模态大模型,对算力资源要求较高。官方推荐配置为 48G 显存。在星图平台创建实例时,直接按照默认推荐的配置框选择启动即可。

1.3 镜像可用性测试

实例开机后,返回个人控制台。点击 Ollama 控制台 快捷方式,即可直接进入预装好的 Ollama 多模态 Web 交互页面。

Ollama 交互页面测试

在 Web 界面进行初步对话,确保模型推理功能正常。

本地 API 调用测试

由于星图云会为每个算力 Pod 提供公网 URL,我们可以直接在本地通过 Python 调用 API 接口。

注意 :请将 base_url 替换为您服务器实际对应的公网 URL(格式如下所示)。

python 复制代码
from openai import OpenAI

client = OpenAI(
    # 将 gpu-pod697b0f1855ba5839425df6ea-11434 切换成您实际部署的服务器地址
    base_url="https://gpu-pod697b0f1855ba5839425df6ea-11434.web.gpu.csdn.net/v1",
    api_key="ollama"
)
try:
    response = client.chat.completions.create(
        model="qwen3-vl:30b",
        messages=[{"role": "user", "content": "你好,你是谁?"}]
    )
    print(response.choices[0].message.content)
except Exception as e:
    print(f"连接失败,请检查端口是否开放: {e}")

二、 Clawdbot 的安装与初始化

2.1 安装 Clawdbot

星图云环境已预装最新的 Node.js 并配置了镜像加速。我们推荐通过官方 npm 方式快速全局安装 Clawdbot

shell 复制代码
npm i -g clawdbot

2.2 启动并完成初始配置

执行以下命令开启向导模式。对于大多数进阶配置,我们先选择跳过,后续直接在 Web 控制面板中修改。

shell 复制代码
clawdbot onboard


2.3 启动网关并访问控制页面

Clawdbot 默认管理端口为 18789

shell 复制代码
clawdbot gateway

访问地址示例:

shell 复制代码
# 原链接(8888 端口):https://gpu-pod697b0f1855ba5839425df6ea-8888.web.gpu.csdn.net/
# Clawdbot 控制台链接(更换为 18789 端口):
https://gpu-pod697b0f1855ba5839425df6ea-18789.web.gpu.csdn.net/

三、 网络调优与安全配置

3.1 解决 Web 页面空白问题

故障原因 :Clawdbot 默认监听 127.0.0.1,导致外部公网请求无法响应。我们需要修改配置实现全局监听,并配置可信代理。

  • 修改前的监听状态

修改配置文件

shell 复制代码
vim ~/.clawdbot/clawdbot.json

核心配置项修改:

  1. bind: 由 loopback 改为 lan(开启全网监听)。
  2. auth.token: 自定义安全 Token(例如:csdn)。
  3. trustedProxies: 添加 0.0.0.0/0(信任所有代理转发)。
json 复制代码
"gateway": {
    "mode": "local",
    "bind": "lan", 
    "port": 18789,
    "auth": {
      "mode": "token",
      "token": "csdn"
    },
    "trustedProxies": ["0.0.0.0/0"],
    "controlUi": {
      "enabled": true,
      "allowInsecureAuth": true
    }
}
  • 修改后的监听状态

3.2 配置控制面板访问凭证

刷新页面后,若系统提示缺失 Token,请前往 Overview 页面填写刚才在 .json 文件中设置的 csdn


四、 核心集成:接入星图云私有化 Qwen3-VL:30B

确认本地 Ollama 服务工作正常后,我们需要将 Clawdbot 的默认模型指向我们部署的 30B 大模型。

4.1 修改 Clawdbot 模型供应配置

编辑 ~/.clawdbot/clawdbot.json,在 models.providers 中添加 my-ollama 供应源,并更新 agents 默认模型为 qwen3-vl:30b

关键配置片段:

json 复制代码
 "models": {
    "providers": {
      "my-ollama": {
        "baseUrl": "http://127.0.0.1:11434/v1",
        "apiKey": "ollama",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3-vl:30b",
            "name": "Local Qwen3 30B",
            "contextWindow": 32000
          }
        ]
      }
    }
  },
"agents": {
  "defaults": {
    "model": {
      "primary": "my-ollama/qwen3-vl:30b"
    }
  }
}

4.2 完整配置文件参考

您可以直接复制以下 JSON 内容覆盖本地 ~/.clawdbot/clawdbot.json(请根据实际需要微调路径):
点击展开完整 JSON

json 复制代码
{
  "meta": {
    "lastTouchedVersion": "2026.1.24-3",
    "lastTouchedAt": "2026-01-29T09:43:42.012Z"
  },
  "wizard": {
    "lastRunAt": "2026-01-29T09:43:41.997Z",
    "lastRunVersion": "2026.1.24-3",
    "lastRunCommand": "onboard",
    "lastRunMode": "local"
  },
  "auth": {
    "profiles": {
      "qwen-portal:default": {
        "provider": "qwen-portal",
        "mode": "oauth"
      }
    }
  },
  "models": {
    "providers": {
      "my-ollama": {
        "baseUrl": "http://127.0.0.1:11434/v1",
        "apiKey": "ollama",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3-vl:30b",
            "name": "Local Qwen3 32B",
            "reasoning": false,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 32000,
            "maxTokens": 4096
          }
        ]
      },
      "qwen-portal": {
        "baseUrl": "https://portal.qwen.ai/v1",
        "apiKey": "qwen-oauth",
        "api": "openai-completions",
        "models": [
          {
            "id": "coder-model",
            "name": "Qwen Coder",
            "reasoning": false,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 128000,
            "maxTokens": 8192
          },
          {
            "id": "vision-model",
            "name": "Qwen Vision",
            "reasoning": false,
            "input": [
              "text",
              "image"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 128000,
            "maxTokens": 8192
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "my-ollama/qwen3-vl:30b"
      },
      "models": {
        "my-ollama/qwen3-vl:30b": {
          "alias": "qwen"
        },
        "qwen-portal/coder-model": {
          "alias": "qwen"
        },
        "qwen-portal/vision-model": {}
      },
      "workspace": "/root/clawd",
      "compaction": {
        "mode": "safeguard"
      },
      "maxConcurrent": 4,
      "subagents": {
        "maxConcurrent": 8
      }
    }
  },
  "messages": {
    "ackReactionScope": "group-mentions"
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto"
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "lan",
    "controlUi": {
      "enabled": true,
      "allowInsecureAuth": true
    },
    "auth": {
      "mode": "token",
      "token": "csdn"
    },
    "trustedProxies": [
      "0.0.0.0/0"
    ],
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    }
  },
  "skills": {
    "install": {
      "nodeManager": "npm"
    }
  },
  "plugins": {
    "entries": {
      "qwen-portal-auth": {
        "enabled": true
      }
    }
  },
  "hooks": {
    "internal": {
      "enabled": true,
      "entries": {
        "session-memory": {
          "enabled": true
        }
      }
    }
  }
}

4.3 最终对话测试

重启 Clawdbot 服务,并开启一个新终端执行 watch nvidia-smi 监控显卡状态。

在控制面板的 Chat 页面发送消息,观察 GPU 显存的变化,确认 Qwen3-VL:30B 正在为您服务!


总结

至此,我们已经成功在 星图平台 完成了 Qwen3-VL:30B 的私有化部署,并将其接入了 Clawdbot 的管理网关。

在接下来的下篇教程中,我们将重点讲解:

  1. 如何正式接入飞书平台实现群聊互动。
  2. 如何进行环境持久化打包,并发布到 星图 AI 镜像市场。

敬请期待,感谢您愿意花费宝贵的时间进行的阅读尝试,谢谢!

相关推荐
成都渲染101云渲染66661 小时前
渲染速度慢怎么办?如何将 Maya 渲染速度提升成百上千倍(通用方法)
人工智能·图形渲染·blender·maya·houdini
郝学胜-神的一滴1 小时前
特征选择利器:深入理解SelectKBest与单变量特征选择
人工智能·python·程序人生·机器学习·数据分析·scikit-learn·sklearn
shangjian0071 小时前
AI-大语言模型LLM-Transformer架构5-残差连接与前馈网络
人工智能·语言模型·transformer
酩酊仙人1 小时前
.Net机器学习入门
人工智能·机器学习·.net
阿杰学AI1 小时前
AI核心知识71——大语言模型之Prompt Caching (简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·prompt caching·提示词缓存
范纹杉想快点毕业2 小时前
自学嵌入式系统架构设计:有限状态机入门完全指南,C语言,嵌入式,单片机,微控制器,CPU,微机原理,计算机组成原理
c语言·开发语言·单片机·算法·microsoft
人工智能AI技术2 小时前
【Agent从入门到实践】46 自动化工具集成:结合Jenkins、GitLab CI,实现研发流程自动化
人工智能·python
esmap2 小时前
技术深析:ESMAP智慧医院解决方案——基于AOA蓝牙定位的全场景精准感知实现
大数据·网络·人工智能
Blossom.1182 小时前
把大模型当“编译器”用:一句自然语言直接生成SoC的Verilog
数据库·人工智能·python·sql·单片机·嵌入式硬件·fpga开发