Skip to content

TypeScript · ESM · Plugin Runtime

Zhin.js

用 TypeScript 写一次聊天机器人,同时跑在 QQ、微信、Discord、Telegram 等 20+ 平台。默认只是小巧的 IM 框架,需要时再加 AI。

IM 核心 <10MBNode ≥20.19MIT
zsh
$ npm create zhin-app my-bot -y
$ cd my-bot && pnpm dev
✔ Bot 已启动 —— 不需要平台账号,也不需要模型 Key

你想做什么?

不需要先读完整套架构。挑一个眼下的目标,每条路径都能在一次会话内走完。

为什么是 Zhin.js

01

一套代码,20+ 平台

QQ、微信、企业微信、钉钉、飞书、Discord、Telegram、Slack、KOOK、LINE……业务代码只面对一种统一消息,平台差异交给适配器。

02

写功能 = 放一个文件

commands/hello/index.ts 就是 /hello 命令。中间件、组件、定时任务、AI 工具同理,不用手写注册代码。

03

改代码不用重启

保存即热重载;正在处理的消息用旧版本跑完,新代码报错时旧版本继续服务,Bot 不会因为一次手滑而掉线。

04

零账号也能开发

内置 Sandbox 模拟聊天窗口,不用申请任何平台账号或模型 Key,就能完整开发和测试。

05

浏览器里管理

打开 console.zhin.dev 填入地址和 Token:发测试消息、看日志、改配置、管插件,无需部署前端。

06

AI 按需加装

默认只有不到 10MB 的 IM 核心。运行 npx zhin setup --ai 即可接入大模型、工具、记忆与 MCP。

一个 Bot 长什么样

最小形态:一个 bot.ts 就是整个机器人。

ts
import { definePlugin } from 'zhin.js';
import { defineCommand } from 'zhin.js/command';

export default definePlugin({
  name: 'my-bot',
  setup({ addCommand }) {
    addCommand('hello', defineCommand({
      description: '打招呼',
      execute: () => 'Hello from Zhin!',
    }));
  },
});

功能变多后:每个能力一个文件,放进约定目录即自动注册。

text
my-bot/
├── plugin.ts                 # 入口:definePlugin()
├── commands/hello/index.ts   # /hello 命令
├── middlewares/…             # 关键词回复、过滤
├── tools/…                   # 给 AI 调用的工具(可选)
└── zhin.config.yml           # 端口、平台凭据、模型等配置

10 分钟跑通(无需任何账号或 Key):

bash
npm create zhin-app my-bot -y
cd my-bot && pnpm dev
  1. 打开 console.zhin.dev
  2. 填入终端打印的地址和 .env 里的 HTTP_TOKEN
  3. 在 Sandbox 里发送 /hello

接下来