摘要:DeepSeek Harness 开源后,Agent 竞争从模型层转到执行层。本文拆解“一切皆插件”的设计,并用 Spring AI 2.0 的 @Tool + ChatClient 和 AgentScope Java 2.0 的 HarnessAgent 说明 Java 后端如何入局 Agent 开发。

一、Agent 真正卡住的地方,不是模型不够聪明

很多 Java 后端第一次做 Agent,会先把希望压在“换一个更强的模型”上。实际动手之后会发现,模型给出一段“我想调用工具”的指令之后,下面这些工程问题才真正难:

  • 谁来解析工具调用请求;
  • 谁来执行工具,并把结果回传;
  • 谁来决定什么时候停止循环;
  • 上下文、工具结果、会话历史怎么保存;
  • 工具多了以后,怎么控制 Token 和准确率。

2026 年 8 月 13 日,DeepSeek 开源 DeepSeek Harness,到 8 月 18 日 GitHub Star 已超过 15 万。这个热度说明,行业竞争的重点已经不在“谁家模型多强”,而在“谁家的 Agent 执行层更好用”。

二、核心公式:模型 + Harness = Agent

Agent 可以拆成两层:

模型 + Harness = Agent

模型负责推理,Harness 负责模型之外的所有工程活:工具调用、任务规划、执行调度、上下文、存储、沙箱和循环。

DeepSeek Harness 不是又一个聊天模型,而是想成为 Agent 的底盘。

三、DeepSeek Harness 拆解:一切皆插件

DeepSeek Harness(dsh)由 DeepSeek AI 开源,官方设计是:

Everything is a plugin,一切皆插件。

底层由 Cordis 驱动。Cordis 是一个只负责插件加载、卸载和依赖管理的微内核,本身不携带任何 Agent 能力。模型、工具、技能、会话、存储、调度,甚至 Agent 主循环本身,都是插件。

这样做的好处是:

  • 不绑定某一家模型;
  • 不绑定某一种工具协议;
  • 换向量库、执行环境或 Agent 循环,不需要重写整个项目。

快速体验:

npx @deepseek-ai/dsh web

默认启动在 http://127.0.0.1:3080

注意,DeepSeek Harness 目前是 developer preview,官方明确说明会有破坏性变更。现阶段更适合学习它的抽象思路,不建议直接上生产。

四、把 Agent 拆成三个零件

无论框架怎么变,基础 Agent 都绕不开三块:

零件解决的问题DeepSeek Harness 的做法
模型插件谁负责推理模型也被当成插件接入
工具插件谁负责查数据、执行动作工具统一注册,Agent 按需调用
Agent 循环模型和工具之间怎么往复循环本身可替换

记住这三块,后面看 Spring AI、LangGraph、AgentScope,都能用同一套视角去套。

五、Java 后端入局:Spring AI 2.0 Tool Calling

Java 后端最自然的第一步,不是从零学 Python 的 LangGraph,而是先看 Spring AI 2.0 的 Tool Calling。

环境:JDK 17+,Spring AI 2.0.0。

定义一个工具:

@Component
public class WeatherTools {

    @Tool(description = "查询指定城市天气")
    public String getWeather(String city) {
        return weatherService.fetch(city);
    }
}

ChatClient 里带上工具:

String answer = ChatClient.create(chatModel)
        .prompt("北京现在天气怎么样?")
        .tools(new WeatherTools())
        .call()
        .content();

这里的关键不是 @Tool,而是 ToolCallingAdvisor。Spring AI 2.0 把工具调用循环从模型内部提出来,变成一个可组合的 Advisor:

  1. 模型先返回“调用 getWeather,city=北京”;
  2. ToolCallingManager 找到并执行对应 Java 方法;
  3. 工具结果写回上下文,再发给模型;
  4. 模型继续回答,直到不再请求工具。

依赖管理:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.ai</groupId>
      <artifactId>spring-ai-bom</artifactId>
      <version>2.0.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>

如果工具超过几十个,还可以用 ToolSearchToolCallingAdvisor 做渐进式工具发现,避免每次都把所有工具定义塞进上下文。

六、生产级 Java Agent:AgentScope Java 2.0

@Tool + ChatClient 适合入门和理解工具调用循环。如果项目需要长期记忆、工作区、沙箱、子 Agent、权限和可恢复会话,可以看阿里开源的 AgentScope Java 2.0。

核心入口是 HarnessAgent

var agent = HarnessAgent.builder()
        .name("coder")
        .model("dashscope:qwen-max")
        .workspace(Paths.get(".agentscope/workspace"))
        .filesystem(new DockerFilesystemSpec()
                .isolationScope(IsolationScope.USER))
        .build();

agent.call(msg, RuntimeContext.builder()
        .sessionId("demo")
        .userId("alice")
        .build())
        .block();

这个 builder 把工作区、长期记忆、会话持久化、子 Agent、沙箱和技能打包在一起。它要求 JDK 17+,可以和 Spring Boot、Quarkus 一起用。

七、三框架对号入座

维度DeepSeek HarnessSpring AI 2.0AgentScope Java 2.0
生态Node/TypeScript,插件化Java/Spring BootJava,框架无关
核心抽象Cordis 微内核 + 插件Advisor 链 + ToolCallbackHarnessAgent + Middleware/Toolkit
适合场景快速实验、插件生态、避免锁定Spring 项目接入 AI、工具调用入门企业级、分布式、长期运行
上手成本低,但概念较新对 Java 开发者最友好中,工程能力更完整

选型不是比谁更高级,而是看你处在哪一层:

  • 课设、Demo、Spring Boot 项目接 AI:Spring AI 2.0;
  • 企业级、分布式、长期运行的 Java Agent:AgentScope Java 2.0;
  • 想研究插件化 Agent 平台:DeepSeek Harness。

八、常见问题

Q1:DeepSeek Harness 是不是只能配 DeepSeek 模型?

不是。它的核心是“一切皆插件”,模型也作为插件接入。可以理解为一个可组合的 Agent 执行环境。

Q2:Java 后端是不是必须转到 Python 才能做 Agent?

不是。Spring AI 2.0 和 AgentScope Java 都已经提供 Java 原生的工具调用和 Agent 能力,Java 后端完全可以从现有技术栈切入。

Q3:Spring AI 2.0 的 Tool Calling 和 1.x 有什么本质区别?

1.x 的工具循环埋在 ChatModel 内部,无法观察和组合。2.0 把循环提到 Advisor 链里,方便接入记忆、可观测性、MCP 工具和自定义循环。

Q4:DeepSeek Harness 现在能直接上生产吗?

不建议。官方已经说明是 developer preview,会有破坏性变更,适合学习和实验。

九、总结

Agent 开发现在卷的不是“谁家模型多强”,而是“谁能把模型之外的执行层做得更好”。

给 Java 后端的最短路径是:

先跑通 Spring AI 2.0 的 @Tool + ChatClient
再理解 DeepSeek Harness 的“一切皆插件”
需要生产级能力时,再看 AgentScope Java 2.0 的 HarnessAgent

一句话:模型是发动机,Harness 是底盘;现在大家开始卷底盘了。

建议先把 Spring AI 的例子跑一遍,再回来读 DeepSeek Harness,很多新名词会自然串起来。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐