OpenClaw Java Edition - 基于 Spring Boot 的企业级 AI Agent 平台
OpenClaw Java 是 OpenClaw 的 Java 实现版本,提供完整的 AI Agent 功能,与 Node.js 原版功能对等度达 ~99%。
- 🤖 多通道支持: Telegram, Feishu, Discord, Slack, Matrix, 企业微信
- 🛠️ 丰富的工具生态: Web Search, Browser, File Operations, Email, Calendar, Cron, Image Generation 等
- 🧠 记忆系统: 向量搜索 (OpenAI/Mistral/Ollama), SQLite/pgvector 存储, FTS5 全文搜索
- 🔒 企业级安全: SSRF 防护, 输入验证, Secrets 管理, 沙箱检测
- 📊 Dashboard/Control UI: Web 管理界面
- ⏰ 定时任务: Cron 表达式, 持久化存储, 子进程隔离执行
- 🌐 浏览器自动化: Playwright Java API, 完整会话管理
- 💬 流式消息: SSE, 打字指示器, 流取消支持
- 🔗 Gateway: V3 认证, 自动重连, 任务调度
- 🧪 依赖注入: ThreadLocal DI, 测试隔离
| 层级 | 技术 |
|---|---|
| 框架 | Spring Boot 3.2, Spring WebFlux |
| AI 集成 | Spring AI 1.1.2 (OpenAI, Anthropic, Ollama) |
| 数据库 | SQLite, PostgreSQL (pgvector) |
| 浏览器 | Playwright Java 1.40.0 |
| 构建工具 | Maven 3.9+ |
| Java 版本 | 21 (LTS) |
| 架构模式 | 依赖注入 (DI), ThreadLocal 隔离 |
openclaw-java/
├── openclaw-plugin-sdk # 插件 SDK 接口定义
├── openclaw-gateway # Gateway 核心 (V3 认证, 自动重连, 任务调度)
├── openclaw-server # HTTP/WebSocket 服务器
│ ├── controller/ # REST API (Chat, Tool, Agent, Cron, Streaming)
│ ├── streaming/ # 流式消息服务
│ └── websocket/ # WebSocket 处理器
├── openclaw-agent # Agent 核心 (ACP 协议, 子代理, 上下文管理)
├── openclaw-channel-telegram # Telegram 通道
├── openclaw-channel-feishu # 飞书通道 (流式适配器, 提及策略)
├── openclaw-channel-discord # Discord 通道
├── openclaw-channel-slack # Slack 通道
├── openclaw-channel-matrix # Matrix 通道
├── openclaw-channel-wecom # 企业微信通道
├── openclaw-tools # 工具集
│ ├── browser/ # Browser 工具 (Playwright)
│ ├── cron/ # Cron 工具
│ ├── session/ # Session 工具
│ ├── exec/ # 命令执行 (含沙箱检测)
│ ├── email/
│ ├── file/
│ ├── search/
│ └── ...
├── openclaw-memory # 记忆系统 (向量搜索, FTS5)
├── openclaw-security # 安全模块 (SSRF, 输入验证)
├── openclaw-secrets # Secrets 管理 (AES-256-GCM)
├── openclaw-cron # 定时任务模块
├── openclaw-browser # 浏览器自动化模块
├── openclaw-session # 会话持久化模块
├── openclaw-provider-brave # Brave Search 提供商
├── openclaw-provider-perplexity # Perplexity 提供商
├── openclaw-provider-google # Google Search 提供商
├── openclaw-lsp # LSP 服务器
├── openclaw-desktop # 桌面应用
└── openclaw-cli # CLI 工具
| 模块 | Node.js | Java (当前) | 状态 |
|---|---|---|---|
| Cron | node-cron + SQLite | cron-utils + SQLite + 隔离执行 | ✅ 100% |
| Browser | Playwright 原生 | Playwright Java API | ✅ 100% |
| Session | JSONL | SQLite + 内存缓存 + 自动配置 | ✅ 100% |
| Channel 流式 | 完整 | SSE + 打字指示 + 流取消 | ✅ 95% |
| Gateway | V3 认证 | V3 认证 + 自动重连 + DI | ✅ 95% |
| Memory | 完整 | SQLite/pgvector + FTS5 | ✅ 90% |
| Security | 完整 | SSRF + 输入验证 + 沙箱检测 | ✅ 95% |
| DI/测试隔离 | 完整 | ThreadLocal + 依赖注入 | ✅ 95% |
| 子代理 | 完整 | ACP 协议 + 生命周期管理 | ✅ 90% |
| 总体 | 100% | ~99% | ✅ |
- JDK 21+
- Maven 3.9+
- (可选) Docker & Docker Compose
# 克隆项目
git clone https://github.com/liudaac/openclaw-java.git
cd openclaw-java
# 编译所有模块
mvn clean install
# 跳过测试编译
mvn clean install -DskipTests
# 指定版本编译
mvn clean install -Drevision=2026.3.30# 运行 Gateway
java -jar openclaw-gateway/target/openclaw-gateway-*.jar
# 运行 Server
java -jar openclaw-server/target/openclaw-server-*.jar# 构建镜像
docker build -t openclaw-java:latest .
# 运行容器
docker run -p 18789:18789 openclaw-java:latest
# 或使用 Docker Compose
docker-compose up -d主配置: ~/.openclaw/openclaw.json
{
"gateway": {
"bind": "0.0.0.0",
"port": 18789,
"auth": {
"mode": "token",
"token": "your-secure-token"
},
"controlUi": {
"enabled": true,
"basePath": "/"
}
},
"llm": {
"provider": "openai",
"model": "gpt-4",
"apiKey": "your-api-key"
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "your-bot-token"
},
"feishu": {
"enabled": true,
"appId": "your-app-id",
"appSecret": "your-app-secret",
"groupPolicy": "open"
}
},
"session": {
"enabled": true,
"storageType": "sqlite",
"dbPath": "~/.openclaw/sessions.db",
"maxMessages": 1000,
"ttl": "30d",
"autoCleanup": true
},
"memory": {
"storageType": "sqlite",
"ftsTokenizer": "icu",
"ftsOnly": false
}
}| 变量名 | 说明 | 默认值 |
|---|---|---|
OPENCLAW_GATEWAY_BIND |
绑定地址 | 0.0.0.0 |
OPENCLAW_GATEWAY_PORT |
端口 | 18789 |
OPENCLAW_GATEWAY_AUTH_TOKEN |
认证 Token | - |
OPENCLAW_LLM_PROVIDER |
LLM 提供商 | openai |
OPENCLAW_LLM_API_KEY |
API Key | - |
# 创建定时任务
curl -X POST http://localhost:18789/api/v1/cron/jobs \
-H "Content-Type: application/json" \
-d '{
"name": "daily-backup",
"schedule": "0 0 2 * * *",
"command": "/opt/backup.sh"
}'
# 列出任务
curl http://localhost:18789/api/v1/cron/jobs
# 触发任务
curl -X POST http://localhost:18789/api/v1/cron/jobs/{id}/trigger# 创建会话
curl -X POST http://localhost:18789/api/v1/sessions \
-H "Content-Type: application/json" \
-d '{"sessionKey": "user-123", "model": "gpt-4"}'
# 获取消息历史
curl http://localhost:18789/api/v1/sessions/{id}/messages
# 搜索会话
curl "http://localhost:18789/api/v1/sessions/search?keyword=test"# 发送流式消息 (SSE)
curl -X POST http://localhost:18789/api/v1/streaming/send \
-H "Content-Type: application/json" \
-H "X-Channel-Adapter: feishu" \
-d '{"chatId": "chat_xxx", "content": "Hello..."}'// Cron 服务
@Autowired
private CronService cronService;
CronJob job = cronService.createJob("backup", "0 0 2 * * *", "/opt/backup.sh").join();
// Browser 服务
@Autowired
private BrowserService browserService;
BrowserSession session = browserService.createSession("default",
SessionOptions.defaults()).join();
browserService.navigate(session.getId(), "https://example.com").join();
byte[] screenshot = browserService.screenshot(session.getId()).join();
// Session 持久化
@Autowired
private SessionPersistenceService sessionService;
Session session = sessionService.createSession("user-123", "gpt-4").join();
sessionService.addMessage(session.getId(), "user", "Hello").join();
// 流式消息
@Autowired
private StreamingMessageService streamingService;
Flux<StreamChunk> stream = streamingService.createStreamingResponseWithTyping(
chatId, contentStream, adapter
);- Exec 沙箱检测: 新增
SandboxDetector检测容器环境 - 失败关闭策略: 当沙箱不可用时拒绝命令执行
- 支持检测: Docker, Containerd, Kubernetes, Podman
- 提及策略: 新增
FeishuGroupPolicy(OPEN, ALLOWLIST, DISABLED) - 群组配置: 支持 per-group 配置
- 白名单匹配: 支持通配符和大小写不敏感匹配
- Gateway DI:
GatewayCallDeps+GatewayCallService - 工具 DI:
BrowserToolDeps,ImageToolDeps - 测试隔离:
DITestHelper+TestDepsBuilder
- SQLite 存储: 完整 CRUD + 搜索 + 统计
- 自动配置: Spring Boot 自动装配
- 内存缓存: 开发/测试环境备选
- Cron: cron-utils + SQLite 持久化 + 隔离执行
- Browser: Playwright Java API 原生集成
- Session: SQLite + 内存缓存 + 自动配置
- Streaming: SSE + 打字指示器 + 流取消
- Plugin SDK - 60+ 接口定义
- Gateway - V3 认证 + 自动重连 + 任务调度
- Server - HTTP/WebSocket + REST API
- Agent - ACP 协议 + 子代理
- Security - SSRF + 输入验证 + 沙箱检测
- Secrets - AES-256-GCM 加密
- Telegram - 完整实现
- Feishu - 完整实现 + 流式适配 + 提及策略
- Discord - 完整实现
- Slack - 完整实现
- Matrix - 基础实现
- 企业微信 - 基础实现
- Browser - Playwright Java
- Cron - cron-utils + SQLite
- Session - 持久化管理
- Exec - 命令执行 + 沙箱检测
- File - 文件操作
- Search - Web 搜索
- Image - 图片生成
- Email - 邮件发送
- Calendar - 日历操作
- Vector Search - OpenAI/Mistral/Ollama
- SQLite Storage - FTS5 全文搜索
- Batch Embedding - 并发控制
- Memory Manager - CRUD 操作
- Streaming - SSE + 打字指示
- Cron Jobs - 定时任务
- Config Reload - 热更新
- Heartbeat - 心跳调度
- Audit Logging - 审计日志
- Metrics - Prometheus 监控
- DI/Testing - ThreadLocal 依赖注入
- Gateway 任务注册表存储抽象
- 子代理静默回合失败关闭
- Memory FTS5 ICU 分词器 (CJK 支持)
- CJK Token 计数修复
- Slack 状态反应生命周期
- Matrix 草稿流式编辑
- TTS CJK 语音支持
- WhatsApp 通道
- Signal 通道
- LINE 通道
| 指标 | 数值 |
|---|---|
| Java 文件数 | 452+ |
| Maven 模块 | 23 |
| 代码行数 | 25,000+ |
| 测试覆盖率 | ~60% |
| 功能完成度 | ~99% |
| 优势 | 说明 |
|---|---|
| 类型安全 | Java 编译时检查 |
| 企业级生态 | Spring Boot 生态 |
| 性能可预测 | 线程池模型 |
| 监控完善 | Prometheus/Grafana |
| 部署友好 | 单 JAR 部署 |
欢迎提交 Issue 和 Pull Request!
MIT License - 详见 LICENSE 文件
OpenClaw Java Edition - 企业级 AI Agent 平台
当前版本: 2026.3.30-SNAPSHOT