Lucent's Blog

当时明月在 曾照彩云归

人生不相见,动如参与商。


别再把Claude Code只当编程工具,Java终于能驱动这个超级智能体了

大多数人把 Claude Code 当成"更强的 Copilot"在用。

打开终端,输入指令,等它写代码。这个用法没错,但你可能错过了它真正的价值。

Claude Code 不是代码补全工具,也不是简单的 AI 对话助手。它是一个基于文件系统作为上下文、终端为交互方式、操作系统为执行环境的通用 Agent 产品。换句话说,它是一个超级智能体。

这个定位的差异,决定了你能用它做什么。如果只是写代码,那它和 Cursor、GitHub Copilot 没太大区别。但如果你把它当成智能体,它能做的事情就完全不一样了。

在讨论 Claude Code 之前,我们先搞清楚一个问题:什么是超级智能体?

不是工具,是智能体

传统的 AI 编程工具,本质上是"被动响应"的。你问一句,它答一句。你让它写代码,它写完就停了。但 Claude Code 不一样。它具备典型的智能体特征:

1. 高度自主性

它能在没有持续人工监督的情况下自主决策和执行操作。你给它一个目标,它会自己规划步骤、调用工具、处理错误、迭代优化,直到完成任务。

2. 环境交互性

能读写文件、执行命令、搜索代码、调用 API、运行测试。它和你的开发环境是深度集成的。

3. 复杂目标

它追求的是高层次的任务目标,而不是仅仅对一次性指令进行响应。你说"帮我实现用户认证",它会理解这是一个系统性任务,涉及数据库、API、前端、测试等多个环节。

这些特征,让 Claude Code 从"工具"进化成了"智能体"。

超越编程的应用场景

正因为它是智能体,所以它的应用范围远超编程:

  • • 数据整理:在堆满各种文件的工作目录下按领域分类整理文件  (cwork)

  • • 知识管理:在学习资料文件夹中基于主题搜索相关文件并汇总观点

  • • 内容创作:基于个人写作资料库,按照用户的口吻和行文习惯生成新文章

Anthropic 官方发布了 Claude Code SDK(现在改名叫 Claude Agent SDK),让开发者可以用代码驱动 Claude Code。

SDK 的核心价值

SDK 不是简单地把 CLI 命令封装成函数。它提供的是:

1. 编程式控制

你可以在代码中创建 Claude Code 实例,配置它的行为,控制它的执行流程。

2. 会话管理

支持多轮对话,上下文会自动保持。你可以在一个会话中连续提问,Claude Code 会记住之前的内容。

3. 工具扩展

通过 MCP(模型上下文协议)、Skills、Agent,你可以给 Claude Code 添加自定义工具。比如连接数据库、调用内部 API、访问企业知识库。

4. 权限控制

你可以通过 Hook 系统拦截工具调用,决定哪些操作允许执行,哪些需要人工确认。

官方 SDK 的局限

但官方 SDK 有个问题:只支持 Python 和 TypeScript。

对于 Java 开发者来说,这意味着:

  • • 无法在 Spring Boot 应用中集成 Claude Code

  • • 无法在企业级 Java 项目中使用

  • • 无法利用 Java 生态的丰富工具链

这是一个巨大的遗憾。

Java 社区占据了企业级开发的半壁江山。Spring Boot、Spring Cloud、Dubbo、MyBatis...这些技术栈支撑着无数企业的核心业务。

如果 Java 开发者无法用代码驱动 Claude Code,那就意味着这个超级智能体无法真正融入 Java 生态。

Claude Agent SDK for Java

好消息是,Spring AI 社区已经填补了这个空白。

Claude Agent SDK for Java 是一个纯 Java 实现,镜像了官方 Python 和 TypeScript SDK 的设计。它让 Java 开发者也能用代码驱动 Claude Code 这个超级智能体。

<repositories>
    <repository>
        <id>central-snapshots</id>
        <url>https://central.sonatype.com/repository/maven-snapshots/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.springaicommunity</groupId>
        <artifactId>claude-code-sdk</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </dependency>
</dependencies>

三种 API 风格,适配不同场景

这个 SDK 最大的特点是提供了三种 API 风格,适配不同的编程场景:

1. One-shot API:一行代码搞定

最简单的用法,适合脚本和 CLI 工具:

import org.springaicommunity.claude.agent.sdk.Query;

String answer = Query.text("What is 2+2?");
System.out.println(answer);  // "4"

一行代码,搞定。

如果需要配置选项:

String answer = Query.text("Explain quantum computing",
    QueryOptions.builder()
        .model("claude-sonnet-4-20250514")
        .appendSystemPrompt("Be concise")
        .timeout(Duration.ofMinutes(5))
        .build());

这种 API 适合快速验证想法、写小工具、做实验。

2. Blocking API:传统同步流程

适合传统 Java 应用,使用 Iterator 模式:

import org.springaicommunity.claude.agent.sdk.ClaudeClient;
import org.springaicommunity.claude.agent.sdk.ClaudeSyncClient;

try (ClaudeSyncClient client = ClaudeClient.sync()
        .workingDirectory(Path.of("."))
        .model("claude-sonnet-4-20250514")
        .build()) {

    // 最常用:直接获取文本结果
    String answer = client.connectText("What is 2+2?");
    System.out.println(answer);  // "4"

    // 多轮对话,上下文自动保持
    String followUp = client.queryText("Multiply that by 10");
    System.out.println(followUp);  // "40"
}

这种 API 适合传统的 Spring Boot 应用、批处理任务、定时任务等场景。

3. Reactive API:响应式编程

适合高并发、非阻塞场景,使用 Project Reactor:

ClaudeAsyncClient client = ClaudeClient.async()
    .workingDirectory(Path.of("."))
    .model("claude-sonnet-4-20250514")
    .build();

// 流式获取文本
client.connect("Explain recursion").textStream()
    .doOnNext(System.out::print)
    .subscribe();

多轮对话可以用 flatMap 链式调用:

client.connect("My favorite color is blue.").text()
    .doOnSuccess(System.out::println)
    .flatMap(r1 -> client.query("What is my favorite color?").text())
    .doOnSuccess(System.out::println)  // Claude记住了:"blue"
    .flatMap(r2 -> client.query("Spell it backwards").text())
    .doOnSuccess(System.out::println)  // "eulb"
    .subscribe();

实战场景:基于本地文档的 RAG 问答

一个典型的应用场景是:用 Claude Code SDK 构建基于本地文档的智能问答系统。

比如你有一个产品文档库,用户问"PIGX 如何关闭前后端验证码?",系统需要采用 RAG 的方式自动搜索文档、找到答案、整理回复。

传统做法需要你自己实现:文档解析、向量化、检索、拼接 Prompt...一套下来几百行代码,可能还只是个 Demo(RAG 很难,细节太多啦)。

用 Claude Code SDK,核心逻辑就这么几行:

public class DocQAService {

    public String answerQuestion(String question) {
        try (ClaudeSyncClient client = ClaudeClient.sync()
                .workingDirectory(Path.of("/path/to/docs"))  // 文档目录
                .model("claude-sonnet-4-20250514")
                .build()) {

            // Claude Code会自动搜索文档、找到相关内容、生成回答
            return client.connectText(
                "根据本地文档回答用户问题:" + question +
                "\n要求:1.先搜索相关文档 2.整理关键信息 3.用中文回答"
            );
        }
    }
}

整个流程是这样的:

1. 用户提问 → 业务应用接收

2. 调用 Claude Code → 通过 SDK 发起请求

3. 自动搜索文档 → Claude Code 在指定目录中查找相关文件

4. 整理内容 → 提取关键信息,组织答案

5. 返回结果 → 通过 SDK 返回给业务应用

Claude Code 会自动处理文件搜索、内容理解、答案生成,你不需要关心底层实现,到底如何解析的文件,如何查询处理的逻辑。这就是"超级智能体"的威力:你只需要告诉它目标,它自己搞定过程。

下一篇

AI时代的挑战 在 AI 大模型盛行的今天,字符串处理变得比以往任何时候都更加重要…

阅读