一键安装版本
重复执行安装命令。脚本下载对应完整包、校验 SHA-256、备份数据库和运行文件、切换、重启并健康检查。
运维
更新提醒与执行更新严格分离,运行状态以健康检查和事件审计为准,恢复操作始终建立在可验证备份上。
更新
控制台发现新版本时只显示小黄点。管理员点击、查看更新说明并确认后才执行更新,不再有后台自动下载或自动切换逻辑。
重复执行安装命令。脚本下载对应完整包、校验 SHA-256、备份数据库和运行文件、切换、重启并健康检查。
后端执行完整 Release 流程,探活失败时恢复旧版本。仅显示按钮而无后端更新器的旧版不能自更新。
容器由编排系统重建;源码 checkout 重新构建前后端。两者都不在运行进程内替换裸二进制。
直连 GitHub 拉不动时,「版本与更新」里可以选一条公共加速线路:自动会实测直连和各条镜像后挑一条(直连可用就优先直连),也可以固定选一条或强制直连。加速只用于安装包本身——校验清单始终优先直连,版本检查走 GitHub API 不经过镜像,安装前仍然逐字节核对 SHA-256。任何一条线路失败都会自动回落直连。
# 一键安装的升级命令与首次安装相同
curl -fsSL https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.sh | sudo sh
确认数据目录和备份目录有足够空间。数据库正在高频写入时,备份需同时保留 WAL/SHM,或先通过应用提供的备份流程生成一致快照。
launchd 的 KeepAlive 和 systemd 的 Restart= 会在服务退出后立刻把它拉起来。更新器识别到自己被托管后就不再自行启动新实例,改为在换完文件后请管理器重启一次(launchctl kickstart -k / systemctl restart),由管理器串行地停旧起新,避免两个实例抢同一个监听端口、后启动的报 address already in use 退出。一键安装脚本会把 DIANA_SERVICE_MANAGER、DIANA_SERVICE_LABEL、DIANA_SERVICE_DOMAIN 写进服务环境;自建部署可以自行设置,或设 DIANA_SERVICE_MANAGER=none 让更新器自己负责重启。
日常运行
GET /api/health无需登录,用于进程与编排探活。GET /api/auth/status确认管理员会话和首次启动状态。GET /api/events/streamSSE 断开时前端应退回轮询。logs/包含服务输出与启动失败信息。logs/diana.log支持控制台筛选和下载。data/diana.db配置、消息、记忆、任务与审计主库。升级临时备份最多保留本次的一份,创建前清除旧备份,健康检查成功后自动删除;失败或安装后未启动时保留。源码更新脚本在构建和文件替换成功后删除临时备份,仍需手动重启。清理失败会记录警告。下表指自行维护的数据备份,不属于自动清理范围。
| 范围 | 周期 | 保留 |
|---|---|---|
| SQLite 一致性快照 | 每日,并在每次更新前 | 至少 7 个日备份和 4 个周备份 |
| 运行配置与密钥 | 配置变更后 | 加密保存,限制读取权限 |
| 历史媒体 | 按业务需求 | 结合容量淘汰和隐私期限 |
| 恢复演练 | 每月 | 记录恢复耗时和缺失项 |
故障排查
从事件明细读取确定性原因:群启用、回复时间、屏蔽账号、群等级、机器人抑制、显式 @、触发词和主动回复结果。打开调试模式后,再核对模型收到的上下文与结构化判断。
运行版本必须包含“显式 @ 优先于引用”的路由逻辑。OneBot 事件中应有 at segment;后端先识别显式 @,只有没有 @ 的引用才进入主动回复语义判断。
确认视觉职责绑定了经过真实图片测试的模型、原图未被缩放、图片未被 token 预算裁掉。文本密集图片使用 OCR 与原图双证据。
检查 OneBot 连接与 get_group_list 响应。在线时应显示机器人加入的全部群;只有连接不可用才回退本地配置。
候选应该直接进入语义判断,最长等待 60 秒后写入明确结果。持续卡住通常表示意图模型超时、队列消费者未运行或运行版本未包含新逻辑。
检查端口冲突、数据库权限、前端目录和二进制架构。安装器备份位于 .installer/backups;控制台更新备份位于 .diana-updates。
开发与发布
# Go 与格式检查
gofmt -l .
git diff --check
go test ./...
# 前端生产构建
cd frontend-next
npm ci
npm run build
# 文档预览(站点用无扩展名地址,需要支持 clean URL 的服务器)
cd ..
npx serve docs
CI 覆盖 Linux amd64/arm64、Darwin amd64/arm64、Windows amd64 和 Docker。版本发布从已合并的默认分支打标签,Release 仅提供各平台完整包、SHA256SUMS 和自更新清单 latest.json,不再单独上传裸二进制。Release 说明必须写清更新点、兼容影响、验证方式与升级注意事项。
站点位于 docs/,没有构建时依赖。默认分支的文档或一键脚本更新后,GitHub Actions 上传静态 artifact 并部署 Pages。页面之间用无扩展名地址(/deploy 而不是 /deploy.html),GitHub Pages 会自动解析到对应的 .html;本地预览要用支持这一行为的服务器,python3 -m http.server 会 404。