对比文《IM Bot 框架怎么选?Zhin vs Koishi vs NoneBot》

2026 年,IM Bot 框架怎么选?Zhin.js vs Koishi vs NoneBot 深度对比

为什么需要 Bot 框架?

2026 年了,做一个聊天机器人早不是"监听消息 → 匹配关键词 → 回复"这么简单。你可能需要:

  • 同一套代码跑在 QQ、Discord、Telegram、钉钉、飞书上
  • 接大模型做 AI 对话,还要带记忆、工具调用、安全管控
  • 热重载,改了插件不用重启 bot
  • 一个管理后台,不用 SSH 到服务器改配置

目前中文社区最活跃的三个框架:Koishi (3.8k star)、NoneBot (6k+ star)、Zhin.js(130+ star)。star 数差距很大,但技术力和适用场景差异更大。

一张表看懂差异

维度 Zhin.js 5.x Koishi 4.x NoneBot 2.x
语言 TypeScript (ESM-only) TypeScript Python
核心体积 <10MB ~30MB+ pip install 后 ~20MB+
AI Agent 内建(@zhin.js/agent:工具/记忆/MCP/A2A/安全策略) 插件(第三方) 插件(第三方)
平台适配器 20 个(QQ/微信/Discord/Telegram/Slack/钉钉/飞书/GitHub/邮件...) 10+ 个 10+ 个(OneBot 为主)
插件系统 约定目录 + definePlugin() 注册式 装饰器
热重载 HMR(文件级) 整体重载 需重启
管理后台 Remote Console(浏览器) Koishi Console(内嵌 Web) 无官方
安全策略 5 层执行策略 + 文件策略 + 网络策略 + 审计 基础权限 基础权限
MCP 支持 Client + Server 双向
架构约束 32 个自动化 harness 检查

架构设计:谁更"工程化"?

Zhin.js:严格分层 + Harness 守护

Zhin 的依赖层级是单向的:

复制代码
kernel → ai → core → agent → zhin

这不只是文档上画个图 --- 有 check-architecture-layers.mjs 在 CI 里自动检查,任何违反层级方向的 import 都会让 CI 红掉

32 个 harness 检查脚本覆盖:

  • 发送链合规(不允许绕过 Adapter.sendMessage
  • 安装体积预算(zhin.js 必须 <10MB)
  • 插件规范(必须有 package.json、src/、tests/、README.md
  • 文档链接有效性
  • 架构层级违反检测

这种 "harness engineering" 文化在中文开源社区非常少见。

Koishi:模块化但松散

Koishi 的插件系统很灵活,但没有强制的架构边界。插件之间可以随意 import,依赖方向靠开发者自觉。这在小规模时没问题,但规模变大后容易出现循环依赖和意外耦合。

NoneBot:Python 生态优势

NoneBot 的优势在 Python 生态 --- 如果你的团队主力写 Python,它的学习曲线最低。但 Python 的动态类型在大型 bot 项目中会成为负担,TypeScript 的编译期类型检查在这里有明确优势。

AI 能力:差距最大的地方

这是 Zhin.js 和另外两个框架拉开差距最大的维度。

Zhin.js:AI 是一等公民

yaml 复制代码
# zhin.config.yml --- 3 行启用 AI
ai:
  providers:
    main:
      sdk: openai
      apiKey: ${AI_API_KEY}
  agents:
    zhin:
      provider: main
      model: gpt-4o

安装 @zhin.js/agent 后你得到的不只是"套一层 LLM API":

  • 安全策略栈:5 层执行策略(deny → allowlist → approval → sandbox → full)、文件读写策略、网络域名白名单、私有 IP 阻止
  • MCP Client:连接外部工具服务器
  • A2A Server:Agent-to-Agent 协议,bot 可以被其他 AI Agent 调用
  • 会话记忆:持久化 + 自动压缩 + 多轮上下文管理
  • 子 Agent 编排:主 Agent 可以 spawn 专业子 Agent
  • 6 种 Provider:OpenAI / Anthropic / DeepSeek / Google / Ollama / 任意 OpenAI 兼容接口

Koishi & NoneBot:AI 靠第三方

Koishi 和 NoneBot 的 AI 能力来自社区插件,质量参差不齐,没有统一的安全策略,没有 MCP 支持,没有 Agent 编排。

开发体验

30 秒启动

bash 复制代码
npm create zhin-app my-bot -y
cd my-bot
pnpm dev

打开 console.zhin.dev → 连接 → 在 Sandbox 里发消息。不需要任何 API Key、不需要 QQ 号、不需要配置 WebSocket

插件开发

ts 复制代码
// commands/hello.ts --- 就这一个文件
import { defineCommand } from '@zhin.js/command'

export default defineCommand({
  description: '打招呼',
  execute: ({ sender }) => `你好,${sender.name}!`,
})

放在 commands/ 目录下就自动注册,改了自动热重载。不需要 app.plugin(),不需要装饰器,不需要重启。

AI 工具开发

ts 复制代码
// tools/weather.ts
import { defineAgentTool } from '@zhin.js/tool'
import { z } from 'zod'

export default defineAgentTool({
  name: 'get_weather',
  description: '查询天气',
  parameters: z.object({ city: z.string() }),
  execute: async ({ city }) => {
    const data = await fetchWeather(city)
    return `${city}:${data.temp}°C,${data.desc}`
  },
})

什么时候选哪个?

场景 推荐 原因
Python 团队,OneBot 协议为主 NoneBot 生态成熟,Python 原生
需要 GUI 安装器,新手友好 Koishi Console 安装体验好
多平台 + AI Agent,TypeScript 团队 Zhin.js AI 一等公民,20+ 平台,架构严谨
生产级 bot,需要安全管控 Zhin.js 唯一有 5 层安全策略 + 审计日志的
需要 MCP / A2A 互操作 Zhin.js 唯一内建支持的

总结

Zhin.js 的 star 数(132)和它的技术力严重不匹配。它的架构严谨度、AI 能力深度、安全策略完备性在中文 IM 框架中是最高的。如果你在做"严肃的 bot 产品"而不是"周末 hobby project",值得认真看一下。

bash 复制代码
npm create zhin-app my-bot -y && cd my-bot && pnpm dev

作者注:本文基于 2026 年 7 月各框架最新版本撰写。如有不准确之处,欢迎指正。

相关推荐
fthux35 分钟前
招聘季实测:我用 TraeWork 搭了一套 AI 简历初筛系统
人工智能·ai编程·trae
SLD_Allen41 分钟前
NVIDIA KAI Scheduler深度解析——Kubernetes原生AI调度器的架构、原理与实践
人工智能·架构·kubernetes
小玮看世界1 小时前
从“画图”到“Mermaid”:AI语义理解与架构绘制的演进之路
人工智能·深度学习·计算机视觉
小岐AI观1 小时前
智赋岐黄适合养生馆吗?
大数据·人工智能·物联网
YOLO数据集集合1 小时前
煤炭物料检测数据集:基于YOLO26的矿山传送带智能“哨兵”
人工智能·yolo·数据挖掘·煤炭·煤炭检测·矿山传送带·传送带异物
深小乐2 小时前
DeepSeek Harness 强是真的强,普通用户可以再等等
人工智能
蜡台3 小时前
大模型算力下放客户端:浏览器/本地设备全落地方案解析
人工智能·ai