仓库是一个混合技术栈的聚合工程,涉及三种依赖管理体系:
| 语言/模块 | 包管理器 | 清单文件 | 锁定文件 |
|---|---|---|---|
| Java (ai-server, ai-gateway) | Maven | pom.xml |
无(未启用 BOM lock) |
Electron 主进程 (ai-electron) |
npm | ai-electron/package.json |
package-lock.json |
Vue 前端 (ai-electron/frontend) |
pnpm | ai-electron/frontend/package.json |
pnpm-lock.yaml |
根目录 pom.xml 是 Spring Boot 3.5 聚合父工程,仅声明两个 Maven 子模块,不直接引入业务依赖。
org.springframework.boot:spring-boot-starter-parent:3.5.16,统一 Java 25、编码等属性。ai-server/pom.xml 通过 <dependencyManagement> 引入 spring-ai-bom:1.1.8 集中管理 Spring AI 子组件版本;其他第三方库(Guava、Druid、Commons、pgvector、DJL、ONNX Runtime 等)在 <properties> 中集中声明,再由 <dependencies> 引用 ${xxx.version}。ai-gateway/pom.xml 通过 <dependencyManagement> 引入 spring-cloud-dependencies:${spring-cloud.version}(2025.0.1),并显式与 ai-server 共享 sa-token:1.46.0,注释明确要求“版本必须与 ai-server 完全一致”。settings.xml 或 pom.xml 中的自定义 <repository>/<mirror> 配置,Java 依赖默认从中央仓库解析。ai-server 对传递依赖做选择性排除:例如 agentscope-harness 排除了 io.modelcontextprotocol.sdk:mcp,注释说明“本项目不接外部 MCP 客户端”。ai-electron/package.json,使用 npm(由 package-lock.json 锁定)。ee-bin@^5.0.0 和 ee-core@^5.0.1,打包用 electron-builder,更新用 electron-updater。ai-electron/frontend/package.json,使用 pnpm(packageManager: "pnpm@10.25.0",通过 engines.node >=20.19 || >=22.12 约束运行时)。preinstall: npx only-allow pnpm 强制安装器必须是 pnpm。vue: 3.5.25、ant-design-vue: 4.2.6、vite: 7.2.7),而非范围符,便于锁定可复现构建。resolutions.bin-wrapper: npm:bin-wrapper-china 用于替换 bin-wrapper 以适配国内网络。.npmrc 配置了两个镜像源:
registry=https://registry.npmmirror.com(全局 npm 镜像)@jeesite:registry=https://maven.jeesite.net/repository/npm-package/(私有 npm 仓库,用于 @jeesite/* scope)pnpm.onlyBuiltDependencies 白名单限定 core-js、es5-ext、esbuild、vue-demi 允许编译原生依赖,减少不必要的 native rebuild。ncu -u && pnpm reinstall(pnpm update)脚本用于升级依赖。ai-server/pom.xml 的 <properties> 与 <dependencyManagement> 中声明,子模块不得硬编码版本(依据 pom 结构推断的约定)。ai-gateway 与 ai-server 共用相同版本的 Sa-Token,并在源码注释中要求二者保持一致(ai-gateway/pom.xml 明确注释)。[来源:ai-gateway/pom.xml 注释]preinstall 钩子 + engines 字段)。[来源:ai-electron/frontend/package.json]@jeesite/* 包走 https://maven.jeesite.net/repository/npm-package/,其余包走 npmmirror。[来源:ai-electron/frontend/.npmrc]<repositories> 或 <mirrors>,Java 依赖全部来自中央仓库。ai-server 通过 <exclusions> 移除 agentscope 传递引入的 io.modelcontextprotocol.sdk:mcp,避免产物冗余。[来源:ai-server/pom.xml]