支持国产大模型和国产通讯软件的智能助手框架
Mozi 是一个轻量级的 AI 助手框架,专注于国产生态。它提供统一的接口对接多种国产 AI 模型(DeepSeek、Qwen、Kimi 等),支持 OpenAI Function Calling,并能在飞书、钉钉、WebChat 等平台上运行。
Mozi 的架构设计参考了 Moltbot,但专注于不同的使用场景。
| 特性 | Mozi | Moltbot |
|---|---|---|
| 定位 | 国产生态优先的轻量框架 | 全功能个人 AI 助手 |
| 代码量 | ~16,000 行 (64 文件) | ~516,000 行 (3,137 文件) |
| 国产模型 | ✅ DeepSeek、Qwen、Kimi、阶跃星辰、MiniMax | ❌ 仅 Anthropic、OpenAI |
| 国产通讯 | ✅ 飞书、钉钉原生支持 | ❌ WhatsApp、Telegram、Slack 等海外平台 |
| 部署复杂度 | 简单,npm install 即可 | 复杂,需要配置多个系统权限 |
| Node.js 版本 | ≥18 | ≥22 |
| 上手门槛 | 低,配置一个 API Key 即可使用 | 高,需要配置 OAuth、TCC 权限等 |
| 资源占用 | 轻量 | 较重(菜单栏应用、语音唤醒等) |
| 适用场景 | 企业内部机器人、国内团队协作 | 个人多设备助手、海外平台集成 |
Mozi 用 3% 的代码量实现了核心功能,专注简洁高效,易于理解和二次开发。
- 国产模型一站式支持 — 无需翻墙,直接对接 DeepSeek、通义千问等国产大模型
- 飞书/钉钉开箱即用 — 原生支持国内主流办公平台,配置简单
- 轻量快速 — 专注核心功能,无冗余依赖,启动快、资源占用少
- 低门槛 — 一个 API Key + 三行配置即可运行,适合快速验证和部署
- 企业友好 — 适合国内企业内网环境,无外部依赖
- 需要 WhatsApp、Telegram、Discord 等海外平台支持
- 需要语音唤醒、Live Canvas 等高级交互功能
- 需要多设备同步、macOS/iOS 深度集成
- 个人使用场景,设备控制需求
- 多模型支持 — DeepSeek、ModelScope (Qwen)、Kimi、阶跃星辰、MiniMax,以及 OpenAI/Anthropic 兼容格式
- 多平台通道 — WebChat、飞书、钉钉,统一的消息处理接口
- Function Calling — 原生支持 OpenAI tools/tool_choice 参数
- 15+ 内置工具 — 文件读写、Bash 执行、代码搜索、网页获取等
- 会话管理 — 上下文压缩、会话持久化、Memory 向量记忆
- 可扩展 — 插件系统、Hook 事件、自定义工具
- Node.js >= 18
- npm / pnpm / yarn
# 克隆项目
git clone https://github.com/King-Chau/mozi.git
cd mozi
# 安装依赖
npm install
# 构建项目
npm run build创建配置文件 config.local.json5(会被 git 忽略):
{
providers: {
// 至少配置一个模型提供商
deepseek: {
apiKey: "sk-your-deepseek-key"
}
},
agent: {
defaultProvider: "deepseek",
defaultModel: "deepseek-chat"
}
}或者使用环境变量:
export DEEPSEEK_API_KEY=sk-your-key# 启动 WebChat(本地调试)
npm run dev -- start --web-only
# 或构建后启动
npm start -- start --web-only打开浏览器访问 http://localhost:3000 即可开始对话。
如需连接飞书或钉钉,添加相应配置后启动完整服务:
npm start -- start| 提供商 | 环境变量 | 说明 |
|---|---|---|
| DeepSeek | DEEPSEEK_API_KEY |
推理能力强、性价比高 |
| DashScope | DASHSCOPE_API_KEY |
阿里云灵积,通义千问商业版,稳定高并发 |
| 智谱 AI | ZHIPU_API_KEY |
GLM-4.7/4.6/4.5 系列,清华技术团队,有免费额度 |
| ModelScope | MODELSCOPE_API_KEY |
阿里云魔搭社区,Qwen 系列,有免费额度 |
| Kimi | KIMI_API_KEY |
长上下文支持 |
| 阶跃星辰 | STEPFUN_API_KEY |
多模态能力 |
| MiniMax | MINIMAX_API_KEY |
语音、视觉能力 |
| OpenAI | OPENAI_API_KEY |
官方 API 或兼容接口 |
| Ollama | OLLAMA_BASE_URL |
本地部署 |
支持 config.local.json5、config.json5、config.yaml 等格式,优先级从高到低。
{
// 模型提供商配置
providers: {
deepseek: {
apiKey: "sk-xxx"
},
dashscope: {
apiKey: "sk-xxx" // 阿里云 API Key
},
zhipu: {
apiKey: "xxx" // 智谱 API Key
},
modelscope: {
apiKey: "ms-xxx"
},
// 自定义 OpenAI 兼容接口
"custom-openai": {
id: "my-provider",
name: "My Provider",
baseUrl: "https://api.example.com/v1",
apiKey: "xxx",
models: [
{
id: "model-id",
name: "Model Name",
contextWindow: 32768,
maxTokens: 4096,
supportsVision: false
}
]
}
},
// 通讯平台配置
channels: {
feishu: {
appId: "cli_xxx",
appSecret: "xxx"
},
dingtalk: {
appKey: "xxx",
appSecret: "xxx"
}
},
// Agent 配置
agent: {
defaultProvider: "deepseek",
defaultModel: "deepseek-chat",
temperature: 0.7,
maxTokens: 4096,
systemPrompt: "你是墨子,一个智能助手。"
},
// 服务器配置
server: {
port: 3000,
host: "0.0.0.0"
},
// 日志级别
logging: {
level: "info" // debug | info | warn | error
}
}| 类别 | 工具 | 说明 |
|---|---|---|
| 文件 | read_file |
读取文件内容 |
write_file |
写入/创建文件 | |
edit_file |
精确字符串替换 | |
list_directory |
列出目录内容 | |
glob |
按模式搜索文件 | |
grep |
按内容搜索文件 | |
apply_patch |
应用 diff 补丁 | |
| 命令 | bash |
执行 Bash 命令 |
process |
管理后台进程 | |
| 网络 | web_search |
网络搜索 |
web_fetch |
获取网页内容 | |
| 其他 | current_time |
获取当前时间 |
calculator |
数学计算 |
- 登录 飞书开放平台,创建企业自建应用
- 获取 App ID 和 App Secret
- 启用「机器人」能力
- 配置事件订阅地址:
http://your-server:3000/webhook/feishu - 订阅事件:
im.message.receive_v1 - 添加权限:
im:message、im:message.group_at_msg
- 登录 钉钉开放平台,创建企业内部应用
- 获取 AppKey 和 AppSecret
- 添加「机器人」能力
- 配置消息接收地址:
http://your-server:3000/webhook/dingtalk
# 启动服务
npm start -- start # 完整服务(含飞书/钉钉)
npm start -- start --web-only # 仅 WebChat
npm start -- start --port 8080 # 指定端口
# 其他命令
npm start -- check # 检查配置
npm start -- models # 列出可用模型
npm start -- chat # 命令行聊天src/
├── agents/ # Agent 核心(会话、上下文压缩)
├── channels/ # 通道适配器(飞书、钉钉)
├── providers/ # 模型提供商
├── tools/ # 内置工具
├── web/ # WebChat 前端
├── config/ # 配置加载
├── gateway/ # HTTP 网关
└── types/ # 类型定义
import { loadConfig, initializeProviders, getProvider } from "mozi";
const config = loadConfig();
initializeProviders(config);
const provider = getProvider("deepseek");
const response = await provider.chat({
model: "deepseek-chat",
messages: [{ role: "user", content: "你好!" }],
});
console.log(response.content);# 开发模式(自动重启)
npm run dev -- start --web-only
# 类型检查
npm run typecheck
# 构建
npm run buildApache 2.0