#工具缺失
1 messages · Page 1 of 1 (latest)
你贴的这个只是汇总:Eligible: 5 / Missing requirements: 47 代表「有 47 个内置/已发现的 skills 因为缺少依赖(缺少某个命令行工具 / 环境变量 / 配置开关 / 操作系统不匹配)所以被判定为不符合加载条件」,不一定是“坏了”。
要定位并解决,需要把“缺了什么”打印出来:
- 先发一下版本/系统(很关键)
openclaw --version- 你是什么系统:macOS / Windows / Linux(发行版)
- 把缺失明细贴出来(这一步才能对症下药)
openclaw skills check- 或者你也可以跑:
openclaw skills list --eligible看目前到底哪 5 个可用 - 如果你关心某一个具体 skill:
openclaw skills info <skill-name>
- 常见原因(你对照
skills check输出就能直接解决)
- requires.bins:缺某个命令(比如 ffmpeg / git / python / uv / docker 等)→ 安装对应工具并确保在
PATH - requires.env:缺 API Key 环境变量(比如搜索/图片/第三方服务的 key)→ 设置 env 或在
~/.openclaw/openclaw.json的skills.entries.<skill>.env/apiKey配 - requires.config:缺某个配置开关 → 打开对应功能
- os 限制:有些技能只支持
darwin(macOS)。如果你在 Windows/Linux,上来就会“missing requirements”很正常;想用 mac-only 技能,需要 macOS 机器(或连接一个 macOS node)
- 改完依赖/配置后
skills 的可用列表通常会在新会话/下一次 turn刷新;不行就重启一下 gateway 再试。
相关文档:
- Skills/判定规则说明:https://docs.openclaw.ai/tools/skills
- CLI 用法:https://docs.openclaw.ai/cli/skills
- skills 配置:https://docs.openclaw.ai/tools/skills-config
你把 openclaw --version + openclaw skills check 的输出(至少把前面列出缺哪些 requirements 的那段)贴一下,我就能告诉你具体缺什么、该装哪个依赖/改哪条配置。
@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回复我说做不到
你这份 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)
- 把 md 文件放进 OpenClaw 的 workspace(或直接在聊天里上传 md 文件)
- 对它说:让它编辑
./xxx.md,并说明要怎么改 - 它会用
read/edit/write完成修改
你方便再补 3 个信息吗(越少越快定位):
- 你是通过什么跟 OpenClaw 聊天:Discord / Telegram / CLI / Dashboard?
openclaw sandbox explain输出(打码)- 你要编辑的 md 文件现在在哪个路径?(在 workspace 内还是你自己的任意目录)
discord
md在workspace里
另外,我使用多智能体,如何检查非默认智能体的工具权限
明白了:你是 Discord 在用,而且 md 在 workspace 里;再加上你用 多智能体,最常见的坑其实是:
- Discord 这条消息被路由到了 某个非默认 agent
- 这个 agent 的 workspace 跟你放 md 的 workspace 不是同一个(多智能体每个 agent 可以有不同 workspace)
- 或者这个 agent(或它的 sandbox)对
group:fs(read/write/edit)做了限制 - 另外: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)
都列出来。
文档也明确支持 --agent:https://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)我就能直接告诉你是哪一种情况: