Diana v0.8.94
Diana v0.8.94 聚焦运行稳定性、可配置的账号安全审核和图片回复可靠性:后台协程发生 panic 时不再拖垮整个进程,模型测试能显示真实上游错误;账号安全策略可按机器人与群分别控制;图片回复会先建立视觉依据,并在发送前阻止与图片无关的错误答案。
新增功能
- 机器人级账号安全审核总开关:关闭后该机器人在群聊与私聊中的主动、直接回复均跳过账号安全判断。总开关默认开启,保持升级前主动回复始终审核的行为。
- 群级账号安全策略:每个群可选择跟随机器人、强制开启或强制关闭;显式群设置可覆盖机器人总开关。
- 可配置审核规则:机器人和群均可填写账号安全规则。群规则优先于机器人规则,机器人规则优先于内置范围;自定义规则只改变账号风险判断,不会修改准确度、拒答、防循环或 JSON 输出协议。
- 图片回复视觉依据审核:首次图片回复会同步建立并复用持久化图片描述;主模型获得原图与独立描述,发送审核也会使用描述,必要时直接读取原图。
优化改进
- 模型测试覆盖更真实:打开测试时从当前配置的可用模型中随机选择一个,仍可手动切换,避免长期只测默认模型。
- 上游错误可读:HTTP 错误保留响应正文,优先展示结构化
error.message、message、字符串错误或detail;无结构化字段时展示最多 4000 字原始正文。 - 更新界面状态准确:点击“重启并安装”后不再把安装阶段误显示成 100% 下载进度。
- 审核配置日志脱敏:群配置操作日志只记录启用状态和是否使用自定义规则,不保存规则正文。
Bug 修复
- 后台 panic 导致整个 Diana 重启:Gemini、Anthropic、OpenAI Responses、Chat Completions、降级适配器及消息、连接、提醒、记忆、媒体、浏览器、插件、更新、WebUI 等生产 goroutine 增加恢复边界。单个任务 panic 现在转成当前请求错误或记录组件与堆栈,不再终止整个进程。
- 图片误读后错误搜索并发送:此前原图虽已发送给主模型,但首次识别存在随机性,异步图片描述又可能晚于发送审核完成,导致错误主题经过搜索被强化并直接发出。现在搜索词必须来自当前图片依据,与图片无关的候选回复会被发送前审核拦截。
- 账号安全审核无法按群完全关闭:原配置只控制直接回复,主动回复固定审核。现在群级关闭同时作用于主动和直接回复;机器人级也有完整总开关。
行为说明
- 关闭账号安全审核不会关闭主动回复准确度审核、防机器人循环或图片视觉依据审核;这些是相互独立的保护层。
- 群级“开启”可在机器人总开关关闭时重新启用本群账号安全审核;“跟随机器人”不制造持久化覆盖。
- 自定义账号安全规则替代默认风险范围,但不能要求审核器改变输出格式或干预其他审核结论。群规则限制为 8000 字。
- 图片视觉描述写入现有缓存,不引入数据库迁移。首次处理可能增加一次视觉调用并最多等待约 20 秒;缓存命中不会重复生成。
- 视频抽帧沿用原路径,不套用本次静态图片同步描述流程。
- LLM 审核服务不可用时,普通账号安全审核仍按既有策略放行;主动回复准确度或图片依据审核失败时保持沉默,避免无依据内容发送。
升级指南
- 完整 Release 包:下载对应系统架构的完整包并使用
SHA256SUMS校验。保留原数据目录与配置后替换程序目录;完整包已包含后端、启动脚本和frontend-next/dist。 - Docker:拉取
ghcr.io/suink/diana:v0.8.94;跟随最新稳定版可使用ghcr.io/suink/diana:latest,保留原数据卷与环境变量后重建容器。 - 源码部署:切换到
v0.8.94标签,重新构建后端与前端生产文件,再按现有服务方式重启;不要只替换其中一端。 - 本版本无需手工数据库迁移;新增配置缺失时自动采用兼容默认值。
测试覆盖
- 全量
go test ./...。 - 前端 21 项测试、TypeScript 类型检查与 Vite 生产构建;依赖审计 0 个漏洞。
- AST 契约测试覆盖全仓库生产 goroutine,防止以后新增缺少 panic 边界的裸协程。
- 覆盖流式 panic 转错误、上游错误正文解析、随机模型测试、机器人与群级审核开关继承/覆盖、自定义规则优先级、图片描述复用及原图审核回退。
- Linux amd64/arm64、Darwin amd64/arm64、Windows amd64 和 Docker CI。
安装与下载
Release 提供各平台完整包、裸二进制、SHA256SUMS 和静态更新清单 latest.json。一般部署优先使用完整包。