我一直觉得,命令行工具这东西,真正用得好的关键不在于背多少参数,而在于知道什么时候该用哪条命令,以及出了问题该往哪个方向查。OpenClaw 就是典型例子:功能不少,命令也不少,但真正高频用到的就是那么几十条。如果你刚开始接触 OpenClaw,不用硬啃文档,把这份速查表里的命令过一遍,再跟着后面的排查思路走一遍,日常使用基本就稳了。
简单说,OpenClaw 是一个面向任务型的开源命令行工具,把配置管理、数据导入导出、定时任务、插件扩展和 API 调用统一收在同一个终端入口下。它解决的痛点是:以前你可能要分别维护好几个脚本、好几个配置文件、好几个定时器,现在可以用一套命令语法把它们串起来。对终端重度用户、自动化脚本维护者、需要在多台机器上保持命令环境一致的人来说,这份速查表直接当工具手册用就行。哪怕你只是刚接触命令行,按顺序执行第 2 章的命令,也能把基础环境搭好。
1. 认识 OpenClaw:它到底解决什么问题
1.1 把分散的任务收拢到一个入口
先聊聊我实际使用中的感受。很多工具单看某个功能都不错,但用起来难受,是因为每个功能都要单独一套命令、单独一套配置,跨场景组合的时候还得自己写胶水代码。OpenClaw 的设计逻辑不太一样:它把所有任务抽象成统一的命令结构,不管你是要处理数据、执行定时任务,还是调用外部接口,入口都是oc。这个oc前缀就是整套工具的主入口。
这种统一入口带来的最大好处是记忆成本和维护成本同时下降。举个例子,以前我要同步一批数据,可能先要跑到某个目录执行一个 Python 脚本,再手动用crontab编辑定时规则,最后还要单独维护一份日志切割配置。换成 OpenClaw 之后,这三件事都被收进同一套命令体系里,脚本是任务、定时是任务、日志输出也是任务的一部分,任何一台新机器上只需要跑一遍oc init,就能把整套环境拉起来。
有人可能会问,那我原来用的脚本怎么办?OpenClaw 没有强制你重写,它提供了oc run这类命令,可以直接执行外部脚本,也可以把已有脚本包装成任务。也就是说,它解决的不是“替换你现有的一切”,而是“给现有的一切提供一个统一的车厢”。这种渐进式接入的思路,是我选择它的一个重要原因。
1.2 命令速查表解决的不是“记不住”,而是“恢复状态”
完整的命令手册有几百上千条,没人能全记住。速查表的真正作用是让你在忘记的时候,用最少的时间恢复到可操作状态。我习惯把高频命令分成五类:环境类、配置类、任务类、数据类、扩展类。这份速查表也是按这个思路组织的,后面每一章对应一类。
这个思路很像整理遥控器。遥控器按钮很多,但你每天用的就是音量、频道和电源键,剩下那些功能键你不需要背,只要在需要时知道它们大概在哪个位置就行。命令速查表也是一样:它不是为了替代手册,而是为了让高频操作变成肌肉记忆,低频操作也能按图索骥。所以我写这份速查表的时候,每一条命令都会带上“它解决什么问题”,而不是单纯罗列参数。
实际用起来,我强烈建议你把这份速查表打印出来或者放在终端旁边,然后每周挑其中几类命令主动用一次。用上两三周之后,那些高频命令自然就记住了。这个时候速查表的价值就从“背答案”变成了“查异常”,也就是你真正开始依赖它的时候。
1.3 适合谁来用,以及怎么读这份速查表
不同基础的读者,读法完全不同。如果你是纯新手,建议从第 2 章开始,先把安装、初始化和oc status这类状态查询跑通,不要一上来就去研究插件和 API 集成。先把“能跑起来”这件事解决,再谈“跑得好”。
如果你已经用了一段时间 OpenClaw,主要负责日常任务和数据维护,那么第 3 章、第 4 章适合仔细看。尤其是第 4 章的定时任务与流程编排,是我自己用过之后觉得性价比最高的部分,很多人工重复操作都可以通过oc task收编成自动化任务。
如果你是被临时叫去排障的人,比如同事的 OpenClaw 任务挂了、配置文件改坏了,那你直接跳到第 6 章。那里我整理了最常见的几类问题,每一条都写了排查顺序和验证方法。记住一个原则:排障的时候不要凭感觉猜,要按命令输出和退出码来定位问题。这也是整份速查表想传递的核心观念。
2. 环境准备与安装命令:先把工具箱摆好
2.1 安装前的三个判断
别急着复制安装命令,先花两分钟确认三件事,否则后面大概率会踩坑。
第一是操作系统兼容性。OpenClaw 在 Linux、macOS 和 Windows 的 WSL 环境下都能跑,但 Windows 原生终端(CMD / PowerShell)下部分子命令会受权限策略限制,尤其是任务调度和日志读取这类需要深度系统调用的功能。我的建议是 Windows 用户优先用 WSL,省掉一堆权限和路径问题。
第二是依赖检查。OpenClaw 本身是一个可执行文件,但它运行时会调用一些外部命令,比如bash、curl、git,处理 JSON 输出时还依赖jq。缺失这些依赖的典型症状是:oc本身能启动,但一执行数据导入或者插件安装就报command not found。检查方法很简单,执行下面这条命令就能看到环境报告。
oc doctor --check-env第三是安装方式。不同安装方式对应不同维护策略:包管理器安装适合大多数用户,升级和卸载都走系统统一流程;脚本安装适合快速体验新版;源码编译适合需要定制编译参数的场景,但维护成本最高。我自己的选择是:开发机用包管理器,临时环境用脚本安装,源码编译只在需要调试内核问题时才用。
2.2 安装与版本校验的常用命令
安装命令按环境选一种。macOS 或 Linux 的常见做法是直接用系统包管理器,命令会类似下面这种形式:
brew install openclaw如果你在 Linux 环境下更习惯用 apt,那就是:
sudo apt install openclaw如果你只是想快速装一个最新版本,官方提供的安装脚本更省事。注意,脚本方式安装前最好先看一眼脚本内容,确认来源可信任,再执行:
curl -fsSL https://example.com/install.sh | sh安装完成之后,先不要急着配置,第一步永远是校验版本和基本环境:
oc version oc doctoroc version会输出当前版本和构建信息。这里有个细节:如果你看到版本号前面有dev或者rc字样,说明这不是稳定版,后续命令行为可能和文档有细微差异,遇到奇怪问题先考虑版本因素。oc doctor是环境自检命令,会逐项检查依赖、配置目录、网络连通性,输出结果里OK表示正常,WARN表示可用但有隐患,FAIL表示需要处理。
提示:遇到
command not found,先别急着重装。多数情况是安装目录没有加入 PATH,优先执行echo $PATH确认,而不是用 sudo 再装一遍,否则容易出现同一台机器上有两个版本互相干扰的情况。
2.3 初始化配置与默认目录
版本校验通过后,就可以初始化了。初始化会生成默认配置文件和目录结构,相当于给工具建一个“家”:
oc init --profile demo--profile不是必填项,但我建议第一次初始化时就指定,因为 OpenClaw 支持多环境配置。你可以为开发环境建一个devprofile,为生产环境建一个prodprofile,后续切换环境只需要改--profile参数,不用手动改配置内容。初始化完成后,执行oc config show查看生效配置:
oc config show初始化生成的默认目录在~/.openclaw/,里面包含config.yml、profiles/、workspaces/、logs/几个子目录。默认配置会写入一些基本参数,比如日志级别、默认数据目录、超时时间。这里我踩过一个坑:刚装好的时候我直接去编辑config.yml,结果语法写错导致所有命令都起不来。后来我养成一个习惯:能用oc config set改的配置,就坚决不手改文件。原因很简单——子命令会做格式校验,还会写历史记录,手改文件一旦出错,排查成本高得多。
3. 高频操作命令:日常使用背下来
3.1 工作区管理:多项目隔离的第一道防线
OpenClaw 里的工作区(workspace)是一个常被忽略但很重要的概念。它本质上是一个隔离的环境,每个工作区有自己的配置、数据目录和任务空间。多项目并行的时候,如果不隔离,很容易出现参数串场的问题,比如把项目 A 的 token 带到项目 B 的任务里。
创建工作区和切换工作区的命令如下:
oc workspace create demo oc workspace use demo oc workspace list这三条命令的配合逻辑是:create是新建,use是切换当前上下文,list是查看所有工作区。我一般会在每个项目目录里放一个.oc_workspace文件,里面写上工作区名,这样进入目录执行oc use workspace的时候能快速对齐上下文。不过要注意,oc workspace list只显示工作区名,不会显示当前哪个在使用,需要配合oc status来看当前状态,否则多终端切换时容易搞混。
还有一个务实建议:工作区命名要用项目语义,别用test1、new2这种。我踩过坑,两个环境的名字都叫test,结果后来根本分不清哪个是哪个。现在我的命名规则是“项目-环境”,比如demo-prod、demo-staging,一眼就能看出来。
3.2 配置管理:用命令而不是手改文件
配置管理是 OpenClaw 使用频率最高的能力之一,核心命令就三条:
oc config set key value oc config get key oc config unset keyoc config set的完整写法是oc config set <key> <value>,key 用点号表示层级,例如oc config set log.level debug会把日志级别改成 debug。这里的关键点在于,OpenClaw 配置是有优先级顺序的:默认值 < 配置文件 < 环境变量 < 命令行参数。也就是说,如果你在命令行加过--log-level debug,就算配置里设置了info,命令执行时仍然以 debug 为准。
为什么推荐优先用命令而不是直接编辑文件?首先,oc config set会自动把配置写入当前 profile 对应的配置文件,并做一次类型检查,字符串、数字、布尔值写错会在第一时间报错;其次,大多数oc config子命令支持--dry-run,可以先预览改动。比如oc config set log.level debug --dry-run,会显示这条配置写入文件后最终生效的值,但不会真的改文件。这个参数在批量改配置时非常救命。
3.3 状态与日志:先看状态,再看日志
日常使用中,最该依赖的命令其实是状态类命令。很多新手出问题是因为不看状态,直接去翻日志,被大量信息淹没。正确的顺序是先看状态,再根据状态决定要不要看日志、看哪段日志。
oc status oc logs --tail 50 -f oc history --since 24hoc status返回的是当前 OpenClaw 实例的整体状态,包括工作区、最近任务结果、资源占用。输出里的任务状态字段通常有RUNNING、SUCCESS、FAILED、SKIPPED四种。如果你看到FAILED,先不要急着重跑,先看oc history找失败时间点,再用oc logs --tail 50看对应任务的最后 50 行日志,通常错误原因就在最后几行。
oc logs -f是实时跟踪日志,适合在任务执行过程中观察进度。这里有个细节:--tail 50是只看最近 50 行,但有些错误发生在更早的位置,可以把 tail 调大,或者用oc logs --since 30m只看最近半小时的输出。日志如果太多,还可以结合oc logs --grep error过滤关键字,虽然这个参数不是所有版本都支持,但很多环境里都可用,值得一试。
4. 数据处理与自动化任务命令
4.1 数据导入导出:先确认格式再动手
OpenClaw 内置了数据导入导出能力,支持 CSV、JSON、Parquet 等常见格式。数据导入是有风险的操作,尤其是导入目标表或数据集已经存在时,默认行为是追加而不是覆盖,所以先了解清楚再执行。
先看有哪些数据集,再执行导入:
oc data list oc data import --format csv --input ./users.csv --dataset usersoc data import的参数组合建议固定写成“格式 + 输入文件 + 目标数据集”。导入完成后,立即用oc data list对比记录数,确认是否和源文件一致。如果发现数量对不上,优先查看导入日志,不要直接重跑,因为重跑一次可能产生重复数据。这里有个小技巧:导入前先oc data export导出一份备份,万一需要回滚,直接拿备份覆盖回去就行。
导出命令相对安全,但也需要注意输出格式。oc data export --format json --dataset users --output users.json后面一定要带--output,否则默认输出到终端,数据量一大终端就卡死。我习惯在导出脚本里加上gzip管道,压缩后再落盘,比如:
oc data export --format json --dataset users | gzip > users.json.gz4.2 定时任务与流程编排:把人工活变成自动活
OpenClaw 的定时任务是我觉得最值得花时间研究的功能。你可以把它理解成一个内置的 cron,但比系统 crontab 更好用:任务状态可查询、失败日志可追溯、支持任务间依赖。
oc task add sync-users --cron "0 2 * * *" --command "oc data import --format csv --input /data/users.csv --dataset users" oc task list oc task run sync-users --wait oc task logs --task-id sync-users--cron表达式是标准的五位 cron 格式,从左到右依次是分、时、日、月、周。"0 2 * * *"表示每天凌晨 2 点执行。这里容易踩的坑是时区问题:命令里的 cron 用的是当前系统的时区,如果服务器时区是 UTC,而你实际想按北京时间凌晨 2 点执行,那表达式应该写成"18 2 * * *"。设置时区时,oc task add也有--timezone参数,可以显式指定,建议每次加任务时都写清楚,避免不同机器上行为不一致。
任务建好之后,oc task run --wait可以手动触发一次并等待结果,同步执行的场景下很有用。但要注意,--wait默认有一个超时时间,如果任务本身耗时较长,要配合--timeout 3600使用,否则任务还没结束,命令就先超时返回了,这会让你误以为任务失败,实际后台还在跑。
4.3 脚本化写法:把 OpenClaw 命令嵌进你的脚本
OpenClaw 设计得很好的地方是,绝大多数命令都是无交互的,可以放心写进脚本。下面是我经常用的一个同步脚本骨架,功能是切换工作区、配置日志级别、执行数据同步任务、导出结果并统计:
#!/usr/bin/env bash set -euo pipefail oc workspace use demo oc config set log.level info oc task run>oc plugin list oc plugin add>oc auth add --provider generic --token <your-token> oc auth list oc auth remove <auth-id>我的建议是,所有密钥都通过oc auth add管理,不要用环境变量或者明文配置文件。因为oc auth存储时会做基础加密,而且oc auth list默认只显示别名和 provider,不会把 token 明文打印出来。如果你实在需要在配置里引用某个密钥,用oc config set api.token "$(oc auth get --id xxx --output token)"这种方式从认证存储里取值,避免把明文 token 写进配置文件然后被同步到代码仓库。
权限最小化同样是安全的重要一环。给 OpenClaw 配置的 token,别直接用管理员级 token,能只读就只读,能限制 IP 就限制 IP。我在实际排障中发现,很多事故不是 OpenClaw 本身有问题,而是配置了过高权限的 token,导致某个任务误操作了不该碰的资源。
5.3 与其他工具联动的命令组合
OpenClaw 的价值在联动场景下体现得更充分。比如,你可以用一个 Shell 脚本做数据同步,同步完调用外部 Webhook 通知,再通过oc命令串起来。
下面这个示例演示了如何在一个任务里读取配置、调用外部 API、再导入结果:
#!/usr/bin/env bash set -e API_URL=$(oc config get api.base_url) AUTH_TOKEN=$(oc auth get --id default --output token) curl -s -H "Authorization: Bearer $AUTH_TOKEN" "$API_URL/export" \ | oc data import --format json --stdin --dataset external_data管道把curl的输出直接喂给oc data import --stdin,省去了先落盘再导入的中间步骤。这个写法适合中等数据量的场景,数据量极大时不建议,因为管道会占较多内存,最好还是先下载成文件再导入。
另一个常用联动是远程执行。oc run可以在当前工作区里执行任意命令,并且会记录执行日志。你可以用它把日常运维命令也纳入 OpenClaw 的任务体系,比如:
oc run "df -h && free -m" --task-name sys-check这样做的意义在于,oc run的执行记录会出现在oc history里,相当于所有操作有了审计痕迹。出问题时能回溯是谁、什么时候、执行了什么命令,而不是靠聊天记录回忆。
6. 常见问题与排查技巧实录
6.1 command not found 的排查路径
“命令找不到”是我在排障里遇到最多的问题,但绝大多数时候不是 OpenClaw 坏了,而是环境变量问题。排查路径可以固定成三步。
第一步,确认安装位置:which oc或者command -v oc。如果这个命令有输出,说明可执行文件在 PATH 里,问题可能出在文件本身。第二步,检查 PATH 是否包含安装目录:echo $PATH。如果只看得到/usr/bin、/bin,而 OpenClaw 装在~/.local/bin,那就把它加进去:export PATH="$HOME/.local/bin:$PATH"。第三步,检查文件权限和类型:ls -l $(which oc),看到-rwxr-xr-x就是可执行文件;不要试图用sudo运行oc,因为oc会读取当前用户配置目录,sudo 后读取的可能是 root 的配置,导致你之前建的所有工作区都“消失”了。
6.2 配置不生效的排查路径
配置不生效的典型现象是:你改了log.level,但日志输出还是原来的级别。这时候按优先级排查比盲目重装有效得多。记住这条规则:命令行参数 > 环境变量 > 配置文件 > 默认值。
先看是不是命令行里有参数覆盖了配置。再看环境变量,特别是OPENCLAW_开头的变量,比如OPENCLAW_LOG_LEVEL。环境变量的优先级高于配置文件,很多人忘了自己之前在.bashrc里 export 过这个变量,导致配置怎么改都没用。最后才是检查配置文件本身:用oc config validate做语法和类型校验,确认没有把字符串写成了布尔值。
还有一种隐蔽情况是配置缓存。OpenClaw 某些版本会缓存解析后的配置,改完文件或执行oc config set后不会立即生效,需要重启终端或执行oc config reload。如果以上方法都试过还是不行,新建一个临时 profile 做对照测试:
oc init --profile test-debug oc --profile test-debug config show如果临时 profile 正常,那问题基本可以确定在旧 profile 的配置或本地缓存上。
6.3 任务失败时看什么
任务失败时,很多人的第一反应是重跑。我反对这样做,因为重跑可能会掩盖真正的问题,尤其在数据同步任务里还可能造成重复数据。正确的做法是按顺序收集三样东西:退出码、日志、执行上下文。
任务命令直接执行时,Shell 会把退出码存在$?里,非 0 就是失败。退出码能帮你粗分原因:127 通常是命令不存在,126 是权限错误,1 是业务逻辑错误。然后看日志,OpenClaw 的oc logs --task-id <id>可以单独查看某个任务的输出。如果日志里的信息不够,用调试模式重跑:
oc task run sync-users --log-level debug --timeout 600--log-level debug会输出内部调用的细节,包括每次 API 请求的耗时、重试次数和读取的配置文件路径。最后看执行上下文,也就是这个任务在哪个工作区、用的是哪个 profile、导入导出用了什么格式。我整理过一个思路,任务失败后依次确认:工作区是否正确、profile 是否匹配、输入文件是否存在、输出目录是否有权限、目标数据集是否被锁定。这些问题其实都会在日志里有体现,但因为日志默认级别不够详细,很多人没看到而已。
6.4 常用排查命令速查
我把排查时高频使用的命令整理成一个表,方便贴在终端边上:
| 目标 | 命令 |
|---|---|
| 查看版本与环境 | oc doctor |
| 查看当前状态 | oc status |
| 实时查看日志 | oc logs --tail 50 -f |
| 查看最近任务记录 | oc history --since 24h |
| 校验配置 | oc config validate |
| 调试运行任务 | oc task run <name> --log-level debug |
| 查看认证信息 | oc auth list |
| 列出所有插件 | oc plugin list |
这 8 条命令基本覆盖了日常排障的 80% 场景。排查时记住一个原则:从状态到日志,从日志到配置,一层层缩小范围,而不是一开始就重装或者乱改配置。很多看起来诡异的问题,最后都会发现是环境变量或者 PATH 这种基础环节。
最后分享几个实操习惯。第一个是每次拿到新机器,先执行oc init --profile 默认,然后立刻oc doctor,把环境报告留个截图或者存成文件,后续出问题时的排查效率会高很多。第二个是把自动补全打开,oc utils completion bash可以生成补全脚本,写到.bashrc里之后,命令的候选列表会直接显示出来,尤其是oc config set的 key 名,不用再靠记忆。第三个是我个人最推荐的:把这份速查表里自己常用的命令抽出来,做成一个极简版 alias,比如ocu='oc workspace use',但注意 alias 别贪多,超过 10 个反而记不住。工具再好,最后能真正提升效率的,还是你对它命令体系的熟悉程度。