Java开发者狂喜!本地AI助手JavaClaw开源,隐私可控还能自定义扩展

Java开发者狂喜!本地AI助手JavaClaw开源,隐私可控还能自定义扩展对于Java开发者来说,能拥有一个基于自身技术栈、可本地部署、功能强大的AI助手,无疑是提升效率的利器。今天就给大家推荐一个宝藏开源项目——JavaClaw,一款运行在你自己设备上的Java原生个人AI助手,既能跨渠道交互,又能管理任务、执行命令,关键是所有数据都保存在本地,隐私拉满!
什么是JavaClaw?
JavaClaw是一个基于Java开发的个人AI助手,核心定位是“AI代理的控制平面(网关)”,可以运行在你自己的设备上,无需依赖第三方云服务。它支持多渠道交互、任务管理、Shell命令执行、网页浏览等多种功能,全程保障数据本地化,杜绝数据泄露风险。
值得一提的是,这个项目最初是作为JobRunr的演示案例创建的,如今已正式向Java社区开放——邀请所有Java开发者一起参与,共同打造Java生态AI代理的未来 ☕。
核心功能亮点
JavaClaw的功能覆盖日常开发、办公场景,而且扩展性极强,具体亮点如下:
-
多渠道支持:内置聊天UI(基于WebSocket),同时支持Telegram、Discord渠道,采用插件化架构,可轻松扩展更多交互渠道。
-
灵活任务管理:支持创建、调度(一次性、延迟执行或Cron定时重复)任务,所有任务以人类可读的Markdown文件形式存储,便于查看和管理。
-
可扩展技能:无需修改代码,只需在workspace/skills/目录下放置SKILL.md文件,代理就能在运行时自动加载新技能。
-
多LLM提供商可选:支持接入OpenAI、Anthropic或Ollama(本地部署),在引导式配置过程中可随时切换。
-
MCP协议支持:内置Model Context Protocol客户端,可连接外部工具服务器,扩展功能边界。
-
本地文件与Shell访问:代理可在你的设备上读写文件、执行bash命令,满足本地操作需求。
-
智能网页工具:集成Brave网页搜索和智能网页抓取功能,轻松获取网络信息。
-
后台任务管理:基于JobRunr实现后台任务调度,内置仪表盘(端口:8081),可实时监控任务执行状态。
-
隐私优先:全程运行在你自己的硬件上,除非你主动配置外部LLM,否则所有数据都不会离开你的设备。
技术栈详解
作为Java项目,JavaClaw采用了当前主流且稳定的技术组合,适配Java开发者的技术习惯,具体分层如下:
|
层级 |
所用技术 |
|---|---|
|
编程语言 |
Java 25 |
|
框架 |
Spring Boot 4.0.3、Spring Modulith 2.0.3 |
|
LLM集成 |
Spring AI 2.0.0-SNAPSHOT(支持OpenAI、Anthropic、Ollama) |
|
代理核心 |
Spring AI Agent Utils |
|
MCP协议 |
Spring AI MCP Client |
|
任务调度 |
JobRunr 8.5.0 |
|
数据库 |
H2(嵌入式、文件存储) |
|
模板引擎 |
Pebble 4.1.1 |
|
前端 |
htmx 2.0.8 + Bulma 1.0.4 |
|
Discord集成 |
JDA 6.1.1 |
|
Telegram集成 |
Telegrambots 9.4.0 |
项目结构
JavaClaw的项目结构清晰,采用模块化设计,便于开发者理解、修改和扩展,核心目录结构如下:
JavaClaw/├── base/ # 核心模块:代理、任务、工具、渠道、配置├── app/ # Spring Boot入口、引导配置UI、web路由、聊天渠道└── plugins/ # 插件模块├── brave/ # Brave网页搜索集成├── discord/ # Discord网关渠道插件├── playwright/ # 浏览器自动化工具└── telegram/ # Telegram长轮询渠道插件快速上手指南
只需几步,就能在本地部署并使用JavaClaw,全程简单易懂,Java开发者可直接上手。
前置条件
-
安装Java 25
-
安装Gradle(或使用项目自带的./gradlew脚本)
-
拥有LLM API密钥(OpenAI / Anthropic),或本地运行Ollama实例
运行方式(两种可选)
方式1:直接通过Gradle运行
./gradlew :app:bootRun方式2:通过Docker运行
先构建Docker镜像,再启动容器(需在克隆的项目根目录执行):
./gradlew app:jibDockerBuild docker run -it -p 8080:8080 -p:8081:8081 -v "$(pwd)/workspace:/workspace" jobrunr.io/javaclaw引导式配置(Onboarding)
启动项目后,打开 http://localhost:8080/onboarding,按照引导完成配置,步骤如下:
欢迎页:项目介绍
选择LLM提供商:Ollama、OpenAI或Anthropic
输入凭证:填写API密钥和模型名称
自定义代理提示词:编辑workspace/AGENT.md,填写个人信息(名称、邮箱、角色等)
配置MCP服务器(可选):连接外部工具服务器
配置渠道/工具插件(可选):如Telegram、Discord等插件的相关设置
完成配置:查看并保存配置,配置会自动持久化到app/src/main/resources/application.yaml,立即生效
关键模块详解
1. 工作空间(Workspace)
workspace/目录是JavaClaw代理的“家”,所有核心配置和数据都存储在这里,目录用途如下:
|
路径 |
用途 |
|---|---|
|
workspace/AGENT.md |
系统提示词,可在引导配置时或随时编辑 |
|
workspace/INFO.md |
环境上下文,会注入到每一个提示词中 |
|
workspace/context/ |
代理的内存和长期上下文文件 |
|
workspace/skills/ |
放置SKILL.md文件,用于添加新功能 |
|
workspace/tasks/ |
任务文件,按日期分类(格式:yyyy-MM-dd/HHmmss-<状态>-<名称>.md) |
|
workspace/tasks/recurring/ |
Cron定时重复任务的模板文件 |
2. 任务状态流转
JavaClaw的任务状态遵循清晰的流转逻辑,便于跟踪和管理:
todo(待处理) → in_progress(进行中) → completed(已完成) / awaiting_human_input(等待人工输入)
3. 交互渠道
内置聊天(Chat)
访问 http://localhost:8080/chat 即可使用,基于WebSocket实现实时消息推送,无WebSocket会话时自动降级为REST轮询。
Telegram渠道配置
可在引导配置时设置,或直接修改application.yaml:
agent:channels:telegram:token: <你的机器人令牌>username: <你的Telegram用户名>Discord渠道配置
可在引导配置时设置,或直接修改application.yaml:
agent:channels:discord:token: <你的Discord机器人令牌>allowed-user: <你的Discord用户ID>4. 技能扩展(Skills)
无需修改代码,即可扩展代理的功能:在workspace/skills/<技能名称>/目录下创建SKILL.md文件,代理会通过SkillsTool自动加载该技能,实现 runtime 功能扩展。
5. 任务仪表盘
JobRunr的任务仪表盘默认运行在 http://localhost:8081,可实时监控后台任务的执行状态、历史记录等。
核心配置说明
application.yaml中的关键配置项,可根据自身需求调整:
|
配置项 |
描述 |
|---|---|
|
agent.workspace |
工作空间根路径(默认:file:./workspace/) |
|
agent.onboarding.completed |
引导配置完成后设为true |
|
spring.ai.model.chat |
当前激活的LLM提供商/模型 |
|
javaclaw.tools.dynamic-discovery.enabled |
启用动态工具发现(Tool Search Tool模式),而非提前暴露所有工具 |
|
jobrunr.dashboard.port |
JobRunr仪表盘端口(默认:8081) |
|
jobrunr.background-job-server.worker-count |
并发任务工作线程数(默认:1) |
动态工具发现(Dynamic Tool Discovery)
启用后,JavaClaw会采用Spring AI的“Tool Search Tool”模式(工具搜索),让模型在运行时自动发现相关工具,而非提前将所有工具定义传递给模型,适用于以下场景:
-
拥有大量工具(插件、MCP服务器、技能),导致提示词过大
-
工具列表过长或过于相似,导致模型选择错误工具
配置方式:
javaclaw:tools:dynamic-discovery:enabled: true# 可选调优参数:max-results: 8 # 最大返回工具数量lucene-min-score-threshold: 0.25 # Lucene搜索最低分数阈值
配置说明:
-
enabled=true(默认):使用Tool Search顾问(动态发现,基于Lucene关键词搜索)
-
enabled=false:提前暴露所有工具( legacy 模式)
注意事项:
-
工具搜索的质量取决于@Tool(description = “…”)中的描述,建议保持描述具体、具有区分度。
-
调优建议:提高lucene-min-score-threshold可增强搜索严谨性;降低该值可避免工具无法被发现;调整max-results控制每次暴露的工具数量。
运行测试
项目提供了完善的测试用例,覆盖任务管理、Telegram/Discord渠道授权与流程、引导配置步骤、完整Spring上下文等,运行测试命令如下:
./gradlew test总结
JavaClaw作为一款Java原生的本地AI助手,不仅完美适配Java开发者的技术栈,还兼顾了隐私性、扩展性和易用性。无论是日常开发中的命令执行、任务调度,还是跨渠道交互,它都能轻松胜任。
目前项目已向Java社区开放,欢迎所有Java开发者参与贡献,一起打造更强大的Java生态AI代理工具。如果你也需要一个本地可控、功能灵活的AI助手,不妨试试JavaClaw,相信会给你带来不一样的效率提升!
项目地址:
👉 https://github.com/jobrunr/JavaClaw赶紧去点个 Star 支持一下开源作者吧!⭐
夜雨聆风