3 天搞定 Java 版 AI 智能体!从安装 OpenClaw 到接管浏览器、发消息完整实战
文章目录
无意间发现了一个CSDN大神的人工智能教程,忍不住分享一下给大家。很通俗易懂,重点是还非常风趣幽默,像看小说一样。床送门放这了👉 http://blog.csdn.net/jiangjunshow
前言
还记得第一次看到AI自己打开浏览器查资料、填表单、发微信消息的那种震撼吗?就像看着自家猫突然学会了自己开罐头——这玩意儿居然真的能动起来!不过作为Java程序员,看着满屏幕的Python教程和Node.js脚本,总感觉像是去火锅店只能看着别人涮毛肚。
别急,今天这篇就是给Java老铁们的专属攻略。咱们不用换技术栈,就用最熟悉的Spring Boot,三天时间手把手搭出一个能控制浏览器、能发消息的AI智能体。坐稳了,这趟车直达"数字员工"终点站。
第一天:给电脑装个"数字大脑"
说白了,OpenClaw就是个住在电脑里的24小时待机小助手。它不像ChatGPT那样问一句答一句,而是像贴心管家一样,你说"帮我查查明天杭州的天气,然后发微信告诉老妈",它真能自己打开网页、查完天气、再点开微信发送——全程不需要你动手。
环境准备:别在第一步就踩坑
工欲善其事,先得把Node.js装好。OpenClaw本体是基于Node.js运行的,去官网下载v22以上的版本,别用 antique 的老版本,不然后面各种报错能让你怀疑人生。
装完验证一下:
node -v
npm -v
接下来是重头戏——安装OpenClaw。2026年的安装已经比早期版本简单太多了,一行命令搞定:
npm install -g openclaw@latest
装完记得验证版本,看到2026.x.x这样的版本号才算成功:
openclaw --version
这时候还有个关键组件得装上——mcporter。这货是OpenClaw连接外部世界的"万能转接头",没有它,咱们的Java代码根本没法跟OpenClaw对话。
npm install -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: true
name: my-java-agent
version: 1.0.0
transport:
type: stdio
command: mcporter
args:
- call
- playwright
这里有个坑得注意:OpenClaw通过mcporter去启动各种MCP服务。咱们要控制浏览器,就用Playwright的MCP Server。它内置了22个浏览器操作工具,点开网页、填表单、截图、爬数据,样样精通。
写个能控制浏览器的Java代码
来,看点实在的。下面这段代码能让AI自动打开京东,搜索"机械键盘",然后把第一页的商品标题都抓回来:
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
public class AgentController {
private final McpClient mcpClient;
public AgentController(McpClient mcpClient) {
this.mcpClient = mcpClient;
}
@PostMapping("/search")
public String autoSearch(@RequestBody String 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支持这种方式,只需要改一下调用方式:
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AgentController {
private final McpClient mcpClient;
public AgentController(McpClient mcpClient) {
this.mcpClient = mcpClient;
}
@PostMapping("/smart-search")
public String smartSearch(@RequestBody String 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" \
--env WECHAT_KEY=你的企业微信密钥
然后在Java代码里就能直接发消息了:
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class WeChatService {
private final McpClient mcpClient;
public WeChatService(McpClient mcpClient) {
this.mcpClient = mcpClient;
}
public void sendDailyReport(String content) {
// 调用企业微信MCP工具发送群消息
mcpClient.callTool("wecom_send_message", Map.of(
"chat_id", "部门群ID",
"msg_type", "text",
"content", content
));
}
public String fetchUnreadMessages() {
// 获取未读消息并总结
var messages = mcpClient.callTool("wecom_get_unread", Map.of());
// 这里可以接大模型做总结
return summarizeWithAI(messages);
}
}
完整的日报自动化流程
来个完整的例子,展示如何把这些能力串起来:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class DailyReportJob {
@Scheduled(cron = "0 0 18 * * MON-FRI")
public void generateAndSendReport() {
// 1. 打开项目管理系统获取今日完成任务
var tasks = fetchTodayTasks();
// 2. 打开GitLab获取今日提交记录
var commits = fetchTodayCommits();
// 3. 让AI总结成日报格式
String report = aiSummarize(tasks, commits);
// 4. 自动发到企业微信群
sendToWeCom(report);
// 5. 截图备份发到个人微信文件传输助手
backupScreenshot(report);
}
private String fetchTodayTasks() {
// 通过Playwright登录Jira/禅道等系统爬取数据
mcpClient.callTool("browser_navigate",
Map.of("url", "https://jira.company.com"));
// ... 自动化操作
return extractedData;
}
private void backupScreenshot(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时代玩出花样。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)