Skip to content

Diana v0.8.97

Choose a tag to compare

@github-actions github-actions released this 08 Sep 15:58
· 9 commits to main since this release
1db3717

Diana v0.8.97 是一次补丁更新,集中修复 GitHub 订阅历史重发、历史检索与跨平台回复问题,并完善机器人独立配置、模型查询和 Telegram 原生能力。

新增功能

  • 可查询对话、视觉、意图、生图、嵌入、语音识别与合成等用途的模型配置;成功发送的生成或编辑图片记录实际提交的模型标识,可通过引用图片、消息 ID 或会话最近记录查询。历史图片没有记录时明确无法确认,不用当前配置冒充历史证据;接口报告的标识不能证明中转背后的隐藏模型。
  • Telegram 使用原生 Bot API 查询群资料、人数、成员身份及角色,并读取用户/群头像。候选名单来自管理员和已知成员,明确标为不完整;Bot API 不支持全群枚举,查询其他成员通常需要机器人管理员权限才能保证可用。

优化改进

  • 普通插件按机器人分别保存设置、凭据和开关,旧配置一次性迁移到已有机器人,新机器人使用默认值;OpenAPI 仍是进程级设置。相同 RSS 来源、解析及判断结果可复用,但订阅进度、投递和权限保持独立。
  • 主动发言使用五项评分平均分判断,回复欲望支持预设和自定义数值;成功发送后按机器人、会话计冷却。主人可管理群内机器人标记,人设支持完整表达设置与自定义快照恢复。
  • 模型输入按需补充实际出现的 Emoji 中英文标准名称,支持组合、肤色和国旗,最多 32 种;不修改原始消息,不将名称解释成发送者情绪,未知表情不编造释义。
  • 历史检索保留账号及角色关联,支持时间排序、游标续查及明确的结果裁剪信息,减少旧昵称误认和“命中多条却返回空列表”。跨群开关、机器人隔离与脱敏继续生效;找到历史记录不等于核验当前事实。

Bug 修复

  • GitHub 旧消息重复通知: 空列表、过滤后为空、乱序或旧响应原先可能清空或回退检查点。现在覆盖 Commit、Release、Issue、PR、Star 五类:Issue/PR 按更新时间与编号前进;Commit 缺失原锚点时用 compare 验证差集;Release 按发布时间与 ID;Star 按事件时间与数字 ID。保存前再次校验来源、选项和旧检查点,过期轮询不覆盖新进度或待投递消息。
  • Telegram 点歌暴露 CQ 码: 平台专属语音格式误走通用文本发送路径。现在按平台投递音乐,Telegram 不再显示 CQ 控制码,QQ 原有语音行为保留。
  • 引用内部标记泄漏: 无效别名先前解析失败后原样留在正文。现在先消费控制标记再校验目标,“总是引用/关闭引用”尊重配置,“模型决定”只使用可验证的同会话目标;有效引用继续工作,旧历史不改写。
  • Gemini 拦截后无法接续备用模型: 原先未读取结构化原因码且回退层排除了此类错误。现在保留拦截码并尝试已配置备用候选,不修改请求或提供商安全设置;普通参数错误不误判,全部候选失败仍报告错误。
  • Telegram 权限使用实时成员状态核验,清理离群及凭据切换后的旧缓存;头像下载不向模型泄漏带 Token 的 URL,无法核验时不凭旧角色授权。

行为说明

  • 订阅只自动前进:空响应与旧数据保留进度,Star 总数仍可因取消关注而减少。Commit 分叉或旧 Release 锚点无法验证时保留检查点并报告原因;必要时显式重设订阅基线,不猜测重放。正常新事件、初始基线和既有投递重试继续按各类规则处理。
  • 普通插件修改 API 现在要求机器人作用域,不接受旧全局修改或继承操作;已有机器人配置自动迁移,第三方调用方需携带作用域。
  • 本版发布 7 个资产:Linux amd64/arm64、macOS amd64/arm64、Windows amd64 五个完整包,以及 SHA256SUMSlatest.json。不再单独上传裸二进制。macOS 包名使用 macos,包内 diana-webui / diana-webui.exe 和历史兼容副本保留,历史 Release 资产不改动。

安装与下载

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

Linux / macOS Shell:

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

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

也可将镜像标签固定为 v0.8.97。打开 http://127.0.0.1:18080,管理员凭据见安装终端输出;Docker 使用 docker logs diana 查看。

手动下载本页对应平台的 diana-<系统>-<架构>.tar.gz 或 Windows .zip,用 SHA256SUMS 校验后解压,运行 run.sh / run.bat。完整包包含后端、frontend-next/dist 和启动脚本,无需另装 Node.js 或单独部署 WebUI;自定义部署从完整包提取所需文件。

升级指南

  • 一键安装 / 完整 Release 包: 重跑上方 Shell 或 PowerShell 安装命令即可升级;支持新包名的控制台也可自更新。安装器及自更新器执行备份、校验和健康检查,失败回滚。手动部署请停止旧进程、备份配置和数据,校验并替换完整程序及前端资源后运行启动脚本,保留原数据路径。
  • 首次包名迁移: 只识别 diana-webui-… 包名的旧自更新器不能直接通过 WebUI 升级到新包名,首次必须重跑上方一键安装命令或手动安装完整包。新版安装器和自更新器仍兼容历史包名。尚无自更新器的更早版本同样需要安装器或手动升级。
  • Docker: 拉取新镜像并重建容器,保留原挂载路径、环境变量和其他自定义参数。标准 README 部署可执行以下命令;数据和日志保留在宿主机挂载目录。
docker pull ghcr.io/suink/diana:latest
docker stop diana
docker rm diana
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
  • 源码部署: 需要 Go 1.26+ 与 Node.js 22。保留本地配置和数据,将源码更新到本版标签后重新构建前端和后端,停止旧进程再使用原运行参数启动。全新检出命令如下;已有修改请先妥善保存。
git clone --branch v0.8.97 https://github.com/SuInk/Diana.git
cd Diana
cd frontend-next && npm ci && npm run build && cd ..
go build -o dist/diana-webui ./cmd/webui
./dist/diana-webui

测试覆盖

  • 本地 gofmt -l .git diff --checkgo test ./...、专项游标 race 测试、前端 npm ci、单元测试与生产构建通过,npm 安装审计未发现漏洞。
  • 覆盖五类订阅进度保护、Commit 跨页差集、Release 旧数据迁移、Star 去重和减星、过期轮询与待投递保护;完整包工作流检查防止重新发布裸二进制。
  • PR 与标签 CI 检查 Go、Vue、Linux amd64/arm64、Darwin amd64/arm64、Windows amd64 及 Docker。发布后核对七个资产、macOS ARM64 包独立 SHA-256 与归档内容,以及 Docker 版本和 latest 标签。

相关链接

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