Appearance
第三方依赖清单
项目所用第三方库按前端 / 后端 / 基础设施分类整理。版本号以各 package.json 和 go.mod 为准。
前端
框架与核心
| 库 | 版本 | 用途 |
|---|---|---|
| Vue 3 | ^3.5 | 响应式 UI 框架 |
| Vue Router | ^4.5 | SPA 路由管理 |
| Pinia | ^2.3 | 状态管理(替代 Vuex) |
| TypeScript | ^5.7 | 全栈类型安全 |
UI 组件与样式
| 库 | 版本 | 用途 |
|---|---|---|
| Naive UI | ^2.40 | Vue 3 组件库(NButton、NCard、NMenu、NDialog 等) |
| UnoCSS | ^0.65 | 原子化 CSS 引擎(含 Attributify 模式) |
| @vicons/ionicons5 | ^0.12 | Ionicons 5 图标库的 Vue 封装 |
国际化
| 库 | 版本 | 用途 |
|---|---|---|
| vue-i18n | 9 | 中英文界面切换,locale 参数传后端控制回复语言 |
网络请求
| 库 | 版本 | 用途 |
|---|---|---|
| Axios | ^1.7 | HTTP 客户端(@shice/api 包),含拦截器、Token 刷新 |
内容渲染
| 库 | 版本 | 用途 |
|---|---|---|
| marked | ^18.0 | Markdown → HTML 渲染(AI 回复消息) |
| html2pdf.js | ^0.14 | 对话内容导出为 PDF |
构建工具链
| 库 | 版本 | 用途 |
|---|---|---|
| Vite | ^6.1 | 前端构建与开发服务器 |
| @vitejs/plugin-vue | ^5.2 | Vite Vue SFC 支持 |
| Turborepo | ^2.4 | Monorepo 任务编排(并行构建、缓存) |
| vue-tsc | ^2.2 | Vue SFC 类型检查 |
| pnpm | 9.15 | 包管理器(corepack 启用) |
Electron 桌面(apps/desktop,可选)
| 库 | 版本 | 用途 |
|---|---|---|
| Electron | ^34 | 桌面壳,加载 Vite 开发服或打包后的 web-dist |
| electron-builder | ^25 | 打 dmg / zip / AppImage 等安装产物 |
| concurrently | ^9 | 开发时并行跑 Vite 与 Electron |
| wait-on | ^8 | 等待 http://127.0.0.1:3000 后再启动 Electron |
| cross-env | ^7 | 跨平台环境变量 |
后端 (Go)
Web 框架
| 库 | 版本 | 用途 |
|---|---|---|
| Gin | v1.12 | HTTP 路由、中间件、SSE 流式响应 |
Agent 框架
| 库 | 版本 | 用途 |
|---|---|---|
| Google ADK Go | v1.1.0 | Agent Development Kit — 多 Agent 编排、模型抽象、子 Agent 路由 |
| google.golang.org/genai | v1.53.0 | Google Generative AI 类型定义(Content、Part、GenerateContentConfig) |
Agent 系统(backend/internal/agent/)基于 Google ADK 构建:
| 模块 | ADK 包 | 说明 |
|---|---|---|
OpenAIModel | model.LLM | 实现 ADK 模型接口,调用 OpenAI 兼容 API(OpenAI、DeepSeek 等) |
MockModel | model.LLM | 无需 API Key 的本地 Mock |
| 4 个子 Agent | llmagent.New() | ProfileAgent / AnalyzerAgent / StrategistAgent / WriterAgent |
Orchestrator | — | LLM 意图分类 + 关键词降级 + 双 Agent Pipeline |
EmotionExtractor | model.LLM | 异步情绪提取 |
| ADK Runner | runner.Runner | Agent 执行引擎 |
| ADK Session | session.InMemoryService() | 会话状态管理,存储对话事件 |
| ADK Memory | memory.InMemoryService() | 长期记忆 — 跨会话关键词检索 |
| Session Summary | — | 每轮对话后 LLM 生成滚动摘要(chat_sessions.summary) |
数据库与缓存
| 库 | 版本 | 用途 |
|---|---|---|
| GORM | v1.31 | Go ORM,模型定义、自动迁移、CRUD |
| gorm/driver/mysql | v1.6 | GORM MySQL 驱动 |
| go-redis | v9.18 | Redis 客户端(配额计数、策略线程历史、限流) |
认证与安全
| 库 | 版本 | 用途 |
|---|---|---|
| golang-jwt/jwt | v5.3 | JWT Access / Refresh Token 签发与校验 |
| golang.org/x/crypto | v0.50 | bcrypt 密码哈希 |
配置管理
| 库 | 版本 | 用途 |
|---|---|---|
| Viper | v1.21 | YAML 配置加载 + 环境变量覆盖 |
| gotenv | v1.6 | .env 文件加载(Langfuse 密钥等) |
日志
| 库 | 版本 | 用途 |
|---|---|---|
| Zap | v1.27 | 高性能结构化日志 |
可观测
| 库 | 版本 | 用途 |
|---|---|---|
| langfuse-go | v1.3 | LLM 可观测(Trace / Generation / Span 上报) |
基础设施与部署
| 组件 | 版本 | 用途 |
|---|---|---|
| MySQL | 8.0 | 主数据库(用户、人物、对话、情绪快照等) |
| Redis | 7-alpine | 缓存、配额计数、策略线程状态与历史 |
| Nginx | alpine | 反向代理(API)、前端静态文件服务、SSE 透传 |
| Docker | — | 容器化运行全部服务 |
| Docker Compose | v2 | 多容器编排(开发 + 生产) |
| Certbot / Let's Encrypt | — | HTTPS 证书自动申请与续签 |
| Qdrant | latest | 向量数据库(预留,暂未启用) |
| MinIO | latest | 对象存储(预留,暂未启用) |
内部包(Monorepo)
前端 Monorepo 拆分为 4 个 workspace:* 内部包,均非第三方但在此说明依赖关系:
| 包 | 职责 | 外部依赖 |
|---|---|---|
@shice/shared | 类型定义、常量、工具函数 | (无) |
@shice/api | HTTP 客户端封装 | axios |
@shice/stores | Pinia Store(用户、对话) | pinia |
@shice/composables | 业务逻辑 Hook | (仅内部包) |