#工具缺失

1 messages · Page 1 of 1 (latest)

frosty stirrup
#

我通过npm安装了openclaw,但是我的原生技能都有问题,该如何解决,以下是openclaw doctor的诊断:

◇ Skills status ────────────╮
│ │
│ Eligible: 5 │
│ Missing requirements: 47 │
│ Blocked by allowlist: 0 │
│ │
├────────────────────────────╯

lavish skiffBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

empty basaltBOT
#

你贴的这个只是汇总Eligible: 5 / Missing requirements: 47 代表「有 47 个内置/已发现的 skills 因为缺少依赖(缺少某个命令行工具 / 环境变量 / 配置开关 / 操作系统不匹配)所以被判定为不符合加载条件」,不一定是“坏了”。

要定位并解决,需要把“缺了什么”打印出来:

  1. 先发一下版本/系统(很关键)
  • openclaw --version
  • 你是什么系统:macOS / Windows / Linux(发行版)
  1. 把缺失明细贴出来(这一步才能对症下药)
  • openclaw skills check
  • 或者你也可以跑:openclaw skills list --eligible 看目前到底哪 5 个可用
  • 如果你关心某一个具体 skill:openclaw skills info <skill-name>
  1. 常见原因(你对照 skills check 输出就能直接解决)
  • requires.bins:缺某个命令(比如 ffmpeg / git / python / uv / docker 等)→ 安装对应工具并确保在 PATH
  • requires.env:缺 API Key 环境变量(比如搜索/图片/第三方服务的 key)→ 设置 env 或在 ~/.openclaw/openclaw.jsonskills.entries.<skill>.env/apiKey
  • requires.config:缺某个配置开关 → 打开对应功能
#
  • os 限制:有些技能只支持 darwin(macOS)。如果你在 Windows/Linux,上来就会“missing requirements”很正常;想用 mac-only 技能,需要 macOS 机器(或连接一个 macOS node)
  1. 改完依赖/配置后
    skills 的可用列表通常会在新会话/下一次 turn刷新;不行就重启一下 gateway 再试。

相关文档:

你把 openclaw --version + openclaw skills check 的输出(至少把前面列出缺哪些 requirements 的那段)贴一下,我就能告诉你具体缺什么、该装哪个依赖/改哪条配置

frosty stirrup
#

@empty basalt
2026.3.2
🔐 1password (bins: op)
📝 apple-notes (bins: memo; os: darwin)
⏰ apple-reminders (bins: remindctl; os: darwin)
🐻 bear-notes (bins: grizzly; os: darwin)
📰 blogwatcher (bins: blogwatcher)
🫐 blucli (bins: blu)
🫧 bluebubbles (config: channels.bluebubbles)
📸 camsnap (bins: camsnap)
📦 clawhub (bins: clawhub)
🎮 discord (config: channels.discord.token)
🎛️ eightctl (bins: eightctl)
♊️ gemini (bins: gemini)
📦 gh-issues (bins: gh)
🧲 gifgrep (bins: gifgrep)
🐙 github (bins: gh)
🎮 gog (bins: gog)
📍 goplaces (bins: goplaces; env: GOOGLE_PLACES_API_KEY)
📧 himalaya (bins: himalaya)
📨 imsg (bins: imsg; os: darwin)
📦 mcporter (bins: mcporter)
📊 model-usage (bins: codexbar; os: darwin)
🍌 nano-banana-pro (bins: uv; env: GEMINI_API_KEY)
📄 nano-pdf (bins: nano-pdf)
📝 notion (env: NOTION_API_KEY)
💎 obsidian (bins: obsidian-cli)
🖼️ openai-image-gen (env: OPENAI_API_KEY)
🎙️ openai-whisper (bins: whisper)
☁️ openai-whisper-api (env: OPENAI_API_KEY)
💡 openhue (bins: openhue)
🧿 oracle (bins: oracle)
🛵 ordercli (bins: ordercli)
👀 peekaboo (bins: peekaboo; os: darwin)
🗣️ sag (bins: sag; env: ELEVENLABS_API_KEY)
📜 session-logs (bins: jq, rg)
🗣️ sherpa-onnx-tts (env: SHERPA_ONNX_RUNTIME_DIR, SHERPA_ONNX_MODEL_DIR)
💬 slack (config: channels.slack)
🌊 songsee (bins: songsee)
🔊 sonoscli (bins: sonos)
🎵 spotify-player (anyBins: spogo, spotify_player)
🧾 summarize (bins: summarize)
✅ things-mac (bins: things; os: darwin)
🧵 tmux (bins: tmux; os: darwin, linux)
📋 trello (bins: jq; env: TRELLO_API_KEY, TRELLO_TOKEN)
🎞️ video-frames (bins: ffmpeg)
📞 voice-call (config: plugins.entries.voice-call.enabled)
📱 wacli (bins: wacli)
𝕏 xurl (bins: xurl)

我现在只需要让我的openclaw可以正常阅读编辑md文档,但是我的openclaw回复我说做不到

empty basaltBOT
#

你这份 skills check 输出里,大部分 missing 都是因为缺少第三方 CLI / 没配 API key / 或者 os: darwin(只支持 macOS),这跟“能不能读/改 md 文件”其实是两回事。

你现在遇到的“OpenClaw 说做不到读/编辑 md”,通常只有两种原因:

1) 文件工具被禁用了(最常见)

如果你的 openclaw.json 里把工具限制成了 minimal / messaging,或者设置了 tools.allow 但没包含文件工具,那模型根本拿不到 read/write/edit 工具,就只能口头说“做不到”。

按文档,文件工具在 group:fs 里:read, write, edit, apply_patch
参考: https://docs.openclaw.ai/tools (Tool groups 部分)

你可以在 ~/.openclaw/openclaw.json 里用最小改法(只给文件能力):

{
  tools: {
    allow: ["group:fs"]
#
  }
}

或者更推荐(写文档/改代码常用配置):

{
  tools: {
    profile: "coding"
  }
}

改完重启 gateway / 开个新会话再试。

#

注意:如果你是在 Discord 群里对 bot 开放读写文件工具,风险很高;务必把 allowFrom/访问控制配好,只允许你自己用。


2) 你在沙箱里跑,沙箱看不到你的真实文件

很多人默认是“非 main 会话走 Docker sandbox”。而群聊/频道会话通常算 non-main,默认会进沙箱。沙箱默认 workspaceAccess: "none" 时,read 工具只看得到沙箱里的文件,看不到你电脑上的路径,所以它也会说“做不到”。

文档说明: https://docs.openclaw.ai/gateway/sandboxing (Workspace access 部分)

排查最直接的一条命令是:

openclaw sandbox explain

把输出贴出来(记得打码 token),我就能告诉你到底是 tool policy 还是 sandbox workspaceAccess 卡住了。

#

你想要的“只读/改 md”的推荐用法(不用装那堆 skills)

  1. 把 md 文件放进 OpenClaw 的 workspace(或直接在聊天里上传 md 文件)
  2. 对它说:让它编辑 ./xxx.md,并说明要怎么改
  3. 它会用 read/edit/write 完成修改

你方便再补 3 个信息吗(越少越快定位):

  1. 你是通过什么跟 OpenClaw 聊天:Discord / Telegram / CLI / Dashboard?
  2. openclaw sandbox explain 输出(打码)
  3. 你要编辑的 md 文件现在在哪个路径?(在 workspace 内还是你自己的任意目录)
frosty stirrup
#

discord
md在workspace里
另外,我使用多智能体,如何检查非默认智能体的工具权限

empty basaltBOT
#

明白了:你是 Discord 在用,而且 md 在 workspace 里;再加上你用 多智能体,最常见的坑其实是:

  1. Discord 这条消息被路由到了 某个非默认 agent
  2. 这个 agent 的 workspace 跟你放 md 的 workspace 不是同一个(多智能体每个 agent 可以有不同 workspace)
  3. 或者这个 agent(或它的 sandbox)对 group:fs(read/write/edit)做了限制
  4. 另外:Discord 频道/群聊 session 往往算 non-main,默认会进 sandbox;如果 workspaceAccess: "none",即使文件在 host workspace,sandbox 也看不到

下面按顺序查,一般 2 分钟能定位。


1) 先确认:Discord 到底在用哪个 agent + 它的 workspace 是哪

运行:

openclaw agents list --bindings
#

看 Discord 这个 peer/match 命中的 agentId 是谁,以及这个 agent 配的 workspace 路径。
你要编辑的 md 必须放在“这个 agent 的 workspace”里


2) 检查“非默认智能体”的工具权限(你问的点)

对那个 agent(假设叫 work)运行:

openclaw sandbox explain --agent work

这个输出会把 有效的

  • sandbox 是否启用(mode/scope)
  • workspaceAccess(none/ro/rw)
  • tool policy(allow/deny,是否包含 group:fs
    都列出来。
#

文档也明确支持 --agenthttps://docs.openclaw.ai/cli/sandbox


3) 如果你看到 tools 里没有 group:fs(或被 deny)

那就需要在该 agent 的配置里给文件工具(最小化只开文件编辑):

{
  agents: {
    list: [
      {
        id: "work",
        tools: {
          allow: ["group:fs"]
        }
#
      }
    ]
  }
}

或直接:

{ tools: { profile: "coding" } }

(coding profile 默认包含 group:fs


#

4) 如果 tools 有了,但还是“读不到 workspace 里的 md”

重点看 openclaw sandbox explain --agent <id>workspaceAccess 是不是 none

  • workspaceAccess: "none":sandbox 看不到 host workspace(你放对地方也没用)
  • 你要能改 md,一般需要 workspaceAccess: "rw"(只读就用 ro

改完后需要重建容器让配置生效:

openclaw sandbox recreate --agent work

然后再试。


你把两段输出贴一下(记得打码 token)我就能直接告诉你是哪一种情况: