3 天搞定 Java 版 AI 智能体!从安装 OpenClaw 到接管浏览器、发消息完整实战
文章目录
无意间发现了一个ZEEKLOG大神的人工智能教程,忍不住分享一下给大家。很通俗易懂,重点是还非常风趣幽默,像看小说一样。床送门放这了👉 http://blog.ZEEKLOG.net/jiangjunshow
前言
还记得第一次看到AI自己打开浏览器查资料、填表单、发微信消息的那种震撼吗?就像看着自家猫突然学会了自己开罐头——这玩意儿居然真的能动起来!不过作为Java程序员,看着满屏幕的Python教程和Node.js脚本,总感觉像是去火锅店只能看着别人涮毛肚。
别急,今天这篇就是给Java老铁们的专属攻略。咱们不用换技术栈,就用最熟悉的Spring Boot,三天时间手把手搭出一个能控制浏览器、能发消息的AI智能体。坐稳了,这趟车直达"数字员工"终点站。
第一天:给电脑装个"数字大脑"
说白了,OpenClaw就是个住在电脑里的24小时待机小助手。它不像ChatGPT那样问一句答一句,而是像贴心管家一样,你说"帮我查查明天杭州的天气,然后发微信告诉老妈",它真能自己打开网页、查完天气、再点开微信发送——全程不需要你动手。
环境准备:别在第一步就踩坑
工欲善其事,先得把Node.js装好。OpenClaw本体是基于Node.js运行的,去官网下载v22以上的版本,别用 antique 的老版本,不然后面各种报错能让你怀疑人生。
装完验证一下:
node-vnpm-v接下来是重头戏——安装OpenClaw。2026年的安装已经比早期版本简单太多了,一行命令搞定:
npminstall-g openclaw@latest 装完记得验证版本,看到2026.x.x这样的版本号才算成功:
openclaw --version这时候还有个关键组件得装上——mcporter。这货是OpenClaw连接外部世界的"万能转接头",没有它,咱们的Java代码根本没法跟OpenClaw对话。
npminstall-g mcporter 装完后执行 mcporter list,如果看到提示"无配置"而不是"command not found",恭喜你,第一关过了。
启动你的第一个Agent
现在来唤醒这个数字大脑。在终端输入:
openclaw gateway start 你会看到控制台开始输出各种日志,最后停在一个本地地址上,比如 http://localhost:18789。这就是你的Agent控制中枢。
第一次用需要生成访问令牌:
openclaw token generate 生成的token会自动保存在 ~/.openclaw/openclaw.json 里,后续所有操作都需要它。建议把这串字符记在小本本上,丢了就得重新生成。
这时候打开浏览器,访问控制台地址加上token参数,比如 http://localhost:18789/?token=你的Token,如果能看到一个简洁的Web界面,里面有个输入框等着你说点什么,那就说明你的"数字大脑"已经开机成功,就等接上手和脚了。
第二天:Java程序员的"通灵术"——MCP协议
好了,现在咱们有个能听懂话的大脑,但还缺身体——怎么让它真的去操作浏览器、发微信呢?这就要请出今天的主角:MCP(Model Context Protocol)。
你可以把MCP理解成AI界的"USB接口"。就像你的键盘、鼠标、U盘都能插同一个USB口,MCP让AI能插上各种工具:浏览器、数据库、微信、地图……只要有对应的MCP Server,AI就能操控它。
Spring AI在2025年底正式支持了MCP协议,这对Java程序员来说简直是天降福音。不用再写一堆HTTP调用,直接用Spring的方式就能跟AI Agent对话。
搭建Spring Boot项目
新建一个Spring Boot项目,依赖记得加上这些:
- Spring Boot 3.2+
- Spring AI MCP(spring-ai-mcp)
- Playwright(用于浏览器自动化)
pom.xml里的关键配置长这样:
org.springframework.boot spring-boot-starter-web org.springframework.ai spring-ai-mcp 0.8.1 com.microsoft.playwright playwright 1.44.0 配置MCP连接
在 application.yml 里配上连向OpenClaw的桥梁:
spring:ai:mcp:client:enabled:truename: my-java-agent version: 1.0.0 transport:type: stdio command: mcporter args:- call - playwright 这里有个坑得注意:OpenClaw通过mcporter去启动各种MCP服务。咱们要控制浏览器,就用Playwright的MCP Server。它内置了22个浏览器操作工具,点开网页、填表单、截图、爬数据,样样精通。
写个能控制浏览器的Java代码
来,看点实在的。下面这段代码能让AI自动打开京东,搜索"机械键盘",然后把第一页的商品标题都抓回来:
importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RestController;importjava.util.Map;@RestControllerpublicclassAgentController{privatefinalMcpClient mcpClient;publicAgentController(McpClient mcpClient){this.mcpClient = mcpClient;}@PostMapping("/search")publicStringautoSearch(@RequestBodyString keyword){// 告诉AI:打开京东首页 mcpClient.callTool("browser_navigate",Map.of("url","https://www.jd.com"));// 等待页面加载,找到搜索框 mcpClient.callTool("browser_wait_for",Map.of("selector","#key"));// 在搜索框里输入关键词 mcpClient.callTool("browser_type",Map.of("selector","#key","text", keyword));// 点击搜索按钮 mcpClient.callTool("browser_click",Map.of("selector",".button"));// 等待结果页加载 mcpClient.callTool("browser_wait_for",Map.of("time",3));// 执行JS代码抓取商品标题String script =""" return Array.from(document.querySelectorAll('.p-name a')) .slice(0, 5) .map(a => a.textContent.trim()); """;var result = mcpClient.callTool("browser_evaluate",Map.of("function", script));return"抓到的数据:"+ result;}}这段代码看起来简单,但背后全是门道。McpClient就是Spring AI给的"遥控器",每个callTool都是在指挥远端的OpenClaw去操作Playwright控制的浏览器。
关键点在于 browser_evaluate 这个工具,它能让我们在页面里执行任意JavaScript代码。这就好比AI不仅能帮你点开网页,还能在页面里"翻箱倒柜"找数据,甚至直接操作DOM。
让AI自己决定怎么干
上面的代码是指令式的——咱们一步步告诉AI先干嘛后干嘛。但真正的智能体应该是目标式的——咱们只说"我要什么",AI自己规划步骤。
Spring AI支持这种方式,只需要改一下调用方式:
importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassAgentController{privatefinalMcpClient mcpClient;publicAgentController(McpClient mcpClient){this.mcpClient = mcpClient;}@PostMapping("/smart-search")publicStringsmartSearch(@RequestBodyString goal){// 让AI自己理解目标并规划步骤String prompt =""" 目标:%s 你可以使用以下工具: - browser_navigate: 打开指定URL - browser_type: 在输入框填入文字 - browser_click: 点击元素 - browser_evaluate: 执行JavaScript获取数据 请规划步骤并完成目标,最后返回获取的数据。 """.formatted(goal);return mcpClient.executeWithPrompt(prompt);}}这时候AI会像人一样思考:“要去京东搜机械键盘?那我得先打开jd.com,然后找到搜索框……” 自动就把活干了。这种感觉,就像雇了个不用睡觉的实习生,而且还不用买咖啡。
第三天:打通微信,让你的Agent学会"社交"
浏览器自动化只是基本功,真正的杀手锏是让Agent能替你发消息。想象一下:每天下班前,Agent自动帮你给团队发日报,还能根据聊天记录总结待办事项——这不就是每个打工人的梦想吗?
企业微信集成方案
2026年最稳的方案是通过企业微信的Webhook或者私有部署的WorkBuddy。腾讯基于OpenClaw封装的WorkBuddy已经支持通过WebSocket协议与企业微信对接。
首先在OpenClaw里配置企业微信的MCP Server:
mcporter config add wecom \--url"https://work.weixin.qq.com/api/mcp"\--envWECHAT_KEY=你的企业微信密钥 然后在Java代码里就能直接发消息了:
importorg.springframework.stereotype.Service;importjava.util.Map;@ServicepublicclassWeChatService{privatefinalMcpClient mcpClient;publicWeChatService(McpClient mcpClient){this.mcpClient = mcpClient;}publicvoidsendDailyReport(String content){// 调用企业微信MCP工具发送群消息 mcpClient.callTool("wecom_send_message",Map.of("chat_id","部门群ID","msg_type","text","content", content ));}publicStringfetchUnreadMessages(){// 获取未读消息并总结var messages = mcpClient.callTool("wecom_get_unread",Map.of());// 这里可以接大模型做总结returnsummarizeWithAI(messages);}}完整的日报自动化流程
来个完整的例子,展示如何把这些能力串起来:
importorg.springframework.scheduling.annotation.Scheduled;importorg.springframework.stereotype.Component;@ComponentpublicclassDailyReportJob{@Scheduled(cron ="0 0 18 * * MON-FRI")publicvoidgenerateAndSendReport(){// 1. 打开项目管理系统获取今日完成任务var tasks =fetchTodayTasks();// 2. 打开GitLab获取今日提交记录var commits =fetchTodayCommits();// 3. 让AI总结成日报格式String report =aiSummarize(tasks, commits);// 4. 自动发到企业微信群sendToWeCom(report);// 5. 截图备份发到个人微信文件传输助手backupScreenshot(report);}privateStringfetchTodayTasks(){// 通过Playwright登录Jira/禅道等系统爬取数据 mcpClient.callTool("browser_navigate",Map.of("url","https://jira.company.com"));// ... 自动化操作return extractedData;}privatevoidbackupScreenshot(String content){// 生成HTML报告并截图// 使用browser工具打开本地HTML文件截图 mcpClient.callTool("browser_navigate",Map.of("url","file:///tmp/report.html")); mcpClient.callTool("browser_take_screenshot",Map.of("filename","daily-report.png"));}}这套组合拳打下来,原本每天花半小时整理的日报,现在Agent 30秒就搞定了。而且因为它跑在你本地机器上,数据安全性比那些云上的SaaS工具强多了——毕竟代码和密钥都捏在自己手里。
避坑指南:那些血泪换来的经验
走到这儿,你的Java Agent基本能跑起来了。但有几个坑我必须提前给你打预防针,这都是我踩过的真坑:
- 超时问题:Playwright操作如果超过60秒,默认的WebSocket连接会熔断。解决办法是在Spring AI的配置里调高超时,或者改用异步回调模式。
- 环境隔离:强烈建议用WSL2或者Docker跑OpenClaw,特别是Windows用户。有些npm包在Windows下编译会报错,Linux环境稳得多。
- 密钥管理:千万别把API Key硬编码在代码里。用Spring的@Value注入,配合环境变量或者阿里云Secrets Manager,这是生产环境的基本修养。
- 资源释放:Playwright的浏览器实例很吃内存,用完记得调用
browser_close。否则跑几天你的电脑会变卡,风扇狂转像要起飞。
写在最后:这只是开始
三天时间,我们从零搭出了一个能看网页、能发消息、能自动执行定时任务的Java版AI智能体。但这只是OpenClaw能力的冰山一角。
现在ClawHub技能市场上已经有3200多个MCP服务,从查天气到操作数据库,从发邮件到控制智能家居,你能想到的功能基本都有现成的"USB接口"。作为Java程序员,咱们终于不用看着Python开发者炫技了,Spring AI + MCP的组合完全能打出更漂亮的组合拳。
更妙的是,这套架构是开放的。你们公司内部的OA系统、财务系统,只要包装成MCP Server,Agent就能操作。这比传统的RPA工具灵活得多,因为AI理解自然语言,稍微改改需求不用重新写脚本,Agent自己就能适应。
赶紧去试试吧,说不定下周你就能给老板演示"一句话让AI自动整理周报并群发"的神奇操作了。到时候别忘了回来点个赞,咱们Java程序员也能在AI时代玩出花样。