1. 为什么我的 openclaw 装好了却跑不了命令
很多人第一次把 openclaw 跑起来,满心期待地丢一句「帮我建个目录、写个脚本、跑一下测试」,结果它只会跟你聊天,压根不动手。你以为是模型不行,其实大概率是工具集没开全。
openclaw 默认安装后,工具配置里只启用了messaging这一档 profile。这个档位只包含消息传递类工具,也就是收发消息、简单对话,不包含 exec / shell 这类命令执行能力。所以你让它执行命令,它要么直接拒绝,要么告诉你「我没有这个工具」。
这个设计本身是出于安全考虑:默认最小权限,避免刚装好就误执行危险命令。但对本地开发、自动化脚本、Agent 场景来说,这就成了拦路虎。你需要从两个地方动手:一是config里的tools.profile,二是gateway通道的重启与加载。这两步缺一不可,只改 config 不重启 gateway,配置不会生效;只重启 gateway 不改 config,工具集还是老样子。
这篇就按「改 config → 重启 gateway → 验证命令执行」的顺序,把整条链路走一遍。适合刚接触 openclaw、想让它在本地真正干活的人。下面所有命令都可以直接复制,改完你就能看到它开始创建文件、运行命令了。
2. 动手前先把 TaoToken 的接入信息准备好
openclaw 本身是工具调度框架,真正干活的模型能力需要接一个稳定的 API 通道。我这边一直用的是 TaoToken,它的接口兼容主流格式,配置起来不折腾。你如果还没准备,可以先到官网看看:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
接入需要的三样东西:API 地址、API Key、模型名。API 地址统一用 https://taotoken.net/api ,注意这个地址不带任何查询参数,直接填就行。API Key 在控制台的 API Keys 页面创建,建议单独建一个给 openclaw 用,方便后面排查和轮换。
创建 Key 的入口在这里:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
模型名按你实际要用的填,比如做代码和命令类任务,选一个指令跟随能力强的就行。如果你不确定选哪个,可以先去模型对话页面试几句,确认响应正常再写进配置:https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite
把这三样记下来,下一步写 config 的时候直接填。这里提醒一句:API Key 不要提交到 git,也不要在截图里露出来,本地配置文件记得加进.gitignore。
3. 可复制的 config 骨架:把 tools.profile 放开
openclaw 的配置一般放在用户目录下的配置文件中,具体路径可以用openclaw config path查一下。改之前先看一眼当前值,确认问题确实出在 profile 上:
openclaw config get tools.profile如果返回的是messaging,那就对上了。接下来把它改成default或full。两者的区别是:default启用常用工具集,包含命令执行;full则把所有可用工具都打开,权限最大。本地开发环境用full更省事,生产或共享环境建议先用default收敛范围。
openclaw config set tools.profile full改完再读一次确认写入成功:
openclaw config get tools.profile如果不想用命令行,也可以直接编辑配置文件。一个可复制的最小骨架大概长这样,注意tools段和gateway段都要在:
{ "tools": { "profile": "full", "exec": { "enabled": true, "timeout": 30000, "workingDir": "/Users/yourname/workspace" } }, "gateway": { "host": "127.0.0.1", "port": 8787, "autoRestart": true }, "model": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的key", "name": "你的模型名" } }几个参数说明一下。exec.timeout是单条命令的超时时间,单位毫秒,默认给 30000 够用,跑长任务可以调大。exec.workingDir是命令执行的工作目录,建议显式指定,不然它可能在你意想不到的目录里创建文件。gateway.port是本地通道端口,别和已有服务冲突。
注意:
tools.profile改成full之后,模型理论上可以执行任意 shell 命令。本地玩没问题,但如果这个实例会接收外部输入,务必把workingDir限制在专用目录,并考虑用容器隔离。
4. gateway 配置与重启:让新工具集真正加载
config 改完只是写进了文件,运行中的 gateway 还拿着旧配置。必须重启 gateway,它才会重新读取tools段并注册命令执行工具。
openclaw gateway restart如果 restart 报错说找不到进程,说明 gateway 当前没在跑,直接启动即可:
openclaw gateway start启动后看状态,确认它监听在配置的端口上:
openclaw gateway status正常的话会显示 running 以及 host/port 信息。如果端口被占用,改gateway.port再重启。gateway 起来之后,它会根据tools.profile决定向模型暴露哪些工具。profile 是full时,exec/shell 类工具会被注册进去,模型在需要时就能调用。
这里有个容易忽略的点:有些版本的 openclaw 把工具注册和 gateway 启动绑在一起,如果你只重启了模型服务没重启 gateway,工具列表不会刷新。所以顺序一定是「先改 config,再重启 gateway」,反过来做等于白改。
5. 验证命令执行能力是否真的生效
配置和重启都做完了,怎么确认命令执行真的通了?别只看它嘴上说「我可以执行」,要让它实际动手。
第一步,查工具列表。有些版本支持直接列出当前可用工具:
openclaw tools list如果输出里能看到exec或shell,说明工具已经注册。看不到就回到第 3 步检查 profile 值。
第二步,发一条明确的执行指令。比如让它创建一个测试文件并写入内容:
openclaw run "在当前工作目录创建 hello.txt,内容写入 openclaw exec ok,然后读取这个文件确认"观察返回结果。如果它回复里包含文件内容openclaw exec ok,并且你本地确实能看到这个文件,说明命令执行链路完全打通。你也可以自己再确认一次:
cat hello.txt第三步,测一条带返回值的命令,验证输出能被正确回传:
openclaw run "执行 pwd 和 ls -la,把结果原样返回"返回的路径应该和你配置的workingDir一致。如果路径不对,回去检查exec.workingDir有没有写对、有没有被其他配置覆盖。
三步都过,就说明从 config 到 gateway 再到实际执行,整条链路是通的。这时候你再让它做自动化任务,比如批量重命名、跑测试脚本、生成项目骨架,它就能真正动手了。
6. 本篇常见错误排查
改了 profile 但工具列表没变。九成是没重启 gateway。config 是启动时读取的,运行中改文件不生效。执行openclaw gateway restart后再查。
restart 后 exec 仍然不可用。检查是不是有多个配置文件。openclaw 可能同时读全局配置和项目级配置,项目级的会覆盖全局。用openclaw config path确认当前生效的是哪个文件,改对地方。
命令执行超时。默认 30 秒对多数命令够用,但装依赖、跑构建容易超。把exec.timeout调到 120000 甚至更大。如果还是超时,看是不是命令本身卡在交互式输入上,比如npm init会等你回车,这种要加-y之类的非交互参数。
工作目录不对,文件创建到了奇怪的地方。显式设置exec.workingDir为绝对路径。相对路径会相对于 gateway 进程的启动目录,容易踩坑。
API 请求报错导致工具调用中断。先确认model.baseUrl是https://taotoken.net/api,没有多余斜杠或参数;再确认 API Key 有效、额度正常。接入文档里有完整的参数说明和错误码对照,遇到报错可以对着查:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
权限被系统拒绝。如果命令涉及写系统目录或需要 sudo,会被拦。把工作目录设在用户可写路径下,别让它去动/etc、/usr这些地方。
排查的基本思路就是:先确认 config 值对不对,再确认 gateway 有没有重启,最后确认命令本身在终端里能不能手动跑通。三层逐一排除,基本都能定位到。
7. 长期跑编码和 Agent 任务,可以看下 Coding Plan
如果你只是偶尔让 openclaw 执行几条命令,按上面的配置就够了。但如果你打算把它当成长期的编码助手或 Agent 底座,频繁调用模型、跑多轮工具链,那单次按量计费可能不太划算,也容易在高峰期遇到限流。
这种场景可以了解一下 Coding Plan,它是面向长期编码和 Agent 使用的方案,适合把 openclaw 这类工具持续挂在后台跑任务的人:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
配置上不用大改,把 model 段的 baseUrl 和 key 换成对应方案的信息即可,工具集和 gateway 的设置保持不变。这样你既保留了完整的命令执行能力,又能在长期使用上更省心。
最后留一个我自己的习惯:每次改完 config 和 gateway,都跑一遍第 5 步的三条验证命令。花不了一分钟,但能避免「以为配好了、结果任务跑一半发现工具没注册」这种尴尬。命令执行能力一旦打通,openclaw 才算真正从聊天机器人变成了能干活的手。