catai
Node.js环境本地运行GGUF大模型,三行命令开启AI聊天
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Node.js环境本地运行GGUF大模型,三行命令开启AI聊天
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Catai 项目 Logo
想象这样一个场景:你在深夜调试代码,不想把私密对话上传到 OpenAI 服务器,又嫌 Ollama 命令行太简陋——Catai 正是为这类需求而生。它让你在 Node.js 环境里,通过几行代码或一条 CLI 命令,把 GGUF 格式的大语言模型跑在本地上,用浏览器打开一个带实时流式输出的聊天界面。
Catai 的作者 Ido S. 同时维护着 node-llama-cpp——一个将 llama.cpp 绑定到 Node.js 的底层库。llama.cpp 本身只有 C++ API,集成门槛较高。Ido 在项目中收到大量"能不能更简单一点"的请求,于是基于 node-llama-cpp 封装出了 Catai,定位是开箱即用的本地 AI 聊天工具包,而非又一个底层推理引擎。
这个定位让它填补了 Ollama(封装过度)与 llama.cpp(封装不足)之间的空白:开发者可以像引入一个 npm 包一样引入 Catai,在自己的 Node.js 应用里嵌入 AI 对话能力,或者直接用 CLI 启动一个完整的 Web 聊天界面。
Catai 的使用路径极为简洁,整个流程只有三个步骤:
第一步:安装(npm 全局安装)
npm install -g catai
第二步:下载模型
catai install qwen3-4b-q4_k_m
内置模型市场(来自 models.json),支持 Qwen、Llama3、Mistral 等主流 GGUF 模型,按量化精度(Q4_K_M、Q8_0 等)分类。模型默认下载到 ~/catai 目录,可通过 CATAI_DIR 环境变量自定义。
第三步:启动聊天
catai up
命令执行后自动打开浏览器,进入本地 Web 聊天界面,支持实时 token 流式输出、Markdown 代码高亮、多轮对话上下文保持。
对于需要在应用内嵌入 AI 的开发者,Catai 提供了 createChat() 工厂函数:
import {createChat} from 'catai';
const chat = await createChat(); // 使用默认安装的模型
const response = await chat.prompt('写一个100字的故事', token => {
process.stdout.write(token); // 流式输出
});
如果想连接远程部署的 Catai 服务(多用户共享 GPU 服务器场景),还提供了 RemoteCatAI 类,基于 WebSocket 协议通信。
从代码目录树可以清晰看出 Catai 的三层架构:
| 层级 | 目录 | 职责 |
|---|---|---|
| CLI 入口 | server/src/cli/ | 命令行解析(install/serve/use/models 等子命令),封装 postinstall 迁移逻辑 |
| 核心推理 | server/src/manage-models/ | 模型下载管理、绑定类(bind-class)、node-llama-cpp-v2 调用封装 |
| Web 服务 | server/src/server/ | 基于 @tinyhttp 的 HTTP API + WebSocket 聊天通道 + 静态文件服务 |
客户端分为两个版本:
这种双客户端策略体现了项目演进过程——React 版本功能更丰富,老版本 Svelte 客户端保留以兼容现有用户。
Catai 的 Web UI 不是简陋的文本框,而是一个完整的聊天产品:
Catai 依赖 node-llama-cpp 运行模型,硬件需求取决于模型大小:
| 模型规模 | 量化精度 | 最低内存 | 磁盘空间 | GPU |
|---|---|---|---|---|
| 4B 参数 | Q4_K_M | ~8GB RAM | ~3GB | 可选(CUDA加速) |
| 8B 参数 | Q4_K_M | ~12GB RAM | ~5GB | 推荐 |
| 14B+ 参数 | Q4_K_M | ~16GB RAM | ~10GB | 强烈推荐 |
CUDA 支持通过 catai cpp --cuda 重新编译 llama.cpp 二进制文件开启。项目预编译了多个平台二进制(darwin-x64/arm64、linux-x64/arm64/armv7l/ppc64le、win32-x64-msvc),大多数用户无需手动编译。
Catai 明确不追求的功能边界值得注意:
Catai 所在的赛道——本地 LLM 运行工具——在过去两年经历了爆发式增长:Ollama、llama.cpp server、text-generation-webui 各自占领不同用户群。Catai 的差异化在于 Node.js 生态优先:
models.json)降低了"选模型"的认知负担,新手不需要理解 GGUF 量化参数就能上手项目在 GitHub 收获 495 颗星(持续增长),作者保持着高频维护(最新版本 8.0.0,2024 年内多次发布),社区 Issue 反馈积极。对于希望在 Node.js 环境中快速实验本地 LLM 的开发者,Catai 是目前最顺滑的入口之一。