# dcdr-agent
**Repository Path**: ww221123/dcdr-agent
## Basic Information
- **Project Name**: dcdr-agent
- **Description**: 写该项目的出发点是:在动手中学习。dcdr-agent 是一个开箱即用的 Java AI Agent - 多模态智能对话助手。支持:对话、对话内文生图、图片识别问答、文生图、文生视频、联网搜索、工具调用等。用户可以创建定义自己的专属的Agent。旨在让dcdr-agent成为一个全能助手。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2026-08-21
- **Last Updated**: 2026-08-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# DCDR Agent
**基于 Spring Boot 3 + Java 17 的智能 Agent 平台**
统一对话 · 知识库 RAG · 多模态生成 · 自定义 Agent 编排 · 多用户协作
[](https://www.oracle.com/java/)
[](https://spring.io/projects/spring-boot)
[](LICENSE)
---
## 一、版本
| 项 | 值 |
|----|----|
| 当前版本 | **v2.3.0** |
| 发布日期 | 2026-08-13 |
| Java | 17 |
| Spring Boot | 3.3.5 |
| 构建工具 | Maven |
> 版本演进:V1.x(单轮对话)→ V2.0(知识库 / 认证 / 多 Agent)→ V2.1(RAG 增强)→ V2.2(RBAC / 审计 / 数据隔离)→ V2.3(自定义 Agent / 工作流 / 定时任务 / 流式图片),统一以 **v2.3.0** 发布。
---
## 二、特性总览
### 对话与多模态
- 流式对话(SSE),支持上下文记忆与多轮会话
- **图像生成 / 视频生成**(按模型 `type` 分类:`CHAT` / `IMAGE` / `VIDEO`)
- **音频生成**(TTS)与音频文件处理
- 内置工具:计算器、时间、天气、图像生成、MCP 工具注册(`ToolRegistry`)
### 知识库 (RAG)
- 知识库管理(用户级 / 公开级可见性)
- 文档上传 → 分块 → 向量化 → 相似度检索(`rag/` 模块)
- 对话中按 `kbIds` 关联知识库进行检索增强
### 自定义 Agent
- Agent 定义:系统提示词、绑定模型、工具列表 (`tools`)、关联知识库 (`kbIds`)、温度参数
- 公开 / 模板 Agent (`isPublic` / `isTemplate`),支持克隆
- 工作流编排(Workflow)与定时任务调度(ScheduledTask)
### 多用户与协作
- 基于 Token 的认证(`auth/` 模块 + `SecurityContextWebFilter` 请求级身份注入)
- 基于用户 / 可见性的数据隔离(Repository 按 `userId` / `visibility` 过滤)
- 管理员后台(用户管理、审计日志 `audit/`)
---
## 三、技术栈
| 层 | 技术 |
|----|------|
| 后端 | Spring Boot 3.3.5 · WebFlux (响应式) · Java 17 |
| 持久化 | Spring Data JPA · H2 / MySQL |
| 向量 | 向量检索(RAG 模块) |
| 前端 | Vue 3 · Vite · Element Plus · Pinia |
| 部署 | Docker · docker-compose |
---
## 四、目录结构
```
dcdr-agent/
├── pom.xml # Maven 构建 (JDK 17)
├── Dockerfile
├── docker-compose.yml
├── docs/ # 需求 / 规划 / 发布说明 / SQL 脚本
│ ├── 01-需求文档.md
│ ├── 03-V2.0规划文档.md
│ ├── RELEASE-v2.3.0.md
│ └── sql/v2.0_schema.sql
├── src/main/java/com/dcdr/agent/
│ ├── JavaAgentApplication.java
│ ├── controller/ # REST 接口 (Chat/Agent/KnowledgeBase/Workflow/ScheduledTask/Image/Video/Model/Auth...)
│ ├── agent/
│ │ ├── AgentOrchestrator.java # 多 Agent 编排核心
│ │ ├── definition/ # Agent 定义 / 模板 (AgentDefinitionService)
│ │ ├── workflow/ # 工作流
│ │ ├── schedule/ # 定时任务
│ │ ├── creative/ image/ memory/ prompt/ session/ # 各能力子模块
│ │ └── ModelRouter.java # 模型路由
│ ├── rag/ # 知识库 RAG (文档/分块/向量/检索)
│ ├── auth/ # 认证 / 鉴权 / 安全上下文
│ ├── audit/ # 审计日志
│ ├── tool/ # 工具注册与实现 (Calculator/Time/Weather/Image/MCP)
│ ├── model/ # 模型适配 (Chat/Image/Video)
│ ├── entity/ # JPA 实体 (User/AgentDefinition/KnowledgeBase/Workflow/ScheduledTask/AuditLog...)
│ ├── dto/ # 请求/响应 DTO (含对外布尔字段 @JsonProperty 规范)
│ ├── repository/ # 数据访问 (含 userId/visibility 隔离过滤)
│ ├── service/ config/ common/ admin/
├── frontend/
│ └── src/
│ ├── api/ # 接口封装 (@/api)
│ ├── stores/ # Pinia (auth.js 认证 / model.js 全局模型列表)
│ ├── views/ # ChatView / AgentView / KnowledgeBaseView
│ │ # / WorkflowView / ScheduledTaskView / CreativeView
│ │ # / AdminView / AuthView
│ ├── components/ # AppHeader 等
│ └── App.vue # 路由与全局模型加载
└── data/ # 本地数据 / 上传文件
```
---
## 五、快速开始
### 5.1 后端 (JDK 17)
```bash
# 要求 JDK 17 (示例路径, 按本机调整)
export JAVA_HOME=/path/to/jdk17
# 编译 (离线)
mvn -q -o compile -DskipTests
# 运行
mvn spring-boot:run
```
> 注意:本项目使用 **Java 17**。若系统默认 `JAVA_HOME` 指向 JDK 8 等低版本,请先切换到 JDK 17 再构建。
### 5.2 前端
```bash
cd frontend
npm install
npm run dev
```
### 5.3 Docker
```bash
docker compose up -d --build
```
---
## 六、主要 API
| 模块 | 路径 | 说明 |
|------|------|------|
| 对话 | `POST /api/chat` / `GET /api/sessions` | 流式对话、会话管理 |
| Agent | `/api/agents` | 自定义 Agent 增删改查、克隆、模板 |
| 知识库 | `/api/knowledge-bases` | 知识库与文档管理 (RAG) |
| 工作流 | `/api/workflows` | 工作流定义与执行 |
| 定时任务 | `/api/scheduled-tasks` | 定时任务调度 |
| 多模态 | `/api/image` `/api/video` `/api/audio` | 图像 / 视频 / 音频生成 |
| 模型 | `/api/models` | 模型列表(按 `type` 提供 CHAT/IMAGE/VIDEO) |
| 认证 | `/api/auth` | 登录 / 注册 / 用户管理 |
---
## 七、前端契约规范
对外 DTO 的布尔字段统一使用 `@JsonProperty("isXxx")` 显式声明 JSON key,前后端命名一致:
| 字段 | JSON key |
|------|----------|
| `AgentView.isPublic` / `isTemplate` | `isPublic` / `isTemplate` |
| `SaveAgentRequest.isPublic` | `isPublic` |
| `ModelInfo.isDefault` | `isDefault` |
全局模型列表由 `frontend/src/stores/model.js` 统一管理(`loadModels` 幂等,按 `type` 提供 `chatModels` / `imageModels` / `videoModels`),避免各视图重复请求。
---
## 八、数据库升级
从 V1.x 升级需执行 `docs/sql/v2.0_schema.sql`(新增 `agent_definition` / `knowledge_base` / `workflow_definition` / `scheduled_task` / `audit_log` 等表)。
存量 `agent_definitions.tools` / `kb_ids` 若为裸字符串(非 JSON 数组),后端已兼容解析,无需手动清洗。
---
## 九、相关文档
- 需求文档:`docs/01-需求文档.md`
- V2.0 规划:`docs/03-V2.0规划文档.md`
- 发布说明:`docs/RELEASE-v2.3.0.md`
---
## 十、License
[MIT](LICENSE)