对比文《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 月各框架最新版本撰写。如有不准确之处,欢迎指正。

相关推荐
阿里云大数据AI技术1 小时前
DataWorks Data Agent 实战课堂(三):对话式完成数据同步与智能诊断
人工智能·agent
骇客野人1 小时前
AI全栈开发指定技术架构
人工智能
Escape2 小时前
为什么你的 AI 越聊越傻?从 Token 到 Agent,彻底搞懂 AI Agent的秘密㊙️
前端·人工智能·后端
2501_926978332 小时前
认知边缘的双向耦合:从核技术类比到智力货币时代
人工智能·经验分享·笔记·ai写作
SQDN2 小时前
Chatbox 1.22.1 获取不到模型?先验 /models,再对齐精确 model ID
人工智能·测试工具·机器学习·chatgpt·json
颜酱2 小时前
08 | 把维度值同步到 Elasticsearch(生成阶段)
人工智能·python·langchain
小马哥crazymxm2 小时前
Arxiv论文周选 (2026-W28)
论文阅读·人工智能·科技
ASKED_20192 小时前
一文阐述国内网络环境下使用NIM方法
人工智能·系统架构
GlobalHRTalk2 小时前
埃及名义雇主EOR业务概述与市场发展优势分析
大数据·运维·人工智能