OpenClaw技能开发入门为千问3.5-35B-A3B-FP8定制多模态Skill1. 为什么需要定制多模态Skill上周我在整理一批产品截图时突然意识到一个问题这些图片里包含大量有价值的文字信息比如错误日志、配置参数、用户反馈但手动转录既耗时又容易出错。这让我开始思考——既然OpenClaw能操控本地电脑而千问3.5模型具备强大的多模态理解能力为什么不开发一个自动化的图片转文字Skill呢这个需求在技术写作、用户支持、知识管理等场景非常常见。通过本文我将分享如何从零开发一个名为image-to-text的Skill它能截取屏幕指定区域调用千问3.5模型解析图片内容将结果保存为Markdown文件2. 开发环境准备2.1 基础工具链在开始前请确保已部署以下环境我的MacBook Pro实测配置# 验证OpenClaw版本 openclaw --version # 需≥0.8.3 node --version # 需≥18.x npm --version # 需≥9.x2.2 模型服务配置关键步骤是在~/.openclaw/openclaw.json中配置千问3.5模型端点。这是我的配置片段{ models: { providers: { qwen-multimodal: { baseUrl: http://localhost:8080/v1, // 本地模型服务地址 apiKey: your-api-key, api: openai-completions, models: [ { id: qwen3.5-35b-a3b-fp8, name: Qwen Multimodal, supportsVision: true // 关键参数 } ] } } } }注意supportsVision必须设为true否则模型会忽略图片输入。3. 使用ClawHub脚手架创建Skill3.1 初始化项目运行以下命令创建Skill骨架clawhub init image-to-text --templateskill-standard cd image-to-text生成的核心文件结构如下. ├── package.json ├── skill.json # 技能元数据 ├── src │ ├── index.js # 主逻辑 │ └── schemas # 输入输出定义 └── test └── index.test.js3.2 关键配置修改编辑skill.json定义技能能力{ name: image-to-text, description: Convert images to structured text using Qwen3.5, permissions: [screenshot, files.write], inputs: { image: { type: string, format: area-selector // 支持屏幕区域选择 } } }4. 实现核心逻辑4.1 图片捕获模块在src/index.js中添加截图功能const { screen } require(openclaw/abilities); async function captureArea(selector) { const { x, y, width, height } parseSelector(selector); const imageBuffer await screen.capture({ x, y, width, height }); return imageBuffer.toString(base64); }4.2 多模态API调用封装千问3.5的视觉理解接口async function analyzeImage(base64Image) { const response await openclaw.models.chat({ model: qwen3.5-35b-a3b-fp8, messages: [ { role: user, content: [ { type: text, text: 提取图片中的所有文字用Markdown格式返回 }, { type: image_url, image_url: data:image/png;base64,${base64Image} } ] } ] }); return response.choices[0].message.content; }踩坑记录最初直接传递二进制数据导致API报错后来发现必须转换为base64 URL格式。5. 技能测试与调试5.1 单元测试编写测试用例验证核心功能describe(image-to-text, () { it(should process mock image, async () { const mockImage fs.readFileSync(test/mock.png).toString(base64); const result await analyzeImage(mockImage); expect(result).toContain(## Extracted Text); }); });5.2 交互式测试通过OpenClaw控制台实时调试openclaw dev ./image-to-text # 在Web界面输入解析这张图片并选择区域常见问题权限错误 → 执行openclaw permissions grant image-to-text模型超时 → 检查baseUrl是否可达内存不足 → 为Node.js增加堆空间NODE_OPTIONS--max-old-space-size40966. 技能发布与使用6.1 打包发布clawhub publish --access-token YOUR_TOKEN发布后的Skill会出现在ClawHub市场其他用户可通过以下命令安装clawhub install image-to-text6.2 实际应用示例安装后即可通过自然语言使用用户帮我提取这个错误弹窗的文字 Agent 1. 自动弹出区域选择工具 2. 调用千问3.5解析图片 3. 生成包含错误代码和描述的Markdown文件7. 扩展思路这个基础Skill还可以进一步强化表格识别修改prompt让模型提取结构化数据多图处理批量上传图片生成综合报告工作流集成与邮件/Slack等渠道联动通过这次开发我深刻体会到OpenClaw的真正威力不在于单个Skill的功能而在于它能将大模型能力无缝嵌入到实际工作流中。当截图识别、文本处理、文件保存这些操作变成一句自然语言指令时生产力提升是实实在在的。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。