
AgentScope Java 2.0|Spring Boot 4.1|HarnessAgent|ReAct 模式|Web CLI 双端|Skills 可扩展你是否想过自己拥有一个 AI 编程助手——不是调用别人的 API而是完全自主可控、可扩展、能读写代码、能执行命令、能联网搜索的 Coding Agent市面上的 AI 编程工具大多是闭源产品或 Python 生态。Java 开发者想要一个属于自己的 Coding Agent往往只能望洋兴叹。如果有一个完全用 Java 编写的 AI Coding Agent9 大内置工具覆盖代码读写到 GitHub 集成Web 聊天界面 CLI 双端交互还能通过 Markdown 文件扩展技能——你会不会想试试这就是 Babi Agent ——一个基于AgentScope Java 2.0 Spring Boot 4.1构建的 AI Coding Agent覆盖代码分析、文件编辑、Shell 执行、网页抓取、Web 搜索、HTTP 请求、GitHub 集成、Skills 扩展、任务追踪等开发全流程能力。 为什么需要 Babi Agent痛点一Java 生态缺少原生 Coding AgentPython 社区有 LangChain、CrewAI、AutoGPT 等丰富的 Agent 框架Java 开发者却几乎没有同等水平的选择。大多数 Java 项目想接入 AI 能力只能调用外部 API 或嵌入 Python 脚本——这不是 Java 开发者该有的 AI 体验。痛点二通用大模型什么都能聊但不会写代码直接拿大模型聊天来做开发辅助你会发现它不能读你的文件、不能执行命令、不能搜索代码、不能操作 GitHub——它只能说不能做。一个真正有用的 Coding Agent必须具备完整的工具链。痛点三AI 助手不可扩展每次都要重新教每个项目都有自己的工作流和约定。通用 AI 助手不了解你的项目规范每次都要手动贴规则、教格式。如果能把专家经验沉淀为可复用的技能一条命令加载对话即触发——那该多好。 项目亮点✨ 1. 9 大内置工具——代码读写到 GitHub 操作全覆盖Babi Agent 内置了 9 个精心设计的工具覆盖开发场景的方方面面工具能力说明read_file读取文件读取源码、配置文件等任意文本文件edit_file精准编辑基于精确文本匹配的替换编辑不破坏文件结构code_search代码搜索基于 ripgrep/grep 的模式匹配快速定位代码shellShell 执行运行构建、测试、部署等任意终端命令fetch_url网页抓取获取网页内容保留结构化文本web_searchWeb 搜索模型内置联网检索实时获取最新信息无需额外 API Keyhttp_requestHTTP 请求调用任意 REST APIgithub_apiGitHub 集成通过 API 操作 Issues、PR、仓库、Pinned Repos 等use_skillSkills 加载按需加载 Markdown 定义的可复用工作流指令每个工具都遵循参数简单、描述清晰的设计原则——基本类型参数 独立的ToolParam description让大模型准确理解每个参数的用途Tool(nameedit_file,descriptionEdit a file by replacing an exact text match...)publicStringeditFile(ToolParam(namefile_path,descriptionPath to the file to edit)StringfilePath,ToolParam(nameold_text,descriptionThe exact text to find)StringoldText,ToolParam(namenew_text,descriptionThe text to replace it with)StringnewText){// 精准替换只改第一处}这意味着Agent 不是只会聊天的对话框而是真正能读写代码、执行命令、操作 GitHub 的编程助手。✨ 2. HarnessAgent 驱动——ReAct 循环 计划模式 任务追踪Babi Agent 的核心引擎是 AgentScope Java 的HarnessAgent它不是简单的一问一答而是一个具备自主推理和行动能力的智能体用户提问 → 模型推理 → 选择工具 → 执行操作 → 观察结果 → 继续推理 → ... → 最终回答关键能力配置能力说明ReAct 循环思考→行动→观察的自主推理闭环最多 20 轮迭代计划模式先调查分析再制定计划最后执行——不盲目操作任务追踪内置 Todo 列表多步骤任务可视化进度模型降级主模型不可用时自动降级到备用模型qwen-plus → qwen-turbo失败重试工具调用失败自动重试最多 2 次联网搜索模型内置 enableSearch无需额外 API Key 即可联网HarnessAgent.builder().name(Babi).maxIters(20)// 最多 20 轮推理.maxRetries(2)// 工具失败自动重试.fallbackModel(qwen-turbo)// 模型降级策略.enableTaskList()// 任务追踪.enablePlanMode()// 先计划后执行.allowShellInPlanMode()// 计划模式允许执行命令....build();这意味着Agent 不是执行命令 → 展示结果的机械操作而是理解意图 → 制定计划 → 逐步执行 → 总结反馈的智能助手。✨ 3. Skills 扩展系统——Markdown 定义、双层加载、即插即用这是 Babi Agent最具扩展性的设计。Skills 系统将专家经验沉淀为 Markdown 文件Agent 在对话中按需加载~/.agents/skills/ ← 全局共享技能跨项目复用 ~/.babi/skills/ ← Babi 专属技能更高优先级可覆盖全局Skill 文件格式极简——YAML 前置元数据 Markdown 指令正文--- name: code-review description: Perform structured code review on source files --- # Instructions 1. Read the target file... 2. Check naming conventions... 3. Review error handling...SkillLoader 启动时自动扫描两个目录支持扁平文件my-skill.md和目录格式my-skill/SKILL.md两种布局同名 Skill 以 Babi 目录为准// 全局技能先加载低优先级loadFromDir(GLOBAL_DIR,skills);// Babi 专属技能后加载高优先级覆盖同名全局技能loadFromDir(BABI_DIR,skills);这意味着你不需要修改任何代码只需要在~/.babi/skills/下放一个.md文件Agent 就自动获得新技能——就像给 AI 装插件一样简单。✨ 4. Web 聊天界面——Markdown 渲染 工具状态可视化 IDE 布局Web 前端不是简单的聊天框而是一个功能完整的轻量级 IDE 界面聊天区域Markdown 实时渲染marked.js highlight.js 语法高亮工具调用状态可视化 调用中 / ✅ 成功 / ❌ 失败图片 Lightbox 预览GitHub Pinned Repos 卡片渲染打字动画指示器IDE 布局 左侧文件树浏览器可折叠/展开 右侧文件预览面板代码高亮 图片预览/☀️ 明暗主题切换跟随系统 手动切换 localStorage 持久化SSE 实时流式输出前端 ←── SSE ──← Spring WebFlux ──← HarnessAgent ──→ 大模型 │ ├── token 事件文本增量 ├── tool_call 事件工具调用通知 ├── tool_result 事件工具执行结果 └── done 事件回复完成这意味着不需要安装任何客户端打开浏览器就是一个功能完整的 AI 编程助手——流式输出、工具状态、文件浏览、代码预览一应俱全。✨ 5. 工具事件总线——解耦工具调用与前端通知Babi Agent 设计了一个基于 Reactor Sinks 的ToolEventBus优雅地解耦了工具调用的产生端和消费端ToolNotificationMiddleware ──发布──→ ToolEventBus ──订阅──→ SSE Controller ──推送──→ 前端 (Agent 中间件) (发布/订阅) (WebFlux SSE) (浏览器)publicclassToolEventBus{privatefinalSinks.ManyToolEventsinkSinks.many().multicast().onBackpressureBuffer(256,false);publicvoidpublish(ToolEventevent){...}publicFluxToolEventsubscribe(StringsessionId){...}}通过sessionId隔离不同会话的事件流多个用户可以同时使用不同的 Session 互不干扰。这意味着工具调用的通知机制与 Agent 核心逻辑完全解耦——未来增加 WebSocket 推送、日志记录、审计追踪等功能只需新增订阅者无需修改 Agent 代码。✨ 6. 会话持久化 工作区沙箱——安全隔离、状态可恢复Babi Agent 采用双路径架构将会话状态和工作区文件分离管理路径用途~/.babi/sessions/会话状态持久化JSON 文件Agent 对话上下文可恢复~/babi-workspace/工作区沙箱目录Agent 在此范围内读写文件、执行命令工作区初始化时自动创建AGENTS.md工作区说明文件HarnessAgent 框架会自动注入工作区上下文。这意味着关闭浏览器再打开对话上下文还在Agent 的文件操作限定在工作区范围内不会影响系统其他文件。️ 项目架构全景------------------------------ | 用户端 | | Web 聊天界面 / CLI 终端 | ----------------------------- | SSE / stdin ----------------------------- | BabiAgentController | | (WebFlux SSE 流式输出) | ----------------------------- | ----------------------------- | HarnessAgent | | (ReAct 循环 计划模式) | | maxIters20 / maxRetries2 | ----------------------------- | -------------------------------------------- | | | ---------------- ---------------- ---------------- | 内置工具 | | 中间件 | | 基础设施 | | | | | | | | read_file | | Context | | ToolEventBus | | edit_file | | Truncate | | (Reactor Sinks) | | code_search | | | | | | shell | | Tool | | AgentStateStore | | fetch_url | | Notification | | (JSON 文件) | | web_search | | | | | | http_request | ----------------- | SkillLoader | | github_api | | (Markdown 解析) | | use_skill | ----------------- ----------------- ----------------- | 模型层 | | DashScope | | qwen-plus | | 联网搜索 | | 模型降级 | -----------------核心设计理念Controller 与 Agent 解耦Controller 只负责 HTTP 和 SSEAgent 构建由 Configuration 统一管理中间件管道ContextTruncateMiddleware上下文截断 ToolNotificationMiddleware工具通知以管道方式注入 Agent工具即能力每个 Tool 是一个独立的 Java 类注册即可用新增工具不需要修改 Agent 逻辑Skills 热加载启动时扫描 Markdown 文件运行时通过use_skill按需加载完整指令 技术栈速查组件版本说明AgentScope Java2.0.0HarnessAgent ReAct 文件系统 中间件Spring Boot4.1.0WebFlux SSE 依赖管理DashScope (通义千问)-qwen-plus 主模型 qwen-turbo 降级 内置联网搜索Reactor-ToolEventBus 发布/订阅 SSE 流式输出marked.js highlight.js12 / 11前端 Markdown 渲染 语法高亮 学习价值对于初中级开发者✅ 理解AI Coding Agent 的完整架构——从工具定义到 ReAct 循环到流式输出✅ 学习AgentScope Java 框架的核心用法HarnessAgent、Toolkit、Middleware✅ 掌握Spring WebFlux SSE 流式推送的实战模式多路流合并、请求去重、断连处理✅ 通过 9 个工具的实现代码学习如何为大模型设计可调用的工具对于高级开发者✅ 深入理解ReAct 模式在 Java 中的实现——思考→行动→观察的自主推理闭环✅ 学习ToolEventBus 基于 Reactor Sinks 的发布/订阅架构——解耦工具调用与前端通知✅ 掌握HarnessAgent 中间件机制——ContextTruncate、ToolNotification 的管道式设计✅ 理解模型降级 失败重试 上下文截断等生产级 Agent 的容错策略对于架构师✅AgentScope Java Spring Boot 4.1 的集成范式——如何将 AI Agent 框架嵌入 Spring 生态✅Skills 系统的设计理念——Markdown 定义 双层加载 运行时注入低成本的知识工程化方案✅Controller/Agent/Tool 三层解耦的架构模式——可借鉴到其他 AI 应用的设计✅WebFlux 响应式流 Agent 事件流的合并策略——Flux.mergeshare()避免冷流重复订阅 快速开始前置要求JDK 17Maven 3.8阿里云百炼 API Key申请地址一步启动# 设置 API KeyexportDASHSCOPE_API_KEYyour_api_key# 可选 - GitHub API 令牌exportGITHUB_TOKENyour_github_token方式一Web 聊天界面推荐mvn spring-boot:run-plbabi-agent打开浏览器访问http://localhost:8900即可在聊天界面中与 Babi Agent 交互。支持 Markdown 实时渲染、工具调用状态可视化、多轮会话Session ID 隔离上下文、文件树浏览、代码预览。方式二命令行模式mvn exec:java-plbabi-agent启动后进入交互式终端对话适合快速调试或无 GUI 环境。试试这些# 让 Agent 读取并分析代码 帮我看看当前项目的目录结构 # 让 Agent 执行构建命令 帮我编译这个项目 # 让 Agent 搜索代码 在项目中搜索所有包含 RestController 的文件 # 让 Agent 操作 GitHub 查看我的 GitHub 置顶仓库 # 让 Agent 联网搜索 搜索 AgentScope Java 的最新版本和文档 # 安装并使用 Skill # 将 .md 文件放到 ~/.babi/skills/ 目录Agent 自动获得新技能 设计背后的工程思考1. 为什么选择 AgentScope Java 而非 Spring AIAgentScope Java 提供了完整的 Agent 运行时——HarnessAgent 内置了 ReAct 循环、文件系统操作、中间件管道、会话持久化等能力不需要从零搭建 Agent 框架。而 Spring AI 更偏向AI 能力集成Agent 编排能力需要自行构建。Babi 项目基于 AgentScope Java 构建 Agent 能力Spring Boot 提供 Web 服务——各取所长避免重复造轮子。2. 为什么 Web 前端不用 React/Vue因为 Babi Agent 的定位是轻量级 AI 编程助手不是一个完整的 Web 应用。原生 HTML CSS JavaScript 的实现方式零构建依赖不需要 Node.js 环境单文件部署spring-boot:run即可使用维护简单前端代码不到 800 行架构选型不是追求技术栈时髦而是追求恰到好处。3. 为什么 Skills 用 Markdown 而非代码因为Skills 的本质是专家经验的文字化不是可执行的程序。一个代码审查 Skill 的核心是审查规则和流程描述——这些用自然语言表达比用代码更直观。Markdown 格式让 Skill 的创建门槛降到最低——会写文档就会创建 Skill不需要学 SDK不需要写代码。4. 为什么需要 ToolEventBusAgent 执行过程中可能调用大量工具读文件、搜索代码、执行命令……如果前端只能看到最终回复用户会感到AI 在发呆。ToolEventBus 让工具调用的过程实时可见——用户能看到 Agent 正在读哪个文件、执行什么命令、搜索结果如何。这种过程透明的设计大幅提升了用户信任感。 相关链接项目地址: https://github.com/javahongxi/babiAgentScope Java: https://github.com/agentscope-ai/agentscope-javaSpring Boot: https://spring.io/projects/spring-boot通义千问 (DashScope): https://dashscope.console.aliyun.com☁️Spring Cloud 生态研究: spring-cloud-samplesJava 全栈技术全景: whatsmars 结语从 9 大内置工具的全覆盖到 Skills 系统的可扩展设计从 HarnessAgent 的 ReAct 推理循环到 ToolEventBus 的发布/订阅解耦从 Web 聊天界面的流式输出到 CLI 终端的即开即用——Babi Agent 的目标始终如一让 Java 开发者拥有一个完全自主可控、可扩展的 AI Coding Agent。它不仅是一个聊天机器人更是一套完整的 AI 编程助手方案——9 大工具是双手HarnessAgent 是大脑Skills 是技能库Web 界面是窗口。如果你正在 想要一个 Java 原生的 AI 编程助手能读写代码、执行命令、操作 GitHub 想学习 AgentScope Java 框架和 HarnessAgent 的实战用法️ 想搭建自己的 Coding Agent需要一套清晰的架构参考 想体验 AI Agent 在开发工具中的实际应用——一句话驱动代码分析、构建、调试全流程Star ⭐ Babi Agent让 Java 开发者也有自己的 AI Coding Agentgitclone https://github.com/javahongxi/babi.gitcdbabiexportDASHSCOPE_API_KEYyour_api_key mvn spring-boot:run-plbabi-agent© hongxi.org| 用 Java 打造属于开发者自己的 AI Coding Agent