手动安装
这是给不想用引导式向导的技术用户准备的手动安装流程。如果你想要一步一步带做的那种,请改用安装向导,它会替你创建 .env、生成安全的 CRYPTO_SECRET、配置 PostgreSQL,并运行安装。
- Bun
- Node.js v20+(MCP 工具链需要)
- PostgreSQL,可以原生安装,也可以跑在 Docker 容器里(见第 2 步)
PostgreSQL 的数据库结构、pgcrypto、种子数据和迁移都会在 bot 启动时自动初始化。
git clone https://github.com/Bredrumb/TomoriBot.gitcd TomoriBotbun install --frozen-lockfile从示例文件创建你的环境文件,并填入必须的值:
cp .env.example .env必填项:
DISCORD_TOKEN:你的 Discord bot 令牌(请开启GuildMembers、MessageContent、GuildPresences这三项特权 intent)。CRYPTO_SECRET:一个 32 字符的加密密钥(用于加密存储的 API 密钥)。- PostgreSQL 连接信息:
POSTGRES_HOST、POSTGRES_PORT、POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB。
可选的调优项都在 .env.optional.example 里。想改哪些值(各类上限、超时、功能开关、边车服务 URL 等),就复制哪些过来。
bun run dev当你看到 TomoriBot up and running! 时,去 Discord 在你的服务器里运行 /setup,接入 AI 提供方并初始化 bot。该指令会打开一个引导式清单面板,在你按下 完成设置 之前不会写入任何内容;步骤说明见
/setup 指令,Discord 里那一侧的操作见
快速上手。
如果你想让可选边车服务(SearXNG、Crawl4AI、本地 TTS/STT)与 bot 一起启动,请用 bun run launch 代替 bun run dev:
bun run launch --searxng --crawl4aibun run launch --help # 查看所有参数可选附加项(手动版的「完整安装」)
Section titled “可选附加项(手动版的「完整安装」)”安装向导的 完整安装 路径会在基础安装之上叠加四个轻量附加项。它们都不是运行 bot 的必需项,但每一项都会解锁一个功能。如果你是手动安装,想加哪个就加哪个:
pgvector:文档与 RAG 记忆
Section titled “pgvector:文档与 RAG 记忆”RAG(文档上传与跨频道回忆)会把嵌入向量存进 vector 列,这需要
pgvector 扩展。请按你的 PostgreSQL 主版本安装:
# Debian/Ubuntu,例如 PostgreSQL 16sudo apt-get install -y postgresql-16-pgvector然后在你的数据库上启用它一次。用 .env 里的 POSTGRES_* 值通过 psql 连接:它会提示你输入 POSTGRES_PASSWORD:
# 原生或主机端 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:定时清理任务
Section titled “pg_cron:定时清理任务”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 “分词器资源:按模型处理的词元偏置”词元偏置(表情与词语重复惩罚)需要本地的分词器资源:
bun run setup:tokenizers有些模型家族(例如 Gemma)是受限的,需要你先接受它们的许可,再用一个 HuggingFace 令牌:
# Windows(PowerShell)$env:HF_TOKEN="hf_xxx"; bun run setup:tokenizers
# macOS/LinuxHF_TOKEN=hf_xxx bun run setup:tokenizers不做这一步,词元偏置会被静默禁用,其他一切照常工作。
安全的 fetch_url 兜底在进程内运行,不需要任何 Python 包。DuckDuckGo 与 IAsk 的
web_search 随 bun install --frozen-lockfile 一起装好,也不需要额外安装。
维护、更新与备份
Section titled “维护、更新与备份”装好之后,主机端脚本(bun run update、bun run backup、bun run restore-backup、bun run nuke-db、bun run rotate-keys 等)以及更新和备份流程,都写在
维护与备份页面。如果你准备拉取新版本,请先看安全迁移。