《Node.js实战:如何为AI Agent打造动态Skill插件与视觉闭环?》
文章目录摘要一. 为什么叫Agent因为“热加载”的Skill二. 视觉闭环怎么让大模型看见屏幕三. 安全与容错极客的底线结语摘要在上一篇中我们拆解了Agent的核心多步循环。今天进入实战环节如何不重启服务在网页端直接热加载新的技能插件如何让只有文本能力的大模型真正“看见”屏幕并操作电脑本文将拆解这套开源框架的灵魂设计。一. 为什么叫Agent因为“热加载”的Skill传统写代码加一个功能就要改源码重新编译重启服务。但我希望这个Agent是获得。于是我设计了一个极简的 skills/ 目录里面每一个 .ts文件就是一个独立的技能。约定大于配置一个技能长什么样只需要默认导出一个对象// skills/mouse_click.tsexportdefault{name:mouse_click,description:把鼠标移动到屏幕上的指定坐标并点击。,// 大模型靠这句描述决定要不要调用parameters:{// JSON Schema,告诉打大模型参数怎么传type:object,properties:{x:{type:number},y:{type:number}};required:[x,y],},asyncexecute(args){awaitclickAt(args.x,args.y);return已点击坐标 (${args.x},${args.y});},};不需要注册表不需要写配置文件。只要符合这个接口放进目录里Agent就能认识他。打破缓存的“热重载”魔法前端在网页上提交一段新代码怎么让Node.js立刻生效如果不重启服务ES Module的import是有缓存的他永远只会读旧代码。我的破局方案是给import加上时间戳// src/skillls/loader.tsconstmodawaitimport(${pathToFileURL(full).herf})}?t${Date.now()};在动态导入的URL后面拼一个?t当前时间戳。对Node底层来说这就是一个全新的文件路径。缓存被瞬间击穿新技能即可完成挂载。配合Express的路由用户在网页上点一下“提交”后段fs.writeFile写入文件重新触发扫描整个流程行云流水。二. 视觉闭环怎么让大模型看见屏幕很多人做Agent卡死在了“多模态”这一步。大模型没有眼镜你怎么让他知道你屏幕上弹出了什么窗口按钮在哪里我的方案是截屏 - 转Base64 - 伪装成User消息注入上下文。底层截屏技能用screenshot-desktop截取屏幕转成Base64格式的Data URL// skills/screenshot.tsimportscreenshotfromscreenshot-desktop;exportdefault{name:screenshot,description:截取当前屏幕画面供你查看屏幕内容。,parameters:{type:object,properties:{}},asyncexecute(){constbufawaitscreenshot({format:jpg});return{text:已截屏,images:[data:image/jpeg;base64,${buf.toString(base64)}],};},};巧妙的上下文注入核心逻辑如果直接把这几十兆的图片塞进JSONL历史记录里磁盘几天就爆了。所以在agent.ts中我做了这样一层处理· 把技能的文本结果作为标准的role: user消息存入历史。· 把图像数据作为一条临时role: user多模态消息临时拼接到请求体里。// 伪代码片段if(result.images?.length){message.push({role:user,content:[{type:text,text:(这是最新的屏幕截图请查看)},...result.images.map(url({type:image_url,image_url:{url}}))],});}这样大模型在这一轮对话中“看”到了屏幕算出了鼠标该点在哪里同时这些巨大的图片数据又不会污染我的本地内存。下一次对话他依然只靠文本历史来维持记忆。三. 安全与容错极客的底线开源的项目最怕的就是被注入。在这套插件系统里我做了几层防御文件名正则校验防止路径穿越比如…/…/etc/passwd。工作区沙箱文件读取技能用safe Path锁死在workspace目录下。静默容错如果用户写了个有语法错误的Skill导致无法import加载器会try/catch吞掉异常只打印警告绝不会让整个Agent崩溃。结语技术拆解到这里这套轻量级Agent骨架就基本交底了。把项目拆开聊完顺便聊聊业务最近想攒钱买一台自己喜欢的设备…目前承接以下业务欢迎各位老板或同行交流企业私有化大模型部署 / RAG 知识库搭建Python 自动化脚本定制 / 复杂数据抓取网站 / 小程序 / 全栈开发定制正规企业支持对公账户交付全套源码部署文档包跑通。有需求的老板欢迎发邮件联系我附需求简述Emailanwbdtech.cnGitHub 源码直通车https://github.com/CrazyAI-Jeff/CrazyAI_Agent觉得代码框架还能入眼的求个 Star 支持感谢喵下一篇(完结篇)盘点这套框架的安全设计已知局限以及如何使用Power Shell在Windows底层实现键鼠接管。