作者:残风、栀七
更多接入与使用方式,可查看文末微信与钉钉群,与官方维护团队取得联系。
📖 简介
Assistant Agent 是一个基于 Spring AI Alibaba 构建的企业级智能助手框架,采用代码即行动(Code-as-Action)范式,通过生成和执行代码来编排工具、完成任务。它是一个能理解、能行动、能学习 的智能助手解决方案,可帮助企业快速构建智能答疑客服、系统诊断、运维助手、业务助理、AIOps 等智能体。
仓库地址:https://github.com/spring-ai-alibaba/AssistantAgent
技术特性
- 🚀代码即行动(Code-as-Action) :Agent 通过生成并执行代码来完成任务,而非仅仅调用预定义工具,可以在代码中灵活编排、组合多个工具,实现复杂流程
- 🔒安全沙箱:AI 生成的代码在 GraalVM 多语言沙箱中安全运行,具备资源隔离能力
- 📊多维评估:通过评估图(Graph)进行多层次意图识别,精准指导 Agent 行为
- 🔄Prompt 动态组装:根据场景及前置评估结果动态注入上下文(经验、知识等)到 Prompt 中,灵活处理不同任务
- 🧠经验学习:自动积累成功经验,持续提升后续任务的表现
- ⚡快速响应:熟悉场景下,跳过 LLM 推理过程,基于经验快速响应
Assistant Agent 能帮你做什么?
Assistant Agent 是一个功能完整的智能助手,具备以下核心能力:
- 🔍智能问答:支持多数据源统一检索架构(通过 SPI 可扩展知识库、Web 等数据源),提供准确、可溯源的答案
- 🛠️工具调用:支持 MCP、HTTP API(OpenAPI)等协议,灵活接入海量工具,可组合调用实现复杂业务流程
- ⏰主动服务:支持定时任务、延迟执行、事件回调,让助手主动为你服务
- 📬多渠道触达:内置 IDE 回复,允许通过 SPI 可扩展钉钉、飞书、企微、Webhook 等渠道
为什么选择 Assistant Agent?

适用场景
- 智能客服:接入企业知识库,智能解答用户咨询
- 运维助手:对接监控、工单系统,自动处理告警、查询状态、执行操作
- 业务助理:连接 CRM、ERP 等业务系统,辅助员工完成日常工作
💡 以上仅为典型场景示例。通过配置知识库和接入工具,Assistant Agent 可适配更多业务场景,欢迎探索。


整体工作原理
以下是 Assistant Agent 处理一个完整请求的端到端流程示例:

项目结构
assistant-agent/
├── assistant-agent-common # 通用工具、枚举、常量
├── assistant-agent-core # 核心引擎:GraalVM 执行器、工具注册表
├── assistant-agent-extensions # 扩展模块:
│ ├── dynamic/ # - 动态工具(MCP、HTTP API)
│ ├── experience/ # - 经验管理与快速意图配置
│ ├── learning/ # - 学习提取与存储
│ ├── search/ # - 统一搜索能力
│ ├── reply/ # - 多渠道回复
│ ├── trigger/ # - 触发器机制
│ └── evaluation/ # - 评估集成
├── assistant-agent-prompt-builder # Prompt 动态组装
├── assistant-agent-evaluation # 评估引擎
├── assistant-agent-autoconfigure # Spring Boot 自动配置
└── assistant-agent-start # 启动模块
🚀 快速启动
前置要求
- Java 17+
- Maven 3.8+
- DashScope API Key
1. 克隆并构建
git clone https://github.com/spring-ai-alibaba/AssistantAgent.git
cd assistant-agent
mvn clean install -DskipTests
2. 配置 API Key
export DASHSCOPE_API_KEY=your-api-key-here
3. 最小配置
项目已内置默认配置,只需确保 API Key 正确即可。如需自定义,可编辑 assistant-agent-start/src/main/resources/application.yml:
spring:
ai:
dashscope:
api-key: ${DASHSCOPE_API_KEY}
chat:
options:
model: qwen-max
4. 启动应用
cd assistant-agent-start
mvn spring-boot:run
所有扩展模块默认开启并采用合理的配置,无需额外配置即可快速启动。
5. 配置知识库(接入业务知识)
💡 框架默认提供 Mock 知识库实现用于演示测试。生产环境需要接入真实知识源(如向量数据库、Elasticsearch、企业知识库 API 等),以便 Agent 能够检索并回答业务相关问题。
方式一:快速体验(使用内置 Mock 实现)
默认配置已启用知识库搜索,可直接体验:
spring:
ai:
alibaba:
codeact:
extension:
search:
enabled: true
knowledge-search-enabled: true # 默认开启
方式二:接入真实知识库(推荐)
实现 SearchProvider 接口,接入你的业务知识源:
package com.example.knowledge;
import com.alibaba.assistant.agent.extension.search.spi.SearchProvider;
import com.alibaba.assistant.agent.extension.search.model.*;
import org.springframework.stereotype.Component;
import java.util.*;
@Component // 添加此注解,Provider 会自动注册
public class MyKnowledgeSearchProvider implements SearchProvider {
@Override
public boolean supports(SearchSourceType type) {
return SearchSourceType.KNOWLEDGE == type;
}
@Override
public List<SearchResultItem> search(SearchRequest request) {
List<SearchResultItem> results = new ArrayList<>();
// 1. 从你的知识源查询(向量数据库、ES、API 等)
// 示例:List<Doc> docs = vectorStore.similaritySearch(request.getQuery());
// 2. 转换为 SearchResultItem
// for (Doc doc : docs) {
// SearchResultItem item = new SearchResultItem();
// item.setId(doc.getId());
// item.setSourceType(SearchSourceType.KNOWLEDGE);
// item.setTitle(doc.getTitle());
// item.setSnippet(doc.getSummary());
// item.setContent(doc.getContent());
// item.setScore(doc.getScore());
// results.add(item);
// }
return results;
}
@Override
public String getName() {
return "MyKnowledgeSearchProvider";
}
}
常见知识源接入示例

🧩 核心模块介绍
评估模块(Evaluation)
作用:多维度意图识别框架,通过评估图(Graph)对信息进行多层次特质识别。
┌──────────────────────────────────────────────────────────────────┐
│ 评估图 (Evaluation Graph) 示例 │
├──────────────────────────────────────────────────────────────────┤
│ │
│ 用户输入: "查询今日订单" │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Layer 1 (并行执行) │ │
│ │ ┌────────────┐ ┌────────────┐ │ │
│ │ │ 是否模糊? │ │ 输入改写 │ │ │
│ │ │ 清晰/模糊 │ │(增强) │ │ │
│ │ └─────┬──────┘ └─────┬──────┘ │ │
│ └─────────┼──────────────────────┼────────────────────────┘ │
│ │ │ │
│ └──────────┬───────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Layer 2 (基于改写内容,并行执行) │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 检索经验 │ │ 匹配工具 │ │ 搜索知识 │ │ │
│ │ │ 有/无 │ │ 有/无 │ │ 有/无 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────┐ │
│ │ 整合不同维度评估结果 │ │
│ │ → 传递给后续模块 │ │
│ └────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘
核心能力:
- 双评估引擎:
- LLM 评估: 通过大模型进行复杂语义判断,用户可完全自定义评估 Prompt(
customPrompt),也可使用默认 Prompt 组装(支持description、workingMechanism、fewShots等配置) - Rule-based 评估: 通过 Java 函数实现规则逻辑,用户自定义
Function<CriterionExecutionContext, CriterionResult>执行任意规则判断,适合阈值检测、格式校验、精确匹配等场景
- LLM 评估: 通过大模型进行复杂语义判断,用户可完全自定义评估 Prompt(
- 依赖关系自定义: 评估项可通过
dependsOn声明前置依赖,系统自动构建评估图按拓扑执行,无依赖项并行、有依赖项顺序执行,后续评估项可访问前置评估项的结果 - 评估结果: 支持
BOOLEAN、ENUM、SCORE、JSON、TEXT等类型,传递给 Prompt Builder 驱动动态组装