OpenClaw技能开发入门:为Phi-3-vision-128k定制图片翻译模块
OpenClaw技能开发入门为Phi-3-vision-128k定制图片翻译模块1. 为什么需要自定义图片翻译技能去年我在整理海外技术文档时经常遇到带文字的截图需要翻译。传统做法是先OCR识别再粘贴到翻译软件整个过程要切换多个工具。直到发现OpenClaw可以通过技能扩展实现端到端自动化才决定动手开发这个图片翻译模块。选择Phi-3-vision-128k作为后端模型有两个原因一是其多模态能力可以直接理解图片内容二是128k上下文窗口适合处理高分辨率图像。这个组合让翻译过程无需中间OCR步骤直接从图片到目标语言。2. 开发环境准备2.1 基础工具链配置我的开发环境是macOS VS Code先通过Homebrew安装必要依赖brew install node22 imagemagick npm install -g openclawlatest clawhublatest验证环境时遇到个小坑ImageMagick需要额外授权屏幕录制权限。在系统设置的隐私与安全性中手动开启后图片预处理功能才能正常工作。2.2 创建技能脚手架使用ClawHub CLI初始化项目mkdir image-translator cd image-translator clawhub init --typeskill --nameimage-translator --authoryourname生成的项目结构包含三个关键文件skill.json技能元数据声明index.js主逻辑入口config.schema.json配置参数校验规则3. 核心功能开发3.1 图片预处理逻辑考虑到模型对输入图像的尺寸限制我添加了自动缩放功能。在index.js中实现const { execSync } require(child_process) const fs require(fs) async function preprocessImage(imagePath) { const tempPath /tmp/processed.jpg try { execSync(convert ${imagePath} -resize 1024x1024 -quality 90 ${tempPath}) return { buffer: fs.readFileSync(tempPath), mimeType: image/jpeg } } catch (error) { throw new Error(图片处理失败: ${error.message}) } }这段代码使用ImageMagick的convert命令确保输出图像不超过1024x1024分辨率同时保留90%的JPEG质量。3.2 多模态API调用对接Phi-3-vision需要构造特定的消息格式。我参考了模型文档封装出请求方法async function callPhi3Vision(imageData, targetLang) { const response await openclaw.models.generate({ model: phi-3-vision-128k, messages: [{ role: user, content: [ { type: text, text: 将图片中的文字翻译成${targetLang}保持原格式 }, { type: image_url, image_url: data:${imageData.mimeType};base64,${imageData.buffer.toString(base64)} } ] }], max_tokens: 4096 }) return response.choices[0].message.content }关键点在于构造multimodal messages数组其中同时包含文本指令和base64编码的图片数据。4. 技能打包与测试4.1 本地调试技巧在skill.json中声明测试命令{ test: { commands: [ { name: 测试英文翻译, command: node test/en-to-zh.js } ] } }创建测试脚本test/en-to-zh.jsconst skill require(../index) const fs require(fs) const imageBuffer fs.readFileSync(test/sample.jpg) skill.execute({ image: imageBuffer, targetLang: 简体中文 }).then(console.log)通过clawhub test运行测试时我发现模型有时会返回多余的解释文字。于是增加了后处理函数用正则表达式提取核心翻译内容。4.2 发布到ClawHub市场发布前需要完善技能元数据{ name: image-translator, version: 1.0.0, description: 基于Phi-3-vision的图片翻译技能, tags: [translation, multimodal, phi3], compatibility: { openclaw: 1.2.0 } }执行发布命令clawhub publish --access-token your_token发布后约5分钟技能就会出现在ClawHub市场。其他用户可以通过clawhub install image-translator直接安装。5. 实际应用效果在我的MacBook Pro上测试翻译一张包含300个英文单词的技术图表平均耗时12秒包括图片预处理和模型推理。相比传统OCR翻译的流程节省了至少2分钟的手动操作时间。目前发现的限制主要有复杂排版如多栏文档的格式保持不够理想某些专业术语的翻译需要人工校对超大图片超过8MB需要额外切割处理这些都可以通过后续迭代优化。比如针对第三条我计划在下个版本加入自动分块功能。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。