# agent4j **Repository Path**: asgc/agent4j ## Basic Information - **Project Name**: agent4j - **Description**: Agent4j 是一个纯 Java 生态的 AI 编码代理框架,它将大语言模型(LLM)与丰富的可扩展工具系统相结合,打造出一个能自主理解代码、编写代码、调试代码的编程助手。灵感源自 Claude Code、Devin 等 AI 编码代理,但完全基于 Java 17 构建,兼容SolonSkill SolonTool等。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: http://agent4j.sorghum.site/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 10 - **Created**: 2026-06-08 - **Last Updated**: 2026-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🧠 Agent4j — Java AI 编码代理框架

纯 Java 17 实现的 AI 编码代理框架
推理循环 · 工具编排 · 会话管理 · 流式输出 · 三端界面

Java 17+ Maven Solon 4.0.0-M1 Vue 3.4 Tauri 2.0 License ~43K LOC

--- ## 📋 概述 **Agent4j** 是一个纯 Java 生态的 AI 编码代理框架,它将大语言模型(LLM)与丰富的可扩展工具系统相结合,打造出一个能自主理解代码、编写代码、调试代码的编程助手。灵感源自 Claude Code、Devin 等 AI 编码代理,但完全基于 Java 17 构建。 > 💡 **一句话**:在你的终端、浏览器或桌面里跑一个 AI 程序员。 ### ✨ 核心能力 | 能力 | 说明 | |------|------| | 🤖 **推理循环** | 多轮对话上下文中自主思考 → 调用工具 → 观察结果 → 继续推理 | | 🔧 **工具系统** | 25+ 内置工具,支持 Solon Skill / MCP / OpenAPI 插件扩展 | | 🔌 **模型无关** | 兼容 OpenAI API 格式,可对接 DeepSeek、Ollama、OpenAI、千问等 | | 📋 **计划模式** | 只读探索 → 提交计划 → 审批后执行,安全可控 | | 🛡️ **安全防护** | 风暴断路器(防循环调用)、路径穿越防护、原子编辑回滚 | | 💾 **会话管理** | JSONL 持久化、异步批量写入(非阻塞 IO)、定时自动刷入、语义折叠 | | 📊 **Token 追踪** | 用量统计、前缀缓存命中率、按模型/会话分别累计 | | 🧩 **子代理** | 复杂任务委派,隔离执行上下文,排除递归工具 | | 🔍 **代码分析** | 源码定位、符号大纲、标识符查找、正则/glob 搜索、目录树浏览 | | 🌐 **联网能力** | 网络搜索(DuckDuckGo)、网页抓取 | | 📝 **记忆服务** | 跨会话持久化键值记忆(全局/项目级) | | 🔌 **MCP 协议** | 支持 MCP 服务器连接管理,动态注册外部工具 | | 📐 **OpenAPI 集成** | 从 OpenAPI 规范自动生成工具定义 | --- ## 🚀 快速开始 ### 🚀 一键安装 **Windows** (PowerShell): ```powershell irm http://agent4j.sorghum.site/setup.ps1 | iex ``` **Mac / Linux**: ```bash curl -fsSL http://agent4j.sorghum.site/setup.sh | bash ``` 安装完成后输入 `agent4j web` 即可启动。自动下载 JRE 25,无需手动安装 Java。 ### 前置条件(源码编译) - **JDK 17+**(推荐 Eclipse Temurin / Amazon Corretto) - **Maven 3.x** - **Node.js 18+** & **pnpm 8+**(仅 Web/桌面端需要) - 一个兼容 OpenAI API 的 LLM 端点(如 DeepSeek / Ollama / OpenAI / 千问) ### 📦 下载 & 编译 ```bash git clone https://gitee.com/ezdemo/agent4j.git cd agent4j mvn clean compile -pl agent4j-bin ``` 全部模块编译(含 Web 后端): ```bash mvn clean compile ``` ### ⚙️ 配置 首次启动会自动创建 `~/.agent4j/config.json`,编辑填入 API 信息: ```json { "baseUrl": "https://api.deepseek.com/v1", "apiKey": "sk-your-api-key", "model": "deepseek-v4-flash", "workspaceDir": "", "editMode": "auto", "reasoningEffort": "high", "lang": "ZH", "hitl": false, "maxContextChars": 200000, "keepTailChars": 80000, "toolTimeoutSec": 360, "maxSelfCorrectionAttempts": 5, "maxStreamErrorRetries": 10, "flushIntervalSec": 30, "foldHeadCharsLimit": 60000, "stormWindowSize": 6, "stormThreshold": 3, "toolResultTruncateChars": 16000, "toolResultKeepChars": 12000 } ``` > 也可通过环境变量覆盖:`OPENAI_BASE_URL`、`OPENAI_API_KEY`、`MODEL`。 ### ▶️ 运行 **CLI 模式(控制台交互):** ```bash # Windows mvn exec:java -pl agent4j-bin -Dexec.mainClass="site.sorghum.agent4j.bin.app.AppConfig" # Linux / macOS mvn compile -pl agent4j-bin mvn exec:java -pl agent4j-bin -Dexec.mainClass="site.sorghum.agent4j.bin.app.AppConfig" ``` **Web 模式(REST API + Vue3 前端):** ```bash # 启动后端 API 服务 mvn exec:java -pl agent4j-web -Dexec.mainClass="site.sorghum.agent4j.web.Agent4jWebApp" # 启动前端开发服务器(新终端) cd agent4j-front pnpm install pnpm dev ``` **桌面模式(Tauri):** ```bash cd agent4j-tauri pnpm install pnpm tauri dev ``` ### 🎮 交互命令(CLI) | 命令 | 功能 | |------|------| | `/new` | 开启新会话 | | `/plan` | 进入计划模式(仅只读工具可用) | | `/execute` | 退出计划模式,恢复全部工具 | | `/compact` | 折叠历史消息(语义摘要,释放上下文空间) | | `/retry` | 撤回最后一条消息并重试 | | `/rewind N` | 回退到第 N 轮对话 | | `/sessions` | 列出历史会话列表 | | `/load N` | 加载指定编号的会话 | | `/init` | 自动分析项目结构生成 `agent4j.md` 项目上下文 | | `/help` | 显示帮助信息 | | `/exit` | 退出程序 | --- ## 🏗️ 架构设计 ``` ┌────────────────────────────────────────────────────────────────────┐ │ 三端界面层 │ │ ┌──────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ │ │ CLI Console │ │ Vue3 Web UI │ │ Tauri Desktop │ │ │ │ (agent4j-bin)│ │ (agent4j-front) │ │ (agent4j-tauri) │ │ │ └──────┬───────┘ └────────┬─────────┘ └────────┬─────────┘ │ └─────────┼────────────────────┼──────────────────────┼──────────────┘ │ │ │ ┌─────────▼────────────────────▼──────────────────────▼──────────────┐ │ Solon IoC 容器层 │ │ @Component · @Configuration · @Bean · @Inject │ │ AOP 拦截 · CORS 过滤 · Knife4j 文档 · 技能市场 API 调用 │ └─────────────────────────────┬──────────────────────────────────────┘ │ ┌─────────────────────────────▼──────────────────────────────────────┐ │ Agent4jAgent (外观) │ │ 组装 ModelClient + ToolRegistry + SessionService │ └────────────────┬────────────────────────────┬──────────────────────┘ │ │ ┌────────────────▼──────────┐ ┌─────────────▼──────────────────────┐ │ AgentLoop (推理循环) │ │ ToolDispatcher (工具调度) │ │ ┌────────────────────────┐│ │ ┌────────────────────────────┐ │ │ │ 1. 构建消息上下文 ││ │ │ StormBreaker 风暴断路器 │ │ │ │ 2. MessageHealer 修复 ││ │ │ PlanMode 权限过滤 │ │ │ │ 3. ContextFolding 折叠 ││ │ │ HITL 人工审批 │ │ │ │ 4. chatStream 流式调用 ││ │ │ Schema 展平/截断 │ │ │ │ 5. Scavenger 回收调用 ││ │ └────────────────────────────┘ │ │ │ 6. Dispatch 并行执行 ││ │ │ │ └────────────────────────┘│ │ │ └────────────────┬───────────┘ └────────────────┬───────────────────┘ │ │ ┌────────────────▼───────────┐ ┌────────────────▼───────────────────┐ │ ModelClient (LLM 客户端) │ │ ToolRegistry (工具注册表) │ │ ┌────────────────────────┐│ │ ┌──────────────────────────────┐ │ │ │ HTTP SSE 流式/非流式 ││ │ │ 内置工具 (agent4j-tool) │ │ │ │ SSE 快速路径 JSON 解析 ││ │ │ ├── 文件操作 │ │ │ │ 自动重试 ×10 次 ││ │ │ ├── 代码分析 │ │ │ │ 流中断信号 (Reason …… ││ │ │ ├── 终端/作业 │ │ │ │ Breaker) ││ │ │ ├── 网络/记忆 │ │ │ │ 10 分钟读取超时 ││ │ │ ├── 计划/交互 │ │ │ └────────────────────────┘│ │ │ └── 子代理/工作区 │ │ └────────────────────────────┘ │ │ Solon Skill 插件 │ │ │ │ ├── MCP 服务器代理 │ │ │ │ ├── OpenAPI 工具 │ │ │ │ └── 技能市场工具 │ │ │ └──────────────────────────────┘ │ └────────────────────────────────────┘ ``` ### 🔄 推理循环流程 ``` 用户输入 │ ▼ AgentLoop.run(message) │ ├── 1. ctx.addUser(msg) ← 追加用户消息 ├── 2. ctx.buildMessages() ← 组装 system + history ├── 3. MessageHealer.heal() ← 修复消息(截断/配对/去重) │ └── 直接操作 ChatMessage 对象,消除序列化往返 ├── 4. ContextFolding.fold() ← 超长时折叠旧消息(语义摘要) ├── 5. client.chatStream() ← 流式调用 LLM(SSE 快速路径) │ ├── onReasoningDelta() ← 思考过程实时打印 │ ├── onContentDelta() ← 内容实时打印 │ └── onToolCalls() ← 工具调用收集 │ ├── 6. Scavenger.scavenge() ← 从 reasoning 回收丢失的调用 │ ├── 7. 无 tool_calls → 返回文本回复 │ └── 8. 有 tool_calls ├── StormBreaker.inspect() ← 滑动窗口检查重复调用 ├── ReasonBreaker.analyze() ← 检测思考死循环 ├── dispatch() 并行执行 ← 并行分发工具调用 ├── ctx.addAssistant() ← 助理消息 └── ctx.addToolResult() ← 工具结果 │ └── 回到步骤 2(继续循环,最多容忍 5 次自纠错) ``` --- ## 🧰 全部工具 ### 📁 文件操作(6 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `read` | ✅ | 读取文件内容。支持大文件分页,支持逻辑路径(如 @pool) | | `write` | ❌ | 创建新文件或覆盖现有文件 | | `edit` | ❌ | 对文件进行精准文本替换。支持单次调用执行一处或多处编辑,原子性写入 | | `glob` | ✅ | 按通配符模式(如 **/*.java)搜索文件。支持逻辑路径(如 @pool) | | `ls` | ✅ | 列出目录内容。支持递归 Tree 结构展示。支持逻辑路径(如 @pool) | | `grep` | ✅ | 递归搜索内容。返回 '路径:行号:内容'。支持逻辑路径(如 @pool) | ### 💻 终端(5 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `bash` | ❌ | 在终端执行非交互式 Shell 指令。支持多行脚本,支持逻辑路径自动转环境变量 | | `bash_start` | ❌ | 启动 shell 命令会话,返回 session_id,可配合 bash_wait/bash_stdin/bash_stop 使用 | | `bash_stdin` | ❌ | 向仍在运行的命令会话写入 stdin | | `bash_stop` | ❌ | 终止仍在运行的命令会话及其子进程树 | | `bash_wait` | ✅ | 继续等待仍在运行的命令会话,返回自上次读取后的新增输出 | ### ⏳ 后台作业(5 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `run_background` | ❌ | 启动后台 Shell 进程(分离式),返回 job id 和启动输出 | | `job_output` | ✅ | 读取后台作业的最新输出,支持增量读取 | | `wait_for_job` | ❌ | 阻塞等待后台作业完成 | | `stop_job` | ❌ | 终止后台作业(SIGTERM → SIGKILL) | | `list_jobs` | ✅ | 列出所有后台作业 | ### 🧠 记忆(3 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `remember` | ❌ | 持久化保存信息到 `~/.agent4j/memory/`,支持 global/project 作用域 | | `recall_memory` | ✅ | 读取已保存的记忆条目 | | `forget` | ❌ | 删除指定记忆条目 | ### 📋 计划(3 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `submit_plan` | ❌ | 提交执行计划供用户审查 | | `revise_plan` | ❌ | 修订进行中的计划 | | `mark_step_complete` | ❌ | 标记计划步骤已完成 | ### 💬 交互(2 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `ask_choice` | ❌ | 用户选择菜单(HITL 交互) | | `todo_write` | ❌ | 任务跟踪列表 | ### 🧩 子代理(2 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `task` | ❌ | 创建隔离子代理处理复杂多步任务(独立上下文,排除递归工具) | | `multi_task` | ❌ | 创建多个隔离子代理并行处理多路任务 | ### 📦 工作区(4 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `workspace_list` | ✅ | 列出共享工作区中的条目键,支持前缀过滤 | | `workspace_read` | ✅ | 读取工作区 KV 或文档条目(优先 KV → 文档 → NOT_FOUND) | | `workspace_write` | ❌ | 写入工作区 KV 或文档条目 | | `workspace_watch` | ✅ | 监听工作区条目变更事件 | ### 🛠️ 工具管理(4 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `skilllist` | ✅ | 列出本地所有挂载池中的可用技能清单 | | `skillread` | ✅ | 读取本地技能详细说明书 | | `skillrefresh` | ❌ | 重新扫描所有挂载池,更新技能列表 | | `using-superpowers` | ✅ | 学习如何组合和编排多个超级能力技能完成复杂任务 | ### 🌐 网络(7 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `webfetch` | ✅ | 从 URL 获取网页内容,支持 markdown/text/html 格式 | | `codesearch` | ✅ | 使用 Exa Code API 搜索并获取编程任务相关上下文 | | `resolve-library-id` | ✅ | 解析包/产品名称为 Context7 兼容的库 ID | | `query-docs` | ✅ | 查询编程库/框架的最新文档和代码示例 | | `search_apis` | ✅ | 通过关键词在 API 库中搜索匹配的接口 | | `get_api_detail` | ✅ | 根据接口名称获取完整的参数定义及返回值结构 | | `call_api` | ❌ | 根据接口名称执行 REST API 调用 | ### ⏰ 其他(1 个) | 工具名 | 只读 | 说明 | |--------|:----:|------| | `get_current_time` | ✅ | 获取系统当前的日期、精确时间、星期及本地时区 | ### 🔌 插件子系统 | 子系统 | 说明 | |--------|------| | **MCP 服务器代理** | 通过 MCP 协议连接外部工具服务器,动态注册工具 | | **OpenAPI 集成** | 从 OpenAPI 规范(Swagger)自动解析生成工具定义 | | **技能市场** | 从 Solon 技能市场安装/加载社区技能包 | --- ## 📐 配置参考 > 配置文件位置:`~/.agent4j/config.json`,首次启动自动生成。 | 配置项 | 类型 | 默认值 | 说明 | |--------|------|--------|------| | `baseUrl` | string | `http://localhost:11434/v1` | LLM API 基础地址 | | `apiKey` | string | `sk-your-api-key` | API 密钥 | | `model` | string | `mimo-v2.5` | 模型名称 | | `workspaceDir` | string | `""` | 工作区目录(空=不限制) | | `editMode` | string | `"auto"` | 编辑模式:`auto`(需确认)/ `yolo`(直接执行) | | `reasoningEffort` | string | `"high"` | 推理力度:`low` / `medium` / `high` / `max` | | `lang` | string | `"ZH"` | 界面语言:`ZH` / `EN` | | `hitl` | boolean | `false` | 是否默认开启人工审批(Human-In-The-Loop) | ### ⚙️ 新增可调参数 以下参数在近期优化中外化到配置文件中,无需修改代码即可调整运行时行为: | 配置项 | 类型 | 默认值 | 说明 | |--------|------|--------|------| | `maxContextChars` | number | `200000` | 触发上下文折叠的消息总字符阈值 | | `keepTailChars` | number | `80000` | 折叠后保留的尾部字符数 | | `toolTimeoutSec` | number | `360` | 工具调用超时时间(秒) | | `maxSelfCorrectionAttempts` | number | `5` | 模型自纠错最大重试次数 | | `maxStreamErrorRetries` | number | `10` | 流式请求最大重试次数(指数退避) | | `flushIntervalSec` | number | `30` | 会话异步写入定时刷入间隔(秒) | | `foldHeadCharsLimit` | number | `60000` | 折叠时头部用于摘要的字符预算 | | `stormWindowSize` | number | `6` | 风暴断路器滑动窗口大小 | | `stormThreshold` | number | `3` | 风暴断路器触发阈值(窗口内重复次数) | | `toolResultTruncateChars` | number | `16000` | 工具结果截断阈值 | | `toolResultKeepChars` | number | `12000` | 工具结果截断后保留字符数 | ### 🚫 安全配置 | 配置项 | 类型 | 说明 | |--------|------|------| | `disabledTools` | string[] | 全局禁用的工具名称列表 | | `blockedPaths` | string[] | 屏蔽的文件系统路径列表 | | `price` | object | 各模型的 token 计价配置(输入/缓存/输出) | | `availableModels` | string[] | 可用的模型列表(前端/CLI 切换用) | ### 🌍 环境变量覆盖 | 环境变量 | 覆盖配置 | |----------|----------| | `OPENAI_BASE_URL` | `baseUrl` | | `OPENAI_API_KEY` | `apiKey` | | `MODEL` | `model` | | `AGENT4J_DISABLED_TOOLS` | `disabledTools`(逗号分隔) | --- ## 🖥️ 三端界面 Agent4j 提供三种使用方式,覆盖不同场景: ### 1️⃣ CLI 控制台(agent4j-bin) 最直接的交互方式,在终端中运行完整的 AI 编码代理: ```bash mvn exec:java -pl agent4j-bin -Dexec.mainClass="site.sorghum.agent4j.bin.app.AppConfig" ``` **特点:** - 完整的交互式命令行体验 - 支持 `/plan`、`/compact`、`/rewind` 等丰富命令 - 实时流式输出思考过程和工具执行结果 - 无需任何前端依赖,即编即用 ### 2️⃣ 🌐 Web 界面(agent4j-web + agent4j-front) 基于 Vue 3 + Ant Design Vue 的现代化 Web UI,提供可视化交互体验。 **后端 API 服务**(Solon Web): ```bash mvn exec:java -pl agent4j-web -Dexec.mainClass="site.sorghum.agent4j.web.Agent4jWebApp" ``` 提供 REST API 端点: - `GET /api/chat` — SSE 流式聊天接口 - `GET /api/sessions` — 会话 CRUD 管理 - `GET /api/tools` — 工具列表与状态 - `GET /api/openapi` — OpenAPI 管理 - `GET /api/agent` — Agent 控制 - `GET /api/config` — 配置查询与更新 **前端**(Vue 3 + Vite + Pinia): ```bash cd agent4j-front pnpm install pnpm dev ``` 前端技术栈:Vue 3.4 + Ant Design Vue 4.2 + Pinia 状态管理 + Vue Router 4 + Axios + Marked ### 3️⃣ 🖥️ 桌面应用(agent4j-tauri) 基于 Tauri 2.0(Rust)的跨平台桌面应用,将 Web 前端打包为原生桌面程序。 ```bash cd agent4j-tauri pnpm install pnpm tauri dev ``` **技术栈:** Tauri 2.0 + Rust + 内嵌 Vue3 前端 + 原生系统集成 **优势:** 更小的体积(< 10MB)、原生窗口体验、系统托盘、自动更新 ### 📱 界面切换关系 ``` CLI 终端 ──(直接使用)──→ agent4j-bin (Solon IoC) │ Web 浏览器 ──(HTTP/REST)──→ agent4j-web (Solon Web + Knife4j) │ Vue3 前端 ──(axios)────────→ agent4j-web API │ Tauri 桌面 ──(内嵌前端)────→ agent4j-front (Vue3 + Tauri Rust 后端) ``` --- ## 💡 设计亮点 ### ⚡ 性能优化 - **SSE 快速路径 JSON 解析** — 流式响应中直接解析 JSON 片段,避免完整字符串构建再解析的往返开销,减少 GC 压力和延迟 - **异步会话写入** — 消息先入内存队列,后台消费者线程异步批量写入(最大 50 条/批),关键路径零 IO 阻塞,定时 30 秒自动刷入 - **MessageHealer 序列化消除** — 四项消息修复(配对/去重/补充)直接操作 `ChatMessage` 对象,消除 `ChatMessage ↔ Map` 反复序列化/反序列化往返 - **缓存优先** — `PromptPrefix` 不可变前缀 + 稳定 tool specs 缓存指纹,最大化 DeepSeek 前缀缓存命中率 - **延迟文件创建** — 空白会话不落盘,首次写入消息才创建文件 ### 🔒 安全机制 - **风暴断路器** — 滑动窗口(默认 6×3)检测重复工具调用,防止循环耗尽 token - **ReasonBreaker 推理断路器** — 200 字符滑动窗口检测 thinking 死循环,自动注入警告 - **路径穿越防护** — 所有文件操作通过 `blockedPaths` 校验,防止越权访问 - **原子编辑** — `edit` 全验证 → 全写入 → 失败回滚,确保数据一致性 - **HITL 人工审批** — 非只读工具执行前请求用户确认,安全可控 ### 🧩 可扩展性 - **Solon Skill 插件系统** — 通过 `@Component` 自动发现工具,支持 MCP / OpenAPI 协议动态注册 - **插件市场** — 支持从文件系统加载第三方工具包(`plugin.json` 声明式配置) - **工具热刷新** — 运行时动态刷新工具列表,无需重启进程 - **子代理隔离** — 独立循环上下文,排除递归工具,专注复杂任务 ### 🏗 工程架构 - **模块化设计** — 5 个 Maven 模块 + Tauri/Rust 子项目,职责清晰 - **配置外化** — 12+ 运行时参数从代码硬编码迁移到 `config.json`,无需重新编译 - **异常吞咽修复** — 全项目 36 处异常吞咽问题已修复,提升系统稳定性 - **Solon 4.0.0-M1** — 采用新一代 Solon IoC 容器,轻量高效,启动毫秒级 --- ## 🧪 测试 ```bash # 运行核心工具模块测试 mvn test -pl agent4j-tool # 运行全部测试 mvn test ``` ### 测试覆盖 | 模块 | 测试内容 | |------|----------| | `agent4j-tool` | ToolContext / ToolParameter / ToolResult 序列化,CommandChainParser / CommandTokenizer / SmartDecoder | --- ## 📦 模块结构 ``` agent4j/ # 父 POM(多模块管理) │ ├── agent4j-tool/ # 🔧 核心工具库 │ ├── 文件/终端/网络/记忆/作业/计划 等工具实现 │ ├── Solon Skill 插件(MCP / OpenAPI / 技能市场 / 系统) │ └── 依赖:Solon IoC + AI Skill SDK │ ├── agent4j-bin/ # 🖥️ 可执行入口(CLI) │ ├── AgentLoop 推理循环 │ ├── ConversationContext 上下文管理 │ ├── HttpModelClient LLM 客户端(SSE 流式) │ ├── ToolRegistry / ToolDispatcher 工具编排 │ ├── JsonlSessionStore 会话持久化(异步批量写入) │ ├── StormBreaker / ReasonBreaker / Scavenger │ ├── MessageHealer / ContextFolding │ ├── Workspace 共享工作区 │ ├── MCP 服务器管理服务 │ ├── 内置工具(子代理 / 工作区 / 多任务) │ └── 依赖:agent4j-tool + Solon IoC + OkHttp + Snack4 │ ├── agent4j-web/ # 🌐 Web 服务模块 │ ├── REST API 控制器(聊天/会话/工具/配置/Agent/OpenAPI) │ ├── Solon Web 容器 + Knife4j 文档 │ ├── CORS 跨域支持 │ └── 依赖:agent4j-bin + Solon Web │ ├── agent4j-front/ # 🎨 Vue3 前端界面 │ ├── Vue 3.4 + Vite 5 + Pinia + Vue Router │ ├── Ant Design Vue 4.2 组件库 │ ├── Markdown 渲染(marked) │ └── Tauri API 集成 │ ├── agent4j-tauri/ # 🖥️ Tauri 桌面应用 │ ├── Rust 后端(Tauri 2.0) │ ├── 内嵌 agent4j-front 前端 │ ├── 系统托盘 / 原生窗口 / 自动更新 │ └── 依赖:agent4j-front(前端) │ └── agent4j-tui/ # 🚧 TUI 终端界面(占位) ``` ### 依赖关系图 ``` agent4j (父 POM) │ ├── agent4j-tool (Solon AI Skill / IoC 基础依赖) │ │ │ └── agent4j-bin (核心执行入口,依赖 tool 模块) │ │ │ ├── agent4j-web (REST API 服务,依赖 bin 模块) │ │ │ └── agent4j-front (Vue3 前端,通过 HTTP 调用 web 模块) │ └── agent4j-tauri (Tauri 桌面壳,内嵌 front 前端) ``` --- ## 📊 项目规模 | 维度 | 数据 | |------|------| | Java 文件 | 189 个,18,818 行 | | Vue 文件 | 19 个,14,450 行 | | **总代码量** | **~43,268 LOC** | | Maven 模块 | 5 个(parent + tool + bin + web + front) | | 其他项目 | agent4j-tauri(Rust)、agent4j-tui(占位) | --- ## 🛠️ 技术栈 | 组件 | 版本 | 用途 | |------|------|------| | **Java** | 17+ | 开发语言 | | **Maven** | 3.x | 构建工具 | | **Solon** | 4.0.0-M1 | IoC 容器 / AOP / Web MVC | | **Snack4** | 4.0.49 | JSON 解析与序列化 | | **Snack4-jsonpath** | 4.0.49 | JSONPath 查询 | | **OkHttp** | 4.12.0 | HTTP 客户端(SSE 流式调用) | | **Lombok** | 1.18.34 | 代码简化 | | **JUnit Jupiter** | 5.10.3 | 单元测试 | | **SLF4J / Logback** | via Solon | 日志门面与实现 | | **Vue** | 3.4.21 | 前端框架 | | **Ant Design Vue** | 4.2.6 | UI 组件库 | | **Vite** | 5.1.4 | 前端构建工具 | | **Tauri** | 2.0 | 桌面应用框架(Rust) | | **Rust** | 2021 edition | Tauri 后端语言 | --- ## 📄 许可证 本项目基于 **MIT 许可证** 开源。 ---

由 Agent4j 自动维护 · 作者 Sorghum
Built with ❤️ in pure Java