__ __ _ _ _____ _
| \/ (_) (_)/ ____| |
| \ / |_ _ __ _| | | | __ ___ __
| |\/| | | '_ \| | | | |/ _` \ \ /\ / /
| | | | | | | | | |____| | (_| |\ V V /
|_| |_|_|_| |_|_|\_____|_|\__,_| \_/\_/
🤖 A Java Agent that actually gets things done.
"给我一个 LLM,我能撬动整个世界" —— 某个写了太多 CRUD 的 Java 程序员
MiniClaw 是 OpenClaw 的 Java 学习版复刻。
如果你曾好奇过 Claude Code 背后是怎么工作的 —— 它是怎么理解你的需求、选择工具、执行命令、记住上下文的 —— 那这个项目就是为你准备的。
我们用 Java + Spring Boot 重新实现了 OpenClaw 的核心架构,包括:
| 你能学到的 | 对应模块 |
|---|---|
| ReAct 循环是怎么让 AI "思考-行动-观察" 的 | AgentRuntime |
| System Prompt 是怎么把工具、技能、安全约束组装在一起的 | ContextBuilder |
| Tool Calling 是怎么让 AI 调用外部工具的 | ToolDispatcher |
| 技能系统是怎么按需加载、自动选择的 | SkillRegistry + SkillSelector |
| 长期记忆是怎么存储和检索的 | MemoryStore + MemoryIndexer |
| WebSocket 是怎么实现流式输出的 | EventBus + GatewayWebSocketHandler |
因为:
OpenClaw(完整版) MiniClaw(学习版)
🦞 🦐
↓ ↓
企业级 够用就行
生产就绪 能跑就行
功能完整 核心齐全
┌─────────────────────────────────────────────────────────────┐
│ 你 (Human) │
│ │ │
│ "帮我分析这个项目" │
│ ↓ │
├─────────────────────────────────────────────────────────────┤
│ Frontend (Vue 3) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 💬 Chat UI │ ⚙️ Settings │ 📊 Skills Browser │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ WebSocket │
├───────────────────────────┼─────────────────────────────────┤
│ Gateway (Control Plane) │ │
│ ┌────────────┐ ┌────────┴───────┐ ┌──────────────────┐ │
│ │ WS Handler │→│ RPC Router │→│ EventBus │ │
│ └────────────┘ └────────────────┘ └──────────────────┘ │
│ │ │
├───────────────────────────┼─────────────────────────────────┤
│ AgentRuntime (执行引擎) │ │
│ ┌────────────────────────┴────────────────────────────┐ │
│ │ │ │
│ │ while (not done) { │ │
│ │ 🧠 Think → 调用 LLM,分析该干嘛 │ │
│ │ 🔧 Act → 执行工具 (read_file, shell...) │ │
│ │ 👀 Observe → 把结果喂回给 LLM │ │
│ │ } │ │
│ │ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │ │
├───────────────────────────┼─────────────────────────────────┤
│ Extensions │ │
│ ┌──────────┐ ┌──────────┼──────────┐ ┌────────────────┐ │
│ │ Tools │ │ Skills │ │ │ Memory │ │
│ │ 📁 📝 🖥️ │ │ 🎯 自动选择 │ │ 🧠 向量检索 │ │
│ └──────────┘ └───────────┴──────────┘ └────────────────┘ │
│ │ │
├───────────────────────────┼─────────────────────────────────┤
│ Storage │ │
│ ┌────────────────────────┴────────────────────────────┐ │
│ │ PostgreSQL + pgvector │ Workspace (Markdown) │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
AI 不是一次性回答,而是循环执行直到任务完成:
你:帮我创建一个 hello.py 并运行它
AI 内心独白:
1. 🧠 用户想创建文件并运行... 我需要 write_file 工具
2. 🔧 [执行 write_file] → 创建 hello.py
3. 👀 文件创建成功了
4. 🧠 现在需要运行它... 我需要 shell 工具
5. 🔧 [执行 shell] → python hello.py
6. 👀 输出是 "Hello, World!"
7. 🧠 任务完成,可以回复用户了
AI:我已经创建了 hello.py 并运行成功,输出是 "Hello, World!"
内置 7 个工具,覆盖文件操作、命令执行、网络请求:
| 工具 | 功能 | 危险等级 |
|---|---|---|
read_file | 读文件 | 🟢 安全 |
write_file | 写文件 | 🟢 安全 |
shell | 执行命令 | 🟡 普通命令安全,rm -rf 需确认 |
shell_start | 启动后台进程 | 🟡 同上 |
shell_status | 查看进程状态 | 🟢 安全 |
shell_kill | 终止进程 | 🟢 安全 |
http_get | HTTP 请求 | 🟢 安全 |
memory_search | 搜索记忆 | 🟢 安全 |
memory_write | 写入记忆 | 🟢 安全 |
智能 HITL(Human-in-the-Loop):
ls, npm install, git status → 直接执行rm -rf, git push --force, password=xxx → 弹窗确认兼容 Claude Skills 格式,支持:
/skill-name 直接激活SKILL.md 自动重载# workspace/.miniclaw/skills/git-helper/SKILL.md
---
name: git-helper
description: Git 操作助手,帮你 commit、push、解决冲突
allowed-tools: [shell, read_file]
---
你是一个 Git 专家。用户的请求:$ARGUMENTS
跨会话的长期记忆系统:
workspace/memory/ 目录workspace/memory/
├── MEMORY.md # 核心长期记忆(用户偏好、重要事实)
├── 2026-01-15.md # 日记式追加
├── 2026-01-16.md
└── ...
定时任务调度,让 AI 定期帮你干活:
# 每天早上 8 点汇报昨日 Git 提交
name: daily-git-report
cron: "0 8 * * *"
prompt: "帮我汇总昨天的 Git 提交记录"
delivery: log # 或者 webhook、email
docker-compose up -d
创建 src/main/resources/application-local.yml:
llm:
endpoint: https://api.deepseek.com # 或其他兼容接口
api-key: sk-xxx
model: deepseek-chat
mvn clean package -DskipTests
java -jar target/miniclaw-*.jar --spring.profiles.active=local
cd miniclaw-ui
npm install
npm run dev
打开 http://localhost:5173,开始聊天!
miniclaw/
├── src/main/java/com/jaguarliu/ai/
│ ├── gateway/ # 🚪 控制平面:WebSocket、RPC、事件
│ ├── runtime/ # 🔄 执行引擎:ReAct 循环、HITL、上下文构建
│ ├── tools/ # 🔧 工具系统:内置工具、工具注册、危险检测
│ ├── skills/ # 🎯 技能系统:解析、注册、选择、热更新
│ ├── memory/ # 🧠 记忆系统:存储、分块、索引、检索
│ ├── llm/ # 🤖 LLM 接入:OpenAI 兼容客户端
│ ├── session/ # 💬 会话管理
│ └── cron/ # ⏰ 定时任务
├── miniclaw-ui/ # 🖥️ Vue 3 前端
├── workspace/ # 📁 工作目录(技能、记忆都在这里)
│ ├── .miniclaw/skills/ # 技能目录
│ └── memory/ # 记忆目录
└── docs/ # 📚 设计文档
| 选择 | 原因 |
|---|---|
| Java 24 | LTS,Virtual Threads 让响应式编程更简单 |
| Spring WebFlux | 非阻塞 IO,天然适合流式输出 |
| PostgreSQL + pgvector | 一个数据库搞定关系数据 + 向量检索 |
| Vue 3 Composition API | 简单直接,组合式 API 很舒服 |
| 原生 CSS | 不需要 Tailwind,黑白极简风格几百行 CSS 搞定 |
| 特性 | OpenClaw | MiniClaw |
|---|---|---|
| 语言 | TypeScript | Java |
| 运行时 | Node.js | JVM |
| ReAct 循环 | ✅ | ✅ |
| Skills 系统 | ✅ | ✅ |
| Memory 系统 | ✅ | ✅ |
| HITL 确认 | ✅ | ✅ (智能检测危险命令) |
| Cron 调度 | ✅ | ✅ (Quartz) |
| 多租户 | ✅ | ❌ (个人使用) |
| 分布式节点 | ✅ | ❌ |
| MCP 支持 | ✅ | 🚧 (计划中) |
| SubAgent | ✅ | 🚧 (计划中) |
| Sandbox | ✅ | 🚧 (计划中) |
欢迎 PR!尤其欢迎:
docs/skills/ 下)MIT
Made with ☕ and mass amounts of System.out.println