130 lines
6.7 KiB
Markdown
130 lines
6.7 KiB
Markdown
# Intro
|
|
|
|
以下是`mis-agent`项目架构以及目录结构。
|
|
|
|
## 核心技术栈
|
|
|
|
| 名称 | 版本 | 官方文档 | Github |
|
|
|:-----|:-----|:-----|:-----|
|
|
|Java|OpenJDK21|-|-|
|
|
|SpringBoot|3.2.9|https://docs.spring.io/spring-boot/docs/3.2.9/reference/html|https://github.com/spring-projects/spring-boot/tree/v3.2.9|
|
|
|SpringFramework|6.1.12|https://docs.spring.io/spring-framework/reference/6.2/index.html|https://github.com/spring-projects/spring-framework/tree/v6.1.12|
|
|
|rocketmq-spring-boot-starter|2.2.3|https://rocketmq.apache.org/zh/docs/4.x|https://github.com/apache/rocketmq-spring/tree/rocketmq-spring-all-2.2.3|
|
|
|rocketmq-client|4.9.8|-|https://github.com/apache/rocketmq/tree/rocketmq-all-4.9.8|
|
|
|mybatis-plus|3.5.7|https://baomidou.com/introduce/|https://github.com/baomidou/mybatis-plus/tree/v3.5.7|
|
|
|MySQL|8.0.25|https://dev.mysql.com/doc/refman/8.0/en/|https://github.com/mysql/mysql-server/tree/mysql-8.0.25|
|
|
|Redis|8.0+|-|-|
|
|
|redisson-spring-boot-starter|3.34.1|https://redisson.pro/docs/integration-with-spring/#usage|https://github.com/redisson/redisson/tree/redisson-3.34.1/redisson-spring-boot-starter/src/main|
|
|
|agentscope-java|1.0.11|https://java.agentscope.io/v1/zh/docs/task/agent-as-tool.html|https://github.com/agentscope-ai/agentscope-java/tree/v1.0.11|
|
|
|spring-ai-alibaba|1.1.2.2|https://java2ai.com/docs/overview|https://github.com/alibaba/spring-ai-alibaba/tree/v1.1.2.2|
|
|
|spring-ai|1.1.2|https://docs.spring.io/spring-ai/reference/1.1/index.html|https://github.com/spring-projects/spring-ai/tree/v1.1.2|
|
|
|
|
## 目录结构
|
|
|
|
### 主目录
|
|
|
|
```text
|
|
mis-modules\mis-agent\src\main\
|
|
├── java # Java源文件
|
|
└── resources
|
|
└── mapper # Mybatis Mapper XML
|
|
└── application.yml # 配置文件
|
|
```
|
|
|
|
### 智能体
|
|
|
|
```text
|
|
com\lcfc\agent\agents\
|
|
├── a2a # a2a agent
|
|
├── config # Spring配置类
|
|
├── constants # 常量类
|
|
├── context # 自定义的上下文载体类
|
|
├── controller # SpringWeb控制器
|
|
├── dubbo # Dubbo接口实现类
|
|
├── enums # 枚举类
|
|
├── events # Spring事件消息载体, 定义ApplicationEventPublisher.publishEvent的Payload
|
|
├── mapper # Mybatis Mapper 接口
|
|
├── multiagent # 多智能体,采用agentscope-java的Agent AS Tool架构
|
|
├── saa # 单智能体,采用spring-ai-alibaba的方案
|
|
├── service # CRUD业务逻辑接口
|
|
│ └── impl # CRUD业务逻辑接口实现类
|
|
├── util # 工具类
|
|
├── validator # 封装复杂的/可复用的验证工具
|
|
├── domain # 数据库实体类
|
|
├── DTO # DTO
|
|
└── VO # VO
|
|
```
|
|
|
|
### 事件发布订阅
|
|
|
|
目的是摆脱对`ApplicationEventPublisher`的依赖,在非`springbean`对象中简单的使用发布订阅模式。
|
|
|
|
```text
|
|
com\lcfc\agent\eventhub\
|
|
├── MisAgentEventHub.java # 通过init方法注册监听器,使用broadcast推送事件
|
|
└── MisAgentEventListener.java # 所有监听器都必须实现该接口
|
|
```
|
|
|
|
### 智能体记忆
|
|
|
|
管理智能体的长期记忆。
|
|
|
|
```text
|
|
com\lcfc\agent\memory\
|
|
├── UserLongTermChannel.java # 长期记忆组件的通道枚举,例如hindsight
|
|
├── UserLongTermMemoryClient.java # 用户级别长期记忆的客户端接口
|
|
├── UserLongTermMemoryConfig.java # 用户级别长期记忆的配置
|
|
└── UserLongTermMemoryCtl.java # 用户级别长期记忆的控制类
|
|
```
|
|
|
|
### 智能体监控
|
|
|
|
收集智能体运行时调用了哪些tool、使用了哪些Skill、触发了哪些工作流、查询了哪些知识库、消耗了多少token等数据。
|
|
|
|
```text
|
|
com\lcfc\agent\monitor\
|
|
├── AgentChatMetricsCtx.java # 智能体监控数据的上下文对象
|
|
├── AgentChatMetricsFinishEvent.java # 智能体监控数据收集完成事件消息载体
|
|
├── AgentChatMetricsFinishListener.java # 智能体监控数据收集完成事件监听器
|
|
├── IAgentChatMetricsConsumer.java # 消费智能体监控数据上下文对象的接口
|
|
├── MisAgentChatMetricsCtl.java # 管理多智能体和单智能体监控上下文对象的控制类
|
|
└── MisMcpToolMetadataCtl.java # 管理多智能体和单智能体MCP工具元数据的控制类
|
|
```
|
|
|
|
### 对于agentscope-java的封装
|
|
|
|
提炼使用agentscope-java构建智能体可复用的能力。
|
|
|
|
```text
|
|
com\lcfc\agent\scope\
|
|
├── AgentScopeAgentCtl.java # 构建ReActAgent.Builder和A2aAgent.Builder对象的控制类
|
|
├── AgentScopeChatUsageUtils.java # 计算Token消耗的工具类
|
|
├── AgentScopeMemoryCtl.java # 管理官方提供的AutoContextMemory自动压缩上下文控制类
|
|
├── AgentScopeModelCtl.java # 控制agentscope-java默认使用的聊天模型
|
|
├── AgentScopeMsgCtl.java # 管理智能体输入或输出消息,例如查询知识库或者保存用户输入或者智能体输出的消息,或者创建一个会话窗口ID
|
|
├── AgentScopeMsgUtils.java # 格式化Msg的工具类
|
|
├── AgentScopeSkillCtl.java # 管理Skill的控制类
|
|
├── AgentScopeToolCtl.java # 管理Tool以及MCPTool的控制类
|
|
├── KbReferenceCtl.java # 引用的知识库控制类
|
|
└── KbSearchCtl.java # 知识库搜索控制类
|
|
```
|
|
|
|
### 项目数据统计相关
|
|
|
|
```text
|
|
com\lcfc\agent\stats\
|
|
├── api # Controller
|
|
├── service # Service
|
|
├── conf # 配置类
|
|
├── domain
|
|
│ ├── dto # DTO
|
|
│ ├── vo # VO
|
|
│ ├── enums # Enum
|
|
│ ├── entity # Entity
|
|
│ └── mapper # Mapper Java源文件
|
|
├── mq
|
|
│ ├── event # 消息载体
|
|
│ └── consumer # 监听器
|
|
└── resources
|
|
└── mapper # Mapper XML文件 (位于src/main/resources/mapper)
|
|
``` |