纯Java实现的AI驱动智能代理系统,为Java开发者提供类ClaudeCode体验的开源CLI工具
$ npx -y skills add leavesfly/jimi --agent claude-code
What's inside
纯Java实现的AI驱动智能代理系统,为Java开发者提供类ClaudeCode体验的开源CLI工具
内置6个专业Agent覆盖开发全流程:
| Agent | 职责 |
|---|---|
| Default | 通用开发助手 |
| Architect | 架构设计 |
| Code | 编码实现 |
| Quality | 代码质量与审查 |
| Doc | 文档编写 |
| DevOps | 部署运维 |
内置6个开发技能包,领域知识模块化管理:
| 技能包 | 功能 |
|---|---|
| api-design | API设计规范 |
| code-quality-suite | 代码质量套件 |
| database-design | 数据库设计 |
| git-commit-guide | Git提交规范 |
| java-best-practices | Java最佳实践 |
| unit-testing | 单元测试 |
关键词自动激活,按需加载到上下文。
事件驱动的工作流自动化:
name: "auto-format-java"
trigger:
type: "POST_TOOL_CALL"
tools: ["WriteFile"]
file_patterns: ["*.java"]
execution:
type: "script"
script: "google-java-format -i ${MODIFIED_FILES}"
支持 15 种 Hook 事件(对齐 Claude Code 9 种 + Jimi 扩展 3 种 + Agent Teams 扩展 3 种),覆盖工具调用前后、Agent 切换、会话开始/结束、错误处理等多种触发时机。详细文档
YAML配置即可扩展命令:
name: "quick-build"
aliases: ["qb"]
execution:
type: "script"
script: "mvn clean install"
支持Script、Agent、Composite三种执行类型。详细文档
基于ReCAP论文的上下文优化:
通过统一的 ChatProvider 抽象支持 9 种 Provider:openai、kimi(Moonshot)、qwen(通义千问)、deepseek、claude、ollama、glm(智谱)、minimax、cursor。基于 OpenAI 兼容协议,支持流式响应、Caffeine 缓存、Token 估算与限流。
支持Model Context Protocol,集成外部工具服务(Git、GitHub、Database等)。
内置 15 个原生工具 + MCP 动态工具,覆盖五大类:
ReadFile、WriteFile、StrReplaceFile、Grep、GlobBashTool 命令执行、后台任务FetchURL 网页抓取、WebSearch 搜索SubAgent 同步/异步子代理、TeamAgent 团队协作Memory、Skills、SetTodoList、AskHuman、MetaTool所有工具基于响应式(Reactor Mono)执行,支持并发安全控制与 JSON Schema 自动生成。
将 Skills / Hooks / Commands / MCP / Agents 五种扩展点打包成统一可分发单元:
/plugin install owner/repo 从 GitHub、URL 或本地目录安装compatibility.jimi_version 版本门禁,VersionRange 语义化匹配provides 白名单显式声明对外暴露的扩展项"你不应该再手动 prompt Agent 了,你应该设计循环来自动驱动你的 Agent。"
Jimi 完整支持 Loop Engineering 六大原语,从"人手动驱动 Agent"进化为"系统自动驱动 Agent"。
# 每 5 分钟检查编译状态并修复错误
/loop 5m 检查项目编译状态,如果有错误就修复
# 每小时扫描并处理 TODO
/loop 1h 扫描 src/main 下的 TODO 注释,选择一个完成它
# 控制循环
/loop status # 查看状态
/loop pause # 暂停
/loop resume # 恢复
/loop stop # 停止
设定可验证的目标条件,Agent 持续工作直到条件满足。验证者和执行者分离,避免"自己批改自己作业"。
# 直到所有测试通过
/goal 所有 src/test 下的单元测试通过且 lint 无警告
# 直到覆盖率达标
/goal 测试覆盖率达到 80%
# 复合条件
/goal mvn test 通过且 checkstyle 无违规且覆盖率 > 80%
安全限制:最大 50 步迭代、60 分钟超时、50 万 token 预算(均可配置)。
多 Agent 并行工作时,通过 Git Worktree 实现文件系统级隔离,避免冲突:
# Agent 配置中启用 worktree 隔离
team:
teammates:
- teammate_id: dev-auth
agent_path: agents/developer
isolation: worktree # 独立 worktree
- teammate_id: reviewer
agent_path: agents/reviewer
isolation: shared # 共享主目录
Loop 的进度自动写入 .jimi/progress.md,Agent 上下文被压缩或重置后仍可恢复进度。
| 原语 | Jimi 实现 | 说明 |
|---|---|---|
| Automations | Hooks + /loop + /goal | 事件驱动 + 定时调度 + 目标迭代 |
| Worktrees | WorktreeManager + SubAgent | 文件系统级 + 上下文级隔离 |
| Skills | SkillRegistry + SKILL.md | 渐进式披露、依赖声明、自动激活 |
| Connectors | MCP (STDIO/HTTP) + Plugin | 连接 GitHub/Linear/Slack/DB |
| Sub-agents | SubAgentTool + TeamAgentTool | Maker/Checker 分离、团队协作 |
| State | MEMORY.md + Session + progress.md | 三层记忆 + 状态文件持久化 |
git clone https://github.com/leavesfly/Jimi.git
cd Jimi
./scripts/quick-install.sh
# 1. 检查环境
./scripts/check-env.sh
# 2. 构建项目
./scripts/build.sh
# 3. 初始化配置
./scripts/init-config.sh
# 4. 启动Jimi
./scripts/start.sh
# 指定Agent启动
./scripts/start.sh --agent architect
# YOLO模式(自动批准所有操作)
./scripts/start.sh --yolo
CliApplication(基于 Picocli)支持以下选项:
| 参数 | 说明 |
|---|---|
-w, --work-dir <path> | 指定工作目录(默认当前目录) |
-m, --model <name> | 覆盖使用的模型(优先级高于 Agent 与全局配置) |
-C, --continue | 继续上次会话(按工作目录恢复 lastSessionId) |
-y, --yolo, --yes | YOLO 模式:自动批准所有工具调用(慎用) |
--agent-file <path> | 指定自定义 Agent 规范文件(YAML) |
--mcp-config-file <path> | 额外加载 MCP 服务配置(可重复指定) |
-c, --command <text> | 非交互式:执行单条命令后退出(脚本友好) |
--verbose | 打印详细启动信息 |
--debug | 启用调试日志(LLM 请求/响应、工具调用) |
| 命令 | 说明 |
|---|---|
/help | 帮助信息 |
/status | 系统状态 |
/tools | 工具列表 |
/agents | Agent列表 |
/switch <agent> | 切换当前 Agent |
/skills | 技能包列表 |
/hooks list | Hooks列表 |
/plugin list | 插件列表 |
/async list | 异步任务 |
/memory | 记忆管理 |
/loop | Loop 循环调度 |
/goal | 目标驱动迭代 |
/reset | 清除上下文 |
/config | 查看配置 |
/version | 版本信息 |
graph TB
subgraph 用户交互层
CLI[CLI命令行]
end
subgraph 核心引擎层
Engine[JimiEngine]
Executor[AgentExecutor]
Memory[ReCAP记忆]
Approval[审批机制]
end
subgraph Agent系统
AgentRegistry[Agent注册表]
MultiAgents[专业Agent]
AsyncMgr[异步子代理]
end
subgraph 知识增强层
Skills[Skills系统]
Wiki[知识Wiki]
end
subgraph 自动化与扩展层
Hooks[Hooks系统]
Commands[自定义命令]
Plugins[插件系统]
end
subgraph 工具系统
ToolRegistry[工具注册表]
FileTools[文件工具]
MCPTools[MCP工具]
end
subgraph LLM层
LLMFactory[LLM工厂]
Providers[多提供商]
end
CLI --> Engine
Engine --> Executor
Engine --> Memory
Engine --> Approval
Executor --> AgentRegistry
Executor --> ToolRegistry
Executor --> LLMFactory
AgentRegistry --> MultiAgents
AgentRegistry --> AsyncMgr
Executor --> Skills
Engine --> Hooks
CLI --> Commands
Engine --> Plugins
Plugins --> Skills
Plugins --> Hooks
Plugins --> Commands
ToolRegistry --> FileTools
ToolRegistry --> MCPTools
LLMFactory --> Providers
| 类别 | 技术 |
|---|---|
| 核心框架 | Spring Boot 3.2.10, WebFlux + Reactor Netty |
| 命令行 | Picocli 4.7.6, JLine 3.25.1 |
| 数据处理 | Jackson 2.17.0, SnakeYAML 2.2 |
| 代码分析 | JavaParser + symbol-solver 3.26.4 |
| 协议集成 | MCP SDK 0.12.1 |
| 进程/文本 | Commons Exec 1.4.0, Commons Text 1.11.0, Jsoup 1.17.2 |
| 缓存 | Caffeine 3.2.0 |
Jimi 的配置文件位于 ~/.jimi/config.yml(YAML 格式,注意后缀是 .yml)。首次使用建议将内置默认配置 src/main/resources/.jimi/config.yml 拷贝到 ~/.jimi/config.yml,再按需修改 api_key。
一份最小可用配置示例:
# 默认模型(必须在 models 中已定义)
default_model: qwen3-max
providers:
qwen:
type: qwen # ProviderType 枚举之一
base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
api_key: sk-xxxxxxxxxxxxxxxx
rate_limit: # 可选:限流
window_ms: 4000
max_requests: 4
sleep_ms: 3000
models:
qwen3-max:
provider: qwen # 对应 providers 的某个 key
model: qwen3-max # 发给 LLM API 的真实模型名
max_context_size: 200000 # 上下文窗口(Token)
type 支持:kimi / deepseek / qwen / ollama / openai / claude / cursor / glm / minimax。
# 切换Agent
/switch architect
# 查看Agent列表
/agents
# 使用指定Agent启动
./scripts/start.sh --agent code
自定义Agent:在~/.jimi/agents/目录下创建agent.yaml和system_prompt.md文件。
在~/.jimi/hooks/目录下创建YAML配置文件:
name: "auto-test"
trigger:
type: "POST_TOOL_CALL"
tools: ["WriteFile"]
file_patterns: ["*Test.java"]
execution:
type: "script"
script: "mvn test -Dtest=${MODIFIED_FILE%.*}"
在~/.jimi/commands/创建YAML配置:
name: "quick-build"
aliases: ["qb"]
execution:
type: "script"
script: "mvn clean install"
# 查看异步任务
/async list
# 查看状态
/async status <task_id>
# 取消任务
/async cancel <task_id>
插件将 Skills / Hooks / Commands / MCP / Agents 五种扩展点打包成一个有版本号、有清单、可整体安装/卸载/升级的分发单元。
# 从 GitHub 安装(支持 owner/repo#branch)
/plugin install leavesfly/java-dev-kit
# 从本地目录或 ZIP 安装
/plugin install ./my-plugin
/plugin install ./my-plugin.zip
# 列表 / 详情 / 启用 / 禁用 / 卸载
/plugin list
/plugin info <name>
/plugin enable <name>
/plugin disable <name>
/plugin uninstall <name>
name: java-dev-kit
version: 1.0.0
description: Java 开发全家桶
compatibility:
jimi_version: ">=0.1.0" # 版本门禁(VersionRange 语义匹配)
provides: # 对外暴露的扩展项白名单
skills: ["java-best-practices"]
hooks: ["auto-format-java"]
commands: ["quick-build"]
defaults:
modules: # 模块级开关,支持灰度启用
skills: true
hooks: true
插件遵循 classpath(内置)< user(~/.jimi/plugins/)< project(<project>/.jimi/plugins/) 三层作用域,同名后加载覆盖。详细文档
@Component
public class MyTool extends AbstractTool<MyTool.Params> {
@Data
public static class Params {
@JsonProperty("input")
private String input;
}
public MyTool() {
super("my_tool", "我的工具", Params.class);
}
@Override
public Mono<ToolResult> execute(Params params) {
return Mono.just(ToolResult.ok("结果"));
}
}
在~/.jimi/agents/my-agent/创建配置文件:
agent.yaml
name: My Agent
model: qwen3-max # 对应 config.yml 中 models 已定义的模型名(留空则用 default_model)
tools:
- ReadFile
- WriteFile
- my_tool
system_prompt.md
你是一个专业的开发助手...
在~/.jimi/skills/<name>/创建SKILL.md(Markdown + YAML Front Matter),按触发词自动激活并注入 system prompt:
---
name: java-best-practices
description: Java 编码最佳实践
triggers: ["最佳实践", "代码规范", "重构"]
---
# Java 最佳实践
- 优先使用不可变对象...
在~/.jimi/commands/创建YAML配置,支持四种执行类型:
提示:单个小能力用上述扩展点;当扩展项超过 2 个或需要团队共享,建议升级为 插件 统一分发。
| 文档 | 说明 |
|---|---|
| 用户使用指南 | 完整用户手册 |
| HOOKS | Hooks系统指南 |
| 自定义命令 | 命令扩展指南 |
| 插件开发 | 插件开发手册 |
| Loop Engineering | Loop 循环工程指南 |
| 技术架构 | 系统架构详解 |
| 架构总览 | 架构概览 |
深入源码、用于理解机制、定位代码与二次扩展,详见 Wiki 首页:
| Wiki | 主题 |
|---|---|
| 01 · 项目概述与快速开始 | 项目定位、技术栈、上手 |
| 02 · 系统架构与核心引擎 | JimiEngine / AgentExecutor / ReactLoop |
| 03 · Agent 多智能体系统 | Agent、AgentRegistry、异步 Subagent、Team |
| 04 · 工具系统与 ToolRegistry | Tool SPI、15 个内置工具、MCP 动态工具 |
| 05 · LLM 接入层与多模型支持 | ChatProvider、流式、缓存、限流 |
| 06 · Skills 技能包系统 | 技能包规范、触发词、渐进式披露 |
| 07 · Hooks 自动化系统 | 15 种 Hook 事件、触发器与执行器 |
| 09 · 自定义命令与 CLI 交互 | 元命令、4 种执行类型、JLine Shell |
| 10 · 记忆管理与会话机制 | 三层记忆、ReCAP 压缩、审批与 YOLO |
| 11 · MCP 协议集成 | MCP 客户端、stdio/http 传输 |
| 12 · 扩展开发指南 | 自定义 Tool/Agent/Skill/Hook/Command |
| 13 · 插件系统与扩展分发 | PluginRegistry、安装器、版本范围 |
欢迎贡献!
# Fork并克隆
git clone https://github.com/your-username/Jimi.git
# 创建分支
git checkout -b feature/my-feature
# 开发和测试
mvn clean test
# 提交更改
git commit -m "feat: add my feature"
# 推送并创建Pull Request
git push origin feature/my-feature
本项目采用 Apache License 2.0 许可证。
⬆ 回到顶部
Made with ❤️ by Leavesfly
.gitignore
docs/
ARCHITECTURE_OVERVIEW.md
CURSOR_INTEGRATION.md
CUSTOM_COMMANDS.md
HOOKS.md
Jimi:打造Java程序员专属的开源ClaudeCode.md
LOOP_ENGINEERING.md
PLUGIN_DEVELOPMENT.md
TECHNICAL_ARCHITECTURE.md
pom.xml
README.md
scripts/
build.sh
check-env.sh
init-config.sh
quick-install.sh
README.md
start.sh
test-mcp-full.sh
test-mcp-server.sh
src/
main/
java/
io/
leavesfly/
jimi/
CliApplication.java
client/
EngineClient.java
WireEngineClient.java
command/
CommandContext.java
CommandHandler.java
CommandRegistry.java
custom/
CompositeStepSpec.java
ConfigurableCommandHandler.java
CustomCommandLoader.java
CustomCommandRegistry.java
CustomCommandSpec.java
ParameterSpec.java
PreconditionSpec.java
handlers/
AgentsCommandHandler.java
ClearCommandHandler.java
CommandsCommandHandler.java
CompactCommandHandler.java
ConfigCommandHandler.java
GoalCommandHandler.java
HarnessCommandHandler.java
HelpCommandHandler.java
HistoryCommandHandler.java
InitCommandHandler.java
LoopCommandHandler.java
MemoryCommandHandler.java
NewCommandHandler.java
RefineCommandHandler.java
ResetCommandHandler.java
StatusCommandHandler.java
ThemeCommandHandler.java
ToolsCommandHandler.java
VersionCommandHandler.java
WikiCommandHandler.java
wiki/
WikiGenerator.java
WikiValidator.java
common/
HttpClientConstants.java
ScriptRunner.java
YamlConfigLoader.java
config/
info/
LLMModelConfig.java
LLMProviderConfig.java
LoopControlConfig.java
LoopEngineeringConfig.java
MemoryConfig.java
MetaToolConfig.java
RefineConfig.java
SandboxConfig.java
ShellUIConfig.java
SubagentConfig.java
ThemeConfig.java
ToolOutputConfig.java
WebSearchConfig.java
JimiConfig.java
JimiConfiguration.java
core/
agent/
Agent.java
AgentRegistry.java
AgentSpec.java
AgentSpecLoader.java
SubagentSpec.java
approval/
Approval.java
ApprovalRequest.java
ApprovalResponse.java
compaction/
Compaction.java
SimpleCompaction.java
engine/
AgentExecutor.java
context/
BuiltinSystemPromptArgs.java
Context.java
ContextManager.java
ContextRepository.java
HarnessStateSnapshot.java
JSONLContextRepository.java
Engine.java
EngineConstants.java
ExecutionState.java
JimiRuntime.java
ReactLoop.java
StreamAccumulator.java
toolcall/
ToolDispatcher.java
ToolErrorTracker.java
hook/
ExecutionSpec.java
HookCondition.java
HookContext.java
HookExecutor.java
HookLoader.java
HookRegistry.java
HookSpec.java
HookTrigger.java
HookType.java
JimiEngine.java
JimiFactory.java
sandbox/
SandboxValidator.java
session/
Session.java
SessionManager.java
WorkDirMetadata.java
exception/
AgentSpecException.java
ConfigException.java
JimiException.java
LLMNotSetException.java
MaxStepsReachedException.java
RunCancelledException.java
ToolExecutionException.java
harness/
HarnessChange.java
HarnessJournal.java
HarnessStore.java
HarnessTarget.java
RefineEngine.java
TrajectoryReader.java
JimiApplication.java
llm/
ChatCompletionChunk.java
ChatCompletionResult.java
ChatProvider.java
LLM.java
LLMFactory.java
message/
ContentPart.java
FunctionCall.java
ImagePart.java
Message.java
MessageRole.java
TextPart.java
ToolCall.java
provider/
CursorChatProvider.java
CursorProcessExecutor.java
KimiChatProvider.java
OpenAICompatibleChatProvider.java
StreamResponseProcessor.java
ThinkTagParser.java
RateLimiter.java
TokenCounter.java
loop/
CommandVerifier.java
GoalVerification.java
GoalVerifier.java
LoopManager.java
LoopStateManager.java
LoopStatus.java
WorktreeManager.java
mcp/
AbstractJsonRpcClient.java
HttpJsonRpcClient.java
JsonRpcClient.java
JsonRpcMessage.java
MCPConfig.java
MCPResultConverter.java
MCPSchema.java
StdIoJsonRpcClient.java
memory/
MemoryConsolidator.java
MemoryExtractor.java
MemoryManager.java
MemorySearcher.java
MemoryStore.java
TopicMatcher.java
plugin/
command/
PluginCommandHandler.java
dispatcher/
AgentModuleAdapter.java
CommandModuleAdapter.java
HookModuleAdapter.java
McpModuleAdapter.java
ModuleLoadResult.java
PluginDispatcher.java
PluginLoadResult.java
PluginModuleAdapter.java
SkillModuleAdapter.java
installer/
ArchiveInstaller.java
PluginInstaller.java
PluginInstallResult.java
PluginLoader.java
PluginRegistry.java
spec/
PluginCompatibility.java
PluginDefaults.java
PluginDependency.java
PluginLifecycle.java
PluginModuleToggle.java
PluginProvides.java
PluginRequirements.java
PluginScope.java
PluginSpec.java
util/
VersionRange.java
skill/
SkillIndex.java
SkillLoader.java
SkillRegistry.java
SkillsInstaller.java
SkillSpec.java
team/
SharedTaskList.java
TaskStatus.java
TeamManager.java
TeammateRunner.java
TeammateSpec.java
TeamMessage.java
TeamMessageBus.java
TeamResult.java
TeamSpec.java
TeamStrategy.java
TeamTask.java
TeamTaskSpec.java
tool/
AbstractTool.java
core/
ask/
AskHuman.java
HumanInputRequest.java
HumanInputResponse.java
HumanInteraction.java
BashTool.java
file/
Glob.java
Grep.java
ReadFile.java
StrReplaceFile.java
WriteFile.java
HarnessTool.java
mcp/
MCPTool.java
MCPToolLoader.java
MemoryTool.java
meta/
CodeExecutionContext.java
JShellCodeExecutor.java
MetaTool.java
ToolBridge.java
ToolBridgeHolder.java
SetTodoList.java
SkillsTool.java
SubagentResultTool.java
SubagentRunRegistry.java
SubAgentTool.java
TeamAgentTool.java
web/
FetchURL.java
WebSearch.java
provider/
InteractionToolProvider.java
MCPToolProvider.java
MetaToolProvider.java
TaskToolProvider.java
TeamToolProvider.java
SyncTool.java
Tool.java
ToolProvider.java
ToolRegistry.java
ToolRegistryFactory.java
ToolResult.java
ToolResultBuilder.java
ui/
DebugLogger.java
notification/
NotificationService.java
NotificationType.java
shell/
handler/
InteractionHandler.java
WireMessageHandler.java
input/
AgentCommandProcessor.java
InputProcessor.java
MetaCommandProcessor.java
ShellShortcutProcessor.java
jline/
JimiCompleter.java
JimiHighlighter.java
JimiParser.java
output/
AssistantTextRenderer.java
OutputFormatter.java
SpinnerManager.java
ToolVisualization.java
WelcomeRenderer.java
ShellContext.java
ShellUI.java
style/
AnsiStyle.java
ColorMapper.java
PromptBuilder.java
util/
SpringContextUtils.java
wire/
message/
CompactionBegin.java
CompactionEnd.java
ContentPartMessage.java
request/
ContextQueryRequest.java
RunCommandRequest.java
RuntimeInfoQueryRequest.java
SessionResetRequest.java
ThemeUpdateRequest.java
ToolExecuteRequest.java
ToolNamesQueryRequest.java
ToolQueryRequest.java
SkillsActivated.java
StatusUpdate.java
StepBegin.java
StepInterrupted.java
SubagentCompleted.java
SubagentStarting.java
TeamCompleted.java
TeammateStatusUpdate.java
TeamStarting.java
TodoUpdateMessage.java
TokenUsageMessage.java
ToolCallMessage.java
ToolResultMessage.java
WireMessage.java
WireRequest.java
Wire.java
WireImpl.java
WireRequestHandler.java
resources/
.jimi/
template-config.yml
agents/
default/
agent.yaml
system_prompt.md
sub/
architect/
agent.yaml
system_prompt.md
code/
agent.yaml
system_prompt.md
devops/
agent.yaml
system_prompt.md
doc/
agent.yaml
system_prompt.md
quality/
agent.yaml
system_prompt.md
team/
architect/
agent.yaml
system_prompt.md
coder/
agent.yaml
system_prompt.md
doc-writer/
agent.yaml
system_prompt.md
tester/
agent.yaml
system_prompt.md
application.yml
... 177 moreFAQ
jimi is a Claude Code plugin with 9 hand-picked skills for ai & agents work, indexed on Flowy. Install it with the command on its page. It includes maven-troubleshoot, api-design, code-quality-suite. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.