背景
OpenClaw 是一个开源的 AI 助手框架,支持飞书、Telegram、Discord 等多渠道接入。AI 助手可以通过内置的 message 工具发送文字消息,但在飞书上发送图片时遇到了问题——飞书那边收到的是文件路径,不是真正的图片。这不是一个需要你写代码解决的问题。你只需要告诉 AI 助手正确的方法,让它自己去执行。

问题
OpenClaw 的 message 工具在飞书上发图有 bug:
filePath参数 → 飞书收到的是路径文本media参数 + 本地路径 → 失败buffer参数 + base64 → 数据太大AI 助手并不知道还有别的办法。
核心思路
OpenClaw 的 AI 助手每次启动都会读取工作区里的 TOOLS.md 文件。这个文件是"本地笔记",用来记录环境相关的特殊配置和方法。
所以解决方案很简单:把飞书发图的正确方法写进 TOOLS.md,AI 下次醒来读到就会了。
AI 助手有 exec 工具可以执行 shell 命令,而飞书发图的本质就是三个 curl 调用。只要 TOOLS.md 里写清楚了步骤,AI 自己就能组合执行。
操作方法
在 OpenClaw 工作区的 TOOLS.md 文件中,加入以下内容(直接在对话里发给 OpenClaw 就行了):
## 飞书发图片(重要!)
OpenClaw 的 `message` 工具目前不能直接在飞书发送本地图片。
**正确方法:用 exec 工具执行 curl 调飞书 API,分三步:**
### Step 1: 获取 tenant_access_token
APP_SECRET=$(python3 -c "import json; c=json.load(open('/root/.openclaw/openclaw.json')); print(c['channels']['feishu']['appSecret'])")
TOKEN=$(curl -s -X POST 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal' \
-H 'Content-Type: application/json' \
-d '{"app_id":"你的APP_ID","app_secret":"'$APP_SECRET'"}' \
| python3 -c "import json,sys; print(json.load(sys.stdin)['tenant_access_token'])")
### Step 2: 上传图片获取 image_key
IMAGE_KEY=$(curl -s -X POST 'https://open.feishu.cn/open-apis/im/v1/images' \
-H "Authorization: Bearer $TOKEN" \
-F "image_type=message" \
-F "image=@/path/to/image.png" \
| python3 -c "import json,sys; print(json.load(sys.stdin)['data']['image_key'])")
### Step 3: 发送图片消息
curl -s -X POST 'https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id' \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"receive_id":"收信人open_id","msg_type":"image","content":"{\"image_key\":\"'$IMAGE_KEY'\"}"}'
注意:
- 主人的 open_id: ou_xxxxxxxx
- App ID: cli_xxxxxxxx
- 支持格式: JPEG, PNG, WEBP, GIF, TIFF, BMP, ICO把上面的内容写进 TOOLS.md,替换其中的 APP_ID、open_id 为你的实际值。
为什么这样就行了?
OpenClaw 的架构决定了这种方式是可行的:
- TOOLS.md 是 AI 的"备忘录" — 每次会话启动,AI 助手都会读取这个文件,了解环境特有的工具和方法
- AI 有 exec 工具 — 可以执行任意 shell 命令,包括 curl
- 飞书的凭据已经在配置文件里 — AI 可以从
openclaw.json中读取appSecret,不需要额外配置 - AI 能理解上下文 — 当用户说"发张图片给我",AI 读到 TOOLS.md 里的说明,就知道该用 curl 而不是 message 工具本质上,这是在用自然语言给 AI 写"文档"。AI 不需要你写代码、改配置,它只需要一段说明文字就能学会新技能。
效果配置完成后,当你对 AI 助手说:
"截一张Apifox官网首屏的图给我,高清的 "AI 助手会:
- 读到 TOOLS.md 里的飞书发图方法
- 用
exec工具执行 curl 获取 Token - 上传图片拿到 image_key
- 发送图片消息整个过程对用户来说是透明的,你只需要说一句话,剩下的 AI 自己搞定。

总结
传统思路:发现 bug → 改代码 → 重新部署 AI 助手思路:发现 bug → 在 TOOLS.md 里写个 workaround → AI 自己读懂执行
这就是 OpenClaw 的设计哲学:用自然语言配置 AI 的能力。TOOLS.md、SOUL.md、AGENTS.md 这些文件不是给人看的配置文件,而是给 AI 看的"说明书"。
OpenClaw 交流群
如果你也在折腾 OpenClaw,或者对 AI Agent、自动化工具感兴趣,欢迎加入以下交流群。一起交流使用经验、分享自动化玩法、讨论最新进展。