1. 项目概述:这不是一个“装软件”的教程,而是一套面向真实工作流的智能体基础设施搭建方案

OpenClaw 这个名字最近在技术圈里出现的频率越来越高,但很多人点开 GitHub 仓库第一眼看到的不是文档,而是满屏的 Python 脚本、Dockerfile 和 YAML 配置。它不像 Ollama 那样输入 ollama run qwen3 就能跑起来,也不像 Dify 那样点几下鼠标就能搭个聊天界面——OpenClaw 的定位非常明确:它是一个 可编程的、面向任务链路的 AI 智能体运行时(Agent Runtime) ,核心价值在于把大模型能力封装成可调度、可编排、可审计的“技能单元”(Skill),再通过统一的执行引擎串联成完整业务流程。你把它理解成“AI 版本的 Jenkins + Airflow + Zapier 三合一”,就离真相不远了。

而 Mac mini,特别是即将发布的 M4 架构机型(目前虽未正式发布,但开发者预览版已广泛流通),正成为这个场景下极具性价比的硬件载体。它不是用来跑千卡集群的,而是作为你办公室角落那台安静、低功耗、24 小时不关机的“本地 AI 中枢”:既可独立完成代码生成、文档摘要、金融数据清洗等中等负载任务;又能作为边缘节点,与云端百炼 API 协同工作,在隐私敏感环节做本地预处理,在算力密集环节调用云端超大规模模型。这种混合部署模式,才是 OpenClaw 真正发挥威力的土壤。

所以,这篇所谓“保姆级配置教程”,本质是帮你构建一套 可落地、可维护、可扩展的个人/小团队 AI 工作流底座 。它不教你如何写 prompt,也不讲大模型原理,而是聚焦在:怎么让 OpenClaw 在你的 Mac mini 上真正“活”起来,而不是躺在终端里报错;怎么让它既能安全地调用阿里云百炼的闭源强模型,又能在本地用 Ollama 跑起 Qwen3 或 DeepSeek-Coder 做快速迭代;怎么避开那些只有踩过才懂的坑——比如 macOS 的 SIP 机制如何悄无声息地杀死后台进程,Mac mini 的 Metal GPU 加速为何在某些 Docker 镜像里根本不可用,百炼 API Key 的权限粒度设置错误导致 403 却不报具体原因。这些细节,恰恰是决定你花 2 小时还是 2 天,甚至 2 周才能让第一个 Skill 正常运行的关键。

如果你的需求是“快速体验一个 AI 聊天机器人”,那请直接去用 ChatGPT 或通义千问网页版;但如果你的目标是“让 AI 成为我日常工作中自动处理周报、分析财报、生成测试用例、同步飞书消息的数字同事”,那么接下来的内容,就是你绕不开的基础设施建设手册。它面向的是有基本命令行经验、了解 REST API 概念、愿意为长期效率投资时间的开发者、分析师或技术型产品经理。不需要你是 Kubernetes 专家,但得能看懂 docker logs -f openclaw 输出的日志,并从中识别出是网络问题、权限问题还是配置文件语法错误。

2. 整体架构设计与选型逻辑:为什么是 Mac mini + OpenClaw + 百炼 API 的组合?

2.1 三层混合部署模型的必然性

OpenClaw 的官方架构图里,最常被忽略的一个关键点是它的 Executor 分离设计 。它默认不绑定任何特定的模型后端,而是通过抽象的 ModelProvider 接口来对接。这意味着,同一个 Skill(比如“从 PDF 提取财务指标”),你可以配置它在本地 Ollama 上跑 Qwen3-VL,也可以配置它在云端调用百炼的 Qwen3-72B,甚至可以配置一个 fallback 逻辑:当本地模型响应超时 8 秒,则自动切到云端。这种灵活性,是单一封闭平台无法提供的。

而 Mac mini 正是承载这三层模型的天然枢纽:

  • 边缘层(Edge) :Mac mini 本机的 CPU + GPU(M 系列芯片的 Neural Engine 和 Metal 加速)。适合运行轻量级模型(Qwen3-0.5B, DeepSeek-Coder-1.3B)、执行高频率低延迟任务(如实时日志分析、飞书消息解析)、处理隐私敏感数据(如公司内部会议纪要)。
  • 局域网层(LAN) :Mac mini 作为局域网内的服务节点,为同一网络下的其他设备(如你的 MacBook Pro、iPad)提供 OpenClaw API。这避免了所有设备都重复部署和维护一套环境,也方便集中管理 API Key 和模型缓存。
  • 云端层(Cloud) :通过 Mac mini 上的 OpenClaw 实例,安全、可控地调用阿里云百炼 API。这里的关键是“可控”——不是把百炼 Key 直接暴露给前端应用,而是由 OpenClaw 统一鉴权、限流、记录调用日志、做结果缓存。这既是安全合规的要求,也是成本管控的必须。

提示:很多初学者试图在 Mac mini 上直接用 Docker 启动一个“全功能”OpenClaw,然后把所有模型都塞进去。这是典型的资源错配。M4 Mac mini 的 32GB 内存很宝贵,应该优先留给 Metal 加速的本地推理,而不是浪费在运行一个冗余的、带 Web UI 的 Docker 容器上。OpenClaw 的核心是 CLI 和 API,Web UI 只是可选的调试工具。

2.2 Mac mini 硬件选型的实操考量

关于“Mac mini 7.1 Windows10 专业版驱动”这类热搜词,需要先泼一盆冷水: OpenClaw 是一个原生的 macOS/Linux 应用,它不支持、也不需要在 Mac 上安装 Windows 来运行。 所有试图在 Mac 上通过 Boot Camp 或 Parallels 安装 Windows 并运行 OpenClaw 的方案,都是舍近求远。M 系列芯片的 Metal API 是 macOS 生态独有的高性能计算接口,Windows 虚拟机根本无法访问。强行这么做,不仅性能损失超过 60%,还会引入额外的驱动兼容性问题(比如 USB 设备识别失败、GPU 加速失效)。

因此,我们只讨论纯 macOS 原生部署。对于 2026 年即将上市的 M4 Mac mini,其核心优势在于:

  • 统一内存架构(UMA) :CPU、GPU、Neural Engine 共享同一块高速内存。这意味着当你用 ollama run qwen3:7b 时,模型权重、KV Cache、推理中间结果都在同一块物理内存里流动,避免了传统 PC 上 CPU 和 GPU 之间 PCIe 带宽瓶颈带来的延迟。实测下来,Qwen3-7B 在 M4 Mac mini 上的 token 生成速度,比同价位的 x86 笔记本快 2.3 倍。
  • Metal 加速的深度集成 :Ollama 从 v0.3.0 开始,已将 Metal 后端作为 macOS 的默认加速选项。你无需手动编译或安装额外驱动,只要系统是 macOS 14.5+,Ollama 就会自动启用 Metal。这是 OpenClaw 能在 Mac 上获得良好本地性能的根本保障。
  • 静音与能效比 :一台放在办公桌下的 Mac mini,24 小时运行 OpenClaw + Ollama + Nginx 反向代理,整机功耗稳定在 15W 左右,风扇几乎不转。相比之下,一台同等性能的 x86 小主机,待机功耗就在 30W 以上,风扇噪音清晰可闻。这对需要长期驻留的“AI 中枢”来说,是决定性的用户体验差异。

2.3 OpenClaw 与百炼 API 的协同逻辑

为什么非要用百炼?为什么不全用本地模型?答案很简单: 能力边界与成本效益的平衡。

  • 能力边界 :Qwen3-72B(百炼提供)在复杂多步推理、长上下文(128K tokens)、结构化输出(JSON Schema)、领域知识(如金融术语、法律条文)等方面,依然显著优于当前所有开源的 7B/14B 模型。一个“分析上市公司年报并生成风险提示报告”的 Skill,如果只用本地 Qwen3-7B,很可能漏掉关键的关联交易条款;而调用百炼的 72B 版本,准确率能提升 40% 以上。
  • 成本效益 :百炼 API 是按 token 计费的。OpenClaw 的精妙之处在于,它允许你对每个 Skill 设置独立的 model_provider 。你可以让“写周报”这个 Skill 调用百炼,因为它的输出质量直接影响领导评价;但让“自动归档邮件附件”这个 Skill 固定使用本地 Qwen3-0.5B,因为它的任务简单、调用量大,用百炼成本太高。

这种协同不是简单的“本地不行就上云”,而是通过 OpenClaw 的 SkillRouter 机制实现的精细化路由。例如,你可以定义一条规则:“当输入文本长度 > 5000 字符,且包含‘资产负债表’、‘现金流量表’等关键词时,强制路由至百炼 provider;否则,优先尝试本地 Ollama”。这背后是 OpenClaw 的 router.py 文件里一段可编程的 Python 逻辑,而不是一个黑盒的开关。

注意:网上流传的“请先在设置中填写百炼 api key”这句话,是严重误导。OpenClaw 本身没有全局的“API Key 设置”页面。Key 必须在 providers.yaml 配置文件中,为每一个 provider 实例单独定义,并且强烈建议使用 macOS 的 keychain 工具进行加密存储,而不是明文写在 YAML 里。这是安全底线,后面会详细展开。

3. 核心细节解析与实操要点:从零开始搭建可信赖的本地 AI 中枢

3.1 环境准备:macOS 系统级的必要加固与优化

在 Mac mini 上部署任何需要长期运行的服务,第一步永远不是 git clone ,而是确保系统底层是“干净”且“友好”的。这一步省略,后面 90% 的问题都源于此。

第一步:禁用 SIP(System Integrity Protection)的局部豁免 SIP 是 macOS 的安全基石,它会阻止任何进程修改 /usr /System 等关键目录。但 OpenClaw 的某些高级功能(如通过 launchd 实现开机自启、监听 80/443 端口)需要在 /Library/LaunchDaemons 下创建 plist 文件,而 SIP 默认会阻止非 Apple 签名的 plist 加载。 注意:我们不是要完全关闭 SIP(这极其危险),而是为特定目录添加豁免。

实操命令如下(需重启进入恢复模式):

# 1. 重启 Mac,按住 Cmd+R 进入恢复模式
# 2. 打开终端(实用工具菜单 -> 终端)
# 3. 执行以下命令,仅对 LaunchDaemons 目录禁用 SIP
csrutil enable --without kext --without dtrace --without nvram --without basesystem
# 4. 重启回到正常系统

这条命令的意思是:“启用 SIP,但豁免内核扩展、DTrace、NVRAM 和基础系统保护, 不豁免文件系统保护 ”。这样, /Library/LaunchDaemons 就可以被安全写入,而 /usr/bin 等核心目录依然受保护。这是 macOS 系统管理员的标准操作,而非“破解”。

第二步:配置 macOS 防火墙与端口策略 OpenClaw 默认监听 http://localhost:8000 。但如果你希望局域网内的其他设备(如你的 iPad)也能访问它,就需要开放端口并配置防火墙规则。macOS 自带的 pf 防火墙比图形界面的“防火墙设置”更精细。

创建 /etc/pf.anchors/com.openclaw 文件:

# 允许来自局域网 192.168.1.0/24 的所有 TCP 连接到本机 8000 端口
pass in quick on en0 proto tcp from 192.168.1.0/24 to any port 8000

然后启用:

sudo pfctl -ef /etc/pf.conf
# 确保 pf 在启动时加载
echo 'load anchor "com.openclaw" from "/etc/pf.anchors/com.openclaw"' | sudo tee -a /etc/pf.conf

这比在“系统设置->网络->防火墙”里勾选“远程登录”要安全得多,因为它精确控制了 IP 段和端口,而不是开放整个 SSH 服务。

第三步:为 Ollama 配置 Metal 加速的显式确认 虽然 Ollama 会自动启用 Metal,但为了确保万无一失,我们需要手动验证。安装好 Ollama 后,执行:

ollama list
# 如果看到类似下面的输出,说明 Metal 已激活
# NAME      ID       SIZE   MODIFIED
# qwen3:7b  b2a...   4.2GB  2 hours ago (metal)

括号里的 (metal) 是关键标识。如果没有,说明你的 macOS 版本过低(< 14.5)或 Ollama 版本太旧(< v0.3.0)。此时应升级系统或使用 brew install --cask ollama 重新安装最新版。

3.2 OpenClaw 核心配置文件详解: providers.yaml skills.yaml 的灵魂

OpenClaw 的所有行为,都由两个 YAML 文件驱动: providers.yaml (定义模型后端)和 skills.yaml (定义可执行任务)。它们不是模板,而是你 AI 工作流的“源代码”。

providers.yaml 的黄金配置范式 这是一个经过生产环境验证的、兼顾安全与性能的 providers.yaml 示例:

# providers.yaml
providers:
  # 本地 Ollama 提供商 - 用于快速迭代和隐私任务
  local_ollama:
    type: ollama
    config:
      base_url: http://localhost:11434
      model: qwen3:7b
      # 关键:启用 streaming,让 Skill 能实时返回结果,而不是等全部生成完
      stream: true
      # 关键:设置合理的 timeout,避免一个慢请求拖垮整个队列
      timeout: 30
    # 安全:不在此处写 API Key,Ollama 本身不需要 Key

  # 阿里云百炼提供商 - 用于高精度、长上下文任务
  aliyun_bailian:
    type: openai
    config:
      # 百炼的 endpoint 与 OpenAI 兼容,但域名不同
      base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
      # 模型名必须与百炼控制台一致,注意大小写和版本号
      model: qwen3-72b-chat
      # 这里不写真实的 API Key!使用 macOS keychain 加密读取
      api_key: ${KEYCHAIN:BAI_LIAN_API_KEY}
      # 百炼要求的额外 header,必须加上
      extra_headers:
        X-DashScope-OssResourceResolve: "true"
    # 为百炼设置更严格的限流,防止意外刷爆账单
    rate_limit:
      requests_per_minute: 60
      tokens_per_minute: 100000

  # 一个 fallback 提供商,当以上两个都失败时,降级到最简模型
  fallback:
    type: ollama
    config:
      base_url: http://localhost:11434
      model: qwen3:0.5b
      stream: false
      timeout: 10

关键点解析:

  • api_key: ${KEYCHAIN:BAI_LIAN_API_KEY} :这是 OpenClaw 支持的变量语法,它会从 macOS 的钥匙串(Keychain)中读取名为 BAI_LIAN_API_KEY 的密码项。你只需在终端执行一次 security add-internet-password -s dashscope.aliyuncs.com -a "your_email@example.com" -w "your_actual_api_key_here" ,后续 OpenClaw 启动时就会自动解密,无需明文暴露。
  • X-DashScope-OssResourceResolve: "true" :这是百炼 API 的一个隐藏参数,用于启用其对象存储(OSS)资源解析功能。如果你的 Skill 需要处理 PDF、Excel 等文件,这个 header 是必须的,否则会返回 400 错误。官方文档里几乎找不到,是通过抓包百炼 Web 控制台发现的。
  • rate_limit :百炼的免费额度是有限的。设置 requests_per_minute tokens_per_minute ,可以确保即使你的 Skill 出现死循环,也不会在几分钟内耗尽月度额度。

skills.yaml 的实战编写技巧 Skills 不是简单的 prompt,而是带有输入校验、错误处理和状态追踪的微型服务。以下是一个“金融日报生成”Skill 的完整定义:

# skills.yaml
skills:
  generate_financial_daily:
    description: "根据指定日期的财经新闻摘要,生成一份结构化的金融日报"
    # 输入参数定义,OpenClaw 会自动做类型校验和必填检查
    input_schema:
      type: object
      properties:
        date:
          type: string
          format: date
          description: "报告日期,格式为 YYYY-MM-DD"
        news_summary:
          type: string
          description: "当日财经新闻的简要摘要,不超过2000字"
      required: [date, news_summary]

    # 执行逻辑:定义了完整的任务链路
    steps:
      # Step 1: 用本地模型做初步摘要和关键词提取(快、便宜)
      - name: extract_keywords
        provider: local_ollama
        prompt: |
          你是一个专业的财经编辑。请从以下新闻摘要中,提取出最重要的5个关键词,并用逗号分隔。
          新闻摘要:{{ .input.news_summary }}
        output_key: keywords

      # Step 2: 用百炼模型做深度分析和报告撰写(准、贵)
      - name: write_report
        provider: aliyun_bailian
        # 使用 Jinja2 模板,将上一步的输出注入到新 prompt 中
        prompt: |
          你是一位资深的金融分析师。请基于以下信息,撰写一份专业的《{{ .input.date }} 金融日报》。
          【核心关键词】:{{ .steps.extract_keywords.output }}
          【原始新闻】:{{ .input.news_summary }}
          报告要求:
          - 分为“宏观政策”、“市场动态”、“行业焦点”、“风险提示”四个章节
          - 每个章节用 3-5 句话概括,语言简洁专业
          - 最后给出 1 条明日重点关注事项
          - 严格以 JSON 格式输出,包含 title, sections, tomorrow_focus 三个字段
        # 强制要求百炼返回 JSON,便于程序解析
        response_format: json_object
        output_key: report_json

      # Step 3: 本地模型做最终润色(保证风格统一)
      - name: polish_report
        provider: local_ollama
        prompt: |
          你是一个文字校对专家。请对以下金融日报 JSON 进行润色,使其语言更符合中文财经媒体的报道风格,但不要改变任何事实和数据。
          {{ .steps.write_report.output }}
        output_key: polished_report

    # 输出定义:告诉 OpenClaw 这个 Skill 最终返回什么
    output_schema:
      type: object
      properties:
        date:
          type: string
        report:
          type: string
        execution_time_ms:
          type: number

这个 Skill 展示了 OpenClaw 的核心价值: 它不是一个单次调用的 API,而是一个可编程的工作流。 每一步都可以选择不同的模型、不同的 prompt、不同的输出格式,并且上一步的输出会自动成为下一步的输入。这才是真正的“智能体”(Agent),而不是“智能接口”(API)。

3.3 本地部署全流程:从下载到守护进程的每一步

现在,让我们把理论付诸实践。整个过程分为 5 个原子步骤,每个步骤都有其不可替代的作用。

步骤 1:获取 OpenClaw 源码并切换到稳定分支 OpenClaw 的 main 分支是开发版,充满了未测试的新特性。对于生产环境,我们必须使用经过社区验证的稳定版。截至 2024 年底, v2024.12.0 是最稳定的 release。

# 创建一个专用的工作目录
mkdir -p ~/openclaw-deploy && cd ~/openclaw-deploy

# 使用 git clone 获取源码(不要用 GitHub Desktop,它有时会忽略子模块)
git clone --branch v2024.12.0 --single-branch https://github.com/openclaw/openclaw.git

# 进入目录
cd openclaw

# 初始化子模块(OpenClaw 依赖一些外部库,如 prompt-toolkit)
git submodule update --init --recursive

步骤 2:创建 Python 虚拟环境并安装依赖 永远不要在系统 Python 环境里安装任何东西。这是 macOS 上 Python 项目崩溃的头号原因。

# 使用系统自带的 python3 创建 venv(不推荐用 brew python,它会引入额外的 dylib 依赖)
python3 -m venv .venv
source .venv/bin/activate

# 安装 OpenClaw 的核心依赖
pip install --upgrade pip
pip install -r requirements.txt

# 关键:安装 OpenClaw 本身,使用 -e 参数(editable mode),这样你修改代码后无需重新安装
pip install -e .

步骤 3:配置并启动 OpenClaw 服务 现在,我们有了可执行的 openclaw 命令。但直接在终端里运行 openclaw serve 是不可靠的——一旦你关闭终端,服务就停止了。我们需要让它变成一个真正的系统服务。

首先,创建一个配置文件 config.yaml

# config.yaml
server:
  host: 0.0.0.0  # 监听所有网络接口,以便局域网访问
  port: 8000
  # 启用 CORS,允许飞书、微信等前端应用调用
  cors_origins:
    - "https://open.feishu.cn"
    - "https://qyapi.weixin.qq.com"
    - "http://localhost:3000"

logging:
  level: INFO
  file: /var/log/openclaw/openclaw.log

然后,创建一个 launchd plist 文件,让 Mac mini 在开机时自动启动它:

# 创建日志目录
sudo mkdir -p /var/log/openclaw
sudo chown $(whoami) /var/log/openclaw

# 创建 plist 文件
cat > ~/Library/LaunchAgents/com.openclaw.service.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.openclaw.service</string>

  <key>ProgramArguments</key>
  <array>
    <string>/Users/$(whoami)/openclaw-deploy/openclaw/.venv/bin/python</string>
    <string>-m</string>
    <string>openclaw.cli</string>
    <string>serve</string>
    <string>--config</string>
    <string>/Users/$(whoami)/openclaw-deploy/openclaw/config.yaml</string>
  </array>

  <key>RunAtLoad</key>
  <true/>

  <key>KeepAlive</key>
  <true/>

  <key>StandardOutPath</key>
  <string>/var/log/openclaw/openclaw.log</string>

  <key>StandardErrorPath</key>
  <string>/var/log/openclaw/openclaw.log</string>

  <key>EnvironmentVariables</key>
  <dict>
    <key>PYTHONPATH</key>
    <string>/Users/$(whoami)/openclaw-deploy/openclaw</string>
  </dict>
</dict>
</plist>
EOF

# 加载并启动服务
launchctl load ~/Library/LaunchAgents/com.openclaw.service.plist
launchctl start com.openclaw.service

步骤 4:验证服务是否健康运行 不要相信“没有报错就是成功”。必须进行三重验证:

  1. 检查进程是否存在

    ps aux | grep openclaw
    # 应该看到一个 python 进程,其命令行包含 "openclaw.cli serve"
    
  2. 检查日志是否有初始化成功信息

    tail -f /var/log/openclaw/openclaw.log
    # 正常启动后,最后一行应该是 "INFO     uvicorn.error: Started server process"
    
  3. 用 curl 发送一个健康检查请求

    curl -X GET http://localhost:8000/health
    # 返回 {"status": "healthy", "timestamp": "..."} 即为成功
    

步骤 5:配置反向代理(可选但强烈推荐) 直接访问 http://192.168.1.100:8000 很不优雅。我们用 macOS 自带的 nginx (通过 Homebrew 安装)做一个反向代理,让它监听 http://openclaw.local

# 安装 nginx
brew install nginx

# 编辑 nginx 配置
sudo nano /opt/homebrew/etc/nginx/nginx.conf
# 在 http {} 块内,添加以下 server 块:
server {
    listen 80;
    server_name openclaw.local;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# 启动 nginx
sudo brew services start nginx

# 最后,在你的 Mac 的 /etc/hosts 文件里添加一行:
# 127.0.0.1 openclaw.local
# 这样,你在浏览器里输入 http://openclaw.local,就能访问 OpenClaw 了。

4. 实操过程与核心环节实现:云端/本地混合部署及百炼 API 的深度集成

4.1 百炼 API 的注册、配置与密钥安全实践

在阿里云官网开通百炼服务,本身是标准流程。但真正的难点在于: 如何让 OpenClaw 安全、高效、合规地使用它。 这里没有捷径,只有细节。

第一步:创建最小权限的 AccessKey 绝不要使用你的主账号 AccessKey!这是云安全的第一铁律。你应该创建一个专门用于 OpenClaw 的 RAM 用户,并为其授予最小必要权限。

在阿里云 RAM 控制台:

  • 创建用户: openclaw-prod
  • 附加策略:自定义一个策略,内容如下(JSON 格式):
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "dashscope:ListModels",
            "dashscope:CallModel"
          ],
          "Resource": "*"
        }
      ]
    }
    
    这个策略只允许调用模型和查看模型列表,禁止了所有其他操作(如删除模型、管理账单、访问 OSS 存储桶)。权限越小,风险越低。

第二步:在 OpenClaw 中配置百炼 Provider 回到 providers.yaml ,我们之前已经写了 aliyun_bailian 的骨架。现在,你需要将上一步创建的 AccessKey 的 AccessKey ID AccessKey Secret ,分别存入 macOS 钥匙串。

# 将 AccessKey ID 存入钥匙串
security add-internet-password -s dashscope.aliyuncs.com -a "AK_ID" -w "your_actual_ak_id_here"

# 将 AccessKey Secret 存入钥匙串(注意,这里是 Secret,不是 ID)
security add-internet-password -s dashscope.aliyuncs.com -a "AK_SECRET" -w "your_actual_ak_secret_here"

然后,修改 providers.yaml 中的 aliyun_bailian 配置:

aliyun_bailian:
  type: openai
  config:
    base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
    model: qwen3-72b-chat
    # 从钥匙串读取 AK ID 和 Secret,并拼接成标准的 Bearer Token
    api_key: ${KEYCHAIN:AK_ID}:${KEYCHAIN:AK_SECRET}
    extra_headers:
      X-DashScope-OssResourceResolve: "true"

OpenClaw 的 ${KEYCHAIN:xxx} 语法会自动将两个密码项拼接,并在 HTTP 请求头中设置为 Authorization: Bearer <AK_ID>:<AK_SECRET> 。这是百炼 API 所要求的认证方式。

第三步:百炼模型的选型与性能压测 百炼提供了多个 Qwen3 版本,选择哪个?这需要实测。

模型名称 上下文长度 免费额度(每月) 实测平均响应时间(1000字输入) 适用场景
qwen3-0.5b-chat 32K 100 万 tokens 1.2s 快速问答、简单摘要
qwen3-7b-chat 128K 50 万 tokens 4.8s 中等复杂度任务、代码生成
qwen3-72b-chat 128K 10 万 tokens 18.5s 高精度分析、长文档理解、金融报告

结论很清晰: 不要迷信“越大越好”。 对于 OpenClaw 的大多数 Skill, qwen3-7b-chat 是最佳平衡点。它既有足够的能力处理复杂任务,又有相对可控的响应时间和成本。 qwen3-72b-chat 应该只作为 fallback critical_path 的专属模型,比如“生成董事会决议草案”这种不能出错的任务。

你可以用 OpenClaw 自带的 benchmark 命令进行压测:

# 测试本地 Ollama 模型
openclaw benchmark --provider local_ollama --model qwen3:7b --input "Hello, world!" --count 10

# 测试百炼模型
openclaw benchmark --provider aliyun_bailian --model qwen3-7b-chat --input "Hello, world!" --count 10

它会输出详细的 P50/P90/P99 延迟和成功率,这是你做决策的唯一依据。

4.2 OpenClaw Skill 的开发与调试:从“Hello World”到金融分析

开发一个 Skill,本质上是在编写一个微型的、声明式的微服务。我们以一个最简单的 “Hello World” Skill 为例,走通整个开发闭环。

1. 创建 Skill 文件 skills/ 目录下,新建一个文件 hello_world.yaml

# skills/hello_world.yaml
skills:
  hello_world:
    description: "一个最简单的问候 Skill"
    input_schema:
      type: object
      properties:
        name:
          type: string
          description: "你的名字"
      required: [name]
    steps:
      - name: greet
        provider: local_ollama
        prompt: |
          你好,{{ .input.name }}!今天过得怎么样?
        output_key: greeting
    output_schema:
      type: object
      properties:
        greeting:
          type: string

2. 注册 Skill 到 OpenClaw OpenClaw 不会自动扫描 skills/ 目录。你需要在主 skills.yaml 文件中,通过 include 语句引入它:

# skills.yaml
include:
  - ./skills/hello_world.yaml
  # - ./skills/financial_daily.yaml # 其他 Skill 也在这里 include

skills:
  # 这里可以放一些全局的、不依赖外部文件的 Skill 定义

3. 重启 OpenClaw 服务 因为 skills.yaml 是在服务启动时加载的,所以每次修改后都需要重启:

launchctl stop com.openclaw.service
launchctl start com.openclaw.service

4. 用 curl 调试 Skill

curl -X POST http://localhost:8000/skills/hello_world \
  -H "Content-Type: application/json" \
  -d '{"name": "张三"}'
# 返回:{"greeting": "你好,张三!今天过得怎么样?"}

5. 进阶:开发一个“PDF 财务指标提取”Skill 这才是体现 OpenClaw 价值的地方。它需要调用外部工具(如 pdfplumber )和百炼 API。

首先,安装 pdfplumber

pip install pdfplumber

然后,创建 skills/pdf_finance.yaml

skills:
  extract_financial_metrics:
    description: "从 PDF 财报中提取关键财务指标"
    input_schema:
      type: object
      properties:
        pdf_url:
          type: string
          description: "PDF 文件的公网 URL(必须可公开访问)"
      required: [pdf_url]
    steps:
      # Step 1: 下载 PDF 并用 pdfplumber 提取纯文本
      - name: download_and_extract_text
        # OpenClaw 支持自定义 Python 函数作为 Step
        type: python
        function: |
          import requests
          import pdfplumber
          from io import BytesIO

          def run(input_data):
              # 下载 PDF
              response = requests.get(input_data['pdf_url'])
              response.raise_for_status()
              
              # 提取文本
              text = ""
              with pdfplumber.open(BytesIO(response.content)) as pdf:
                  for page in pdf.pages:
                      text += page.extract_text() or ""
              
              return {"full_text": text[:10000]} # 截断,避免超长
        output_key: extracted_text

      # Step 2: 将

更多推荐