MCPcopy Index your code
hub / github.com/ChatLab/ChatLab

github.com/ChatLab/ChatLab @v0.29.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.29.0 ↗ · + Follow
5,371 symbols 15,037 edges 842 files 337 documented · 6% updated 1d agov0.30.0 · 2026-07-04★ 6,86710 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<img src="https://github.com/ChatLab/ChatLab/raw/main/public/images/banner.png" alt="ChatLab" title="ChatLab" width="500" />

聊天记忆驱动的 AI Agent

English | 简体中文

官网 · 文档 · 快速开始 · 路线图 · Releases

ChatLab 是一个专注于聊天记录分析的本地化应用。通过 AI Agent和灵活的 SQL 引擎,你可以自由地分析你的聊天记录数据。

目前已支持:WhatsApp、LINE、QQ、Discord、Instagram、Telegram、iMessage、Google Chat。即将支持:Messenger、KakaoTalk。

首次安装?从这里开始:快速开始

核心特性

  • 🚀 极致性能:使用流式计算与多线程并行架构,就算是百万条级别的聊天记录,依然拥有丝滑交互和响应。
  • 🔒 保护隐私:聊天记录和配置都存在你的本地数据库,所有分析都在本地进行(AI 功能例外)。
  • 🤖 智能 AI Agent:集成 24+ Function Calling 工具,支持动态调度,深度挖掘聊天记录中的更多有趣。
  • 📊 多维数据可视化:提供活跃度趋势、时间规律分布、成员排行等多个维度的直观分析图表。
  • 🧩 格式标准化:通过强大的数据抽象层,抹平不同聊天软件的格式差异,即使是再小众的聊天软件,也能分析。

安装

桌面端

前往官网GitHub Releases 下载对应操作系统的安装包,双击安装即可。

CLI

需要 Node.js ≥ 20。

npm i chatlab-cli -g

启动 ChatLab:

chatlab start            # 启动 API + Web UI,并在浏览器中打开
chatlab start --no-open  # 启动 API + Web UI,但不自动打开浏览器
chatlab start --headless # 仅启动 API,不挂载 Web UI(供脚本 / AI Agent 调用)

常用选项:--port <端口>(默认 3110)、--host <地址>--token <令牌>

如果希望服务常驻后台(开机自启 + 崩溃自动重启):

chatlab start --daemon   # 注册为系统服务(macOS / Linux)
chatlab status           # 查看常驻状态
chatlab stop             # 停止并取消常驻

完整使用说明请见快速开始指南

使用指南

预览界面

预览更多请前往官网 chatlab.fun

预览界面

架构概览

ChatLab 是一个基于 pnpm monorepo 的工程,桌面端使用 Electron + Vue 3 + Nuxt UI + Tailwind CSS,核心业务逻辑沉淀在共享包(@openchatlab/core@openchatlab/node-runtime@openchatlab/tools),桌面端与 CLI 服务端复用同一份逻辑,保持功能同步。

数据流分五个阶段:格式嗅探 → 流式解析 → 本地落盘 → SQL + AI 查询 → 可视化呈现

详细架构请参考项目文档

架构原则

  • Local-first by default:原始聊天记录、索引与配置默认留在本地,优先保护隐私边界。
  • Streaming over buffering:以流式解析和增量处理为核心,面向大体量导出文件保持稳定吞吐。
  • Composable intelligence:AI 能力通过 Agent + Tool Calling 组合,避免将业务逻辑硬编码到单一模型。
  • Schema-first evolution:围绕统一数据结构构建导入、查询、分析与可视化,降低演进成本。

本地开发

完整协作者说明见开发指南

环境要求

  • Node.js >= 24 < 25
  • pnpm >= 9 < 10

启动步骤

# 安装依赖
pnpm install

# 启动开发模式 — 会提示选择要启动的目标
pnpm dev

也可以直接启动指定目标:

pnpm dev:desktop   # Electron 桌面端
pnpm dev:web       # 前端 + 本地服务
pnpm dev:serve     # 仅 CLI 服务端
pnpm docs:dev      # 文档站

若 Electron 在启动时异常,可尝试使用 electron-fix

npm install electron-fix -g
electron-fix start

隐私政策与用户协议

使用本软件前,请阅读 隐私政策与用户协议

社区

提交 Pull Request 前请遵循以下原则:

  • 明显的 Bug 修复可直接提交
  • 对于新功能,请先提交 Issue 进行讨论,未经讨论直接提交的 PR 会被关闭
  • 一个 PR 尽量只做一件事,若改动较大,请考虑拆分为多个独立的 PR
  • 本地运行、目录职责、测试检查和 AI 协作说明见开发指南

感谢所有为 ChatLab 做出贡献的人!

License

AGPL-3.0 License

Extension points exported contracts — how you extend this code

AsyncSqlExecutor (Interface)
(no doc) [8 implementers]
packages/core/src/query/message-query-functions.ts
PreparedStatement (Interface)
(no doc) [9 implementers]
packages/node-runtime/src/import/streaming-importer.ts
ToolDataProvider (Interface)
(no doc) [4 implementers]
packages/tools/src/types.ts
HttpFetcher (Interface)
(no doc) [4 implementers]
packages/sync/src/types.ts
ImportAdapter (Interface)
(no doc) [4 implementers]
src/services/import/types.ts
JsonlHeader (Interface)
Header 行结构
packages/parser/src/formats/chatlab-jsonl.ts
Logger (Interface)
(no doc) [2 implementers]
packages/config/src/migrations/types.ts
ChatApi (Interface)
* ChatApi — 导入、迁移、Demo(数据查询/分析/成员/SQL 已迁移到 HTTP)
apps/desktop/preload/index.d.ts

Core symbols most depended-on inside this repo

get
called by 459
packages/core/src/interfaces/database-adapter.ts
prepare
called by 434
packages/core/src/interfaces/database-adapter.ts
set
called by 308
packages/node-runtime/src/semantic-index/config.ts
error
called by 230
packages/sync/src/types.ts
run
called by 227
packages/node-runtime/src/import/streaming-importer.ts
now
called by 199
packages/node-runtime/src/services/contacts/service.ts
get
called by 186
packages/core/src/query/message-query-functions.ts
exec
called by 157
packages/core/src/interfaces/database-adapter.ts

Shape

Function 2,859
Method 1,278
Interface 1,019
Class 210
Enum 5

Languages

TypeScript100%

Modules by API surface

apps/desktop/main/worker/workerManager.ts85 symbols
packages/node-runtime/src/services/people/relationships/compute.ts84 symbols
src/stores/aiChat.ts72 symbols
src/services/data/types.ts64 symbols
src/services/data/fetch.ts55 symbols
packages/node-runtime/src/services/contacts/service.ts52 symbols
packages/node-runtime/src/ai/chats.ts52 symbols
src/stores/apiServer.ts51 symbols
packages/node-runtime/src/services/people/relationships/service.ts51 symbols
packages/node-runtime/src/semantic-index/worker-client.ts48 symbols
packages/node-runtime/src/semantic-index/service.ts48 symbols
packages/tools/src/types.ts41 symbols

Dependencies from manifests, versioned

@earendil-works/pi-agent-core0.74.2 · 1×
@earendil-works/pi-ai0.74.2 · 1×
@electron-toolkit/preload3.0.1 · 1×
@electron-toolkit/tsconfig1.0.1 · 1×
@electron-toolkit/utils4.0.0 · 1×
@electron/rebuild4.0.4 · 1×
@fastify/multipart10.0.0 · 1×
@fastify/static9.1.3 · 1×
@modelcontextprotocol/sdk1.12.1 · 1×
@node-rs/jieba2.0.1 · 1×
@nuxt/ui4.2.1 · 1×

For agents

$ claude mcp add ChatLab \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact