目录

一、框架

技术栈

二、技术难点

1. 多模型 Provider 统一抽象层

2. 沙箱执行系统 (Sandbox)

3. 知识库/RAG 系统

4. 跨平台适配 (Electron + Capacitor + Web)

5. 流式消息渲染

6. 技能/插件系统

7. 状态管理复杂度

8. MCP 协议集成

三、目前实现的功能(持续更新)

1、核心聊天功能

2、Agent 模式

3、知识库系统

4、图片生成

5、语音功能

6、个性化

7、MCP 协议

8、技能系统

9、设置与配置

10、平台与基础设施

11、开发者工具


一、框架

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)
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐