聊天机器人
目录
4. 跨平台适配 (Electron + Capacitor + Web)
一、框架
chatcat-main/
├── src/
│ ├── main/ # Electron 主进程
│ │ ├── main.ts # 入口
│ │ ├── adapters/ # 平台适配器
│ │ ├── knowledge-base/ # 知识库/RAG
│ │ ├── mcp/ # MCP 协议支持
│ │ ├── sandbox/ # 沙箱执行环境
│ │ └── skills/ # 技能系统
│ │
│ ├── renderer/ # 前端渲染进程 (React)
│ │ ├── routes/ # TanStack Router 路由
│ │ ├── components/ # UI 组件 (chat, settings, voice-call 等)
│ │ ├── pages/ # 页面 (Settings, Search, Picture)
│ │ ├── stores/ # 状态管理
│ │ ├── hooks/ # 自定义 Hooks
│ │ ├── i18n/ # 国际化
│ │ └── lib/ # 工具库
│ │
│ ├── preload/ # Electron preload 脚本
│ ├── shared/ # 主进程/渲染进程共享代码
│ │ ├── models/ # AI 模型定义
│ │ ├── providers/ # 模型提供商
│ │ ├── session/ # 会话管理
│ │ └── types.ts # 共享类型
│ └── memory/ # 记忆系统
│
├── android/ # Android 原生工程
├── features/ # Feature flags 定义
├── scripts/ # 构建/工具脚本
├── .erb/ # Electron React Boilerplate 配置
├── electron.vite.config.ts # Vite 构建配置
└── electron-builder.yml # 打包配置
技术栈
- 框架: Electron + Capacitor (移动端)
- 前端: React + TanStack Router + Tailwind CSS
- 构建: Vite (electron-vite)
- 语言: TypeScript
- 包管理: pnpm (monorepo)
- 测试: Vitest + Playwright (E2E)
核心功能包括:多模型聊天、知识库/RAG、MCP 协议、语音通话、图片生成、技能系统
二、技术难点
1. 多模型 Provider 统一抽象层
src/shared/providers/definitions/ 下有 30+ 个 AI 模型提供商(OpenAI、Claude、Gemini、DeepSeek、Ollama 等),每个提供商的 API 协议、流式响应格式、认证方式都不同,需要统一抽象成一致的接口。特别是:
- OpenAI 的 Responses API (
openai-responses.ts) 与传统 Chat Completions API 差异大 - Gemini 有自己的类型系统 (
gemini-types.ts) - 本地模型(Ollama、LMStudio)需要特殊处理
2. 沙箱执行系统 (Sandbox)
src/main/sandbox/manager.ts (1625 行) 是最复杂的模块之一:
- 跨平台进程管理:Windows PowerShell vs Unix Shell 的完全不同的执行路径
- 安全隔离:读写路径白名单/黑名单 (
TASK_SANDBOX_DENY_READ_PATHS) - 会话级沙箱实例:每个会话独立的沙箱状态、工作目录、权限授权
- 进程树管理:子进程的创建、监控、超时、终止 (
killProcessTree) - 集成了
@anthropic-ai/sandbox-runtime
3. 知识库/RAG 系统
src/main/knowledge-base/ 实现了完整的 RAG 流程:
- 向量数据库:LibSQL + 向量存储 (
@mastra/libsql) - 文件解析器路由:支持多种文档格式(PDF、Office 等),有本地解析和远程解析两条路径
- Embedding + Rerank:多模型 embedding 和重排序
- 后台 Worker:异步文件处理队列,分块、索引
4. 跨平台适配 (Electron + Capacitor + Web)
同一套代码需要运行在 5 个平台上:
src/renderer/adapters/和src/main/adapters/做平台抽象src/renderer/platform/处理渲染层平台差异src/renderer/native/处理原生模块- 构建目标:Desktop (Electron)、Mobile (Capacitor)、Web (纯浏览器)
- Windows 路径处理 (
normalizeWindowsAbsolutePath)、PowerShell 兼容等
5. 流式消息渲染
src/renderer/components/chat/ 中的消息系统:
- 流式输出平滑 (
smooth-follow-output.ts):防止文字抖动的滚动跟随 - 消息 Fork (
message-forks.ts):同一对话的分支/分叉机制 - 消息时间线 (
message-timeline.ts):复杂的消息排序和渲染 - Agent 模式:工具调用、审批流程 (
PendingApprovalPill.tsx)
6. 技能/插件系统
src/main/skills/:
- 技能发现与安装 (
discovery.ts,installer.ts):从 GitHub 动态获取技能 - 用户脚本执行 (
user-exec-runner.ts):安全地执行用户定义的脚本 - 内置技能同步 (
builtin-sync.ts)
7. 状态管理复杂度
src/renderer/stores/ 有 49 个 store 文件,涉及:
- 会话管理、聊天缓存、模型选择、设置持久化
- 迁移系统 (
migration.ts):数据结构升级兼容 - 安全存储 (
safeStorage.ts):API Key 等敏感信息加密
8. MCP 协议集成
src/main/mcp/:通过 IPC-stdio 传输层实现 Model Context Protocol,让 AI 能调用外部工具。
三、目前实现的功能(持续更新)
1、核心聊天功能
- 多模型对话:支持 30+ 模型提供商(OpenAI、Claude、Gemini、DeepSeek、Ollama、Qwen 等)
- 流式输出:平滑渐进渲染,防抖动滚动跟随
- 消息分支/Fork:同一对话可分叉出不同方向
- 消息编辑/重新生成:编辑历史消息并重新生成
- 上下文管理:可配置上下文消息数量、自动压缩
- 自动标题生成:AI 自动为对话生成标题
2、Agent 模式
- 代码执行:沙箱内运行代码(Python/JS/Shell)
- 文件操作:读写文件、编辑文件
- 文件系统工具:ls、mkdir 等文件系统操作
- 知识库检索:RAG 向量搜索知识库
- 会话附件 RAG:对上传文件进行检索增强
- 网页搜索:集成多种搜索引擎(Tavily、Bocha、Bing、DuckDuckGo、Querit)
- 地理位置:基于位置的查询
- 工具调用审批:敏感操作需用户确认
- 工具调用次数限制:防止无限循环
3、知识库系统
- 文档上传解析:支持 PDF、Office 等多种格式
- 远程/本地解析器:可选本地或云端文档解析
- 向量存储:LibSQL 向量数据库
- Embedding + Rerank:多模型嵌入和重排序
- 分块预览:查看文档分块结果
4、图片生成
- AI 图片创作:独立的图片生成页面
- 多种图片模型:支持多个图片生成模型
- 图片存储与管理
5、语音功能
- 语音通话 (Voice Call):实时语音对话界面 + 波形可视化
- TTS 文字转语音:支持多种 TTS 引擎
- ASR 语音识别:支持 OpenAI Whisper 和系统级 ASR
6、个性化
- Persona 人设系统:自定义 AI 角色人设
- 人设蒸馏:从对话中提取/精炼人设
- Copilot 市场:浏览/搜索/使用社区 Copilot
- 记忆系统:AI 记住用户偏好,支持导入导出
7、MCP 协议
- MCP 工具集成:通过 Model Context Protocol 接入外部工具
- MCP 状态管理与 UI
8、技能系统
- 内置技能:预装技能
- 技能发现与安装:从 GitHub 动态获取
- 用户自定义脚本执行
9、设置与配置
- 通用设置:主题、语言、界面颜色自定义、暗色/亮色模式
- 聊天设置:System Prompt、温度、上下文长度、消息布局
- 模型设置:默认模型、提供商配置
- 快捷键配置
- 文档解析器配置
- Web 搜索引擎配置
- 数据备份与恢复:ZIP 格式导入导出
- Humanizer:AI 文本人性化处理
10、平台与基础设施
- 跨平台:Windows / macOS / Linux (Electron) + iOS / Android (Capacitor) + Web
- 数据迁移系统:版本升级时的数据结构兼容
- 安全存储:API Key 加密存储
- 自动更新
- OAuth 认证
- Deep Link 处理
- 国际化 (i18n):多语言支持
11、开发者工具
- Dev 页面:UI 清单、存储调试、CSS 变量、Session RAG 调试
- Storybook:组件文档与预览
- 日志与错误上报 (Sentry)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)