乱码三千 – 分享实用IT技术

乱码三千 – 码出一个新世界


  • 首页

  • 归档

  • 搜索

如何配置 OpenClaw 自动切换大模型

发表于 2026-04-17

前言

我目前主要使用免费大模型训练智能体,免费模型每天都有 API 调用额度限制,我希望其中一个模型额度用尽时可以自动切换模型。

很方便的是,OpenClaw 原生就支持额度耗尽自动降级。你只需要配置好 fallbacks(回退模型链),系统会在检测到 429、额度不足或 API 错误时自动切换。

基础配置

编辑配置文件 ~/.openclaw/config.json5,设置主模型和备用模型顺序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"agents": {
"defaults": {
"model": {
"primary": "openai/gpt-4o", // 主模型
"fallbacks": [
"openai/gpt-4o-mini", // 备用1
"google/gemini-2.0-flash" // 备用2
],
"fallbackPolicy": {
"maxRetries": 2, // 重试次数
"notifyOnFallback": true // 切换时通知
}
}
}
}
}

触发条件:当主模型返回 insufficient_quota(额度用尽)、rate_limit(限频)或网络超时时,会自动按顺序尝试 fallbacks 中的模型。

进阶配置:多 Key 轮换(防限流)

如果你有多个同款模型的 API Key,可以在同一模型下配置多个认证(auth profiles),系统会优先在内部轮换 Key,实在不行才切模型:

1
2
3
# 添加多个 OpenAI Key(同模型不同账号)
openclaw auth add openai --name key2
openclaw auth add openai --name key3

策略:Key1 被限流 → 自动用 Key2 → Key3 → 都不可用 → 切到 fallback 模型。

验证配置

配置完成后,执行以下命令查看状态:

1
2
openclaw models status      # 查看当前模型链
openclaw models list # 查看已配置的模型

建议:把你的主力模型(如 GPT-4o)设为主模型,把便宜/免费的模型(如 GPT-4o-mini、Gemini Flash)设为 fallback,这样既能保证质量,又能在额度见底时无缝降级。

兜底方案:之 GIT 同步

假设 openclaw 部署在第三方云端机器上,你无法通过终端控制远程机器,只能利用 openclaw 来操控服务器的所有配置。

为了防止不小心将所有模型的额度都用尽导致无法与服务器建立联系,此时我们需要一个兜底方案,那就是将配置文件乃至整个 openclaw 目录交由 Git 仓库托管,当极端情况出现的时候,我们可以在本地修改配置文件然后同步到云端服务器,从而恢复与龙虾的对话。

  1. 首先在 GitHub 或者 Gitee 上创建一个新仓库。
  2. 然后在大模型额度用尽前让智能体把需要同步的目录上传到新仓库中,同时创建定时任务,每分钟从 Git 仓库拉取最新文件:
1
2
3
4
# 编辑 crontab
crontab -e
# 添加一行(每分钟检查一次)
* * * * * cd /home/gem/workspace/agent/workspace && git pull -q origin main

在这之前需要生成专属服务器的 SSH 密钥,方便服务器对该仓库的读写操作,这一步也可以交给智能体来做。

  1. 然后在手机或者自己的电脑也安装相应的 git 工具,把仓库克隆下来,方便我们随时修改。如果你想在苹果手机上使用 GIT,推荐大家尝试一下 Working Copy 这个应用,可以免费管理一个 GIT 仓库,足够我们使用了。

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

openclaw 连接飞书机器人完整指南

发表于 2026-04-17

文档概述

本文档提供 OpenClaw 与飞书机器人集成的完整配置指南,包含本地部署、云端部署、问题排查及高级配置等全流程说明。


一、方案选择与对比

1.1 方案对比表

特性 官方飞书插件 社区版飞书插件
安装方式 需单独安装 内置,无需安装
功能范围 ✅ 完整飞书生态功能
• 基础聊天
• 文档/表格操作
• 日历管理
• 多维表格
✅ 基础功能
• 文档聊天
• 多智能体协作
多智能体协作 ✅ 支持 ✅ 支持
配置复杂度 中等 简单
适用场景 企业级应用、需操作飞书内容 快速测试、纯对话场景
版本要求 OpenClaw v0.8.0+ OpenClaw 任何版本

1.2 快速选择指南

1
2
3
4
# 如果你需要:
# 1. 仅基础聊天 → 用社区版
# 2. 操作飞书文档/日历 → 用官方插件
# 3. 不确定需求 → 从社区版开始,需要时升级

二、前置准备

2.1 环境检查

确保满足以下条件:

  • ✅ OpenClaw 已正确安装并可运行
  • ✅ 网络通畅,可访问飞书服务器
  • ✅ 拥有飞书管理员权限(创建应用需要)

2.2 飞书账号权限

权限类型 必需等级 用途说明
开发者权限 必需 创建机器人应用
应用发布权限 必需 将机器人发布到企业
安全审核权限 推荐 管理应用安全设置

三、本地部署配置(扫码方式)

3.1 安装官方插件

1
2
3
4
5
# 通过 npm 安装最新版
npx -y @larksuite/openclaw-lark install

# 或指定版本安装
npx -y @larksuite/openclaw-lark@1.2.0 install

3.2 扫码绑定流程

  1. 执行安装命令后,会显示如下信息:

    1
    2
    3
    4
    5
    6
    🔍 正在初始化飞书插件...
    📱 请使用飞书扫描下方二维码完成绑定:
    ████████████████
    ████████████████
    ████████████████
    ████████████████
  2. 使用飞书APP扫码:

    • 确保登录正确的飞书账号
    • 扫码后自动创建机器人应用
    • 自动完成权限配置
  3. 绑定成功提示:

    1
    2
    3
    4
    ✅ 飞书通道连接成功!
    机器人名称: OpenClaw助手
    企业: Your Company
    绑定时间: 2024-01-01 10:00:00

3.3 验证本地连接

1
2
3
4
5
# 验证连接状态
openclaw channels status --channel feishu

# 测试发送消息
openclaw feishu test "Hello, Feishu!"

四、云端部署配置(手动方式)

4.1 创建飞书机器人应用

方式一:快速创建(推荐)

访问专属链接:open.feishu.cn/page/openclaw

步骤:

  1. 使用企业管理员账号登录
  2. 点击”一键创建”
  3. 自动生成包含所有必需权限的应用
  4. 保存生成的 App ID 和 App Secret

方式二:手动创建

  1. 访问飞书开放平台:

    1
    https://open.feishu.cn/app
  2. 创建企业自建应用:

    • 应用名称:OpenClaw-Bot
    • 应用描述:智能助手机器人
    • 权限范围:选择”企业内部使用”
  3. 配置机器人能力:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    # 必需权限列表:
    权限名称: 获取应用信息
    权限范围: 全部
    状态: 开启

    权限名称: 获取用户基础信息
    权限范围: 全部
    状态: 开启

    权限名称: 获取用户邮箱信息
    权限范围: 全部
    状态: 开启

    权限名称: 获取用户user_id
    权限范围: 全部
    状态: 开启

    权限名称: 以应用身份读取通讯录
    权限范围: 全部
    状态: 开启

    权限名称: 获取与发送单聊、群组消息
    权限范围: 全部
    状态: 开启
  4. 发布应用:

    • 版本管理 → 创建版本
    • 申请发布 → 等待管理员审批
    • 审批通过后获取凭证

4.2 获取应用凭证

  1. 进入应用后台:

    1
    开发者后台 → 应用功能 → 凭证与基础信息
  2. 获取关键信息:

    1
    2
    3
    4
    5
    6
    7
    # 必需信息
    App ID = cli_xxxxx
    App Secret = xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

    # 可选:加密密钥
    Encrypt Key = (如有)
    Verification Token = (如有)
  3. 安全建议:

    1
    2
    3
    4
    # 将凭证保存在安全位置
    # 避免提交到版本控制系统
    export FEISHU_APP_ID="cli_xxxxx"
    export FEISHU_APP_SECRET="your_secret_here"

4.3 安装并配置插件

安装插件

1
2
3
4
5
# 如果尚未安装官方插件
npx -y @larksuite/openclaw-lark install

# 或通过 OpenClaw 安装
openclaw plugins install @larksuite/openclaw-lark

配置凭证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 方法1:通过配置文件
# 编辑 ~/.openclaw/config.yaml
channels:
feishu:
app_id: "cli_xxxxx"
app_secret: "your_secret_here"
verification_token: "" # 可选
encrypt_key: "" # 可选

# 方法2:通过环境变量
export FEISHU_APP_ID="cli_xxxxx"
export FEISHU_APP_SECRET="your_secret_here"
export FEISHU_VERIFICATION_TOKEN="your_token"
export FEISHU_ENCRYPT_KEY="your_encrypt_key"

启用插件

1
2
3
4
5
# 启用飞书通道
openclaw channels enable feishu

# 重启 OpenClaw 服务
openclaw restart

4.4 配对验证

获取配对码

  1. 进入飞书,找到刚创建的机器人

  2. 发送任意消息,例如:

    1
    2
    3
    hi
    你好
    test
  3. 机器人回复示例:

    1
    2
    3
    4
    5
    6
    7
    8
    🤖 OpenClaw: 访问未配置

    配对信息:
    用户ID: ou_4cfc4b4ed6334283a697bfe77a8cf2xx
    配对码: 7B9K

    请管理员执行以下命令完成配对:
    openclaw pairing approve feishu 7B9K

完成配对

  1. 在 OpenClaw 终端执行:

    1
    2
    # 复制上一步获取的命令
    openclaw pairing approve feishu 7B9K
  2. 成功响应:

    1
    2
    3
    4
    ✅ 配对成功!
    用户: 张三 (zhangsan@company.com)
    时间: 2024-01-01 10:00:00
    权限: 完全访问
  1. 返回飞书验证:
    1
    2
    3
    # 发送测试消息
    /help
    # 应该能收到 OpenClaw 的帮助信息

五、社区版插件使用

5.1 社区版配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 清空旧配置(如有)
openclaw config unset channels.feishu

# 2. 触发登录向导
openclaw channels login --channel feishu

# 3. 按照提示输入凭证
? 请输入 Feishu App ID: cli_xxxxx
? 请输入 Feishu App Secret: ********
? 是否需要加密验证 [y/N]: N

# 4. 验证状态
openclaw channels status --channel feishu
# 期望输出: Status: connected

5.2 版本检测

1
2
3
4
5
6
7
# 在飞书机器人对话框输入
/feishu version

# 或输入
/feishu auth
# 官方插件: 显示授权界面
# 社区插件: 提示"命令未找到"

六、连接状态检查

6.1 基础检查命令

1
2
3
4
5
6
7
8
# 查看所有通道状态
openclaw channels list

# 查看飞书通道详细状态
openclaw channels status --channel feishu --verbose

# 测试消息发送
openclaw feishu test "连接测试"

6.2 状态诊断表

状态 含义 解决方案
connected ✅ 连接正常 无需操作
disconnected ❌ 连接断开 检查凭证/网络
connecting 🔄 连接中 等待10-30秒
error ⚠️ 错误状态 查看详细日志
not_configured ⚠️ 未配置 完成配置步骤

6.3 日志检查

1
2
3
4
5
6
7
8
9
# 查看详细连接日志
openclaw --debug channels status --channel feishu

# 实时查看日志
tail -f ~/.openclaw/logs/feishu.log

# 常见日志位置
# Linux/macOS: ~/.openclaw/logs/
# Windows: %APPDATA%\.openclaw\logs\

七、常见问题排查

7.1 连接问题

问题:收不到配对码

可能原因及解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 检查应用是否已发布
# 访问飞书开发者后台 → 应用发布状态
# 确保状态为"已启用"

# 2. 检查网络连接
ping open.feishu.cn
# 应能正常ping通

# 3. 重置配置
openclaw config unset channels.feishu
openclaw config set channels.feishu.app_id "你的AppID"
openclaw config set channels.feishu.app_secret "你的Secret"
openclaw channels restart feishu

问题:配对码无效/过期

解决步骤:

  1. 配对码有效期为 5分钟
  2. 重新在飞书发送消息获取新配对码
  3. 确保执行配对命令的 OpenClaw 实例是同一个

7.2 权限问题

权限检查清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 必需权限配置
required_permissions:
- contact:user.basic:readall # 读取用户基础信息
- contact:user.employee_id:readall # 读取员工号
- contact:user.email:readall # 读取用户邮箱
- im:message:send_as_bot # 发送消息
- im:message:send # 接收消息
- im:message:read_users # 读取用户消息

# 按需开启权限
optional_permissions:
- drive:drive:readonly # 云文档读取
- calendar:calendar:readonly # 日历读取
- sheets:spreadsheet:readonly # 表格读取

7.3 消息问题

机器人能收不能发

检查步骤:

1
2
3
4
5
6
7
8
# 1. 检查机器人是否加入会话
# 飞书要求机器人必须被@或加入群聊才能主动发消息

# 2. 检查消息频率限制
# 飞书限制:单聊 5条/秒,群聊 20条/秒

# 3. 检查内容安全
# 部分内容可能被飞书安全策略拦截

消息延迟高

优化建议:

1
2
3
4
# 调整消息处理参数
openclaw config set channels.feishu.concurrency 10
openclaw config set channels.feishu.timeout 30
openclaw config set channels.feishu.retry_attempts 3

八、高级配置

8.1 多环境配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 配置文件示例:~/.openclaw/config.yaml
channels:
feishu:
# 生产环境
production:
app_id: "cli_prod_xxxx"
app_secret: "${FEISHU_PROD_SECRET}"
enabled: true

# 测试环境
staging:
app_id: "cli_test_xxxx"
app_secret: "${FEISHU_TEST_SECRET}"
enabled: false

# 开发环境
development:
app_id: "cli_dev_xxxx"
app_secret: "${FEISHU_DEV_SECRET}"
enabled: false

8.2 安全增强配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
security:
# 启用消息加密
encryption: true
encrypt_key: "${FEISHU_ENCRYPT_KEY}"

# IP白名单
ip_whitelist:
- "127.0.0.1"
- "192.168.1.0/24"

# 访问令牌刷新
token_refresh: 7200 # 2小时刷新一次

# 审计日志
audit_log: true
log_path: "/var/log/openclaw/audit.log"

8.3 性能调优

1
2
3
4
5
6
7
8
9
10
11
12
13
# 调整并发数
openclaw config set channels.feishu.concurrency 20

# 设置超时时间
openclaw config set channels.feishu.timeout 60

# 启用消息缓存
openclaw config set channels.feishu.cache.enabled true
openclaw config set channels.feishu.cache.ttl 300

# 连接池配置
openclaw config set channels.feishu.connection_pool.min 5
openclaw config set channels.feishu.connection_pool.max 50

8.4 监控与告警

1
2
3
4
5
6
7
8
9
# 启用健康检查
openclaw config set channels.feishu.health_check.enabled true
openclaw config set channels.feishu.health_check.interval 30

# 配置告警
openclaw config set channels.feishu.alerts.enabled true
openclaw config set channels.feishu.alerts.webhook "https://hooks.slack.com/..."
openclaw config set channels.feishu.alerts.thresholds.error_rate 0.1
openclaw config set channels.feishu.alerts.thresholds.latency 1000

九、故障排查流程图

graph TD
    A[连接出现问题] --> B{能收到配对码吗?}

    B -->|能| C[执行配对命令]
    C --> D[配对成功?]
    D -->|是| E[✅ 连接成功]
    D -->|否| F[检查网络连接]
    F --> G[网络正常?]
    G -->|是| H[检查凭证有效期]
    G -->|否| I[修复网络问题]
    H --> J[凭证有效?]
    J -->|是| K[检查飞书应用状态]
    J -->|否| L[重新获取凭证]

    B -->|不能| M{终端显示二维码?}
    M -->|是| N[用飞书扫码]
    M -->|否| O[检查App ID/Secret]
    O --> P[凭证正确?]
    P -->|是| Q[检查应用权限]
    P -->|否| R[重新获取凭证]

    N --> E
    R --> S[重新配置]
    S --> B

    K --> T[应用已发布?]
    T -->|是| U[检查机器人是否在会话中]
    T -->|否| V[发布应用]
    U --> W[在会话中?]
    W -->|是| X[查看详细错误日志]
    W -->|否| Y[将机器人加入会话]

    X --> Z[根据错误码处理]

    classDef success fill:#d4edda,stroke:#155724
    classDef warning fill:#fff3cd,stroke:#856404
    classDef danger fill:#f8d7da,stroke:#721c24
    classDef info fill:#d1ecf1,stroke:#0c5460

    class E success
    class F,G,H,I,J,K,L warning
    class M,N,O,P,Q,R danger
    class S,T,U,V,W,X,Y,Z info

十、附录

10.1 错误代码表

错误码 含义 解决方案
99991661 应用未启用 在飞书后台发布应用
99991664 权限不足 检查并添加对应权限
99991668 参数错误 检查 App ID/Secret 格式
99991669 请求过于频繁 降低请求频率
99991672 用户不在会话中 将机器人加入会话

10.2 相关命令速查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 基础命令
openclaw channels list # 列出所有通道
openclaw channels enable feishu # 启用飞书通道
openclaw channels disable feishu # 禁用飞书通道
openclaw channels restart feishu # 重启飞书通道

# 诊断命令
openclaw feishu debug # 调试模式
openclaw feishu test "消息" # 测试消息
openclaw feishu webhook info # 查看webhook信息

# 配置命令
openclaw config get channels.feishu # 查看飞书配置
openclaw config set channels.feishu.app_id "xxx" # 设置App ID
openclaw config unset channels.feishu # 清除配置

10.3 资源链接

  • 飞书开放平台
  • OpenClaw 官方文档
  • 飞书插件 GitHub
  • 问题反馈
  • 社区支持

10.4 联系支持

问题类型 联系方式 响应时间
配置问题 GitHub Issues 1-2工作日
紧急故障 飞书支持群 2-4小时
功能建议 社区论坛 3-5工作日
企业支持 商务合作 1工作日

文档版本

  • 版本:v2.1
  • 更新日期:2024-12-17
  • 适用版本:OpenClaw v0.8.0+
  • 飞书插件版本:v1.2.0+

更新日志

日期 版本 更新内容
2024-12-17 v2.1 新增故障排查流程图,优化配置示例
2024-12-10 v2.0 重构文档结构,增加高级配置章节
2024-12-01 v1.0 初始版本发布

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

openclaw 如何连接飞书机器人

发表于 2026-04-17

前言

为了方便多个智能体协作,我们需要用到飞书的多智能体群聊。
OpenClaw 默认自带飞书通道,属于社区插件。
目前飞书已经开发了官方插件,功能更加强大,接下来跟大家分享一下如何快速将 OpenClaw 绑定到飞书机器人。

官方版飞书插件使用

如果你的OpenClaw 部署在本地电脑,那么可以直接使用扫码的方式:

第一步:安装官方飞书插件
在终端执行以下指令安装:

1
npx -y @larksuite/openclaw-lark install

第二步:扫码创建机器人
安装完后会在终端生成二维码,此时直接用飞书扫描该二维码即可自动创建飞书机器人并绑定会话。


如果你的 OpenClaw 部署在云端,无法获取二维码,那么需要手动配置:

  1. 前往飞书开发平台创建机器人,获取 App ID 和 App Secret。
    推荐进入 open.feishu.cn/page/openclaw?form=multiAgent 快速创建飞书机器人应用,获取 App ID 和密钥。
    图片

  2. 安装飞书插件,然后将机器人的 App ID 和 App Secret 告诉 OpenClaw,让其配置并启用飞书插件。
    图片

  3. 插件启用后,前往飞书机器人窗口发送任意消息获取配对码,如下:

1
2
3
4
5
OpenClaw: access not configured.
ou_4cfc4b4ed6334283a697bfe77a8cf2xx
Pairing code: Xxxx
Ask the bot owner to approve with:
openclaw pairing approve feishu Xxxx

图片
4. 将 openclaw pairing approve feishu Xxxx 这一行发给 OpenClaw 让其配对完即可正常聊天了。
图片
图片

关于社区版飞书插件的使用

由于 OpenClaw 自带飞书通道,无需另外安装插件,直接将机器人的 App ID 和 App Secret 发给 OpenClaw 让其自动配置即可使用。

不过社区版飞书插件功能有限,只能实现基础的聊天,无法操控飞书的文档、多维表格、日历等功能。

我们可以在飞书对话框输入 /feishu auth 如果能正常授权,则表示成功使用了官方飞书插件,社区插件是无法授权的。

社区版插件常用指令

1
2
3
4
5
6
7
8
# 1. 删除旧配置(清空凭证)
openclaw config unset channels.feishu

# 2. 重新触发登录向导
openclaw channels login --channel feishu

# 3. 重登后检查状态:
openclaw channels status --channel feishu

看到 Status: connected 即代表恢复成功。

官方插件没有重登指令,如果断线 → 先重启网关 → 无效则检查飞书后台凭证和权限 → 严禁使用 channels login 命令,如果你执行了该命令,它会尝试覆盖你的配置,导致官方插件失效。

常见问题

  1. 配置过程中断
    当我们执行npx @larksuite/openclaw-lark install 安装完插件后,紧接着就是配置飞书机器人,如果不小心中断,可以重新执行安装命令进入向导,不过这种方式会重新安装一遍比较,相对耗时,此时我们可以执行以下指令来手动配置APPID 和密钥 :
    1
    2
    3
    4
    openclaw config set channels.feishu.appId "你的飞书机器人 APPID"
    openclaw config set channels.feishu.appSecret "你的飞书机器人密钥"
    openclaw config set channels.feishu.enabled true
    openclaw config set channels.feishu.connectionMode websocket

配置完后,如果机器人发消息没反应,通常是还未将飞书插件加入允许列表,如果不想手动设置, 可以执行以下命令来自动修复问题:

1
npx  @larksuite/openclaw-lark doctor --fix

修复完后给机器人发消息就可以接收到配对码了,最后执行配指令就可以正常对话了。

日常我们也可以手动检查 openclaw.json 配文件,只要该三处设置没问题就可以正常连接了:
图片

  • plugins.allow :是否允许加载插件,未加入允许列表的插件,即便安装了也会被系统忽略
  • channels.feishu.enable 是否开启飞书通道

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

如何在Mac平台中搭建OpenClaw

发表于 2026-04-02

前言

最近OpenClaw(龙虾)比较火爆, 它实现了AI从能说到能做的转变。
在这之前,普通的AI机器人比如豆包、元宝等,仅仅会思考和聊天,然而OpenClaw 智能体不仅能聊天,还能根据我们的需求自动在电脑上做事,相当于电脑小助理,一些在电脑上机械重复性的工作流程完全可以交给它来完成。

它主要分为三部分:

  • OpenClaw: 相当于人类躯干,是大脑与手脚的宿主载体和连接体,负责信息传输和资源调度。
  • 大模型:相当于人类大脑,负责理解我们对话的意图,并做出任务规划。
  • Skill : 相当于人类得手脚,负责执行大脑下发的具体任务
    这三部分共同组成了一个完整的 AI 智能体。

具体的执行工作流如下:

  1. 感知:你输入需求,大模型解析意图。

  2. 规划:大模型判断需调用哪些 Skill。

  3. 调度:OpenClaw 激活对应的 Skill 并传递参数。

  4. 执行:Skill 完成任务(如搜索、计算)并返回结果。

  5. 反馈:OpenClaw 将结果汇总给大模型生成最终回答。

OpenClaw和ComfyUI类比理解

ComfyUI 概念 OpenClaw 对应物 核心职责
节点 (Node) Skill (技能) 原子能力。如 KSampler(出图) vs WxAuto(收文件)。
工作流 (Workflow) Agent (智能体) 连线逻辑。节点/Skill 的排列组合与数据流转。
ComfyUI 本体 OpenClaw 框架 执行引擎。负责加载节点、解析连线、调度任务、管理状态。

大模型实际上就是一个中间翻译官, 将自然语言翻译成可执行的指令。
假设我要执行一个工作流, 比如抓取当天的新闻头条, 然后总结要点, 最后邮件发送给他人。 在没有大语言模型的支持的情况下, 若按照正常的手段, 我需要依次执行三条指令, 有了大模型, 我只需要一句话就能解决。这就是模型作为大脑存在的意义之一

Openclaw 如何部署到本地电脑

第一步 安装OpenClaw

图片
Mac平台安装OpenClaw比较简单, 直接使用Homebrew工具安装即可, 如果你Mac上没有装Homebrew, 可以在命令窗口执行以下命令安装:

1
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/img/Homebrew.sh)"

有了homebrew工具后,只需一行指令搞定OpenClaw下载安装:

1
sudo curl -fsSL https://openclaw.ai/install.sh | bash

如果安装过程遇到问题, 比如出现node安装失败的情况:
图片
此时可以前往nodejs官网手动安装node:
图片
安装完后再重新执行上面的指令, 或者使用npm安装:

1
sudo npm i -g openclaw

安装成功后启动openclaw, 执行以下指令进入启动引导:

1
openclaw onboard

不懂的步骤直接选择Skip now跳过:
图片)图片
不用担心错过设置,后面可以通过openclaw config指令进行再次进入引导页,或者编辑~/.openclaw/openclaw.json配置文件手动更改相关设置

第二步 下载LLM大语言模型到本地

这里我们需要借助Ollama这个工具, 它相当于模型供应商,我们可以从Ollama上下载到各个版本的大语言模型,首先需要前往Ollama官网下载客户端:
图片

官网: 点击进入

不同版本模型能力与显存要求对照表:

显卡 推荐模型 (Ollama Pull) OpenClaw 适配性 显存占用 (约) 备注
4GB (GTX 1650) phi4-mini ⭐⭐⭐⭐ 2.5 GB 4GB 档位唯一推荐,微软官方支持工具调用
qwen2.5:1.5b ⭐⭐ 1.2 GB 能力较弱,仅限简单指令
8GB (RTX 3060/4060) qwen2.5:7b ⭐⭐⭐⭐⭐ 5 GB 主力首选,中文工具调用质量极高
llama3.1:8b ⭐⭐⭐⭐ 5.5 GB 英文逻辑更强,工具支持稳定
12-16GB (RTX 4060 Ti) qwen2.5:14b ⭐⭐⭐⭐⭐ 9 GB 体验质变,复杂任务执行更可靠
24GB+ (RTX 4090) qwen2.5:32b ⭐⭐⭐⭐⭐ 20 GB 接近 GPT-4 水平,多步规划能力强
48GB+ (双卡/专业卡) llama3.3:70b ⭐⭐⭐⭐ 40 GB 顶级推理,需极高硬件

注:使用客户端MacOS系统需要14以上, 否则无法启动
图片

除了Ollama之外还可以使用LM Studio来集成模型, 同样也支持MAC、Windows、Linux系统, 不过针对Mac只支持M芯片:
图片

以下是目前大模型 API 部署方案:

工具/平台 类型 核心功能 适用平台/门槛 对 OpenClaw 的配置说明
Text Generation WebUI 自托管 图形界面,模型管理,内置 OpenAI 格式 API 接口 Windows/Linux (需 Python)macOS 10.13+最低 8GB RAM,推荐 16GB+ 模型 ID: 任意,Base URL: http://localhost:5000/v1
LM Studio 自托管 桌面图形化,下载/加载模型,内置本地服务器 macOS 11+Windows 10+最低 8GB RAM,推荐 16GB+ Base URL: http://localhost:1234/v1密钥可留空或填 lm-studio
Ollama 自托管 命令行工具,轻量,开箱即用,社区模型多 macOS 14+Windows 10 22H2+Linux最低 8GB RAM,推荐 16GB+ Base URL: http://localhost:11434/v1密钥可留空
vLLM 自托管 生产级高吞吐推理服务器,性能极致 Linux 最佳Windows (WSL2)需高性能 GPU (A100/4090+) Base URL: http://localhost:8000/v1支持 OpenAI API 格式
SGLang 自托管 针对 LLM 提示词执行优化,推理速度快 LinuxmacOS (M 芯片)需命令行部署能力 Base URL: http://localhost:30000/v1需自行开启 OpenAI 兼容接口
node-llama-cpp 自托管 Node.js 库,可直接集成到应用中 支持 Node.js 的各平台 需自行编写服务端代码暴露 OpenAI 接口
LiteLLM 代理/桥接 将 100+ 个模型 API 统一转为 OpenAI 格式 支持 Python 的各平台 Base URL: http://localhost:4000需用 Python 启动代理服务
Groq / Together AI 云端 极速 LPU 推理,低延迟,按量付费 全平台 (需网络) Base URL: 官方地址密钥: 在平台申请
DeepSeek / 通义等 云端 国产模型,有免费额度,网络稳定 全平台 (需网络) Base URL: 官方地址密钥: 在平台申请

第三步 安装Skill技能

技能越多意味着能干的活越多, 以查询天气技能为例:

  1. 首先查询技能

    1
    openclaw skills search "weather"
  2. 然后安装技能

    1
    openclaw skills install "weather"
  3. 最后使用技能
    可以直接和龙虾对话查询天气,当然技能的安装其实也可以交给龙虾来干

关于skills指令的使用, 可以通过openclaw skills --help 来查看:
图片

目前可安装的技能高达几万个,我们可以在clawhub查询到:
图片

openclaw微信集成

  1. 安装微信插件

    1
    sudo openclaw plugins install "@tencent-weixin/openclaw-weixin@latest"

    插件安装完毕后执行sudo openclaw gateway restart重启openclaw

  2. 开启插件

    1
    sudo openclaw config set plugins.entries.openclaw-weixin.enabled
    1. 微信扫码登录

      1
      sudo openclaw channels login --channel  openclaw-weixin

      图片
      直接使用微信扫一扫该二维码即可建立连接,并生成ClawBot窗口:
      图片

如果出现微信掉线情况,无需重新安装插件,只要执行以下命令重登即可

1
openclaw channels login --channel openclaw-weixin

openclaw飞书集成

具体可参见文章《openclaw 如何连接飞书机器人》

OpenClaw 使用成本

OpenClaw 本身是开源免费的,唯一需要投入的成本就是算力,也就是电脑硬件和电费,尤其是本地模型的处理,对显卡和内存要求较高。
如果使用云端模型,通过 API 调用的方式,可以减轻电脑的压力,普通办公电脑即可流畅使用 OpenClaw ,但是需要向云端厂商支付 token 费用,这一块的成本相对较大。

OpenClaw 成本明细表如下:

投入类别 具体项目 成本说明 参考价格(人民币)
核心变动成本 大模型 API 按 Token 消耗计费,重度使用极易超支 轻度:¥50–200/月
重度:¥2000–10000+/月
基础设施 云服务器/VPS 如需 24h 在线需租用 ¥35–150/月
本地专用机 Mac mini 或 NUC 等一次性投入 ¥3000–6000
隐性成本 部署服务 非技术用户找人代装/配置 远程:¥30–50/次
上门:¥500–1500/次
电力与运维 本地设备长期开机、故障排查 视设备功耗而定

电脑配置

想要本地流畅使用OpenClaw ,硬件配置一定要跟上,以下是台式组装电脑配置参考表:

配件 推荐型号 参考价 选型理由
显卡 (GPU) RTX 5060 Ti 16G (七彩虹/华硕 双风扇) ¥4000 核心:必须 16G 显存,跑 14B 模型才不爆显存
CPU Intel i5-14400F (散片) ¥1200 10 核 16 线程,喂饱显卡无压力,性价比极高
主板 B760M D4 (铭瑄/微星/技嘉等) ¥700 供电够用,接口齐全,省钱首选
内存 32GB DDR4 3200 (16G×2) ¥1600 OpenClaw 多开浏览器 Agent 吃内存,32G 是底线
硬盘 1TB NVMe SSD (PCIe 4.0) (致态) ¥1000 模型加载和日志写入需要高速固态
电源 650W 铜牌 (长城/酷冷) ¥300 4060 Ti 功耗不高,但留余量更稳
机箱 百元级侧透中塔 ¥100 散热达标即可
散热 利民 AX120 R SE ¥80 压制 i5-14400F 绰绰有余
合计 约 8980 元 该配置流畅跑qwen2.5:14b模型

注:条件允许的情况下,显卡优先考虑全新盒装而不是拆机工包,七彩虹和华硕显卡,谁便宜选谁,同价位选华硕。

总结

大模型本身是不具备实时查询天气和新闻的能力, 豆包之所以可以查询, 其实是内部配备了相应的Skill,因此, 我们搭建OpenClaw的就相当于在组装一个属于自己的豆包,而且还是会帮我们干活的豆包

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

在线Markdown编辑器正式上线啦

发表于 2025-10-25

前言

我个人用markdown写作居多, 偶尔外出时灵感爆发需要记录一些内容, 如果使用第三方工具, 比如有道云、掘金等, 其实也能实现需求

不过最大的问题还是在于数据迁移不方便, 尤其是日积月累数量越来越多, 万一哪天平台倒闭, 这些数据我还得手动一一拷贝出来?

长痛不如短痛, 为了解决数据存储的痛点, 决定自己开发一个markdown编辑器

纯静态网站, 数据可自定义存放于本地或者第三方GIT仓库, 支持多点存储, 确保数据长久稳定

网站最终长这样:

image-20251025221102259

image-20251025221122554

功能实现

  • 数据导入导出(支持单个或者批量导出, 支持导出成html和pdf格式)

  • 数据自定义存储(本地、Github、Webdav等, 支持多点存储)

  • 文档分类(文件夹功能)

  • 数据加密存储(可文明可加密)

  • 历史版本回退(支持本地数据和远程数据的回退)

  • 配置文件的导入导出

  • 网站纯本地运行 不涉及第三方后台 安全性高

  • 自定义文档模板

  • 支持图床功能(Github、Gitee等图床)

网站部署

直接将该仓库的代码上传到你自己的静态服务器上即可使用

网站示例: 点击进入

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

密码管理工具站正式上线啦

发表于 2025-10-12

前言

互联网时代要存储的密码实在太多, 脑袋压根记不过来, 只能借助外物, 比如存到便签里, 或者建一个Excel表格, 但是存在两个问题, 那就是安全性和便捷性不够

我的要求是随时随地都能查看、编辑、保存和新增密码, 无论是外出还是在家, 也不管是使用电脑还是手机, 可以进行无缝切换

其实苹果自带的密钥就很好用, 但是局限于苹果设备, 万一哪天换安卓了, 就很尴尬, 虽然支持云端存储, 但是不能导出到本地, 安全性和便捷性还是不足

便签的话更不用说了, 明文显示, 安全性极差

既然存到第三方平台不放心, 那就存本地好了, 比如本地自建Excel表格, 然后再进行加密压缩, 这样一来多端即时同步又是一个大麻烦, 每次有更新难不成都要手动拷贝替换一下?

为了解决以上的痛点, 于是乎, 我决定自己手搓一个密码管理器, 数据还是交给自己掌控最放心

目前工具已经上线, 欢迎大家来使用, 点击使用工具

密码管理器功能

  • 纯本地编辑, 不涉及第三方, 安全性高
  • 数据加密存储, 可自定义存放到本地、Github仓库、Webdav等, 支持多点存储
  • 数据导入导出(支持密文或者明文导出, 明文json格式)
  • 数据历史版本回退
  • 数据分类功能
  • 配置文件导入导出
  • Web跨平台形式, 有网就能用, 使用便捷(后期会逐步增加本地App)
  • 浏览器书签管理功能, 支持谷歌/搜狗浏览器书签导入

密码管理器使用

  1. 开启密码管理器, 输入密码

    这个密码需要牢记在心, 用于加密和解密数据

    image-20251013215328895

  2. 添加密码

    首次进入是没有数据的, 需要新增

    image-20251013215518471

    image-20251013215603826

    image-20251013215634839

  3. 进行存储配置

    新增的密码只是临时存放在本地浏览器, 你一旦换设备数据就会丢失, 我们需要配置一个存储源用于存放我们的密码数据

    这里我推荐使用Github仓库, 借助Git, 对于历史版本管理, 有着天然的优势

    我们需要在存储配置选项中, 选择Github作为存储源, 并设置仓库地址和访问token

    image-20251013220208898

    image-20251013220332714

    关于token(访问令牌)获取, 可以到你们自己的Github设置页面中生成, 这里就不再赘述:

    image-20251013220731282

  4. 密码数据同步

    配置到存储源后, 点击同步按钮即可将数据存储到你指定的仓库中:

    image-20251013221013054

    这里同步的数据是AES加密后的数据, 配合私有仓库, 安全性大大滴有😜

  5. 历史版本回退

    这个功能目前只支持Github仓库, 具体如下:

    image-20251013222314248

  6. 密码数据的导入导出

    image-20251013222649947

    所谓马有失蹄时 狡兔三窟, 假如哪天忘记了管理器的登录密码, 或者是需要修改登录密码怎么办, 数据岂不是无法解密了

    导入导出功能为的就是解决这个问题, 一方面是为了多地存储, 万一哪天Github崩了呢, 这也不是没有可能的事, 多备份几次总是没有错的, 当然后期我也会增加多点存储功能, 这是后话

    另一方面, 当我们需要修改密码的时候, 可以提前将数据导出, 然后用新密码登录, 接着导入数据, 最后同步数据即可, 不过 这样一来历史版本的数据就无法解析了, 这个问题还没想到解决方案, 所以建议大家在使用之前先仔细斟酌好登录密码

  7. 配置导出

    网站的偏好设置以及存储源的配置信息都可以单独导出, 方便跨平台使用

网站源码

网站已开源, 大家有需要也可以自行部署

源码地址: 点击进入

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

工具百宝箱正式上线啦

发表于 2025-10-10

前言

最近开发了一个工具站点, 旨在解决自己的日常需求, 希望也能帮助到大家

网站长这样:

image-20251011113506249

image-20251011113943287

image-20251011114040623

工具百宝箱: 点击进入

工具列表

目前已经集成的工具有:

图片工具

  • 图片转Word : 将图片中的内容转换为可编辑的Word文档,支持多种图片格式。
  • 图片无损压缩 : 压缩图片大小而不损失质量,支持PNG、JPG、WEBP格式。
  • 图片尺寸调整 : 调整图片尺寸,支持保持宽高比和多种尺寸预设选项。
  • 图片添加水印 : 为图片添加文字或图片水印,保护您的版权和内容。

文本工具

  • 二维码生成 : 生成自定义二维码,支持文本、URL、联系方式等多种内容。
  • PDF工具包 : PDF合并、分割、压缩和转换工具。
  • LRC转SRT : 将LRC歌词文件转换为SRT字幕文件。
  • 文本加密解密 : 使用AES算法加密和解密文本内容。
  • HTML压缩工具 : 将HTML代码压缩成一行,减少文件大小,提高加载速度。
  • 短链生成 : 将长URL转换为短链接,方便分享和使用。

音频工具

  • 歌曲BPM计算器 : 通过敲击空格键或点击按钮计算歌曲的每分钟节拍数(BPM)。
  • 混响时间计算器 : 根据BPM计算房间、板式和厅堂混响的预延迟和混响时间参考值。
  • 释放时间计算器 : 根据BPM值计算常见乐器的压缩释放时间参考值。
  • 音乐发行查询 : 查询歌曲在全球音乐平台的发行情况。

视频工具

  • m3u8视频下载 : 下载m3u8视频流并转换为MP4格式,支持批量下载。
  • 视频转换 : 转换视频格式,支持MP4、AVI、MOV等格式。
  • 在线直播 : 输入直播链接,实时观看在线直播内容。
  • 在线看电视 : 观看国内各大电视频道的直播内容。

其他工具

  • 复利计算器 : 计算复利投资收益,帮助您做出更明智的投资决策。
  • 复利逆推计算器 : 根据本金、最终资产和时间,计算年化收益率。
  • 每日新闻 : 浏览当日最新新闻简讯,了解时事动态。
  • 工作流系统 : 创建和管理自动化工作流程,可视化任务编排。
  • FC在线游戏 : 重温经典FC游戏,包含超级玛丽、魂斗罗等多款经典游戏。

总结

网站会持续更新和优化, 希望大家多多支持~

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

小霸王在线游戏机

发表于 2025-10-09

前言

童年的回忆, 闲暇之余玩一玩

在线游戏: 点击进入

image-20251010230556650

按键说明

手机端默认触屏,电脑端按键说明如下

按键 对应的电脑键盘
上 W
下 S
左 A
右 D
A J
B K
AA Z
BB X
Start Enter
Select Ctrl

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

关于分布式集群的搭建

发表于 2025-09-16

前言

如果自己购买服务器搭建分布式集群, 虽然流程繁琐, 但是成本相对可控, 不过所需服务器的数量不少, 至少7台起步, 运维压力还是有的

今天本着学习的目的, 来探讨一下搭建分布式集群的些事

服务器数量估算

针对单体应用

  • 两台服务器: 用作负载均衡
  • 两台以上服务器: 用于应用业务处理
  • 三台服务器: 其中两台用于数据库集群一主一从结构, 另外一台用作监控服务器, 出现故障时自动切换

也就是总共至少七台服务器 可实现了基础的分布式集群架构

针对微服务架构应用

  • 两台服务器: 用作负载均衡(API网关集群)
  • 十台服务器: 微服务两个组件起步, 每个微服务至少配置两台应用服务器和三台数据库服务器(一主一从一仲裁)
  • 三台服务器: 用作服务注册中心

微服务架构, 至少需要15台服务器

从单体应用改成微服务架构 服务器数据暴增 主要集中在数据库和应用上

使用托管方案

如果嫌自己购买服务器搭建集群麻烦, 那么单体应用可以考虑使用现成的高可用分布式集群全托管方案 比如阿里云SAE/ECI

它内置了负载均衡器和应用集群,我们只需要再购置一台云数据库(内含主从复制机制),然后上传开发好的程序即可

如此一来,可以大大减少运维消耗,把更多精力集中在应用本身 这是省时省力的做法

微服务架构同样也可以使用SAE来托管 除了该方案外,还有一些自由度更高的方案,比如MSE等

问题汇总

  1. 有必要给每个微服务设置独立的负载均衡器吗?

    给每个微服务都配置独立的负载均衡器是传统单体架构思维的延伸,它不仅会造成巨大的资源浪费和成本飙升,更会带来运维噩梦。微服务架构通过 统一入口 和 服务发现 机制,优雅地解决了这个问题。

    下面我通过一张图来对比两种模式的根本区别:

  2. 为了节省成本 是否可以将API网关和注册中心共用在两台服务器上?

    首先, 我们来看一下两种方案的对比图:

    除非是测试环境 或者想快速验证想法 否则 必须将API网关和注册中心分开部署, 尤其是生产环境,两台服务器部署网关+三台服务器部署注册中心是个可靠的选择

  3. 关于服务器系统的选择

    负载均衡器和数据库服务器选择CentOS,以获得最高的稳定性,应用服务器可以选择ubuntu以或者更新的软件版本

    以下是最小化配置参考, 用于项目起步阶段:

    • 两台负载均衡服务器: 系统选择centos+硬盘50g+弹性公网ip
    • 两台应用服务器: 系统选择ubuntu+硬盘80g+nat网关只进不出
    • 三台数据库: 系统选择centos+硬盘100g+完全内网 无需公网ip

成本估算

这里以一次性购买五年为例, 做一个费用估算:

  • 全托管方案: 阿里云SEA 两实例 2核2g每月600万cu消耗 折后资源包, 五年10000+数据库1核2g 硬盘80g 6600元=16600元

  • 半托管方案: 阿里云负载均衡器3504元+五台ecs5075元+带宽流量包最低450最高2100元=9029-10679元

  • 自建方案一: 七台ecs 7175元+按流量计费弹性ip+流量包450-2100=7625-9275元

  • 自建方案二: 七台ecs 7175元+2M固定带宽弹性ip1380元=8558元

  • 自建方案三: 使用DNS负载均衡, 两台各带1M带宽ecs 3653元+五台ecs 5075元=8728元

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

关于hexo文章数量过多导致编译内存不足的解决

发表于 2025-09-10

前言

文章数量过多, 执行hexo g渲染时报错, 如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<--- Last few GCs --->

[3128:0x102d59000] 3164514 ms: Mark-sweep 9136.8 (9211.6) -> 9124.1 (9213.4) MB, 4252.7 / 0.0 ms (average mu = 0.099, current mu = 0.022) allocation failure scavenge might not succeed
[3128:0x102d59000] 3168989 ms: Mark-sweep 9138.4 (9213.5) -> 9127.1 (9215.3) MB, 4402.9 / 0.0 ms (average mu = 0.056, current mu = 0.016) allocation failure scavenge might not succeed


<--- JS stacktrace --->

==== JS stack trace =========================================

0: ExitFrame [pc: 0x1009d5fd9]
1: StubFrame [pc: 0x1009d6ead]
Security context: 0x1032be4808d1 <JSObject>
2: formatAttrs [0x10326c532831] [/node_modules/dom-serializer/index.js:~22] [pc=0x13101fad4423](this=0x1032ffa02da1 <JSGlobal Object>,0x10333f9ef9e1 <Object map = 0x1032643d71d9>,0x1032fa08d281 <Object map = 0x1032643ffae9>)
3: /* anonymous */ [0x103256ce9201] [/Use...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x1011c9b35 node::Abort() (.cold.1) [/usr/local/bin/node]
2: 0x10009ca99 node::Abort() [/usr/local/bin/node]
3: 0x10009cbff node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
4: 0x1001ddb37 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
5: 0x1001ddad7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
6: 0x1003659d5 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
7: 0x10036724a v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [/usr/local/bin/node]
8: 0x100363c7c v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
9: 0x100361a7e v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
10: 0x10036d94a v8::internal::Heap::AllocateRawWithLightRetry(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
11: 0x10036d9d1 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
12: 0x10033b60a v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/usr/local/bin/node]
13: 0x10068cb88 v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/usr/local/bin/node]
14: 0x1009d5fd9 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/usr/local/bin/node]
zsh: abort hexo g

这是由于node.js内存限制导致的, 默认堆内存上限为1024MB

解决方法也很简单, 那就是加大堆内存上限, 有四种方案

解决方案

第一种 临时性配置

比如用以下命令来替代hexo g:

1
node --max-old-space-size=16384 ./node_modules/hexo/bin/hexo generate

这里--max-old-space-size属性的数值可以自定义, 我这里选择的是16G, 你也可以设置为8G, 也就是--max-old-space-size=8192, 以此类推

第二种 系统级全局配置

修改电脑上的node配置文件

  1. 第一步 打开launchd.conf配置文件

    1
    2
    # 编辑 Node.js 全局启动配置
    sudo vim /etc/launchd.conf
  2. 添加以下内容

    1
    setenv NODE_OPTIONS "--max-old-space-size=16384"
  3. 运行配置

    1
    2
    sudo launchctl load /etc/launchd.conf
    reboot # 重启生效
  4. 验证是否生效

    1
    echo $NODE_OPTIONS  # 应显示 --max-old-space-size=8192

系统级配置, 针对所有用户生效

内存大小的设置需要根据自己电脑的实际情况来定, 避免设置过高 从而导致导致系统整体性能下降

关于Mac平台的更新

由于 /etc/launchd.conf在新版macOS 中已被弃用,推荐使用以下方式:

  1. 创建或修改 launchd plist 文件(系统级)

    1
    sudo nano /Library/LaunchDaemons/com.custom.node.env.plist
  2. 添加内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?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.custom.node.env</string>
    <key>ProgramArguments</key>
    <array>
    <string>/bin/launchctl</string>
    <string>setenv</string>
    <string>NODE_OPTIONS</string>
    <string>--max-old-space-size=4096</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    </dict>
    </plist>
  3. 加载配置:

    1
    sudo launchctl load /Library/LaunchDaemons/com.custom.node.env.plist

第三种 用户级配置

通过修改环境变量的方式

  1. 编辑 shell配置文件

    1
    2
    3
    nano ~/.zshrc  # macOS Catalina 及以后版本
    # 或
    nano ~/.bash_profile # macOS Catalina 之前版本
  2. 添加以下行

    1
    2
    # 设置 Node.js 内存限制
    export NODE_OPTIONS="--max-old-space-size=4096"
  3. 使配置生效

    1
    source ~/.zshrc  # 或 source ~/.bash_profile

该配置仅对当前用户生效, 适合用户配置隔离

第四种 项目级配置(更安全)

在 Hexo 项目的 package.json中修改scripts:

1
2
3
4
"scripts": {
"build": "NODE_OPTIONS='--max-old-space-size=8192' hexo generate",
"serve": "NODE_OPTIONS='--max-old-space-size=8192' hexo server"
}

之后始终使用:

1
npm run build  # 代替 hexo generate

这算是一种一劳永逸的方案, 哪怕更换电脑也不怕, 而且进行了项目隔离, 不会影响到其他nodejs工程, 缺点是如果多个工程需要配置, 则得挨个添加

注意事项

如果运行后进程被终止, 比如报错:

1
zsh: killed     node --max-old-space-size=16384 ./node_modules/hexo/bin/hexo generate

主要原因是没有足够的物理内存 + 交换空间(swap)来满足需求,

首先运行top -o mem指令检查内存占用:

image-20250910100621554

随着node编译的进行, 我们会发现它的占用内存指标在不断上升,

iShot_2025-09-10_10.08.47

此时我们可以考虑通过关闭其他应用来给node足够的空间

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

123…51

乱码三千

android程序员一枚,擅长java,kotlin,python,金融投资,欢迎交流~

507 日志
145 标签
RSS
© 2026 乱码三千
本站总访问量次
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4
0%