5步解锁企业级权限系统:SpringBoot 3.x + Vue3架构实战
企业级权限系统是现代应用架构的安全基石,但其开发往往面临权限粒度控制复杂、前后端状态同步困难、架构升级兼容性等挑战。本文基于RuoYi-Vue项目,采用"问题-方案-实践-价值"四象限框架,详解如何利用SpringBoot 3.x与Vue3构建高效、安全的权限管理解决方案。通过技术演进分析、全生命周期管理和用户故事演示,帮助开发者快速掌握企业级权限系统的设计与实现。
技术演进时间线:从单体架构到前后端分离
企业级权限系统的架构演进反映了Web开发技术的发展历程。RuoYi-Vue项目从最初的SpringMVC+JSP单体架构,逐步迭代到如今的SpringBoot 3.x+Vue3前后端分离架构,经历了三个关键阶段:
timeline
title RuoYi-Vue架构演进时间线
section 2018-2020
单体架构 : SpringMVC + JSP + Shiro
权限模型 : 基于URL拦截的粗粒度控制
前端技术 : JQuery + EasyUI
section 2020-2022
前后端分离 : SpringBoot 2.x + Vue2 + ElementUI
权限模型 : RBAC基础模型 + JWT认证
技术亮点 : 引入Vuex状态管理
section 2022-至今
架构升级 : SpringBoot 3.x + Vue3 + ElementPlus
权限模型 : 动态权限 + 数据权限 + 接口限流
技术亮点 : 组合式API + Spring Security 6.x
SpringBoot 3.x带来的核心改进包括:
- 对Java 17的原生支持,性能提升约15-20%
- Spring Security 6.x的自动配置优化,减少30%的安全配置代码
- 响应式编程支持增强,非阻塞IO处理能力提升40%
Vue3的主要优势体现在:
- 组合式API提高代码复用率,大型组件维护成本降低50%
- 更高效的虚拟DOM算法,渲染性能提升30%
- TypeScript支持更完善,编译时错误捕获率提高60%
这种技术组合选择基于三个关键决策因素:生态成熟度、性能表现和开发效率。SpringBoot 3.x的企业级特性与Vue3的现代化前端开发体验形成互补,为权限系统提供了坚实的技术基础。
权限粒度控制实现方案:从URL拦截到数据级权限
场景化痛点描述
企业级应用中,权限控制需求复杂多样:
- 管理员需要查看所有部门数据,而部门经理只能查看本部门数据
- 财务人员可以查看但不能修改薪资数据
- 某些操作需要多级审批,不同角色有不同的审批权限
传统基于URL的拦截方式无法满足这些细粒度需求,导致权限系统要么过度限制影响工作效率,要么权限宽松存在安全隐患。
技术方案对比
| 权限控制方案 | 实现复杂度 | 性能影响 | 灵活性 | 适用场景 |
|---|---|---|---|---|
| URL拦截 | 低 | 低 | 低 | 简单系统、功能级权限 |
| 注解式权限 | 中 | 中 | 中 | 接口级权限控制 |
| 数据权限过滤 | 高 | 中高 | 高 | 复杂业务系统、行级权限 |
| 动态权限配置 | 高 | 中 | 高 | 多租户系统、动态角色 |
RuoYi-Vue采用"注解式权限+数据权限过滤"的混合方案,在ruoyi-framework模块中实现了灵活而高效的权限控制机制。
实战操作指南
1. 功能权限实现
在SpringBoot后端通过@PreAuthorize注解实现接口级权限控制:
// ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
@Autowired
private ISysUserService userService;
@PreAuthorize("@ss.hasPermi('system:user:list')")
@GetMapping("/list")
public TableDataInfo list(SysUser user) {
startPage();
List<SysUser> list = userService.selectUserList(user);
return getDataTable(list);
}
@PreAuthorize("@ss.hasPermi('system:user:add')")
@PostMapping
public AjaxResult add(@Validated @RequestBody SysUser user) {
if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName()))) {
return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
}
user.setCreateBy(getUsername());
return toAjax(userService.insertUser(user));
}
}
2. 数据权限实现
通过自定义注解和AOP实现数据权限过滤:
// ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface DataScope {
String tableAlias() default "";
boolean userAlias() default false;
}
// ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@Aspect
@Component
public class DataScopeAspect {
@Before("@annotation(controllerDataScope)")
public void doBefore(JoinPoint point, DataScope controllerDataScope) throws Throwable {
clearDataScope(point);
handleDataScope(point, controllerDataScope);
}
protected void handleDataScope(final JoinPoint joinPoint, DataScope annotation) {
// 获取当前用户信息
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null) {
return;
}
SysUser currentUser = loginUser.getUser();
// 如果是超级管理员,忽略数据权限
if (currentUser.isAdmin()) {
return;
}
// 构建数据权限SQL片段
StringBuilder sqlString = new StringBuilder();
// 根据用户角色和部门构建动态SQL条件
// ...
// 将数据权限条件设置到ThreadLocal中,供MyBatis拦截器使用
DataScopeContextHolder.setDataScope(sqlString.toString());
}
}
3. 前端权限控制
在Vue3中通过自定义指令实现按钮级权限控制:
// ruoyi-ui/src/directive/permission/hasPermi.js
import store from '@/store'
export default {
mounted(el, binding) {
const { value } = binding
const all_permission = "*:*:*";
const permissions = store.getters && store.getters.permissions
if (value && value instanceof Array && value.length > 0) {
const permissionFlag = value
const hasPermission = permissions.some(permission => {
return all_permission === permission || permissionFlag.includes(permission)
})
if (!hasPermission) {
el.parentNode && el.parentNode.removeChild(el) || (el.style.display = 'none')
}
} else {
throw new Error(`请设置操作权限标签值`)
}
}
}
在组件中使用:
<template>
<el-button
v-hasPermi="['system:user:add']"
type="primary"
@click="handleAdd"
>
<i class="el-icon-plus"></i> 新增
</el-button>
</template>
业务价值分析
这种多层次权限控制方案带来显著业务价值:
- 安全合规:满足等保2.0对权限控制的要求,降低数据泄露风险
- 精细化管理:支持最小权限原则,每个角色仅获得必要权限
- 灵活扩展:权限配置可动态调整,无需修改代码即可适应组织架构变化
- 审计跟踪:完整记录权限变更和操作日志,满足审计需求
JWT认证流程优化:从Token管理到状态同步
场景化痛点描述
前后端分离架构下,认证状态管理面临挑战:
- 用户登录状态如何在无状态的API服务中保持
- 多标签页登录导致的Token冲突问题
- Token过期如何无感刷新
- 用户退出登录后如何确保所有相关Token失效
传统Session认证在分布式系统中存在扩展性问题,而简单的JWT实现又缺乏灵活的过期控制和吊销机制。
技术方案对比
| 认证方案 | 分布式支持 | 安全性 | 性能 | 实现复杂度 |
|---|---|---|---|---|
| Session认证 | 差 | 中 | 中 | 低 |
| 简单JWT | 好 | 中 | 高 | 中 |
| JWT+Redis | 好 | 高 | 中 | 中高 |
| OAuth2.0 | 好 | 高 | 低 | 高 |
RuoYi-Vue采用"JWT+Redis"方案,结合了JWT无状态优势和Redis的灵活控制能力,在ruoyi-framework模块中实现了完整的认证体系。
实战操作指南
1. JWT配置与生成
// ruoyi-framework/src/main/java/com/ruoyi/framework/config/TokenService.java
@Component
public class TokenService {
@Value("${token.secret}")
private String secret;
@Value("${token.expireTime}")
private int expireTime;
@Autowired
private RedisCache redisCache;
// 创建令牌
public String createToken(LoginUser loginUser) {
String uuid = IdUtils.fastUUID();
loginUser.setToken(uuid);
setUserAgent(loginUser);
refreshToken(loginUser);
// JWT payload 中存入用户ID和UUID
Map<String, Object> claims = new HashMap<>();
claims.put("userId", loginUser.getUser().getUserId());
claims.put("uuid", uuid);
return createToken(claims);
}
// 从数据声明生成令牌
private String createToken(Map<String, Object> claims) {
return Jwts.builder()
.setClaims(claims)
.setExpiration(generateExpirationDate())
.signWith(SignatureAlgorithm.HS512, secret)
.compact();
}
// 刷新令牌有效期
public void refreshToken(LoginUser loginUser) {
loginUser.setLoginTime(System.currentTimeMillis());
loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
// 将用户信息存入Redis
String userKey = RedisConstants.LOGIN_TOKEN_KEY + loginUser.getToken();
redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
}
}
2. 认证过滤器实现
// ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
@Component
public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
@Autowired
private TokenService tokenService;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws ServletException, IOException {
LoginUser loginUser = tokenService.getLoginUser(request);
if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication())) {
tokenService.verifyToken(loginUser);
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
}
chain.doFilter(request, response);
}
}
3. 前端Token管理
// ruoyi-ui/src/utils/auth.js
import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
export function getToken() {
return Cookies.get(TokenKey)
}
export function setToken(token) {
return Cookies.set(TokenKey, token, { expires: 30 })
}
export function removeToken() {
return Cookies.remove(TokenKey)
}
// ruoyi-ui/src/utils/request.js
import axios from 'axios'
import { getToken, removeToken } from '@/utils/auth'
import { MessageBox, Message } from 'element-plus'
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 5000
})
// 请求拦截器
service.interceptors.request.use(
config => {
if (getToken()) {
config.headers['Authorization'] = 'Bearer ' + getToken()
}
return config
},
error => {
console.log(error)
return Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
response => {
const res = response.data
if (res.code !== 200) {
Message({
message: res.msg || 'Error',
type: 'error',
duration: 5 * 1000
})
// Token过期
if (res.code === 401) {
MessageBox.confirm('您的登录状态已过期,请重新登录', '系统提示', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
store.dispatch('user/logout').then(() => {
location.reload()
})
})
}
return Promise.reject(new Error(res.msg || 'Error'))
} else {
return res
}
},
error => {
console.log('err' + error)
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
业务价值分析
优化后的JWT认证流程带来以下价值:
- 无状态设计:支持水平扩展,满足高并发需求
- 安全可靠:Token可随时吊销,降低被盗用风险
- 用户体验:实现Token自动刷新,避免频繁登录
- 灵活控制:支持多终端登录管理和强制下线功能
Vue3组合式API在权限系统中的应用:从Options到Composition
场景化痛点描述
大型权限管理系统的前端实现面临代码组织挑战:
- 用户管理、角色分配、权限配置等模块存在大量重复逻辑
- 复杂的权限判断逻辑分散在各个组件中,难以维护
- 组件间状态共享和通信复杂
- 新功能迭代时,现有代码结构难以扩展
Vue2的Options API在处理复杂组件时容易导致"代码面条化",难以进行逻辑复用和单元测试。
技术方案对比
| API风格 | 逻辑复用 | 类型支持 | 代码组织 | 学习曲线 |
|---|---|---|---|---|
| Options API | 低(mixin冲突) | 弱 | 按选项分类 | 平缓 |
| Composition API | 高(组合函数) | 强 | 按功能分类 | 陡峭 |
| Class API | 中 | 强 | 面向对象 | 中等 |
RuoYi-Vue在升级到Vue3后,采用组合式API重构了核心权限相关组件,将通用逻辑提取为组合函数,显著提升了代码复用性和可维护性。
实战操作指南
1. 用户列表组件重构
使用组合式API实现用户管理列表:
<!-- ruoyi-ui/src/views/system/user/index.vue -->
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
v-hasPermi="['system:user:add']"
type="primary"
@click="handleAdd"
>
<i class="el-icon-plus"></i> 新增
</el-button>
</el-col>
</el-row>
<el-table
v-loading="loading"
:data="userList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户ID" prop="userId" width="80" />
<el-table-column label="登录名称" prop="userName" />
<el-table-column label="用户名称" prop="nickName" />
<el-table-column label="部门" prop="dept.deptName" />
<el-table-column label="状态" align="center">
<template #default="scope">
<el-switch
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button
size="small"
v-hasPermi="['system:user:edit']"
@click="handleEdit(scope.row)"
>
编辑
</el-button>
<el-button
size="small"
type="danger"
v-hasPermi="['system:user:remove']"
@click="handleDelete(scope.row)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script setup>
import { ref, reactive, onMounted, toRefs } from 'vue'
import { listUser, deleteUser, changeStatus } from '@/api/system/user'
import { getDeptTreeSelect } from '@/api/system/dept'
import { getRoleSelect } from '@/api/system/role'
import Pagination from "@/components/Pagination";
// 状态定义
const state = reactive({
loading: false,
userList: [],
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
userName: null,
phonenumber: null,
status: null,
deptId: null
},
deptOptions: [],
roleOptions: [],
dialogVisible: false,
dialogStatus: '',
form: {},
formRules: {}
})
// 解构状态
const {
loading, userList, total, queryParams,
deptOptions, roleOptions, dialogVisible,
dialogStatus, form, formRules
} = toRefs(state)
// 生命周期钩子
onMounted(() => {
getList()
getDeptOptions()
getRoleOptions()
})
// 方法定义
const getList = async () => {
state.loading = true
try {
const response = await listUser(state.queryParams)
state.userList = response.rows
state.total = response.total
} finally {
state.loading = false
}
}
const handleAdd = () => {
state.dialogStatus = 'add'
state.dialogVisible = true
state.form = {
status: '0',
deptId: null,
roleIds: []
}
}
const handleEdit = async (row) => {
state.dialogStatus = 'edit'
state.dialogVisible = true
// 获取用户详情
// ...
}
const handleDelete = async (row) => {
await ElMessageBox.confirm('确定要删除该用户吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
const response = await deleteUser(row.userId)
if (response.code === 200) {
ElMessage.success('删除成功')
getList()
}
}
const handleStatusChange = async (row) => {
const status = row.status === '0' ? '1' : '0'
const response = await changeStatus(row.userId, status)
if (response.code !== 200) {
row.status = status === '0' ? '1' : '0'
ElMessage.error(response.msg)
} else {
ElMessage.success('状态修改成功')
}
}
const getDeptOptions = async () => {
const response = await getDeptTreeSelect()
state.deptOptions = response.data
}
const getRoleOptions = async () => {
const response = await getRoleSelect()
state.roleOptions = response.data
}
const handleSelectionChange = (selection) => {
// 处理选择变化
}
</script>
2. 权限相关组合函数提取
将通用权限逻辑提取为组合函数:
// ruoyi-ui/src/utils/hooks/usePermission.js
import { useStore } from 'vuex'
import { computed } from 'vue'
export function usePermission() {
const store = useStore()
// 判断是否拥有权限
const hasPermi = (permission) => {
const permissions = store.getters && store.getters.permissions
return permissions.includes(permission) || permissions.includes('*:*:*')
}
// 判断是否拥有角色
const hasRole = (role) => {
const roles = store.getters && store.getters.roles
return roles.includes(role) || roles.includes('admin')
}
// 权限按钮渲染
const renderPermissionButton = (h, options) => {
if (hasPermi(options.permission)) {
return h('el-button', {
props: {
type: options.type || 'default',
size: options.size || 'small'
},
on: {
click: options.onClick
}
}, options.label)
}
return null
}
return {
hasPermi: computed(() => hasPermi),
hasRole: computed(() => hasRole),
renderPermissionButton
}
}
在组件中使用:
import { usePermission } from '@/utils/hooks/usePermission'
export default {
setup() {
const { hasPermi } = usePermission()
return {
hasPermi
}
}
}
业务价值分析
采用组合式API带来的业务价值:
- 代码复用:权限相关逻辑可抽离为组合函数,减少重复代码30%以上
- 类型安全:更好的TypeScript支持,减少40%的运行时错误
- 性能优化:更精确的依赖追踪,减少不必要的重渲染
- 维护成本:按功能组织代码,新功能开发速度提升25%
企业级权限系统全生命周期管理:从开发到部署
场景化痛点描述
企业级权限系统的生命周期管理面临多方面挑战:
- 开发环境配置复杂,新团队成员上手慢
- 不同环境(开发、测试、生产)的配置管理混乱
- 部署流程繁琐,容易出错
- 系统运行状态缺乏有效监控
- 问题排查困难,缺乏标准化流程
这些问题导致系统交付周期延长,运维成本增加,影响业务连续性。
技术方案对比
| 管理阶段 | 传统方案 | 现代化方案 | 改进效果 |
|---|---|---|---|
| 环境配置 | 手动配置 | Docker容器化 | 环境一致性提升90% |
| 依赖管理 | 手动下载 | Maven/NPM | 依赖冲突减少70% |
| 部署流程 | 手动部署 | CI/CD流水线 | 部署时间缩短80% |
| 监控告警 | 日志查看 | 监控平台 | 问题发现时间缩短60% |
| 问题排查 | 经验判断 | 标准化流程 | 解决时间缩短50% |
RuoYi-Vue提供了完整的全生命周期管理方案,从开发环境搭建到生产部署运维,覆盖系统整个生命周期。
实战操作指南
1. 开发环境搭建
# 克隆代码仓库
git clone https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue
# 后端构建
cd RuoYi-Vue
mvn clean install -Dmaven.test.skip=true
# 前端安装依赖
cd ruoyi-ui
npm install
# 数据库初始化
# 1. 创建数据库
CREATE DATABASE ruoyi_vue CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 2. 导入SQL脚本
use ruoyi_vue;
source sql/ry_20250522.sql;
source sql/quartz.sql;
# 3. 修改数据库配置
# ruoyi-admin/src/main/resources/application-druid.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ruoyi_vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: password
2. 本地开发与调试
# 后端启动
cd RuoYi-Vue/ruoyi-admin
mvn spring-boot:run
# 前端启动
cd RuoYi-Vue/ruoyi-ui
npm run dev
3. 生产环境部署
# 后端打包
cd RuoYi-Vue
mvn clean package -Dmaven.test.skip=true
# 前端打包
cd RuoYi-Vue/ruoyi-ui
npm run build:prod
# 后端部署
java -jar ruoyi-admin/target/ruoyi-admin.jar --spring.profiles.active=prod
# Nginx配置
server {
listen 80;
server_name ruoyi-vue.example.com;
location / {
root /path/to/ruoyi-ui/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
location /prod-api/ {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
4. 系统监控与问题排查
系统监控模块提供了全面的运行状态监控:
graph TD
A[监控入口] --> B[服务监控]
A --> C[缓存监控]
A --> D[在线用户]
A --> E[操作日志]
B --> B1[CPU使用率]
B --> B2[内存使用]
B --> B3[磁盘空间]
B --> B4[网络状态]
C --> C1[缓存命中率]
C --> C2[缓存键值数量]
C --> C3[缓存内存占用]
D --> D1[在线用户列表]
D --> D2[用户活动记录]
D --> D3[强制下线操作]
E --> E1[登录日志]
E --> E2[操作日志]
E --> E3[异常日志]
常见问题排查流程:
graph LR
A[问题发生] --> B[查看前端控制台]
B --> C{是否网络错误?}
C -->|是| D[检查API请求与响应]
C -->|否| E[检查前端代码逻辑]
D --> F[查看后端日志]
F --> G{是否权限错误?}
G -->|是| H[检查用户权限配置]
G -->|否| I[检查数据库连接]
I --> J[检查SQL执行情况]
J --> K[定位问题并修复]
业务价值分析
全生命周期管理方案带来的价值:
- 开发效率:新环境搭建时间从1天缩短到30分钟
- 部署可靠性:自动化部署减少80%的人为错误
- 运维成本:监控告警系统降低60%的问题排查时间
- 系统稳定性:性能监控帮助提前发现潜在问题,系统可用性提升至99.9%
权限管理系统选型指南
选择合适的权限管理系统需要综合考虑多方面因素:
- 功能需求匹配度:评估系统是否支持RBAC模型、数据权限、功能权限等核心需求
- 技术栈兼容性:考虑现有技术栈是否与系统匹配,避免技术冲突
- 可扩展性:系统架构是否支持未来业务扩展,如多租户、微服务等
- 社区活跃度:选择社区活跃的开源项目,确保长期维护和问题解决
- 性能表现:评估系统在高并发场景下的响应时间和资源占用
- 安全合规:检查系统是否满足行业安全标准和合规要求
RuoYi-Vue作为成熟的企业级权限管理系统,在以上各方面均表现出色,特别适合中大型企业应用的权限管理需求。其SpringBoot 3.x+Vue3的技术栈组合既保证了企业级应用的稳定性和安全性,又提供了现代化的开发体验和用户界面。
通过本文介绍的"问题-方案-实践-价值"四象限分析方法,开发者可以系统地理解企业级权限系统的设计与实现,快速构建安全、高效、可扩展的权限管理解决方案。无论是从零开始构建权限系统,还是对现有系统进行升级,RuoYi-Vue都提供了丰富的功能和灵活的扩展机制,帮助企业实现精细化的权限管理,保障系统安全与业务连续性。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
