跳转到内容

手动安装

这是给不想用引导式向导的技术用户准备的手动安装流程。如果你想要一步一步带做的那种,请改用安装向导,它会替你创建 .env、生成安全的 CRYPTO_SECRET、配置 PostgreSQL,并运行安装。

  • Bun
  • Node.js v20+(MCP 工具链需要)
  • PostgreSQL,可以原生安装,也可以跑在 Docker 容器里(见第 2 步)

PostgreSQL 的数据库结构、pgcrypto、种子数据和迁移都会在 bot 启动时自动初始化。

Terminal window
git clone https://github.com/Bredrumb/TomoriBot.git
cd TomoriBot
bun install --frozen-lockfile

从示例文件创建你的环境文件,并填入必须的值:

Terminal window
cp .env.example .env

必填项:

  • DISCORD_TOKEN:你的 Discord bot 令牌(请开启 GuildMembersMessageContentGuildPresences 这三项特权 intent)。
  • CRYPTO_SECRET:一个 32 字符的加密密钥(用于加密存储的 API 密钥)。
  • PostgreSQL 连接信息:POSTGRES_HOSTPOSTGRES_PORTPOSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_DB

可选的调优项都在 .env.optional.example 里。想改哪些值(各类上限、超时、功能开关、边车服务 URL 等),就复制哪些过来。

Terminal window
bun run dev

当你看到 TomoriBot up and running! 时,去 Discord 在你的服务器里运行 /setup,接入 AI 提供方并初始化 bot。该指令会打开一个引导式清单面板,在你按下 完成设置 之前不会写入任何内容;步骤说明见 /setup 指令,Discord 里那一侧的操作见 快速上手

如果你想让可选边车服务(SearXNG、Crawl4AI、本地 TTS/STT)与 bot 一起启动,请用 bun run launch 代替 bun run dev

Terminal window
bun run launch --searxng --crawl4ai
bun run launch --help # 查看所有参数

可选附加项(手动版的「完整安装」)

Section titled “可选附加项(手动版的「完整安装」)”

安装向导完整安装 路径会在基础安装之上叠加四个轻量附加项。它们都不是运行 bot 的必需项,但每一项都会解锁一个功能。如果你是手动安装,想加哪个就加哪个:

RAG(文档上传与跨频道回忆)会把嵌入向量存进 vector 列,这需要 pgvector 扩展。请按你的 PostgreSQL 主版本安装:

Terminal window
# Debian/Ubuntu,例如 PostgreSQL 16
sudo apt-get install -y postgresql-16-pgvector

然后在你的数据库上启用它一次。用 .env 里的 POSTGRES_* 值通过 psql 连接:它会提示你输入 POSTGRES_PASSWORD

Terminal window
# 原生或主机端 psql(请替换成你自己的 POSTGRES_USER 和 POSTGRES_DB):
psql -h localhost -p 5432 -U tomori -d tomodb
# 或者,如果数据库跑在第 2 步的 Docker 容器里:
docker exec -it tomori-db psql -U tomori -d tomori

连接之后运行:

CREATE EXTENSION vector;

没有 pgvector,bot 照样能跑,但 RAG 功能会完全不可用。还原备份之前,目标数据库上也必须装好这个扩展;细节见 安全迁移

pg_cron 支撑可选的周期性数据库维护(冷却行与提醒行的清理)。本仓库的 Docker Compose 已经替你配置好了。

对于自己管理的 PostgreSQL,先找到生效中的配置文件:

SHOW config_file;

postgresql.conf 里启用该扩展:如果 shared_preload_libraries 已经列了其他库,就追加:

shared_preload_libraries = 'pg_cron' # 例如 'pg_stat_statements,pg_cron'
cron.database_name = 'your_dbname'

重启 PostgreSQL,然后:

CREATE EXTENSION IF NOT EXISTS pg_cron;

分词器资源:按模型处理的词元偏置

Section titled “分词器资源:按模型处理的词元偏置”

词元偏置(表情与词语重复惩罚)需要本地的分词器资源:

Terminal window
bun run setup:tokenizers

有些模型家族(例如 Gemma)是受限的,需要你先接受它们的许可,再用一个 HuggingFace 令牌

Terminal window
# Windows(PowerShell)
$env:HF_TOKEN="hf_xxx"; bun run setup:tokenizers
# macOS/Linux
HF_TOKEN=hf_xxx bun run setup:tokenizers

不做这一步,词元偏置会被静默禁用,其他一切照常工作。

安全的 fetch_url 兜底在进程内运行,不需要任何 Python 包。DuckDuckGo 与 IAsk 的 web_searchbun install --frozen-lockfile 一起装好,也不需要额外安装。

装好之后,主机端脚本(bun run updatebun run backupbun run restore-backupbun run nuke-dbbun run rotate-keys 等)以及更新和备份流程,都写在 维护与备份页面。如果你准备拉取新版本,请先看安全迁移