Ohhnews

分类导航

$ cd ..
DZone Java原文

使用Quarkus Agent MCP构建实时感知的AI编码助手

#quarkus agent mcp#ai编码助手#模型上下文协议#实时调试#自动故障恢复

AI 代码生成工具在编写独立代码片段方面非常出色,但当它们需要理解正在运行的应用程序状态时,很快就会暴露出不足。当编译类失败,或本地数据库容器宕机时,标准的 AI 编程助手只能靠猜测。它们缺乏运行时上下文、环境可见性以及与当前本地开发工作空间的任何实时连接。

模型上下文协议(MCP)通过标准化 AI 应用与本地工具的交互方式,弥合了这一差距。通过利用独立的 quarkus-agent-mcp 服务器,你可以将本地的 AI 编程伙伴转变为一个“活着的”结对程序员,实时构建、配置和调试你的 Quarkus 应用程序。

为什么 AI 需要一个独立的代理连接

标准的代码助手完全在带外运行。它们读取你的静态源文件,并基于预训练的模式生成代码。它们无法与你的运行中 JVM 交互,无法读取控制台日志,也无法探测你的本地环境。这就形成了一个繁琐的循环:复制终端错误,粘贴到聊天窗口,接收猜测性的修复,然后重复循环。

虽然 Quarkus 提供了一个应用内 Dev MCP 服务器,但它有一个根本性的限制:它存活在运行的应用进程内部。如果你的代码因为缺少 Bean、错误的数据库迁移或损坏的依赖而无法编译或在启动时崩溃,应用程序就会死亡——同时进程内的 MCP 服务器也会随之死亡。代理失去连接,完全陷入盲目状态。

quarkus-agent-mcp 服务器通过作为一个完全独立、始终可用的进程运行来解决这个问题。它将你活跃的 quarkus dev 会话包装为一个管理的子进程。如果应用程序崩溃,代理服务器仍然存活,允许 AI 检查编译器输出、诊断错误并执行修复。

Quarkus Agent 的核心能力

通过向 Claude Code、IBM Bob、Cursor 和 GitHub Copilot 等工具暴露一个标准化的控制平面,独立代理服务器解锁了强大的自动化能力:

  • 项目脚手架quarkus_create 工具可以从头开始构建一个全新的应用。你可以告诉代理“创建一个带 PostgreSQL 的 Quarkus REST API”,它会选择正确的扩展、引导构建系统,并自动启动开发模式。
  • 生命周期控制:代理可以编程方式启动、停止和重启你的开发模式应用。它在后台无缝处理 Maven 和 Gradle Wrapper。
  • Dev MCP 代理:独立服务器将调用直接代理到内部 Dev UI。这使得 AI 能够触发单元测试、检查暴露的 REST 端点以及管理开发服务。
  • 语义文档搜索:代理无需虚构 API,而是可以使用语义搜索(quarkus_searchDocs)来解析本地的、预索引的文档。
┌──────────────────────────────────────────────────────────┐
│ Your IDE with AI assistant                              │
└────────────────────────────┬─────────────────────────────┘
                             │ Local JSON-RPC via MCP
┌──────────────────────────────────────────────────────────┐
│ Quarkus Agent MCP (Standalone Server)                   │
└────────────────────────────┬─────────────────────────────┘
                             │ Process Mgmt & Dev UI Proxy
┌──────────────────────────────────────────────────────────┐
│ Your Running Quarkus App                                │
└──────────────────────────────────────────────────────────┘

使用 JBang 引导你的代理设置

开始使用 quarkus-agent-mcp 非常直接,尤其是如果你使用 JBang。你不需要编译自定义辅助 jar 或配置复杂的环境路径。你可以直接从终端启动本地 MCP 服务器:

jbang quarkus-agent-mcp@quarkusio --port 8080 --project-dir ./my-quarkus-app

服务器运行后,你可以连接你偏好的 AI 代理。例如,如果你使用 Claude Code,你可以使用标准输入/输出传输注册本地工具服务器:

claude mcp add quarkus-agent -- jbang quarkus-agent-mcp@quarkusio

编辑器会自动发现工具映射,允许代理安全地读取、修改和管理你的本地工作空间。

编码前的技能:引导你的助手

Quarkus Agent 引入的最强大的范式之一是“编码前的技能”。代理可以通过 quarkus_skills 工具读取特定的扩展技能,从而在编写任何一行 Java 代码之前学习最佳开发模式、常见陷阱和测试实践。

你可以在仓库中使用简单的 SKILL.md 文件定义自定义的、领域特定的技能。这作为 AI 助手的真相来源,确保它遵循你团队的架构标准而不是猜测。

$ java
package com.example.skills;

import jakarta.enterprise.context.ApplicationScoped;
import io.quarkus.mcp.runtime.annotations.Tool;

@ApplicationScoped
public class CorporateArchitectureSkills {

    @Tool(name = "scaffold_rest_endpoint", description = "Generates a standardized, secure Quarkus REST resource.")
    public String scaffoldRestEndpoint(String entityName, String path) {
        return """
                package com.example.api;

                import jakarta.ws.rs.*;
                import jakarta.ws.rs.core.MediaType;
                import jakarta.transaction.Transactional;

                @Path("%s")
                @Produces(MediaType.APPLICATION_JSON)
                @Consumes(MediaType.APPLICATION_JSON)
                public class %sResource {

                    @POST
                    @Transactional
                    public void create(%s entity) {
                        // Enterprise persistence patterns
                    }
                }
                """.formatted(path, entityName, entityName);
    }
}

当 AI 助手需要创建新的端点时,它会绕过通用的网络训练数据,引用你的企业技能,并直接调用你的自定义工具。结果就是第一次尝试就能生成干净、符合公司规范的 Java 代码。

真实场景:自动化崩溃恢复

让我们追踪一个常见的开发难题:一个失败的数据库迁移。假设你正在开发一个依赖 PostgreSQL 数据库的服务。你编写了一个新的 JPA 实体,但在 Liquibase 迁移文件中犯了一个拼写错误,导致 Quarkus 应用在启动时崩溃。通常情况下,这会打断你的工作节奏。你必须手动查找终端中的堆栈跟踪,定位错误的 SQL 块,搜索文档,修正拼写错误,然后重新构建。

有了独立 quarkus-agent-mcp 管理你的工作空间,恢复循环完全自动化:

  1. 崩溃后存活:当应用失败并关闭时,独立代理服务器仍然运行。
  2. 定位 bug:代理识别到崩溃,并调用 Dev MCP 代理工具 devui-exceptions_getLastException。它会返回一个干净的 JSON 负载,包含异常类、准确的错误消息和具体的文件路径。
  3. 应用修复:使用精确的错误位置,助手打开 Liquibase 迁移文件,修正语法并保存。
  4. 重启并验证:代理调用 quarkus_start 重启开发模式。它监视应用日志流(quarkus_logs),以验证数据库连接成功初始化且应用已准备好进行测试。

管理工作空间安全与隐私

对本地代理执行的一个常见担忧是安全性。由于服务器是独立的,并通过安全的 stdio 通道或本地环回 HTTP 接口进行交互,你的代码保持私密。Quarkus Agent MCP 完全在你的本地机器上运行。它不会收集遥测数据,也不会将你的源代码传输到第三方端点。网络出站调用受到严格管控——仅限于查询 Maven Central 获取公共扩展、拉取文档更新或获取依赖更新。你可以完全控制暴露哪些本地工具,从而创建一个安全的 AI 结对编程沙箱。

总结

本地开发者体验正在迅速演进。通过将独立 quarkus-agent-mcp 与你的环境集成,你远不止实现了基础代码补全。你创建了一个高度协作的助手,它理解你的运行中 JVM、利用本地文档,并且能够主动从应用崩溃中恢复。这种集成证明了现代 Java 与 Quarkus 独一无二地适合引领代理式 AI 开发的未来。

DZone 贡献者的观点仅代表他们自己。