运维命令
在项目目录、以运行 bot 的同一个用户执行。登录、切换模型、暂停 / 恢复与统计只读 jingmei.config.json 的 dataDir 和角色的 provider/model,不需要 bot token;update 也不需要配置或 token。bun run jingmei --help 列出全部命令。
| 命令 | 作用 |
|---|---|
bun run jingmei | 交互菜单(尚无配置时只有“Set up”,即 init):状态、自检、更新、切换模型、暂停 / 恢复、登录、登出;每项做完回到菜单,选 Exit 退出 |
bun run jingmei init | 首次配置向导:生成 jingmei.config.json、.env(0600)和角色文件,实时验证 bot token;已有配置时拒绝运行,需要交互终端 |
bun run jingmei start | 前台启动 bot,等同 bun run start |
bun run update / bun run jingmei update | 快进拉取当前分支的 upstream、安装锁定依赖、检查 TypeScript,成功后通知运行中的 bot 优雅重载;未运行时只更新文件,不启动 bot |
bun run jingmei doctor | 只读自检:配置、run_js 沙箱、模型与凭据、Discord / Telegram token 与权限(Message Content Intent、privacy mode、群 ID)、按已启用功能检查 ffmpeg、字体、sqlite-vec、embedding 缓存;逐项 OK / WARN / FAIL,附一行修复提示,有 FAIL 时退出码非 0。不打印任何 token |
bun run jingmei telemetry | 打印本实例下一次会上报的完整内容,并说明是否开启,见使用统计。需要完整配置 |
bun run jingmei login [provider] / logout [provider] | OAuth 登录 / 删除已保存的凭据;登录后刷新该 provider 的模型列表 |
bun run jingmei model [provider/model|default] [--persona <id>] | 查看并切换角色的聊天模型;不带模型时刷新模型列表后弹出选择 |
bun run jingmei pause / resume | 暂停 / 恢复 |
bun run jingmei stats | 运行状态与本次运行时长、累计运行时长与启动次数、回复数、消息 / 群 / 成员 / 话题 / 祝福总数 |
nice -n 10 bun scripts/backfill-message-index.ts [delayMs] | 给升级前入库的旧消息补建检索索引(关键词 + 向量),最新优先,默认每条间隔 100ms,可中断后重跑、已索引的跳过;部署新版本后运行一次,新消息自动索引。详见 docs/deploy.md |
暂停:bot 保持在线并照常把消息存进数据库,但不回复、不点表情、不更新成员记忆和话题、不发祝福,也不调用回复模型;管理员手动压缩仍可调用模型。对正在运行的 bot 立即生效,不用重启;重启后仍保持暂停,直到
resume。暂停期间的消息只入库、不写入任何会话(恢复后角色被触发时,它们与其他未触发的消息一样,可能随最近窗口进入新会话);当天到期的祝福在恢复后补发。要真正停掉进程,用systemctl --user stop pi-discord-agent或 Ctrl+C。运行状态:bot 每分钟写一次心跳,超过两分钟没有心跳即视为已停止(包括崩溃)。回复数从引入这个命令的版本开始统计;消息等数据统计全部历史。
切换模型:只能在服务器上用 CLI 切换,群里没有对应命令。选择存在数据库里,运行中的 bot 在每个频道下一次回复前换过去,不用重启,重启后保留;
default恢复jingmei.config.json里的provider/model。reasoningEffort不变,新模型不支持时由 Pi 自动降级。要用其他 provider 先login,或把 API key 放进服务进程环境。选中的模型 bot 找不到时(例如 provider 被删除),它会记model_override_unavailable警告并继续用配置模型。切换会让 provider 前缀缓存失效一次。上下文与对话段:每个频道、每个角色的会话使用模型自己的
contextWindow(例如 Gemini 的 1M),不再统一截断。常规情况下对话段在 5 分钟无回复、积累超过 30 条消息或会话超过 40,000 tokens 时就在下一次触发时换新,所以回复输入量保持在较小范围,不再依赖压缩。接近真实窗口上限(窗口减 16,384 tokens)仍由 Pi 自动压缩兜底,provider 溢出恢复也保留;管理员仍可/compact手动压缩;/context显示当前用量、窗口条数与对话段上限。压缩后保留最近约 1.5–2 万真实 token(Pi 对中文按字符估算低估约 5 倍,因此保留量仍设为 3000 估算 token);对话段内历史只在末尾追加,有利于前缀缓存。热更新:所有启动入口(含现有 systemd 服务)自动监测
jingmei.config.json、.env与配置引用的角色文件(支持项目外路径),由文件系统事件通知,防抖 500ms 后发起重载,空闲时不扫描文件;代码通过update更新。先校验配置,再等待旧 bot 完成当前对话及后台写入、关闭数据库后启动新 bot,期间平台会短暂重连。配置校验失败时记reload_rejected、保留旧 bot,修好后自动重试。新配置的 token / 模型等运行时问题仍可能导致新 bot 启动失败,查看startup_failed。有未提交的 tracked 改动、分支分叉、安装或类型检查失败时,update退出且不请求重载;已拉取的代码不会自动回滚,修复后可重试。首次升级需手动重启一次以启用监护进程,见 部署更新说明。
