乐于分享
好东西不私藏

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

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,按照引导完成配置,步骤如下:

  1. 欢迎页:项目介绍

  2. 选择LLM提供商:Ollama、OpenAI或Anthropic

  3. 输入凭证:填写API密钥和模型名称

  4. 自定义代理提示词:编辑workspace/AGENT.md,填写个人信息(名称、邮箱、角色等)

  5. 配置MCP服务器(可选):连接外部工具服务器

  6. 配置渠道/工具插件(可选):如Telegram、Discord等插件的相关设置

  7. 完成配置:查看并保存配置,配置会自动持久化到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 支持一下开源作者吧!⭐