AgentScope Demo with TaskAgent and file parsing skills
概览
基于 AgentScope 的 Java AI Agent 演示项目,支持多种 Agent 类型、工具调用、文档解析、多模态交互、RAG 知识库和多智能体协作。 - : 纯对话 AI 助手 - : 带工具调用的 AI 助手(时间、计算器、天气) - : 支持文档解析的智能助手(.docx/.pdf/.xlsx) - : 银行发票自动生成 - : 图片理解和 OCR 文字识别 - : 语音交互助手 - : 网络搜索和实时信息查询 - : 项目规划和任务分解 - : 自然语言对话 - : OCR 文字识别、图表分析、场景理解 - : 语音转文字、语音交互 - : 启动时自动扫描 src/main/resources/knowledge/ 目录 - : 支持 PDF、DOCX、TXT、MD 格式 - : 基于 DashScope text-embedding-v3 - : Generic RAG 模式,高效检索增强 - : Agent 配置面板实时显示索引状态cs-strategy-kb - Agent 生命周期追踪 - LLM 调用详情(Token 使用量) - 工具执行状态和耗时 - 思考过程可视化 - :Agent 选择器、会话管理、知识库管理 - :流式对话、Markdown 渲染、代码高亮 - :实时显示 Agent 运行时信息 - 🔍 : Agent 执行时间线 - 📊 : Token 统计、调用耗时 - 🧠 : AI 思考过程可视化 - 🛠️ : 工具调用详情和结果 - 🤖 : 多智能体协作事件 - Java 17+ - Maven 3.9+ - DashScope API Key (获取地址) 启动后访问 http://localhost:8081(端口配置见 src/main/resources/application.yml)
README
AgentScope Demo
基于 AgentScope 的 Java AI Agent 演示项目,支持多种 Agent 类型、工具调用、文档解析、多模态交互、RAG 知识库和多智能体协作。
特性
🤖 多种 Agent 类型
- Basic Chat: 纯对话 AI 助手
- Tool Calling: 带工具调用的 AI 助手(时间、计算器、天气)
- Task Agent: 支持文档解析的智能助手(.docx/.pdf/.xlsx)
- Bank Invoice: 银行发票自动生成
- Vision Analyzer: 图片理解和 OCR 文字识别
- Voice Assistant: 语音交互助手
- Search Assistant: 网络搜索和实时信息查询
- Project Planner: 项目规划和任务分解
🎨 多模态支持
- 文本: 自然语言对话
- 图片: OCR 文字识别、图表分析、场景理解
- 语音: 语音转文字、语音交互
🔍 RAG 知识库(Generic 模式)
- 本地自动索引: 启动时自动扫描
src/main/resources/knowledge/目录 - 上传文档: 支持 PDF、DOCX、TXT、MD 格式
- 向量相似度搜索: 基于 DashScope text-embedding-v3
- 智能问答: Generic RAG 模式,高效检索增强
- 状态追踪: Agent 配置面板实时显示索引状态cs-strategy-kb
🗂️ 会话管理
- 持久化会话历史
- 会话隔离
- 多会话管理
🤝 多智能体协作
- Sequential Pipeline: 串行执行多个子智能体
- Intelligent Routing: 自动路由到专家智能体
- Agent Handoffs: 智能体交接
📊 实时调试面板
- Agent 生命周期追踪
- LLM 调用详情(Token 使用量)
- 工具执行状态和耗时
- 思考过程可视化
界面展示
🎨 赛博朋克风格 UI
系统采用赛博朋克风格的深色主题界面,提供沉浸式的 AI 交互体验。

核心功能区域:
- 左侧边栏:Agent 选择器、会话管理、知识库管理
- 中间聊天区:流式对话、Markdown 渲染、代码高亮
- 右侧调试面板:实时显示 Agent 运行时信息
- 🔍 Timeline: Agent 执行时间线
- 📊 Metrics: Token 统计、调用耗时
- 🧠 Thinking: AI 思考过程可视化
- 🛠️ Tools: 工具调用详情和结果
- 🤖 Multi-Agent: 多智能体协作事件
快速开始
环境要求
- Java 17+
- Maven 3.9+
- DashScope API Key (获取地址)
运行项目
# 克隆仓库
git clone https://github.com/ataskite/agentscope-demo.git
cd agentscope-demo
# 配置 API Key
export DASHSCOPE_API_KEY=your_api_key_here
# 启动应用
mvn spring-boot:run
启动后访问 http://localhost:8081(端口配置见 src/main/resources/application.yml)
可选依赖(缺失不影响启动,仅对应功能降级):
- Node.js/npx:MCP 演示服务器(supergateway 桥,占用 9090/9091 端口)需要;未安装时自动跳过
- Docker:仅
sandbox-artifact-demo这一个 agent(DOCKER 沙箱模式)需要;其余 agent 均为本地执行
使用示例
Basic Chat
你:你好,请介绍一下自己
Assistant:你好!我是一个 AI 助手,很高兴为您服务...
Tool Calling
你:现在几点了?帮我算一下 123 + 456
ToolAgent:[调用 get_current_time] [调用 calculate_sum]
现在是北京时间 2024-04-10 14:30:00,123 + 456 = 579
Task Agent - 文档解析
1. 点击上传按钮(+)
2. 选择 .docx、.pdf 或 .xlsx 文件
3. 输入指令:"请总结这个文档的核心内容"
4. TaskAgent 自动调用对应解析工具
Vision Analyzer - 图片分析
1. 点击上传按钮(+)
2. 选择图片文件(.jpg, .png, .gif, .webp)
3. 自动切换到视觉分析智能体
4. 输入问题:"图片中有什么文字?"
RAG Chat - 知识库问答
方式一:本地目录自动索引
1. 将文档放入 src/main/resources/knowledge/ 目录
2. 重启应用(或等待后台索引完成)
3. 切换到 "RAG Chat" 智能体
4. 提问与文档相关的问题
方式二:上传文档
1. 点击知识库图标
2. 上传文档(PDF、DOCX、TXT)
3. 切换到 "RAG Chat" 智能体
4. 提问与文档相关的问题
Bank Invoice - 发票生成
请帮我生成银行发票。
客户姓名:张三丰
身份证号:110101199003072316
手机:13802213478
邮箱:[email protected]
合同号:HT20240410001
借据号:JD20240410001
放款日期:2024-04-10
贷款总额:100000
银行放款金额:80000
费用类型:服务费
发票金额:5000
流水号:001
自动生成:
- Excel:
XX银行_张某某_240410_001.xlsx - Word:
XX银行_张某某_240410_001.docx
项目结构
src/main/java/com/skloda/agentscope/
├── controller/
│ ├── ChatController.java # 响应式 SSE 聊天 + 文件上传
│ └── KnowledgeController.java # 知识库管理 API
├── service/
│ ├── AgentService.java # Agent 路由,实例缓存
│ ├── SessionManagerService.java # 会话管理
│ ├── KnowledgeService.java # RAG 知识库(含本地索引)
│ └── KnowledgeProperties.java # 知识库配置属性
├── agent/
│ ├── AgentConfig.java # Agent 配置实体
│ ├── AgentConfigService.java # 配置加载服务
│ └── AgentFactory.java # Agent 创建工厂
├── runtime/
│ ├── AgentRuntime.java # 运行时容器
│ └── AgentRuntimeFactory.java # 运行时工厂
├── hook/
│ └── ObservabilityHook.java # 可观测性 Hook
├── model/
│ ├── ChatRequest.java # 请求模型
│ ├── ChatEvent.java # 事件模型
│ ├── SessionInfo.java # 会话信息
│ ├── MultiModalMessage.java # 多模态消息
│ ├── KnowledgeFileStatus.java # 知识文件状态
│ └── KnowledgeIndexStatus.java # 知识索引状态
└── tool/
├── ToolRegistry.java # 工具注册表
├── SimpleTools.java # 演示工具集
├── DocxParserTool.java # DOCX 解析
├── PdfParserTool.java # PDF 解析
├── XlsxParserTool.java # XLSX 解析
├── BankInvoiceTool.java # 银行发票生成
└── WebSearchTool.java # 网络搜索工具
src/main/resources/
├── skills/ # 技能定义
│ ├── docx/SKILL.md
│ ├── pdf/SKILL.md
│ ├── xlsx/SKILL.md
│ ├── docx-template/SKILL.md
│ └── bank_invoice_java/
│ ├── SKILL.md
│ └── assets/ # 模板文件
├── config/
│ └── agents.yml # Agent 配置(YAML)
├── templates/
│ └── chat.html # 单页聊天 UI
├── static/
│ ├── scripts/ # 前端模块化 JS
│ │ ├── chat.js
│ │ ├── api.js
│ │ ├── state.js
│ │ └── modules/
│ │ ├── agents.js
│ │ ├── session.js
│ │ ├── knowledge.js
│ │ ├── upload.js
│ │ ├── debug.js
│ │ ├── ui.js
│ │ └── utils.js
│ └── styles/ # 模块化 CSS
│ ├── chat.css
│ └── modules/
│ ├── header.css
│ ├── sidebar.css
│ ├── chat.css
│ ├── debug.css
│ ├── modal.css
│ └── upload.css
└── application.yml # 配置文件
配置
主要配置在 application.yml:
agentscope:
model:
dashscope:
api-key: ${DASHSCOPE_API_KEY} # 通过环境变量设置
session:
storage-path: ${user.home}/.agentscope/demo-sessions
knowledge:
enabled: true # 启用知识库
path: src/main/resources/knowledge # 本地知识目录
embedding-model: text-embedding-v3 # 嵌入模型
dimensions: 1024 # 向量维度
chunk-size: 512 # 分块大小
overlap-size: 50 # 重叠大小
split-strategy: PARAGRAPH # 分块策略
auto-index-on-startup: true # 启动时自动索引
spring:
servlet:
multipart:
max-file-size: 50MB # 文件上传限制
技术栈
| 技术 | 版本 | 用途 |
|---|---|---|
| Spring Boot | 3.5.14 | Web 框架 |
| AgentScope | 2.0.0 GA | Agent 框架 |
| Java | 17 | 运行环境 |
| Apache POI | 5.5.1 | DOCX/XLSX 解析生成 |
| Apache PDFBox | 3.0.7 | PDF 解析 |
| Project Reactor | - | 响应式流 |
| Thymeleaf | - | 模板引擎 |
可观测性
调试面板实时显示完整的 Agent 执行过程:
| 事件 | 说明 | 显示位置 |
|---|---|---|
agent_start |
Agent 开始处理 | 调试面板 |
llm_start |
LLM 调用开始 | 调试面板 |
thinking |
思考过程流式输出 | 调试面板 |
llm_end |
LLM 调用结束(含 Token 统计) | 调试面板 |
tool_start |
工具执行开始 | 调试面板 |
tool_end |
工具执行结束(含耗时) | 调试面板 |
agent_end |
Agent 完成(含总耗时) | 调试面板 |
text |
响应文本流式输出 | 主聊天区 |
error |
错误信息 | 警告提示 |
内置 Agent
单功能 Agent
| Agent ID | 名称 | 功能 | 模型 |
|---|---|---|---|
chat-basic |
Basic Chat | 简单对话 | qwen-plus |
tool-test-simple |
Tool Calling | 时间、计算器、天气 | qwen-plus |
task-document-analysis |
Task Agent | 文档解析 | qwen-plus |
bank-invoice |
Bank Invoice | 发票生成 | qwen-plus |
rag-chat |
RAG Chat | 知识库问答 | qwen-plus |
vision-analyzer |
Vision Analyzer | 图片理解和 OCR | qwen-vl-max |
voice-assistant |
Voice Assistant | 语音交互 | qwen-audio-turbo |
invoice-extractor |
Invoice Extractor | 发票信息提取 | qwen-vl-max |
idcard-extractor |
ID Card Extractor | 身份证信息提取 | qwen-vl-max |
search-assistant |
Search Assistant | 网络搜索 | qwen-plus |
project-planner |
Project Planner | 项目规划 | qwen-plus |
专家 Agent(用于多智能体协作)
| Agent ID | 名称 | 功能 | 模型 |
|---|---|---|---|
doc-expert |
文档专家 | 文档解析分析 | qwen-plus |
search-expert |
搜索专家 | 实时网络信息 | qwen-plus |
vision-expert |
视觉专家 | 图片理解和 OCR | qwen-vl-max |
sales-expert |
销售专家 | 产品咨询报价 | qwen-plus |
support-agent |
客服专员 | 一般客服咨询 | qwen-plus |
sales-agent |
销售顾问 | 销售咨询 | qwen-plus |
complaint-agent |
投诉处理 | 客户投诉处理 | qwen-plus |
多智能体协作
| Agent ID | 类型 | 功能 | 模型 |
|---|---|---|---|
doc-analysis-pipeline |
SEQUENTIAL | 文档分析流水线(文档→搜索) | qwen-plus |
smart-router |
ROUTING | 智能路由到专家 Agent | qwen-plus |
customer-service |
HANDOFFS | 智能客服(支持交接) | qwen-plus |
API 端点
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | / |
Chat UI 页面 |
| POST | /chat/send |
发送消息,返回 SSE 流 |
| POST | /chat/upload |
上传文件(multipart) |
| GET | /chat/download |
下载上传的文件 |
| GET | /api/agents |
列出所有 Agent 配置 |
| GET | /api/agents/{agentId} |
获取指定 Agent 配置 |
| GET | /api/sessions |
列出所有会话 |
| POST | /api/sessions |
创建新会话 |
| DELETE | /api/sessions/{sessionId} |
删除会话 |
| GET | /api/knowledge/documents |
列出知识库文档 |
| POST | /api/knowledge/upload |
上传文档到知识库 |
| DELETE | /api/knowledge/documents/{fileName} |
从知识库删除文档 |
| GET | /api/knowledge/status |
获取知识库索引状态 |
添加新 Agent
- 在
src/main/resources/config/agents.yml中添加配置 - 如果使用新工具类,在
tool/目录创建带@Tool注解的方法 - 在
ToolRegistry构造函数中注册工具 - 如果使用技能,创建
skills//SKILL.md - 重启应用 — Agent 自动出现在 UI 中
开发
# 编译
mvn clean compile
# 测试
mvn test
# 打包
mvn package
License
Links
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add ataskite/agentscope-demo