最近总有朋友在微信上问我同一个问题:OpenClaw装好了,然后呢?然后是看日志、换模型、切Channel、排查锁文件……哪一步都离不开命令。我这份OpenClaw命令大全,不是把项目文档抄一遍,而是把从部署到日常维护过程中真正用过的命令按场景整理好,从安装、配置、运行到问题排查全覆盖。刚接触代理框架的新手可以按顺序照着敲,已经有基础的老手可以直接翻到对应章节抄作业,收藏这一篇基本就够了。
1. 先理清OpenClaw命令的“四层家谱”,后面才不会乱
1.1 OpenClaw命令不同于普通命令行工具的地方
很多人第一次接触OpenClaw,会下意识把它当成另一个“ChatGPT客户端”,觉得无非就是启动一下、聊个天。实际用下来你会发现,OpenClaw是一整套个人AI代理框架,你把它装好之后,面对的是一堆新概念:Channel、Session、Skill、Tool、Task。Channel是消息渠道,比如飞书、Teams、微信;Session是一次次对话的上下文容器;Skill是给Agent装的技能包;Tool是底层能调用的工具插件;Task是定时任务。这些概念全都靠命令来操作。
所以命令大全要解决的,不是“某个命令怎么拼”,而是“我想做某件事时该用哪个命令”。比如我想把飞书上的某个群设为当前处理对象,用的是Channel管理命令;我想清空某个Channel的历史会话上下文,用的是Session命令;我想让Agent每天早上九点自动发日报,用的是Task命令。理解了这层关系,再回头看命令,每一个都有明确的场景归属。
1.2 命令分类总览
我习惯把OpenClaw命令分成四层,方便记忆。
| 分层 | 典型命令 | 使用场景 |
|---|---|---|
| 安装部署层 | install、init、doctor、version | 首次安装、环境初始化、健康自检 |
| 配置管理层 | config、model、channel、skill、tool | 改模型、接平台、装技能 |
| 运行控制层 | start、stop、restart、status、logs | 日常启停、看状态、查日志 |
| 会话与调试层 | session、message、debug | 管理对话、发消息、排障 |
这几个层不是互相独立的。很多时候一条命令的报错,要跑到另一层去找原因。比如配置了千问模型之后Agent不回复,问题可能不在模型配置,而在Channel会话状态;session突然报锁文件超时,也可能是运行层多开了实例。所以我在后面每个章节里都会把“关联问题”单独拎出来讲。
1.3 一个通用规律:先 --help 再敲命令
所有OpenClaw子命令都支持查看帮助,这是整个命令大全里最重要的一条规律:
openclaw --help openclaw channel --help openclaw model --help openclaw session --help不要觉得看帮助文档丢人,恰恰是这些帮助信息最真实。不同版本的OpenClaw命令会调整,我在文章里整理的是常见用法,但你的版本里某个子命令可能换了名字、加了参数。每次敲新命令之前,先openclaw <子命令> --help看一眼,能避免绝大多数“命令不存在”的问题。
全局参数也要留意,大部分子命令都支持--config指定配置文件、--channel指定渠道、--debug开启调试输出、--json让输出变成结构化数据方便脚本解析。这些参数在不同子命令里表现一致,学会了就一通百通。
2. 安装部署:把OpenClaw从零跑起来的完整命令链
2.1 三种安装方式与对应命令
OpenClaw的安装方式不是唯一的,我实际试下来,主力有三种:Docker方式、官方脚本方式、源码方式。
Docker方式最省心,适合服务器和NAS。先把镜像拉下来,然后启动容器,数据目录挂载出来持久化:
docker run -d \ --name openclaw \ --restart=unless-stopped \ -v /opt/openclaw-data:/data \ -e TZ=Asia/Shanghai \ <官方镜像地址>这里我不把镜像地址写死,因为官方在不同阶段可能调整仓库地址。你去项目Release页面或官方文档找最新镜像名,拉取后先跑一个临时容器验证能启动,再正式跑后台服务。Docker方式的好处是环境隔离,不怕把系统依赖搞乱。
官方脚本方式适合Linux和macOS,一般是一行命令:
curl -sSL <官方安装脚本地址> | bash说实话我不推荐直接管道执行远程脚本,风险太大了。我都是先下载下来:
curl -sSL <官方安装脚本地址> -o install.sh less install.sh bash install.sh --prefix ~/.openclaw先看脚本内容,确认没有奇怪操作再执行。--prefix可以指定安装目录,我习惯装在~/.openclaw,不用动系统目录,权限问题少很多。
源码方式适合想二次开发的人。把仓库克隆下来,按README装依赖,然后在项目目录里用命令启动:
git clone <项目仓库地址> cd openclaw # 按官方说明安装依赖,语言环境不同命令不同 openclaw --version源码方式的好处是改代码方便,但升级要自己git pull,不适合只想用功能的人。
2.2 安装后的初始化与自检命令
装好之后第一件事不是急着启动服务,而是初始化配置:
openclaw initinit是交互式命令,它会问你准备接入哪个平台、用哪个模型、数据目录放在哪。我第一次用的时候嫌交互太慢,后来发现可以直接指定参数完成初始化:
openclaw init --platform feishu --model qwen-plus初始化完成后,立刻跑一遍健康检查:
openclaw doctordoctor是我最推荐的命令,没有之一。它会逐项检查配置文件是否完整、模型API能不能连通、Channel凭据是否有效、数据目录有没有写权限、端口有没有被占用。之前我遇到过官方脚本安装后找不到配置文件,就是靠doctor定位到权限问题。
再确认一下版本和配置路径:
openclaw --version openclaw config path这两个命令输出很短,但很有用。版本号决定你该查哪个版本的文档,配置路径告诉你去哪里备份数据。
2.3 Windows和NAS上的部署注意点
热词里有人提“openclaw windowshub安装”,也有人问飞牛NAS上怎么装。Windows环境我强烈建议用WSL2或者Docker Desktop,别直接在原生Windows命令行里跑,OpenClaw依赖的长驻进程和文件锁在原生Windows下表现不稳定,尤其是很多人遇到的session locked问题,Windows下概率更高。
飞牛NAS或者群晖这类设备,直接走Docker套件就行。建一个共享文件夹专门放OpenClaw数据,例如/docker/openclaw,容器里映射到/data。这样升级容器不会丢数据。我见过的翻车案例,十有八九是数据目录没挂载出来,容器一删,配置和会话全没了。
如果是Linux服务器,我更建议用systemd托管,而不是在SSH会话里直接openclaw start。SSH一断,后台进程容易跟着出问题。写个服务文件:
[Unit] Description=OpenClaw Agent After=network.target [Service] ExecStart=/home/user/.openclaw/bin/openclaw start --foreground Restart=always RestartSec=10 User=user WorkingDirectory=/home/user/.openclaw [Install] WantedBy=multi-user.target然后启用:
sudo systemctl daemon-reload sudo systemctl enable --now openclaw sudo systemctl status openclaw托管之后,日志交给journald管理,平时journalctl -u openclaw -f看日志就行。
3. 配置管理命令:模型、Channel、API Key一个都不能少
3.1 配置文件的三种打开方式
OpenClaw的配置集中在配置文件里,所有配置命令本质上都是操作这个文件。先找到它:
openclaw config path然后在命令行查看所有配置项:
openclaw config list单独看某一项:
openclaw config get LLM_PROVIDER修改配置项:
openclaw config set LLM_PROVIDER openai删除配置项:
openclaw config unset LLM_PROVIDER还有一个很方便的命令,直接打开默认编辑器修改:
openclaw config edit改配置前先备份永远是好习惯:
openclaw config export > openclaw-backup.json恢复备份:
openclaw config import openclaw-backup.json这套组合拳我每个月总能用上几次。尤其是给新服务器搭同款环境时,export出来再import进去,十分钟搞定。
3.2 接入千问模型的具体配置命令
很多国内用户拿到OpenClaw第一件事就是配千问,因为官方默认模型在国内直连不方便。配千问的核心思路,是让OpenClaw的语言模型层指向通义千问的OpenAI兼容接口。
配置命令如下:
openclaw config set LLM_PROVIDER openai openclaw config set OPENAI_BASE_URL https://dashscope.aliyuncs.com/compatible-mode/v1 openclaw config set OPENAI_MODEL qwen-plus openclaw config set OPENAI_API_KEY sk-你的APIKey openclaw restart为什么要这样配?因为DashScope的/compatible-mode/v1接口兼容OpenAI协议,OpenClaw的OpenAI客户端可以直接对接,不用改任何代码。OPENAI_MODEL可以换成qwen-max、qwen-turbo,看你对速度和质量的取舍。
配完之后验证一下:
openclaw model list openclaw doctor --verbosedoctor --verbose会输出详细检查结果,能看到模型接口返回的状态码。我第一次配完就是靠它确认接口通了,否则还得干等消息超时。
还要留意一个坑:OPENAI_BASE_URL末尾的/v1不能乱加或者漏掉。这个路径是和具体服务商约定好的,多一个斜杠都可能导致404。我踩过一次,排查了半天才发现是base-url尾部多了一个斜杠。
3.3 Channel命令:添加、查看、切换、移除
Channel是OpenClaw和外界沟通的桥梁。查看所有Channel:
openclaw channel list查看详细状态,包含连接是否正常:
openclaw channel status添加一个平台,比如飞书:
openclaw channel add feishu --app-id xxx --app-secret xxx添加Microsoft Teams要比飞书麻烦一点,Teams机器人依赖Azure应用注册,需要三个参数:
openclaw channel add teams \ --tenant-id 你的租户ID \ --client-id 你的应用ID \ --client-secret 你的客户端密钥tenant-id是Azure Active Directory的目录ID,client-id是机器人应用ID,client-secret是应用密钥。缺一个都接不上。
移除不再使用的Channel:
openclaw channel remove feishu多个Channel同时在线时,OpenClaw默认有个“当前激活Channel”的概念,Agent优先处理激活渠道的消息。切换当前渠道:
openclaw channel select teams热词里有人问“OpenClaw agent怎么选择channel”,答案就在这里。先channel list看有哪些渠道和ID,再channel select <ID>切换。切换之后用channel status确认生效。
3.4 Skill和Tool管理
Skill和Tool是OpenClaw扩展能力的核心。Skill是更上层的技能包,可能包含一组提示词和对应的工具组合;Tool是底层可执行插件,比如搜索、网页抓取、日历读取。
查看和安装Skill:
openclaw skill list openclaw skill install <技能名> openclaw skill uninstall <技能名> openclaw skill update查看和启停Tool:
openclaw tool list openclaw tool enable search openclaw tool disable web我给Agent装技能包时,习惯先skill list看当前已有哪些,避免重复安装。装完之后跑一个简单对话验证技能是否真的被加载,只看list输出还不够,因为有些技能要重启才生效。
4. 日常运行与会话控制:最常用的命令都在这里
4.1 启动、停止、重启、状态
日常用得最多的就是启停控制。
前台启动,适合调试:
openclaw start --foreground后台启动:
openclaw start停止:
openclaw stop重启:
openclaw restart查看服务状态:
openclaw status我的建议是:日常跑服务,让systemd/Docker托管,不要用裸的openclaw start后台模式。裸后台模式你很难直观看到一个进程是不是僵死。调试新配置时,才用--foreground跑,Ctrl+C 就能停,日志直接打到当前终端。
4.2 会话与消息类命令
OpenClaw的Session概念对应一段连续对话的上下文。查看会话:
openclaw session list查看某个会话详情:
openclaw session show <会话ID>清空某个会话上下文:
openclaw session clear清空所有会话上下文:
openclaw session clear --all看某个Channel最近的消息记录:
openclaw message list --channel feishu --limit 20主动向某个用户或群发消息:
openclaw send --channel teams --to "user@example.com" --text "你好"会话清理这个动作,很多人容易忽略。Agent长时间运行后,Session文件会越来越大,对话响应也可能变慢。我每周会清一次不用的会话上下文,尤其是测试环境里那些反复调试的会话。
4.3 日志与调试命令
日志是排障的第一入口。实时查看日志:
openclaw logs -f查看最近300行:
openclaw logs --tail 300按日志级别过滤:
openclaw logs --level DEBUG开启调试模式:
openclaw debug on关闭调试模式:
openclaw debug off我排查问题时的基本链路:先openclaw status看进程在不在,再用openclaw logs -f看实时输出,最后openclaw logs --level DEBUG看更细的请求日志。这个组合能解决大部分“为什么没反应”“为什么发不出去”的疑问。
4.4 修复 session file locked 时报错的标准流程
热词里有一条很精确的报错:agent failed before reply: session file locked (timeout 60000ms) openclaw。这问题我踩过,而且不止一次。
这个报错的意思是:Agent为了保存会话上下文,要操作一个session文件,但文件被别的进程锁住了,等了60秒还没拿到锁,直接放弃回复。
常见诱因有三个:
- 多个OpenClaw实例同时启动,抢同一个session文件。
- 上次进程异常退出,锁没有正常释放。
- Docker容器和宿主机里的进程同时跑,路径又指向同一份数据目录。
修复命令:
openclaw stop openclaw session clear --force openclaw restart如果版本里没有session clear --force,可以看看openclaw session --help里有没有unlock相关参数。有些版本提供了:
openclaw session unlock --all实在不行,手动清理锁文件:
find ~/.openclaw -name "*.lock" -delete注意,执行删除前必须确认所有OpenClaw进程已经停掉,否则你删锁文件的同时,另一个进程可能正在写入,越删越乱。
预防比修复更重要。我现在一台机器上只允许一种托管方式:要么systemd,要么Docker,绝不手动去start。因为手动start和systemd双开,session文件锁必炸。
4.5 飞书输出截断的解决命令
热词里有人反馈“openclaw在飞书输出容易被截断”。这是因为飞书对单条文本消息的长度有限制,Agent生成的长回复一旦超限,要么被丢弃,要么被截断。
我试过几条路子,最有效的是调整消息长度限制和开启自动分段:
openclaw config set FEISHU_MAX_MESSAGE_LENGTH 1500 openclaw config set MESSAGE_SPLIT true如果版本支持消息类型配置,可以把飞书消息改成富文本格式,富文本能承载的内容比纯文本多不少:
openclaw config set FEISHU_MSG_TYPE post还有一个取巧的办法,在初始提示词里直接要求模型分段输出,例如“每段不超过500字,多段用分隔线隔开”。命令层面不改变,但能减轻截断概率。我个人实测,前两种配置组合加提示词约束,基本没再遇到截断。
5. 常见问题排查与避坑手册
5.1 命令找不到(command not found)
输入openclaw提示找不到命令,先别怀疑安装失败,大概率是PATH里面没有安装目录。
export PATH="$HOME/.openclaw/bin:$PATH"想永久生效,写进shell配置:
echo 'export PATH="$HOME/.openclaw/bin:$PATH"' >> ~/.bashrc source ~/.bashrc5.2 模型API连接失败
模型配置好但Agent不回话,第一反应是看日志:
openclaw logs --tail 100日志里如果有连接超时、401、404,按顺序排查:
- 先确认网络能访问API域名,用
curl -I <API地址>看返回状态码。 - 确认
OPENAI_API_KEY填的是有效Key,别多空格。 - 确认
OPENAI_BASE_URL路径正确,尤其末尾不要漏路径。 - 最后看
OPENAI_MODEL是否在你服务的型号列表里。
这一套走完,绝大多数模型连接问题都能定位。
5.3 Channel收不到消息
Channel添加成功但收不到消息,先看状态:
openclaw channel status如果状态不正常,优先检查平台侧配置。飞书要用长连接模式,避免依赖公网回调地址;Teams要确认机器人应用已经发布并授予了对应权限。再看OpenClaw日志里有没有平台侧的订阅事件进来,事件没进来就说明问题在平台侧配置。
5.4 OpenClaw和WorkBuddy怎么选
热词里也有人对比“openclaw和workbuddy哪个好”。我用过一段时间WorkBuddy,简单说下我的体会。
| 对比维度 | OpenClaw | WorkBuddy |
|---|---|---|
| 开源程度 | 开源,可自行部署改造 | 闭源,依赖官方服务 |
| Channel生态 | 支持飞书、Teams、Telegram等,社区驱动 | 相对有限 |
| 部署难度 | 需要命令行操作,门槛略高 | 图形化配置,上手快 |
| 数据掌控 | 数据在自己服务器上 | 数据过云端 |
| 扩展能力 | Skill/Tool灵活,可编程 | 偏固定工作流 |
我的结论是:如果你愿意折腾、看重数据隐私和自定义能力,选OpenClaw没错;如果追求开箱即用、不想碰命令,WorkBuddy会更省心。这篇文章既然讲的是OpenClaw命令,我默认你和我一样是愿意折腾的那类人。
6. 进阶玩法:把OpenClaw命令用出效率
6.1 设置别名,手速翻倍
每天敲openclaw六七个字符其实不算长,但敲多了还是烦。我在shell里加了几个别名:
alias oc="openclaw" alias oc-status="openclaw status" alias oc-logs="openclaw logs -f" alias oc-doctor="openclaw doctor"然后日常操作变成:
oc status oc-logs oc-doctor少敲几个字符是小事,关键是别名能统一团队的习惯。我们几个人维护一台服务器,有了统一别名,互相看命令也省心。
6.2 定时任务管理
Task是OpenClaw里很有价值的功能,相当于给Agent安排定时任务。查看已有任务:
openclaw task list创建一个每天早上九点给Teams群发日报的任务:
openclaw task create \ --name morning-report \ --cron "0 9 * * *" \ --channel teams \ --prompt "请生成昨日工作日报"删除任务:
openclaw task remove morning-report定时任务我第一次用的时候翻过车,cron表达式里忘了加时区配置,导致任务按UTC时间跑,整整差8个小时。后来我在配置里显式设置了TZ=Asia/Shanghai才正常。
6.3 多实例管理
一台服务器上跑多个OpenClaw实例,比如一个负责办公渠道,一个负责个人助理,靠--config参数区分:
openclaw --config ~/.openclaw-work start openclaw --config ~/.openclaw-personal start两个实例的数据目录完全隔离,互不干扰。实例间还可以用不同的模型和Channel组合。我之前就让工作实例用千问,个人实例用另一种模型,互不影响。
6.4 把常用运维命令写成脚本
每次手动敲“status、logs、doctor”太碎片化,我写了个小脚本oc-check.sh:
#!/bin/bash echo "=== version ===" openclaw --version echo "=== status ===" openclaw status echo "=== doctor ===" openclaw doctor echo "=== recent logs ===" openclaw logs --tail 50以后出问题,先执行一次脚本,把输出贴给队友或者自己分析,三分钟就能缩小问题范围。脚本不要写得太复杂,能输出关键状态就行。
最后再分享一个个人体会:OpenClaw这套命令体系,真正要背的核心命令不超过十个,其余都是--help现查现用。我最常用的是doctor和logs -f,每次改完配置先跑一遍doctor,再重启看日志,这个习惯帮我避开了很多隐形坑。session locked那次之后,我也彻底戒掉了“手动start + 托管服务”双开的坏习惯。你把这篇文章里的命令按场景过一遍,再配合--help查漏补缺,基本就能在OpenClaw里游刃有余了。