Kali 里 OpenClaw 调不动 nmap?TaoToken 这样改 openclaw.json 的模型 provider
2026/9/18 11:17:49 网站建设 项目流程

Kali 上 curl 装完 OpenClaw,本机 Ollama 挂着 qwen3.5:35b 当 agent 模型,会话里打一句「用 nmap 扫一下这段网段」,界面转两圈,回你一段看着挺像回事的扫描计划,终端里 nmap 根本没起来。这种「技能装了、exec 也放开了、Agent 就是驱不动终端」的卡点,很多时候不在 clawhub,而在后面那条模型通道——TaoToken 能换掉的就是这一段,先去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 注册并创建一把 API Key 放着,等下改 openclaw.json 要用。

排障这件事最怕乱翻。有人一上来就重装 OpenClaw,有人去改 nmap 的权限,还有人把 wizard 从头跑一遍,最后发现问题只是配置里models.providers那一小段还指着http://你的IP:11434。下面按层次来:先确认技能真的落在磁盘上,再确认tools.exec的放行有没有生效,最后才动模型 provider。顺序反了,你会一直在错误的层里打转。

1. Kali 上 curl 装完 OpenClaw,让 nmap 扫网段为什么没反应

1.1 先把现场还原清楚:wizard 里跳过的那几项

Kali 上装 OpenClaw 的流程本身没门槛,curl 一行脚本拉下来,跑起来就是 wizard。问题出在 wizard 里那几屏选项——很多人(包括原始那篇的作者)为了快点看到界面,除了模型相关的几项,其余能跳的全跳了。跳过的东西当时看不出代价,等到你要它调外部命令的时候才浮出来。

具体跳过的影响大致是三类:一类是执行相关的默认策略没配,比如命令执行的审批模式;一类是工具白名单没配,agent 知道自己有terminal-executor这个技能,但真正要落成一条 shell 命令时被拦;还有一类最关键——模型这一项你选了本机 Ollama,agent 的「大脑」就固定成了qwen3.5:35b这类本地跑的小模型。

本地模型不是不能用,问题在于它要驱动的是「多轮工具调用」这种活儿:先读懂你的意图,再决定调哪个工具,再按工具要求的格式吐出参数,拿到结果后再判断要不要继续调。这条链每一环都对格式和上下文长度有要求,本地 30B 级别的模型在中文意图 + 英文参数混着来的时候,经常在第二环就散了——它会给你一段自然语言描述的「计划」,而不是一个真正的 tool call。这就是你看到「说了但没做」的根源。

1.2 「调不动」的四种表现,决定你该翻哪一层

「nmap 调不动」其实是四种不同的故障,翻错层就是白折腾。对照一下你遇到的是哪种:

现象大概率卡在哪一层
agent 只回文字计划,从不出现工具调用models.providers 这一层,模型工具调用能力不足
日志里有 tool call,但命令没执行tools.exec / tools.allow 这一层,放行没生效
命令执行了,报command not found: nmapclawhub 技能层或 PATH,nmap 没进执行环境
命令执行了,nmap 自己报权限/参数错这已经是 nmap 本身的事,不是 OpenClaw 的问题

第四种反而是好消息,说明链路通了,只是参数要调。真正让人抓狂的是前两种,尤其第二种——你明明把security设成fullask设成off,它就是不动。这时候别急着怀疑 OpenClaw 有 bug,先把同样的配置换一条模型通道试一次。

提示:扫描只对你自己有授权的网段做。Kali 里跑 nmap 顺手扫到别人的资产,性质就变了,这条线自己守住。

2. 第一层排查:clawhub 里的 nmap、terminal-executor 是真装上了吗

2.1 clawhub list 与磁盘路径核对

原始流程里是先补 PATH,再npm i -g clawhub,然后clawhub install nmapclawhub install safe-execclawhub install terminal-executor三个技能。三条 install 命令敲完不等于三个技能可用,得回头看落点。

在 Kali 的终端里先列一遍:

clawhub list

正常应该能看到nmapsafe-execterminal-executor三个都带版本号。如果某个是not installedclawhub install那条命令八成是静默失败了——很常见的原因是 npm 全局目录权限不够,安装过程写了半截。

再直接去磁盘上确认技能目录确实有文件,而不是只有一个空壳目录:

ls -al ~/.openclaw/skills/ ls -al ~/.openclaw/skills/nmap/ ls -al ~/.openclaw/skills/terminal-executor/

如果目录存在但里面只有一个manifest.json之类的元数据文件、没有实际脚本,那这个技能是「注册上了但没落地」。删掉重装比死磕快:clawhub remove nmap之后再clawhub install nmap

2.2 Kali 上 PATH 与 npm 全局目录的坑

Kali 默认用 zsh,而 curl 安装脚本里写的路径可能按 bash 的 rc 文件来。结果就是你在当前 shell 里clawhub能用,OpenClaw 的 gateway 作为后台进程起来的时候,PATH里没有 npm 全局 bin 目录。

先看 npm 全局 bin 在哪:

npm config get prefix

假设输出是/usr/local,那 bin 目录就是/usr/local/bin。然后确认 gateway 拿到的环境里有没有它。最稳的做法不是改 rc,而是在~/.openclaw/openclaw.json里给执行环境显式声明,后面第 3 节会一并写进去。

还有一个容易被忽略的点:nmap本身。Kali 一般自带,但如果你用的是最小化安装的镜像,which nmap可能是空的。这种情况下 agent 再聪明也调不出来,先sudo apt install nmap补上。这一步和 OpenClaw 无关,但排障时要在清单上。

3. 第二层排查:openclaw.json 里 tools.exec 与 tools.allow 放行到位没有

3.1 tools.exec 三个字段:host、security、ask

配置文件的路径是~/.openclaw/openclaw.json。原始流程里改的是tools.exec这一段,三个字段的作用分别是:

  • host:命令在哪个进程里执行。写成gateway表示交给 gateway 进程去跑,这样 WEB UI 和 gateway 会话共享同一个执行环境,日志也能在 gateway 那边统一看到。写成别的值(比如让每个会话自己 fork)时,你在 UI 里看到的行为会和日志对不上。
  • security:安全等级。full表示不做额外的沙箱裁剪,命令按当前用户身份执行。
  • ask:是否每次都弹确认。off表示不弹,agent 决定调用就直接执行。

这三个字段的语义要理解对:它们管的是「允许不允许执行」,不管「模型愿不愿意发起执行」。很多人在这里反复改,其实模型压根没吐出 tool call,改多少次都没用。

3.2 tools.allow 白名单与 gateway 重启顺序

tools.allow是一个白名单数组,只有列在里面的工具才会暴露给模型。原始配置里需要把terminal-executornmapsafe-exec这几项列进去。可以把两段合起来看,形如下面这样(字段值按你实际安装的技能名来):

{ "tools": { "exec": { "host": "gateway", "security": "full", "ask": "off", "env": { "PATH": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" } }, "allow": [ "terminal-executor", "nmap", "safe-exec" ] } }

改完千万别只重启 WEB UI。OpenClaw 的 gateway 是独立进程,配置是在它启动时读的。正确的顺序是:

# 先停掉 gateway pkill -f openclaw-gateway # 确认端口已经释放 ss -ltnp | grep -i openclaw # 再重新拉起来 openclaw gateway start

如果ss还能看到那个端口在监听,说明旧进程没退干净,直接启动新进程会静默失败或者读到旧配置。这一步的顺序错,你会误以为「改了没用」。

4. 第三层排查:models.providers 还指着本机 Ollama,换成 TaoToken 的 Base URL

4.1 原来那段 ollama provider 长什么样

前两层都确认过、日志里依然看不到 tool call,就该动模型通道了。打开~/.openclaw/openclaw.json,找models这一段,原始写法大致是这样:

{ "models": { "providers": { "local-ollama": { "baseUrl": "http://192.168.1.50:11434", "api": "ollama", "apiKey": "", "models": ["qwen3.5:35b"] } }, "default": "qwen3.5:35b" } }

注意baseUrlhttp://内网IP:11434apiollamaapiKey是空的——Ollama 本地服务不需要 Key。这一段就是「Agent 的大脑」的接线口。它指向哪,模型请求就发到哪。

4.2 改写后的 models.providers 配置(可复制)

把上面那段整体替换成走 TaoToken 的写法。要点只有三个:baseUrlhttps://taotoken.net/api,末尾不要加/v1apiKey填你自己的 Key;api这一项按你 OpenClaw 版本支持的枚举写(OpenAI 兼容协议通常写openai,部分版本会写成openai-chat,以你本地 gateway 启动日志里的报错提示为准)。

{ "models": { "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "api": "openai", "apiKey": "YOUR_API_KEY", "models": ["YOUR_MODEL_ID"] } }, "default": "YOUR_MODEL_ID" } }

三个容易填错的地方,逐个说一下:

第一,baseUrl只到https://taotoken.net/api。不要写成https://taotoken.net/api/v1,也不要带任何查询参数。OpenClaw 内部会自己拼/chat/completions这类路径,你多写一层/v1,最终请求路径就重复了,表现是 404。

第二,官网落地页的地址和填进配置的地址是两码事。注册、创建 Key、看模型广场、查用量,走的是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ;填进baseUrl的只能是https://taotoken.net/api。把带 UTM 的完整链接粘进配置文件,请求会被当成非法路径。

第三,apiKey是字符串,前后不要留空格,也不要带引号里的换行。复制粘贴时最容易多带一个空格,报错信息通常长得像「invalid api key」,看起来像 Key 错了,其实只是多了个空格。

4.3 apiKey 从哪来、模型 ID 怎么取

Key 的创建入口只有一个:打开 TaoToken 控制台,注册登录后在 API Keys 页面新建一把,复制出来填到apiKey字段。建议给 Kali 这台机器单独建一把 Key,以后要换机器或者要吊销,互不影响。

YOUR_MODEL_ID不要凭记忆写。模型广场里列出的是什么 ID,就填什么 ID,模型上下架和命名会变,写死在文章里的 ID 过两周可能就不认了。所以自己打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的模型广场,挑一个标注了工具调用能力的模型,把 ID 原样复制过去,models数组和default两处都改。

换模型这件事在这条链路里权重很高。本机qwen3.5:35b在单轮问答上够用,但要稳定地把「扫这段网段」翻译成nmap -sV 192.168.1.0/24这种结构化调用,对模型的要求是另一个量级。通道换成 TaoToken 之后,你在同一份配置里换一行模型 ID 就能换脑子,不用再折腾本地显存和量化。

5. 验证:回到 OpenClaw WEB UI 再发一次「用 nmap 扫这段网段」

5.1 gateway 日志里怎么确认请求落到了 TaoToken 通道

配置文件保存、gateway 重启完成之后,验证不要看截图,看日志。开一个终端窗口盯住 gateway 输出:

openclaw gateway logs -f

然后回到 WEB UI 的会话里,重新发一遍那句话——把网段写具体,比如「用 nmap 对 192.168.1.0/24 做一次服务版本探测」。看日志里模型请求那几行,关键信息是请求的目标地址:

  • 如果打印的是https://taotoken.net/api开头的 URL,说明 provider 切换生效了,请求走的是新通道。
  • 如果还是192.168.1.50:11434或者localhost:11434,说明 JSON 里旧的 provider 段没删干净,或者default还指着老模型名。
  • 如果打印的是https://taotoken.net/api/v1/chat/completions这种带双层路径的,回去看 4.2 的第一条,baseUrl多写了。

5.2 exec 被真正触发的三个信号

请求落到正确通道之后,紧接着看有没有「执行」这一层。真正的工具调用被触发时,日志里通常能连着看到三段:一段是模型返回的 tool call(里面带工具名和参数),一段是 gateway 把命令交给执行环境的记录,一段是命令的退出码和输出。

这三段缺任何一段,都说明还没通。只有第一段没有第二段,问题回到第 3 节的tools.exectools.allow;三段都有但输出是command not found,问题回到第 2 节的 PATH。这也是为什么排障要分层——日志会明确告诉你现在卡在哪一层,不用猜。

有一点要写清楚:OpenClaw 在这里做的是「把你的意图翻译成命令并交给本机终端」,命令实际是在你这台 Kali 上、以你的用户身份跑起来的。AI 工具本身不会绕过你机器的权限去执行任何东西,它是通过 gateway 这个本地进程落地的。所以 sudo 相关的操作、需要 root 权限的扫描选项,仍然要你自己决定要不要给、怎么给。

5.3 跑通后再补 nmap 参数

链路一通,nmap 会开始按 agent 给的参数跑。这时候别急着让它扫大网段,先用一个最保守的参数验证行为是否符合预期:

# 你先自己在 Kali 终端跑一遍,确认目标可达、权限够用 nmap -sV -T4 192.168.1.10

自己跑通了,再回到会话里让 agent 对同一个 IP 下指令,对比两边输出是否一致。一致说明参数翻译这一环也稳了,接下来才考虑扩到192.168.1.0/24这种网段级扫描。

-sV这类需要更长时间的选项、-O这类需要更高权限的选项,逐个加、逐个验。一次性把一堆激进参数丢给 agent,出问题时你分不清是模型翻译错了还是 nmap 本身被挡了。Kali 里 nmap 的原始套接字权限问题也在这时候暴露,如果日志里出现权限相关的报错,那是本机配置的事,跟模型通道没关系。

6. 换通道之后还会遇到的几个报错

6.1 Key 无效、Key 带空格、Key 用错环境

401invalid api key是最常见的一类。三种原因按概率排:Key 前后多带了空格或换行;Key 是别的平台的、粘串了;Key 已经被吊销或者额度用尽。前两种自己肉眼核对一遍openclaw.json里那一行字符串就行,第三种需要去控制台看状态——还是从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 进,在 API Keys 页面能看到每把 Key 的状态,该重建就重建一把,把新 Key 覆盖回配置文件,重启 gateway。

6.2 模型 ID 不被识别、工具调用退化成纯文本

model not found这一类,九成是 ID 抄错或者模型已经下架。回模型广场复制一次,别用历史记录里的旧 ID。

还有一种更隐蔽的情况:请求 200 成功,但 agent 又开始只回文字计划、不调工具了。这说明通道通了,但当前选的模型在工具调用上不够稳。这时候不是配置问题,换一个模型 ID 再试,defaultmodels数组同时改。这也是为什么建议在模型广场挑的时候就优先看有工具调用标注的模型。

6.3 OpenClaw 重启后配置被覆盖

少数情况下,重新跑 wizard 或者某些版本的自动更新会把openclaw.json里手改的部分盖掉,表现为「昨天还好好的,今天又不动了」。养成习惯:改完配置先备份一份cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak,出问题先 diff 一下,比重新排一遍快得多。

7. 这次调用到底记没记账,回控制台看一眼

链路跑通、nmap 正常扫完一轮之后,建议回控制台对一下账。这一步不费事,但能帮你确认两件事:一是这把 Key 的请求确实被计上了,说明通道稳定;二是能看清这次扫描的对话消耗了多少,方便判断后面要不要给 Kali 这台机器换一把独立 Key,或者调整默认模型。

具体路径是:先在 TaoToken 模型对话 里用同一把 Key 手动发一条消息,验证 Key 和模型 ID 都对;长期在 Kali 上让 OpenClaw 跑批量任务的话,可以看一眼 Coding Plan 的套餐够不够;Key 的增删和轮换在 控制台 API Keys 里做。

最后提醒一句排障顺序,别倒过来用:clawhub list确认技能在盘上、openclaw.jsontools.exectools.allow确认放行到位、models.providers确认baseUrlhttps://taotoken.net/apiapiKeyYOUR_API_KEY那把真 Key,三层依次过一遍,再去看 gateway 日志。绝大多数「OpenClaw 调不动 nmap」都停在这三层里的某一层,而不是什么玄学问题。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询