chatd
完全离线的本地文档 AI 助手,数据永不离开你的电脑
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
完全离线的本地文档 AI 助手,数据永不离开你的电脑
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你可能有过这样的经历:想把一份 200 页的 PDF 合同丢给 AI 总结,结果弹出一个"正在上传到服务器"的提示——文件已经出境了,你甚至不知道它会被存多久、谁会看到。这不是想象,这是 2024 年前后企业数据泄露的常态。
开发者 BruceMacD 也碰到了这个问题。他需要在一个无法访问互联网的隔离机器上处理敏感文档,但市面上的"AI 文档助手"全都要求联网。2023 年,他决定自己动手,写一个完全离线运行的本地 AI 应用——Chatd 诞生了。
这个项目并不是那种"又一个小工具",它在 GitHub 上获得了超过 1000 颗星,且进入了 GitHub Trending。更重要的是,它解决了一个真实且普遍的需求:在不牺牲隐私的前提下,用大模型理解自己的文档。
Chatd 的工作流程是一个典型的 RAG(检索增强生成)管道,但完全跑在本地:
第一步:文档解析(支持 6 种格式)
项目用多个解析库处理不同格式:
@opendocsg/pdf2md(Node.js PDF 解析)mammoth(.docx → Markdown)odt2html解析后的文本被切分成行(line),交给下游处理。
第二步:向量化(本地 Embedding 模型)
这里没有调用 OpenAI 或 Cohere 的 API,而是用了 @xenova/transformers —— 这是 HuggingFace Transformers 库的 WebAssembly/Node.js 版本,可以在 Node.js 环境里直接跑 Transformer 模型。
默认模型是 Xenova/all-MiniLM-L6-v2(384 维向量,22M 参数),完全本地运行,不需要 GPU。
第三步:向量存储(Orama 全文搜索引擎)
向量存入 @orama/orama—— 一个内存中的向量数据库,支持向量相似度搜索。Chatd 用它做语义检索,找到与用户问题最相关的文档片段。Orama 本身是单文件、无服务器的,非常轻量。
第四步:本地 LLM 推理(Ollama)
Chatd 内置了 Ollama 的封装层(src/service/ollama/ollama.js)。Ollama 是一个跨平台本地 LLM 运行时,默认模型是 mistral-7b。系统做了三重兜底逻辑:
ollama serve 命令这套设计保证了零依赖运行:用户不需要安装任何外部软件,双击 chatd 可执行文件就能用。
第五步:上下文增强的对话生成
用户提问 → 提取问题向量 → Orama 语义检索 → 获取 Top-K 相关文档片段 → 拼成上下文 Prompt → Ollama 生成回答。
整个过程的数据流完全不离开本机。

图1:Chatd 主界面,底部显示 "ollama is running" 表示 Ollama 已正常连接
Chatd 的前端界面基于 Electron 构建(electron v24,@electron-forge 作为打包工具),这让它天然支持 macOS / Windows / Linux 三平台。
为了避免 LLM 推理阻塞 UI 线程,Chatd 使用了 Worker Threads(Node.js 原生多线程)。Worker 线程负责 Ollama 调用和模型管理,主线程(Electron renderer)只负责 UI 渲染和 IPC 通信。两者通过 event.reply() 机制异步传递状态——下载进度、模型加载状态、生成 token 等,都会实时推送到界面。
日志系统用了 winston,日志写到 ~/.chatd/app.log,并设置了 1MB 滚动覆盖。

图2:对话界面,用户上传 PDF 后直接提问,Ollama 本地生成回答
纯 CPU 跑 Mistral-7B 对于大多数用户来说太慢了。Chatd 支持通过 Ollama 调用 NVIDIA GPU 加速推理。
GPU 加速需要在系统级别安装 Ollama(Linux 下执行 curl https://ollama.ai/install.sh | sh),Chatd 会自动检测并使用 CUDA。Windows 的 CUDA 支持在计划中。

图3:Ollama 正常运行后,Home 界面底部显示 "ollama is running" 绿色状态
Chatd 默认用 Mistral-7B,但支持切换到任何 Ollama 库里的模型。用户只需:
ollama pull llama2 下载模型llama2)并保存支持的模型包括 LLaMA 2、Codellama、Mistral、Phi-2 等主流开源模型,显存需求从 4GB 到 24GB 不等。

图4:设置页面中选择自定义模型,输入 Ollama 库中的模型名称即可切换
Chatd 使用 @electron-forge 作为打包工具,支持以下分发格式:
.zip(含 ollama-darwin 二进制)、签名 .app(需 Apple 开发者证书).exe(Squirrel 安装程序)、.zip(需手动复制 ollama-windows-amd64.exe).deb / .rpm打包流程要求手动下载对应平台的 Ollama 二进制文件,放入 src/service/ollama/runners/ 目录,再执行 npm run package。Windows 版本暂不支持自动签名。
1. 模型质量依赖本地硬件
Mistral-7B 是开源模型里性价比很高的选择,但相比 GPT-4 或 Claude 3,在复杂推理和多步骤任务上仍有明显差距。本地运行也意味着无法享受云端模型的持续更新。
2. Embedding 模型固定
代码里硬编码了 Xenova/all-MiniLM-L6-v2,不支持切换到更大或更专业的 Embedding 模型。如果用户想处理非英文文档(特别是中文),这个模型的性能会大打折扣。
3. 仅支持文件导入,不支持网页/邮件
系统设计围绕"文件上传"展开,没有提供 URL 抓取或邮件导入功能。对于需要处理大量网页内容的场景,需要额外预处理。
4. Windows GPU 加速仍在路上
文档明确指出 Linux 支持 CUDA 加速,但 Windows 尚未支持。对于没有 Linux 机器的 Windows 用户,体验会明显受限。
Chatd 的出现不是孤立的。从 2023 年下半年开始,本地 AI 工具进入爆发期:Ollama、LM Studio、GPT4All、Jan 相继问世,共同的背景是:
Chatd 在这个生态里找到了自己的定位:轻量、无依赖、面向普通用户的本地 RAG 工具。它不是给开发者用的 CLI,而是给任何人用的"文档 AI 对话"应用。
| 维度 | 评估 |
|---|---|
| 隐私保护 | ★★★★★ 完全本地,数据零出境 |
| 易用性 | ★★★★☆ 下载即用,无需配置 Ollama |
| 多格式支持 | ★★★★ 支持 PDF/Word/Markdown 等主流格式 |
| 模型灵活性 | ★★★☆ 默认 Mistral-7B,自定义需手动下载 Ollama 模型 |
| 跨平台完成度 | ★★★☆☆ Windows GPU 加速尚未支持 |
| 中文文档支持 | ★★☆☆☆ Embedding 模型对中文支持有限 |
如果你对 AI 工具的隐私性有要求,或者需要在离线环境下处理敏感文档,Chatd 值得一试。对于需要更强推理能力的专业场景,建议配合更大的本地模型(如 LLaMA 3 70B + 量化)使用。