Skip to content

Diana v0.8.96

Choose a tag to compare

@github-actions github-actions released this 07 Sep 16:20
· 26 commits to main since this release
57c525d

这是一次群聊回复与运行维护修订:补齐引用上下文、统一回复欲望、改善回复排版和 WebUI 加载,并增加历史媒体保留策略与群头像匹配。

新增功能

  • 历史媒体原件清理策略:设置页可按保留天数、容量或两者共同限制历史图片、视频、音频和文件占用。默认 -1 天 / 0 MiB,即不自动清理,升级不会因此删除原件。启用后先删除超过保留期的原件,再按最后使用时间淘汰最旧文件;保存策略会立即清理,并在启动及每24小时执行维护。WebUI 保存前会提示不可恢复确认。
  • 群成员头像匹配:OneBot 群成员工具新增 match_avatar,将当前图片与本群最多100位成员头像进行本地图像相似度比较;最高分至少0.82且领先第二名至少0.08时才报告匹配,否则不猜测。仅对近方形图片启动匹配,头像按日复用缓存;这是头像图像匹配,不是根据人脸推断现实身份。

优化改进

  • 统一回复欲望:机器人、群设置及聊天内群配置工具统一提供关闭、低、中、高、极高五档,减少旧回复模式、自然插话、采样与冷却入口互相覆盖。选档会清除旧覆盖值;旧 natural_interjection_enabled=true 兼容迁移为极高档,并保留30秒冷却,避免无间隔插话。
  • 繁忙群中的回复定位:自动引用模式下,生成期间已有至少3条新群消息时,迟到回复会引用原触发消息;明确关闭引用仍优先,及时回复保持原规则。
  • 更轻的 WebUI 导航:扩大已访问页面的复用范围,其余页面按需加载;事件首批改为30条,已有内容时静默刷新,机器人页不再逐个远程拉取所有提供商的模型列表,插件依赖检查延后到空闲期。SQLite 增加事件与用量查询索引。配置写入后仍失效缓存,手动强制刷新保持有效。
  • 自然标点与平台排版:QQ/OneBot 等纯文本平台折叠多余空白段,Telegram 保留正常段落,代码块内部空行不变。真实软换行按中英文上下文整理为自然标点;不再由提示词和发送层共同删除中文句号。

Bug 修复

  • 引用纠正被旧参数覆盖:用户引用“按80W算吧”再 @机器人时,过去连续消息分类、已接受补充和发送前去重会丢失引用正文;生成时旧45W问题又排在最后,可能继续使用旧值。现在完整传递原问题、后续请求及对应引用,最后明确列出已接受的纠正条件;用户引用重述要求也能进入去重判断。引用原文中的 @ 仍只代表原消息当时的收件人,不改变当前回复对象。
  • 新增图片被当成重复文字:相同问题附带不同图片时,旧低价值判断可能只看文字而吞掉请求。现在不同图片哈希被视为新证据,不再因文字相同直接拦截;相邻的普通文字判定规则保留。
  • 跟评偶发静默超时:链接解析与仓库订阅跟评过去另有固定30秒上限,和聊天请求超时不一致。现在按目标机器人/群生效的 RequestTimeout 执行,默认180秒;仓库通知的每个目标分别计算预算,上游解析或轮询耗时仍不占用跟评自己的预算。
  • 历史原件持续累积:原有下载缓存清理只覆盖 download-cache,不会释放持久化历史原件。新增策略独立管理原件,保留来源索引、聊天文字、媒体类型与已有摘要,不重复处理下载缓存或正在写入的临时文件。

行为说明

  • 媒体清理不是备份:开启后的删除不可恢复,后续查阅仍能看到消息文字与摘要,但原件将按不可用处理。-1 关闭按天清理,0 MiB 关闭容量限制;SQLite 保存的策略生效,也支持 YAML 回退字段 history_media_retention_dayshistory_media_max_mb
  • 回复内容关系和语义去重仍依赖 LLM,不保证所有措辞均正确。引用不可用时明确传递缺失状态,不用图片数量猜内容;保留分类5秒、去重10秒预算及原有失败回退。纯文字、外部操作结果保护、发送确认后记账与近期缓存窗口保持原设计。
  • 显式 [diana-br] 表示消息边界,[diana-line] 表示内部排版换行;本版本没有把 Telegram 改成 QQ 式合并转发。各平台单条容量、超限压缩与用户本轮发送方式选择继续生效。
  • 旧回复欲望相关字段仍可兼容读取,新界面和聊天内配置入口统一使用档位。历史媒体清理默认不启用;建议先确认备份和所需追溯范围,再选择清理策略。

安装与下载

以下命令与发布基线 README 一致,安装器自动识别系统、下载最新版、校验 SHA-256 并启动服务。

Linux / macOS:

curl -fsSL https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.sh | sudo sh

推荐使用 sudo 安装到 /opt/diana,并创建 /usr/local/bin/diana。没有 sudo 权限时去掉 sudo 运行,安装器会询问是否仅安装给当前用户,也可显式传入 DIANA_INSTALL_SCOPE=user。系统级配置文件需要 sudo 编辑。

Windows PowerShell:

irm https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.ps1 | iex

Docker(预构建镜像,无需克隆仓库):

docker run -d --name diana --restart unless-stopped \
  -p 18080:18080 \
  -v "$PWD/data:/app/data" \
  -v "$PWD/logs:/app/logs" \
  ghcr.io/suink/diana:latest

控制台默认位于 http://127.0.0.1:18080。管理员凭据见安装终端输出,Docker 可用 docker logs diana 查看。服务器远程访问可按 README 设置 DIANA_HOST=0.0.0.0,并配置 HTTPS 反向代理与防火墙,不直接暴露管理控制台。

手动下载提供 Linux amd64/arm64、macOS amd64/arm64、Windows amd64 五个完整包,以及 SHA256SUMS、自更新清单 latest.json,共7项资产。下载对应 .tar.gz / .zip 并对照 SHA256SUMS 校验,解压后运行 run.sh / run.bat。完整包含后端、编译好的 frontend-next/dist 和启动脚本,无需安装 Node.js 或单独部署 WebUI;不提供独立裸二进制,自定义部署可从完整包提取。

升级指南

  • 一键安装与完整 Release 包:备份配置和数据后,重跑上方对应系统的一键安装命令;支持当前包名的控制台也可使用自更新。手动部署需下载并校验完整包,停止旧进程后替换程序和前端,保留配置与数据,再运行 run.sh / run.bat
  • 首次包名迁移边界:当前包名为 diana-<系统>-<架构>.tar.gz,Windows 为 .zip,macOS 使用 macos,例如 diana-macos-arm64.tar.gz。仅识别旧 diana-webui-… 包名的控制台不能直接自更新到新包名版本,首次必须重跑一键安装或手动安装完整包。新版安装器和自更新器仍兼容历史包名;包内 diana-webui / diana-webui.exe 及历史文件名兼容副本保留,不修改历史 Release 资产。
  • Docker:运行 docker pull ghcr.io/suink/diana:v0.8.96,停止并删除旧容器后,按原参数重建;使用上方 docker run 示例时,将最后镜像改为 ghcr.io/suink/diana:v0.8.96。保留数据、日志及自定义配置挂载,不删除宿主机数据目录。版本标签与 latest 均提供。
  • 源码部署:需要 Go 1.26+ 与 Node.js 22。处理好本地修改并备份数据后,拉取仓库、切换 v0.8.96,在 frontend-next 运行 npm cinpm run build,回到根目录执行 go build -o dist/diana-webui ./cmd/webui,再按原服务方式重启。model/version/VERSION 已同步为 v0.8.96,未注入构建参数时也显示正确版本。

测试覆盖

  • 发布基线通过格式检查、差异检查、Go 全量测试、前端依赖安装、21项前端测试、Vue 类型检查和生产构建;相对 v0.8.95 无依赖变更,npm 安装审计为0漏洞。
  • 发布 PR 与标签 CI 验证 Go、Vue、Linux amd64/arm64、Darwin amd64/arm64、Windows amd64 和 Docker。
  • 回归覆盖引用请求传递、80W纠正后的重新生成与成功记录、引用重述放行、平台空行差异、代码保护、跟评超时、媒体淘汰及缓存隔离、图片新证据、头像匹配、旧回复欲望迁移和积压引用。
  • 引用修复阶段的真实模型测试保留失败样本:旧请求排列曾得到0.045度电,明确最终请求版本后两次均得到0.08度电。少量样本不代表所有语义场景稳定;发布阶段不额外调用付费模型或真实聊天发送接口。

相关链接

完整版本对比:v0.8.95...v0.8.96