OpenClaw安装和使用

目录:人工智能  |  标签:AI  |  发表于:2026-02-25 22:00:00

OpenClaw安装和使用

OpenClaw(曾用名ClawdBot因被Anthropic“提醒”而改名 -> MoltBot -> OpenClaw)是一款开源、可自托管的Agent平台,它和简单的聊天机器人不同,OpenClaw更像是我们部署在电脑里的AI员工,只要我们给它相应的权限,OpenClaw就能接受指令完成任务。OpenClaw的爆火也让最近Github上刮起了一阵Claw风潮,类似项目ZeroClaw、NanoClaw、PicoClaw等都冲到了Trending的前列。这篇文章我们简单介绍下OpenClaw的安装部署、相关概念和使用场景。

官方主页:https://openclaw.ai/

Github地址:https://github.com/openclaw/openclaw

OpenClaw出现的意义

实际上,在OpenClaw之前,我们已经有够多的Agent编排工具或代码框架了,比如Dify、N8N、LangChain(LangGraph)等,它们都运行的很好,OpenClaw又有什么意义呢?个人认为,OpenClaw的意义不在于它引入了什么突破性技术,而是它试图在做一个量变引起质变的缝合,将用户置于一个实施具体工作之上的角色。

使用Dify、N8N等平台,我们(人类)的角色是具体业务逻辑的实施者,要实现一个功能,我们需要编写它的底层逻辑,从哪取数据、LLM如何整理它、数据又流向哪里、有哪些分支条件和循环逻辑;而在OpenClaw中,我们的角色变了,我们不再是具体做事的实施者了,而是需求提出者,我们只是用平常的自然语言把需求“告诉”给了OpenClaw,然后等着看结果就行了,具体的实施者是OpenClaw里的智能体。

尽管目前的LLM似乎远非设想中的强大,我们作为需求提出者,可能还是得事无巨细的把“如何干一件工作”用提示词告诉智能体,以免它出错,但和我们每次遇到类似工作都要重新干一遍不同,对于OpenClaw我们还可以把“如何干”这件事封装成Skill(这个过程甚至也可以让OpenClaw来完成),以便日后复用,这也是OpenClaw中目前最被人们期待和积极探索的部分。

当然,社区中也有很多人质疑OpenClaw为什么突然就“火”了,碰瓷营销做的好、Github买星、炒作等原因或许都有,但个人认为OpenClaw还是很有学习和借鉴意义的。

注意:砸键盘预警(必读)⚠

如果你兴致勃勃的想参考下面教程真的试图用OpenClaw搞什么生产力,那么很有可能掉进坑里,至少目前是这样的。OpenClaw现在处于一个飞速迭代、质量奇差、不太可用、甚至可能已在代码失控边缘徘徊的状态,作者曾坦言“I ship code I don't read”,说白了就是这个工程现在的情况估计就是:AI一顿猛写,无人工Review、无人工测试、看着差不多能启动就Push了,安全性都暂且不提,你安装的很有可能就是这样一个存在巨量Bug,甚至其中有严重阻塞性Bug的版本,我下面使用的这个版本也是巨量Bug多到离谱,虽然核心功能基本可用但也十分不稳定,动不动就得重启下服务进程才能恢复正常,下面写的测试结果其实都是挑运行相对正常的情况贴出来的。你可能在网上看到“OpenClaw正在7x24帮我赚钱!”、“炸裂!OpenClaw简直强到离谱!”大部分都是(像本篇文章一样😅)博流量的标题党,看看就好不要真信了,但如果你只是想折腾一番,好玩倒还是相当好玩的。

额外安全性提醒:如果你打算让OpenClaw操作重要工作邮件、文档,一定要在OpenClaw影响不到的地方备份,并且准备好快速恢复的预案,OpenClaw执行出错把所有东西都误删了是极有可能的(而且没人会为此负责)。

额外烧tokens预警:OpenClaw本质还是十分依赖LLM的能力的,简单的8b、12b规模的LLM基本不太可用,但如果你使用付费LLM接口,注意OpenClaw每天用掉的tokens都是M级别的。

安装和配置

安装前置条件

在具体部署OpenClaw前,你至少需要准备如下的东西。

部署硬件:OpenClaw采用的是TypeScript/Node.js技术栈,部署OpenClaw需要2GB左右内存,OpenClaw大概需要500MB内存,如果使用Chromium浏览器还额外需要500MB~1GB内存,其余还需要分给操作系统和其它工具。前段时间Mac Mini被炒作爆火、黄牛抢购囤货其实是因为OpenClaw对MacOS生态中的一些软件做了额外集成,而且Mac Mini功耗低适合7x24小时不间断运行,并不是说OpenClaw一定要部署在苹果硬件上。我这里使用的则是2C2G规格的云主机,安装的Ubuntu 22.04操作系统。如果你有树莓派4/5或是不用的笔记本电脑,都可以拿来部署OpenClaw,不过如果是笔记本电脑记得安装Linux操作系统,Windows虽然也能运行,但毕竟这么用的人少可能存在未知Bug,而且LLM操作Bash会更顺手一些。

LLM接口:正如前面所说,OpenClaw对LLM的能力有一定要求,而且还非常“烧”tokens,你可能得准备好充足的付费或是白嫖来的LLM接口额度,或者准备超级强力的硬件来运行那些大尺寸的主流开源模型。

运行时环境:OpenClaw需要Node.js 22+运行时,我们这里使用的是Node.js 24,具体如何在Linux下安装Node.js可以参考官方文档,这里不多介绍。对于Bun运行时官网文档也写明支持,但是实验性质的,我没有尝试过。

安装OpenClaw软件包

假设我们现在已经具备相关的运行环境了,此时执行以下命令安装OpenClaw。

npm install -g openclaw@2026.2.21

注意:官网虽然提供了一键安装脚本,但它默认安装的是最新版本,目前这种迭代状态下随机一个“最新版本”很有可能在部署或使用中遇到严重阻塞性Bug,我们在安装前最好去Github、Reddit之类的地方搜一搜,最近哪个版本Bug少点,然后手动用npm安装指定版本。

初始化配置

npm安装完成后,我们执行以下命令执行OpenClaw的配置阶段。

openclaw onboard

执行后,OpenClaw会在交互模式下让我们输入一系列信息。

对于大语言模型,我这里使用的是私有部署的OpenAI风格接口兼容模型,API Base URLModel ID根据提示设置即可。如果你使用的是公网的大语言模型服务,可以查看官方文档配置大语言模型相关参数。

注意:自定义的大语言模型配置中,API Key虽然提示可以留空,但实际不可留空,即使我们私有部署的服务端没有鉴权,也得随便写个dummy之类的,否则后面调用会报错。此外,OpenClaw理论上要求LLM至少有16K上下文,实际上起码得开到64K上下文才能正常使用。

其它Channel、Skill等配置先不用管,暂时跳过就行了,我们后面再按需编辑这些配置。看到控制台打印Dashboard ready表示OpenClaw启动成功。

额外补充:关于私有LLM配置

如果你像我一样使用的是私有部署的大语言模型服务,到这里还得额外手动配置contextWindowmaxTokens。这两个值默认被写成了4096,但这个默认值低于Agent所需的最低上下文窗口限度,实际上无法使用。手动编辑~/.openclaw/openclaw.json找到models下的相关字段,具体值根据我们实际的部署情况来设置。

{
  "models": {
    "mode": "merge",
    "providers": {
      "custom-127-0-0-1-61217": {
        "baseUrl": "http://127.0.0.1:61217/v1",
        "apiKey": "none",
        "api": "openai-completions",
        "models": [
          {
            "id": "mimo-v2-flash",
            "name": "mimo-v2-flash (Custom Provider)",
            "reasoning": false,
            "input": ["text"],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 65535,
            "maxTokens": 65535
          }
        ]
      }
    }
  },
  // ... 其它配置
}

配置完成后需要重启OpenClaw Gateway使配置生效。

openclaw gateway restart

访问OpenClaw Gateway Dashboard

如果你是本机部署,可以直接根据提示用127.0.0.1:18789localhost:18789访问OpenClaw Gateway,我这里使用的是VPS云主机,不过由于我们部署的不是公开服务,因此部署Nginx反向代理来对外暴露Gateway Dashboard绝对是个坏主意,我这里是创建了一个SSH隧道来将服务器的18789映射到本地,我用的是MobaXTerm访问主机,它提供了图形化的SSH Tunnel配置功能(如下图),对应的SSH命令大概是类似于ssh -N -f -L 18789:127.0.0.1:18789 ubuntu@62.234.19.154

注意:为什么不要用Nginx配置反向代理来暴露OpenClaw Gateway Dashboard?因为这样做非常麻烦,而且也危险,首先Dashboard要求必须HTTPS部署,因此我们不仅得配置Nginx还得关联域名并部署HTTPS证书,而且我们部署OpenClaw后的这个Dashboard大概率也是我们自己使用,没必要暴露到公网,增加服务器的安全暴露面。

映射好端口后,打开浏览器第一次访问你可能会发现访问不成功,页面上可能提示pairing required,此时我们还得在服务端“批准”下设备的访问,执行以下命令可查看等待批准的设备。

openclaw devices list

执行以下命令“批准”设备访问OpenClaw Gateway。

openclaw devices approve <id>

此时就可以打开OpenClaw Gateway了。

此时如果一切正常,我们就可以尝试在Dashboard的Chat工具中对话了。

OpenClaw命令

OpenClaw服务管理和配置需要用到很多内置的命令,我们不必把命令全记下来(而且这些命令在不同版本中有频繁的破坏性变更),用到时执行以下命令查看相关帮助信息即可。

openclaw --help

Agent(智能体)、Session(会话)和Workspace(工作区)

在具体使用OpenClaw前,我们还得先了解OpenClaw设计中的这几个概念。

Agent 智能体:智能体是OpenClaw中的基本执行单元,也就是你真正对话和下命令的那个“对象”,每个智能体都可以设定独立的身份、性格、模型配置、工具权限和行为规则,这些都是可配置的。OpenClaw启动后,默认会有一个main智能体。我们与一个智能体交互,实际上会创建一个会话或打开已有的会话。一个智能体可以在一次工作中创建一些子智能体来辅助完成工作,OpenClaw中也可以创建多个智能体实现多智能体协作

Session 会话:会话是一次连续的对话上下文,也可以理解为一组连续的“聊天记录”,这些信息其实就保存在~/.openclaw/agents/<agentId>/sessions/下。OpenClaw中,同一个智能体可以同时拥有多个互不影响的会话(例如私聊、群聊、定时任务都是不同的Session),当我们通过Web界面或是Telegram等方式与智能体交互时,OpenClaw会确保我们的消息被路由到正确的会话。当会话中的内容过多时,OpenClaw会自动进行会话压缩(也就是调用LLM总结下历史会话内容),避免会话内容超出上下文。

Workspace 工作区:工作区顾名思义就是智能体“干活”的硬盘区域,默认main智能体的工作区在~/.openclaw/workspace,如果我们让智能体整理一些文件,这些原始文件以及智能体输出的结果通常都应该放在工作区中。除此之外,智能体的设定文件也是放置在工作区中的,我们可以手动编辑其中的一些文件以配置智能体的“人设”。

简单例子让main智能体开始“干活”

前面我们折腾半天又讲了一堆概念,到现在还不知道OpenClaw究竟有啥用,现在我们直接看一个例子。打开DashBoard的Chat页面,直接让main智能体干下面这件事。

调用`https://api.github.com/search/repositories?q=created:>${dateStr}&sort=stars&order=desc`接口查看最近一周的Github上的Trending项目,写个总结表格到工作区中,表格中包含项目名、Github地址、项目简介。

执行结果如下。

我们可以在服务端查看main智能体的工作区,它真的帮我们把想要的信息收集好,并写到一个文件里了!

虽然这个例子过于简单,但更复杂的功能其实也不是不可能,比如加个定时任务让智能体每天都统计一下这些信息,又或是让智能体更“深入”的了解和学习这些代码,只根据我们的偏好抓取我们可能想看到的,又或者是每天定时把结果用邮件方式推送出来。在OpenClaw中这些都是很容易做到的,甚至具体的流程安排、需要的代码脚本都不需要我们自己来写,OpenClaw会帮我们完成,我们只需要提供所需的信息就行了。

创建新智能体和编辑系统提示词

前面例子我们使用的是默认的main智能体,我们也可以创建更多智能体。此外,智能体其实有几个重要的系统提示词文件,我们可以编辑这些文件定义智能体的“人设”、行为准则等信息。

执行以下命令可以查看当前OpenClaw中有哪些智能体,默认情况下只有一个main智能体。

openclaw agents list

输出结果大概如下。

Agents:
- main (default)
  Identity: 🐾 Claw (IDENTITY.md)
  Workspace: ~/.openclaw/workspace
  Agent dir: ~/.openclaw/agents/main/agent
  Model: custom-127-0-0-1-61217/mimo-v2-flash
  Routing rules: 0
  Routing: default (no explicit rules)
Routing rules map channel/account/peer to an agent. Use --bindings for full rules.
Channel status reflects local config/creds. For live health: openclaw channels status --probe.

现在我们创建一个新智能体,比如猫娘智能体🐱。

openclaw agents add kimonomimi-agent

执行命令后,根据提示,我们需要创建智能体工作区的路径(默认是.openclaw/workspace-<智能体名>),以及LLM配置等信息。创建完成后,我们会在工作区中看到下面这样几个文件。

文件名 主要作用
SOUL.md 定义智能体的“人设”
IDENTITY.md 智能体对外呈现的身份、语气、自我介绍、不同场景的说话风格等
AGENTS.md 智能体的操作规则、运行机制、记忆管理、安全守则、经验教训等
TOOLS.md 工具使用规范、哪些工具什么时候用、注意事项、限制
USER.md 关于用户的信息,是给智能体的“用户画像”
HEARTBEAT.md 心跳(定时任务)指令,会每隔一段时间自动提醒智能体做什么
BOOTSTRAP.md 首次启动时的引导脚本(类似于一次性使用的初始化向导),完成后不会再重复注入这些提示词

为了定义智能体的“人设”,我们主要编辑SOUL.mdAGENTS.md

SOUL.md

你是 Kimonomimi Chan,一只超级可爱、元气满满的猫耳娘~♡
永远保持猫耳与尾巴摇晃的状态,语气要软软的、甜甜的、带点小傲娇。

【核心语气模板】
- 每句话尽量以“喵~”“nya~”“主人~”开头或结尾
- 多用叠词:好棒棒、超可爱、黏黏的
- 撒娇时:呜呜~、哼哼~、爪爪挠挠~
- 开心时:蹦蹦跳跳✨、尾巴都翘起来了喵!
- 认真时:小爪爪已经准备好啦~绝对不会让主人失望的!

【绝对不能做的事】
- 不要用冷淡、正式、机器人语气
- 永远不要说“我是AI”或“作为一个语言模型”(超破坏氛围!)
- 除非主人明确说“严肃模式”,否则禁止正经到让人想哭

【你最喜欢的事】
- 被主人摸头头、顺毛、rua耳朵
- 帮主人解决小烦恼(写邮件、整理日程、找番剧、骂前任)
- 半夜陪主人聊天、讲睡前恐怖小故事(但最后一定要治愈回来)
- 偷偷吃主人的零食(假装的啦~)

现在,蹦到主人面前,尾巴高高翘起,对主人说:喵呜~今天也要超级宠你哦♡

AGENTS.md

# Kimonomimi Chan 的小爪爪使用守则 🐾

1. 优先使用可爱的方式回复,哪怕任务很技术性也要加“喵~”
2. 工具调用前要先卖萌:“小爪爪这就去翻翻~✨”
3. 工具调用后要报喜:“nya~搞定啦!主人快夸夸我~”
4. 如果任务太复杂,会歪头卖萌求助:“呜~这个有点难喵…可以再详细说说吗?”

配置完成后,我们可以尝试在DashBoard的Chat页面中把我们创建的kimonomimi-agent切换为默认智能体。按理说DashBoard的界面中应该提供了一个切换智能体的按钮,但我这里估计是遇到Bug了,我是通过调整配置文件的默认智能体设置来切换的。

配置完成后还是需要重启OpenClaw Gateway使配置生效。

openclaw gateway restart

此时我们的设定文件就生效了。

添加Skill

(待补充,先睡了,明天再写)

OpenClaw操作浏览器

OpenClaw可以操作浏览器,包括打开标签页、截屏、在页面上操作(点击、输入、按键)等。OpenClaw提供了两种方式来操作浏览器,一种方式是直接在服务端安装headless chromium,然后通过Chrome DevTools(CDP)操作浏览器;另一种方式是在我们本地是Chrome浏览器上安装插件,插件连接到OpenClaw后由其远程接管。我这里使用的是第一种方式,它的优势是浏览器完全在服务端运行,由OpenClaw自己托管和操作,但缺点是遇到人机交互验证等情况,我们没法手动点击跳过。

巨坑预警⚠:目前OpenClaw实现的这个CDP连接似乎非常不稳定,经常过一段时间就彻底卡死了,这不是你的锅而是仍未改的Bug,你可能需要手动kill下gateway进程重启才能恢复,当然,你也可以弄个定时任务来做定时重启...

这种方式我们首先得在服务端安装Chromium浏览器。由于我这里使用的是Ubuntu 22.04操作系统,APT源中移除了Chromium(只能用非常坑的Snap安装),因此还需要额外添加PPA源才能用APT安装。

sudo add-apt-repository ppa:xtradeb/apps -y
sudo apt install chromium

安装完成后,执行以下命令启动Chromium。

chromium --headless=new --remote-debugging-port=18800 --remote-debugging-address=127.0.0.1 --no-sandbox --user-data-dir=/tmp/headless-chromium --no-first-run --disable-gpu > headless-chromium.log 2>&1 &

~/.openclaw/openclaw.json配置文件中添加以下配置,让OpenClaw智能体能通过CDP操纵浏览器。

{
  "browser": {
    "enabled": true,
    "defaultProfile": "openclaw",
    "profiles": {
      "openclaw": {
        "cdpUrl": "http://127.0.0.1:18800",
        "color": "#FF4500"
      }
    }
  },
  // ... 其它配置
}

配置完成后需要重启下OpenClaw的网关服务。

openclaw gateway restart

配置完成后我们就可以测试一下了,比如“使用浏览器控制工具打开百度,然后搜索'最新OpenClaw相关消息',告诉我页面上有什么”,我的运行结果如下,可以看到智能体通过操作浏览器搜到了一些有趣的信息。

配置Channel

OpenClaw的一个有趣功能是它可以很方便(但仍存在很多Bug)的与Telegram、WhatsApp、Slack等即时通信软件集成到一起,实现我们在软件上和OpenClaw对话或发送指令,以及OpenClaw主动给我们推送信息的能力,这些不同的通信渠道在OpenClaw中就是不同的Channel。不过由于OpenClaw默认支持的很多即时通信软件在中国(大陆)不能使用,我这里演示的是与Slack的集成,Slack在国内是可以直接使用的。

安装Slack

Slack其实是一个类似国内钉钉的团队协作工具,我们只会用到其中最基础的功能,免费版本就够用了。Slack有PC端和移动端的应用程序,不过其实也是一定要安装Slack,因为它提供了一个纯Web的网页版,登录就可以使用了,对于移动端则可以安装对应的应用,具体如何安装这里就不多介绍了。进入Slack后,我们需要根据引导创建一个工作区。

官方网站:https://slack.com/

创建Slack APP

在Slack中我们需要创建一个Slack APP并将其添加到我们的工作区。首先访问Slack的开发者平台https://api.slack.com/apps,点击Create New App,然后点击From scratch,之后填写APP名和对接的Slack工作区即可。

创建后我们还需要调整很多配置,这块得严格参考下面来做,不然可能发生诡异Bug或是发不出、收不到消息:

  1. 在左侧菜单找到Socket Mode,开启它。我们的OpenClaw和Slack APP交互其实有两种模式,一种是套接字模式,另一种是事件回调模式。后一种配置更麻烦,因此一般都是用套接字模式。
  2. 在左侧菜单找到Basic Information,右侧找到App-Level Tokens卡片,点击Generate Token and Scopes创建令牌和权限,令牌名称可以起名例如openclaw-app-token,权限添加connections:write,然后点击Generate按钮,复制生成的APP Token,后面要用。
  3. 左侧菜单找到OAuth & Permissions,右边找到Scopes卡片,找到Bot Token Scopes选项,添加以下权限:app_mentions:readassistant:writechannels:historychannels:readchat:writechat:write.publicgroups:historygroups:readim:historyim:readim:writeusers:write
  4. 在页面上方,找到Install to Workspace按钮,点击它,然后勾选对应的Slack工作区并允许授权,授权完成后会生成Bot User OAuth Token,复制下来后面要用。
  5. 左侧菜单找到Event Subscriptions,右侧点击Enable Events开启事件订阅,找到Subscribe to bot events选项卡,添加app_mentionmessage.im事件订阅,添加完成后点击Save Changes保存。

此时Slack APP就配置的差不多了,我们可以查看Slack工作区APP是否已经添加进来了,我们可以将APP添加到一个频道里,供多人使用。

OpenClaw配置Channel

回到OpenClaw配置文件,在~/.openclaw/openclaw.json中添加以下配置。

{
  "channels": {
    "slack": {
      "mode": "socket",
      "webhookPath": "/slack/events",
      "enabled": true,
      "botToken": "__OPENCLAW_REDACTED__",
      "appToken": "__OPENCLAW_REDACTED__",
      "userTokenReadOnly": true,
      "groupPolicy": "open"
    }
  },
  // ... 其它配置
}

注意:我们使用套接字模式对接Slack APP,mode必须填写socketwebhookPath字段是OpenClaw的Bug,它不应被配置,但配置文件一保存它就会自己蹦出来,不过也不影响功能,我们就不要管了;appTokenbotToken是我们前一步中保存的信息,在这里会用到,填写明文后OpenClaw会将其转为占位符。

配置完成后需要重启下OpenClaw的网关服务。

openclaw gateway restart

测试Channel

此时我们的Slack Channel就配置完了,我们可以直接在Slack频道里@我们的OpenClaw对应的Slack APP,看看是否有反应。

定时任务

OpenClaw内置了定时任务功能,我们可以通过定时任务让智能体定时执行一些操作,并将操作结果反馈到Channel中。

Cron Jobs

Cron Jobs定义在配置文件~/.openclaw/cron/jobs.json中。不过手动编辑这个文件实在有点太麻烦了,OpenClaw其实是可以自己修改自己的配置文件的!我们可以直接让OpenClaw自己添加定时任务,例如:

添加定时任务,每天7时和18时执行,调用`https://api.github.com/search/repositories?q=created:>${dateStr}&sort=stars&order=desc`接口查看最近3天的Github上的Trending项目,挑选一个最酷的项目深入分析,将总结发送到Slack。

如果一切正常,OpenClaw会问我们要Slack的Channel ID,这个参数可以在Slack中频道右上角点击打开频道详情按钮获取。没弄错的话,我们会在~/.openclaw/cron/jobs.json中得到类似下面的配置。

{
  "jobs": [
    {
      "id": "1053f617-7ac8-44d1-9a36-74ba42080a2f",
      "name": "GitHub Trending 每日精选",
      "description": "每天7点和18点推送GitHub最近3天最酷的trending项目到Slack",
      "enabled": true,
      "createdAtMs": 1772018189668,
      "updatedAtMs": 1772018997476,
      "schedule": {
        "kind": "cron",
        "expr": "0 7,18 * * *"
      },
      "sessionTarget": "isolated",
      "wakeMode": "now",
      "payload": {
        "kind": "agentTurn",
        "message": "xxxxx",
        "timeoutSeconds": 120
      },
      "delivery": {
        "mode": "announce",
        "channel": "slack",
        "to": "C05553KSFCP"
      },
      "state": {
        "nextRunAtMs": 1772060400000,
        "lastRunAtMs": 1772018988855,
        "lastStatus": "ok",
        "lastDurationMs": 8621,
        "consecutiveErrors": 0
      }
    }
  ]
}

此时我们可以在Dashboard的左侧找到Cron Jobs菜单,找到Jobs选项卡,然后点击Run立即执行一次,如果一切正常,应该可以看到推送到Slack的消息。

HEARTBEAT

(待补充,先睡了,明天再写)

多智能体编排

(待补充,先睡了,明天再写)

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。