@jsbot-tellus/core

中文文档
2.6.0发布于 2026/11/01AGPL-3.0-or-laterTypeScriptES Module构建来源已验证

a new version of JsBot

原始使用文档
文档目录12 节
  1. 环境要求
  2. 安装
  3. 快速开始
  4. WebUI(可选)
  5. 内置命令
  6. 内置与本地插件
  7. 在线安装插件包
  8. CLI
  9. 开发与校验
  10. 发布
  11. 文档
  12. 许可证

JsBot-Tellus

基于 @snowluma/sdk 的 OneBot 11 QQ 机器人框架。

当前版本采用「内核 + 插件」架构:

  • 内核负责配置、连接、事件分发、命令匹配、权限、gating、消息发送、SQLite 存储和生命周期。
  • 插件只通过 PluginContext 使用内核能力,不直接接触 SDK client、Router 或数据库。
  • SDK 只注册一个 middleware:client.use(router.dispatch)。
  • 内置插件 core、admin 是普通源码,位于 src/plugins/,随内核一起编译。
  • poke、llm 等本地插件放在不跟踪的 plugins/,各自是独立包,从 plugins/<id>/dist 自动加载;缺少 dist 时会先尝试自动构建。

环境要求

  • Node.js ^24.22.1 || >=26.12.1(与 @snowluma/sdk 保持一致)
  • npm

安装

npm install -g @jsbot-tellus/core
jsbot --config ./bot.config.json

也可以从源码运行,见下方快速开始。

快速开始

git clone https://github.com/JsBot-Dev/JsBot-Tellus
cd JsBot-Tellus
npm ci
cp bot.config.example.json bot.config.json

编辑 bot.config.json,至少填写连接地址和账号角色。然后:

# 构建并运行
npm run build
npm start

# 或者直接从源码运行
npm run start:source

# 开发模式(Watch)
npm run dev

默认配置路径是 ./bot.config.json,默认数据目录是 ./data。从旧版升级前请先备份并移走旧配置和数据库,见迁移与回滚。

WebUI(可选)

在 bot.config.json 中启用管理后台:

{
    "webui": {
        "enabled": true,
        "host": "127.0.0.1",
        "port": 8787,
        "username": "admin",
        "password": "至少 8 位"
    }
}

然后运行 npm run build && npm start,访问 http://127.0.0.1:8787。WebUI 默认关闭,提供运行状态、会话、插件、配置、KV、日志、事件和原始 OneBot action 管理。登录后拥有完整管理权限,默认只监听本机;远程访问请使用 HTTPS 反向代理。详见 WebUI 文档。

内置命令

命令权限作用
/help、/hUser按权限和当前会话启用状态列出命令
/status、/sUser运行时长和插件状态
/roleUser显示当前用户角色
/utter <文本>Admin向当前会话发送文本
/utter raw <CQ>SuperAdmin发送原始 CQ 消息
/plugin listSuperAdmin列出已安装插件包
/plugin installSuperAdmin安装 npm 插件包
/plugin removeSuperAdmin卸载插件包
/plugin updateSuperAdmin更新插件包

/plugin 的所有子命令(包括 help 和 list)都要求 SuperAdmin。/utter.raw 已迁移为 /utter raw 子命令。

内置与本地插件

内置插件是普通源码,不需要独立的 package.json:

src/plugins/
  core/index.ts     /help、/status、/role
  admin/index.ts    /utter、/utter raw
  index.ts          内置插件清单

它们只依赖根 package.json 里的 zod,所以随内核一次 tsc 构建,产物在 dist/plugins/。

poke、llm 等本地插件放在 plugins/,该目录整体被 .gitignore 排除。每个插件都是独立包,有自己的 package.json、tsconfig.json、lockfile、node_modules 和构建脚本:

npm install --prefix plugins/poke
npm install --prefix plugins/llm
npm run build:plugin

node dist/app.js

应用启动时会固定扫描 plugins/<id>/dist,不需要路径参数。plugins/ 中没有 dist 的本地插件如果带有 build 脚本且依赖已安装,会先自动执行 npm run build 再加载;没有 build 脚本、缺少 node_modules 或构建失败时会记录警告并跳过该插件。plugins/ 中与内置插件同 ID 的插件也会被跳过。本地插件是普通 ESM 模块,默认导出、plugin 命名导出或 plugins 数组导出均可被加载。开发和发布方式见 插件开发指南,示例位于 examples/plugins/hello。

在线安装插件包

在聊天中由 SuperAdmin 执行:

/plugin install @scope/[email protected]
/plugin list
/plugin update @scope/plugin
/plugin remove @scope/plugin
  • 只接受 npm registry 包,name、name@版本、name@tag、@scope/name[@版本|tag];拒绝 git、file、URL、workspace、link 等来源。
  • 包会直接安装到 plugins/<插件id>/,和本地插件一样从 plugins/<插件id>/dist 加载;不会放进共享的 node_modules。每个包带自己的依赖,不影响内核依赖。
  • 首次安装时,一个包导出多个插件会使用包名作为目录(例如 @scope/bundle 对应 plugins/@scope__bundle/)。
  • 安装、更新、卸载成功后会自动重启运行时并加载新插件,无需手动重启;进程本身不会退出。/plugin list 会标记“已加载”或“重启后生效”。安装状态保存在 plugins/.jsbot-installed.json。
  • 默认使用 --ignore-scripts;只有显式设置 installer.allowScripts=true 才会执行 npm 生命周期脚本。
  • 卸载不会修改 plugins 配置。如果配置里仍有对应插件 ID,命令会给出警告并跳过自动重启,需要在处理配置后手动重启;其它已安装包依赖被卸载插件 ID 时默认拒绝卸载,可使用 /plugin remove <目标> --force 强制卸载。

安装器默认关闭,需要显式设置 installer.enabled=true。启用后 /plugin 的所有子命令(包括只读的 /plugin list)都要求 SuperAdmin;安装的插件是运行在宿主进程中的完全可信代码。配置项见 docs/configuration.md,发布要求见 docs/plugin-api.md。

CLI

jsbot [options]

--config <path>      配置文件,优先级 CLI > BOT_CONFIG > ./bot.config.json
--data-dir <path>    数据目录,优先级 CLI > BOT_DATA_DIR > ./data
--log-level <level>  debug、info、warn、error,优先级 CLI > BOT_LOG_LEVEL
--help               显示帮助

本地插件固定从 ./plugins/<id>/dist 自动加载;缺少 dist 时会先自动构建。

开发与校验

npm run check         # 内核 TypeScript 类型检查(NodeNext + strict)
npm run check:webui   # WebUI 类型检查
npm run check:all     # 内核 + WebUI + 本地插件
npm test              # Vitest
npm run test:watch    # Vitest watch 模式
npm run format:check  # Prettier 检查
npm run build         # 构建内核、内置插件、WebUI 和 CLI
npm run smoke         # node dist/app.js --help

npm run check:plugin   # 自动检查 plugins 下的本地源码插件
npm run build:plugin   # 自动构建 plugins 下的本地源码插件
npm run plugin:gen -- my-plugin  # 生成并安装 plugins/my-plugin 模板依赖

发布

发布由 .github/workflows/cd.yaml 驱动:main 的 CI 成功后自动通过 npm Trusted Publisher 发布;已存在的版本会跳过。不需要版本标签。检查、构建和首次配置见发布流程。

文档

许可证

AGPL-3.0-or-later

版本与发布记录

@jsbot-tellus/core 共发布 10 个版本,首次发布于 2026/10/27;过去 12 个月发布了 10 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.6.0latest2026/11/011 天前
2.5.12026/10/312 天前
2.5.02026/10/303 天前
2.4.02026/10/303 天前
2.3.02026/10/294 天前
2.2.02026/10/294 天前

关于 @jsbot-tellus/core 的常见问题

@jsbot-tellus/core 是什么?

JsBot的新版本

如何安装 @jsbot-tellus/core?

在项目目录运行 npm install @jsbot-tellus/core,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 jsbot,可以用 npx jsbot 直接运行。

@jsbot-tellus/core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@jsbot-tellus/core 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@jsbot-tellus/core 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^24.22.1 || >=26.12.1。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@jsbot-tellus/core 可以商用吗?

@jsbot-tellus/core 使用 AGPL-3.0-or-later 许可。最严格的 Copyleft:除分发外,通过网络向用户提供基于它的服务也需要开源对应源码。闭源 SaaS 使用前务必评估。以上为概括,不构成法律意见,请以许可原文为准。

@jsbot-tellus/core 还在维护吗?

最新版本 2.6.0 发布于 2026/11/01(1 天前);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2026/10/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。