DeepSeek Harness 到底在卷什么?把 Agent 拆成零件后,Java 后端怎么入局(Spring AI 2.0 + AgentScope Jav
文章目录
摘要: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:
- 模型先返回“调用 getWeather,city=北京”;
ToolCallingManager找到并执行对应 Java 方法;- 工具结果写回上下文,再发给模型;
- 模型继续回答,直到不再请求工具。
依赖管理:
<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 Harness | Spring AI 2.0 | AgentScope Java 2.0 |
|---|---|---|---|
| 生态 | Node/TypeScript,插件化 | Java/Spring Boot | Java,框架无关 |
| 核心抽象 | Cordis 微内核 + 插件 | Advisor 链 + ToolCallback | HarnessAgent + 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,很多新名词会自然串起来。
更多推荐



所有评论(0)