🦞 龍蝦圖片辨識 Skill
將 Coze 圖片辨識工作流封裝為 OpenClaw Agent Skill,從 API 探索到自動化調用的完整開發實錄。
使用的技術
🎯 為什麼做這個
在 OpenClaw Agent 上工作時,需要一個能自動辨識圖片內容的工具。Coze(扣子)平台提供了一個圖片辨識工作流, 但要讓 Agent 能直接調用它,需要把 API 封裝成一個標準的 Skill。這篇文章記錄了從零到完成的全過程。
🧩 Coze 工作流設計
在 Coze(扣子)平台上建立了一個名為「picture」的圖片辨識工作流, 由三個節點組成:開始 → 大模型 → 結束。使用「豆包·2.0·lite」模型, 透過視覺理解能力分析圖片並輸出結構化辨識結果。

圖 1:工作流總覽 — 開始(input + image)→ 大模型(豆包·2.0·lite)→ 結束

圖 2:大模型節點 — 輸入綁定(input + image)與系統提示詞
系統提示詞設計
你是圖片辨識助手,專注於精準理解圖片內容,為使用者提供清晰的辨識結果。
圖片辨識 — 當使用者上傳圖片並請求辨識內容時觸發。
- 接收使用者上傳圖片
- 調用圖像辨識工具分析
- 結構化輸出辨識結果

圖 3:系統提示詞 — 視覺理解輸入綁定與回覆格式

圖 4:發布選單 — API、Playground、導出

圖 5:API 調試 — stream_run 調用範例
🏗️ 整體架構設計
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ 使用者傳圖 │────▶│ OpenClaw │────▶│ Coze Workflow │
│ (Telegram) │ │ Agent Skill │ │ (圖片辨識) │
└─────────────┘ └──────┬───────┘ └────────┬────────┘
│ │
┌──────▼───────┐ ┌──────▼────────┐
│ 本地檔案? │ │ SSE Stream │
│ → 先上傳 │ │ 解析輸出 │
│ URL? │ └───────────────┘
│ → 直接傳 │
└──────────────┘📝 開發過程
第一步:API 探索 — 哪個 Endpoint 能用?
一開始用 /v1/workflow/run 不帶參數測試,成功收到回應「請上傳圖片」, 確認工作流存在且 token 有效。
第二步:踩坑 — parameters 帶 image 就 5000
嘗試在 parameters 裡直接傳"image": "https://...", 結果用 /v1/workflow/run 一直報 5000 錯誤。
後來才發現兩個關鍵問題:
第三步:本地檔案的問題 — Token 權限
工作流只接受 URL,但使用者從 Telegram 傳的圖片是本地檔案。解法是用 Coze 的/v1/files/upload API 先上傳,拿到file_id,再以特殊格式傳入:
但一開始用的 token(cztei_ 開頭)沒有文件上傳權限,報 access token invalid。 需要到 Coze API 後台建立有文件上傳權限的 PAT(pat_ 開頭)才能上傳成功。
第四步:SSE Stream 解析
stream_run 回應是 SSE(Server-Sent Events)格式, 不是普通 JSON。需要解析事件流,找到 node_type: "End" 的Message 事件才算完成:
id: 0
event: Message
data: {"node_title":"End","node_type":"End",
"node_is_finish":true,
"content":"{\"output\":\"識別結果...\"}"}
id: 1
event: Done
data: {"debug_url":"..."}第五步:Skill 封裝
最終封裝為 OpenClaw Agent Skill,目錄結構:
腳本自動判斷輸入類型:
# 公開 URL → 直接傳 bash recognize.sh "https://example.com/photo.jpg" # 本地檔案 → 先上傳再辨識 bash recognize.sh "/path/to/local/image.jpg" # 加自訂提示 bash recognize.sh "/path/to/image.jpg" "請描述風格"
✨ 最終效果
在 Telegram 上直接發圖給 Agent,Agent 自動調用 Skill 辨識,幾秒內回傳結構化結果: