OpenClaw 多智能体配置不同的文生图模型

0 阅读5分钟

一、开篇简介

在使用 OpenClaw 构建多智能体工作流时,我们通常会针对不同的任务(如深度写作、素材整理、日常对话)配置不同智商的文本大模型。但在视觉创作环节,所有的智能体往往只能共用同一个画图接口,这在成本和效果上都不够灵活。

本篇教程将带你实现文生图模型的精细化路由。我们将基于 OpenClaw (版本 2026.3.13)macOS 环境下,通过“全局技能统一部署 + 局部环境变量隔离”的架构,为不同的智能体分配不同级别的画图模型。例如:给负责高质量输出的写作智能体配置 qwen-image-2.0-pro,给日常助手的配置经济型的 qwen-image-2.0

核心思路: OpenClaw 原生的 models 配置主要针对 LLM 推理。对于调用外部 API 画图,我们需要将其封装为 Skill(技能),并在各自扁平化的工作空间中通过 .env 注入独立的模型和 API 配置。


二、详细配置流程

2.1 创建全局文生图 Skill 脚本

我们需要编写一个底层 Python 脚本来对接阿里云通义万相最新的多模态生成接口。注意,Qwen-Image 2.0 已经全面升级为类似对话模型的 messages 数组结构,这个坑了我老半天。

在 Mac 终端执行以下命令,创建脚本目录及文件:

mkdir -p ~/.openclaw/skills/qwen-image
nano ~/.openclaw/skills/qwen-image/gen.py

将以下纯净版代码写入 gen.py

# -*- coding: utf-8 -*-
import os
import sys
import requests

# 动态读取当前智能体工作空间的环境变量
api_key = os.getenv("QWEN_IMAGE_API_KEY")
base_url = os.getenv("QWEN_IMAGE_BASE_URL", "https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation")
model_name = os.getenv("QWEN_IMAGE_MODEL", "qwen-image-2.0")

prompt = " ".join(sys.argv[1:])

headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json"
}

# 适配 Qwen-Image 2.0 最新底层架构
payload = {
    "model": model_name,
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {"text": prompt}
                ]
            }
        ]
    },
    "parameters": {
        "size": "1024*1024"
    }
}

try:
    response = requests.post(base_url, json=payload, headers=headers)
    
    if response.status_code != 200:
        print(f"❌ API 请求失败!HTTP 状态码: {response.status_code}")
        print(f"❌ 详细错误信息: {response.text}")
        sys.exit(1)
        
    res_json = response.json()
    
    # 解析新版 API 返回的复杂数据结构
    try:
        content_list = res_json['output']['choices'][0]['message']['content']
        img_url = None
        for item in content_list:
            if 'image' in item:
                img_url = item['image']
                break
            elif 'url' in item:
                img_url = item['url']
                break
                
        if img_url:
            # 返回 OpenClaw 识别的 MEDIA 标签
            print(f"MEDIA:{img_url}")
        else:
            print(f"图片已生成但提取 URL 失败,API 原始返回: {res_json}")
            
    except KeyError:
        print(f"无法解析新的返回结构,API 原始返回: {res_json}")
            
except Exception as e:
    print(f"请求崩溃: {str(e)}")

这里的 QWEN_IMAGE_BASE_URL 地址是你在对应的文生图大模型平台拿到的,包括下面的 api_Key 也是。本文演示我使用的是阿里千问的免费额度。

Nano 编辑器保存/退出快捷键: 代码粘贴完成后,按 Ctrl + O 保存文件,接着按 Enter 键确认文件名,最后按 Ctrl + X 退出编辑器。

保存退出后,务必赋予执行权限,直接执行这个:

chmod +x ~/.openclaw/skills/qwen-image/gen.py

2.2 为不同智能体配置隔离的 .env

假设你的 OpenClaw 根目录 (~/.openclaw/) 下有两个扁平化工作空间:writer_agent_workspace(写作)和 chat_agent_workspace(日常)。

**注意:**这里的writer_agent_workspacechat_agent_workspace 是你每个智能体对应的工作空间的名字(即文件夹名)。

A. 写作智能体(使用 Pro 版模型)

nano ~/.openclaw/writer_agent_workspace/.env

写入配置:

QWEN_IMAGE_API_KEY="sk-你的真实API_KEY"
QWEN_IMAGE_BASE_URL="https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"
QWEN_IMAGE_MODEL="qwen-image-2.0-pro"

B. 日常智能体(使用标准版模型)

nano ~/.openclaw/chat_agent_workspace/.env

写入配置:

QWEN_IMAGE_API_KEY="sk-你的真实API_KEY"
QWEN_IMAGE_BASE_URL="https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"
QWEN_IMAGE_MODEL="qwen-image-2.0"

(注:如果你的 openclaw.json 全局配置文件中曾定义过这些 Key,请将其删除,以免覆盖局部变量。)


2.3. 注册技能到智能体 (TOOLS.md)

为了让大模型知道何时以及如何调用这个画图工具,你需要手动分别编辑各个工作空间下的 TOOLS.md,加入以下说明:

# 可用技能 (Skills)

## qwen-image
- 用途:当你需要生成图片、插图或视觉素材时调用此工具。
- 触发方式:运行 `python3 ~/.openclaw/skills/qwen-image/gen.py "<你的中/英文画面提示词>"`- 示例:`python3 ~/.openclaw/skills/qwen-image/gen.py "A high-end, artistic close-up of a futuristic car dashboard, suitable for a tutorial material cover. Clear text watermark '小生写博客' at the bottom right corner. Strictly do not include any image size or source text in the picture."`
- 注意:当前环境已为你默认配置了最适合你任务的图像模型版本,请直接专注优化提示词,无需在命令中指定模型。

记得保存一下。


2.4. 重启并验证

重启网关服务使配置生效:

openclaw gateway restart

2.5. 编写脚本测试

我们可以通过编写一个简单的 bash 脚本遍历工作空间执行 python3 ~/.openclaw/skills/qwen-image/gen.py "测试提示词",检查终端是否分别打印了不同模型名称以及绿色的 MEDIA:https://... 链接,如果是这样,那就是正确的,可以在聊天终端进行生图了。

测试脚本如下:

#!/bin/bash

SKILL_SCRIPT="$HOME/.openclaw/skills/qwen-image/gen.py"
# 替换为你的实际工作空间名称
WORKSPACES=("writer_agent_workspace" "chat_agent_workspace")
# 图片提示词 可以自己改中文
TEST_PROMPT="A high-end, artistic close-up of a futuristic car dashboard, suitable for a tutorial cover. Clear text watermark '小生写博客' at the bottom right corner."

for WS in "${WORKSPACES[@]}"; do
    ENV_FILE="$HOME/.openclaw/$WS/.env"
    echo "📂 正在测试工作空间: $WS"
    if [ -f "$ENV_FILE" ]; then
        set -a; source "$ENV_FILE"; set +a
        echo "✅ 当前模型: $QWEN_IMAGE_MODEL"
        python3 "$SKILL_SCRIPT" "$TEST_PROMPT"
    else
        echo "❌ 找不到环境文件"
    fi
    echo "--------------------------------------------------"
done

三、常见问题与排错指南

在部署过程中,你可能会遇到以下报错,对照解决即可:

Q1:出现 NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+ 警告

  • 原因:Mac 系统自带的 Python 底层使用了较老的 LibreSSL,与新版的 urllib3 网络请求库发生冲突。
  • 解决:在终端执行降级命令:pip3 install "urllib3<2"

ok!到这里我们给不同的智能体配置了不同的生图模型,基本上都齐活了,剩下的就是根据需求安装技能包,我们下篇内容写这个。

大家好,我是小生,从程序员转行做自媒体,每天学习一点 AI 技术。