Releases: SuInk/Diana
Release list
Diana v0.8.97
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 五个完整包,以及
SHA256SUMS、latest.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 | iexDocker:
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 --check、go 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 标签。
相关链接
Diana v0.8.96
这是一次群聊回复与运行维护修订:补齐引用上下文、统一回复欲望、改善回复排版和 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_days、history_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 | iexDocker(预构建镜像,无需克隆仓库):
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 ci和npm 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度电。少量样本不代表所有语义场景稳定;发布阶段不额外调用付费模型或真实聊天发送接口。
相关链接
- 补齐引用请求上下文,避免连续回复和去重丢失纠正条件(PR 454)
- 统一回复欲望并为积压回复自动引用原消息(PR 453)
- 优化 WebUI 页面复用与数据加载性能(PR 452)
- 修复新增图片被判重复并支持群成员头像匹配(PR 451)
- 新增历史媒体保留天数与容量上限(PR 450)
- 统一回复排版、自然标点与跟评超时(PR 449)
- 发布基线 README
完整版本对比:v0.8.95...v0.8.96
Diana v0.8.95
Diana v0.8.95 统一了聊天回复的消息布局协议,并修复群聊短省略问句、跨用户澄清承接与多平台历史回补隔离问题。
优化改进
- 回复布局改为显式协议:
[diana-msg]表示开始下一条消息,[diana-line]表示当前消息内部换行。模型不再用同一个真实换行同时表达“新气泡”和“气泡内排版”。 agent.finalize的原生 Tool Calling Schema、Agent 系统提示、回复压缩、单条模式、Markdown 降级、Telegram 投递和插件跟评统一遵循新协议。- Agent 检测到
agent.finalize.content中仍存在真实 CR/LF 时,会要求模型保持内容和证据字段不变并重新提交,避免静默压平清单或代码。 - 群聊短省略问句采用分层话题召回:近期原始消息、本群全历史 FTS5,以及启用时的向量语义检索;时间只参与重排,不再以固定时间窗直接删除候选。
- 同一发送者的追问优先保持话题连续性;其他群友也可以承接机器人刚提出的澄清,但不会错误并入另一个人的正在生成回复。
Bug 修复
- 修复编号清单触发“文档保护”后,列表前后的独立内容仍被塞进同一个气泡的问题。根因是运行时根据真实换行和文档结构猜测消息边界;修复后只执行显式布局标记和平台长度兜底。清单、代码和引用仍可在单个气泡中保留必要排版。
- 修复“什么时候重置”“那个呢”“codex”等短消息因近期噪声或固定召回窗口而丢失真实指代的问题。现在会恢复完整人物、事件和时间限定,中等或歧义候选仍不会强行绑定。
- 修复跨用户回答机器人澄清时丢失公共话题的问题,同时保持正在生成回复的用户隔离。
- 修复 OneBot/NapCat 与 Telegram 历史回补会话缺少平台和机器人身份的问题;不同平台的历史不会再互相进入回补。
行为说明
- 普通聊天正文中的真实 CR/LF 会折叠为软空格,不再控制消息数量或排版。
[diana-msg]和[diana-line]都属于内部投递标记,发送前会被消费,不会显示给用户。- “自然分条”开关仍决定提示模型默认使用单条还是按内容分条;发送层本身不再推测普通换行的语义。
- 历史话题召回只有在配置了独立意图/语义指代路由模型时执行,不额外占用主聊天模型。
破坏性变更
- 旧
[diana-br]、<dianabr>与<botbr>标记已完全移除,不再识别或迁移。自定义插件、Extension、通知模板或提示词如果仍生成旧标记,需要改为[diana-msg];同一消息内部换行改为[diana-line]。 - 旧版依靠真实换行自动拆分气泡的行为已删除。
升级指南
- 完整 Release 包:下载对应平台的完整包并替换部署目录。
v0.8.94可从 WebUI 检查并安装本 Release;手动安装前建议保留现有配置与数据库备份。 - Docker:拉取
ghcr.io/suink/diana:v0.8.95,或更新latest后重新创建容器;继续挂载原有配置和数据卷。 - 源码部署:获取标签
v0.8.95,安装前端锁定依赖并执行生产构建,再重新编译后端。源码中的model/version/VERSION已与标签一致。 - 自定义输出模板升级时,将“下一条消息”边界替换为
[diana-msg],将气泡内部清单、代码或引用换行替换为[diana-line]。
测试覆盖
gofmt -l .、git diff --check、go test ./...全部通过。- 前端 21 项测试、TypeScript 类型检查和 Vite 生产构建通过,依赖审计未发现漏洞。
- Linux amd64/arm64、Darwin amd64/arm64、Windows amd64 和 Docker CI 全部通过。
- 使用 Sub2API Responses API 与
gpt-5.6-terra真实验证 12 个agent.finalize样本:显式双消息、编号清单、代码块和长历史场景全部通过,真实换行违规为 0。
安装与下载
Release 包含 Linux、macOS、Windows 的完整包和裸二进制、SHA256SUMS 与 latest.json。下载后建议先核对 SHA-256;完整包内已包含启动脚本和 frontend-next/dist,无需单独安装前端依赖。
相关链接
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。一般部署优先使用完整包。
相关链接
Diana v0.8.93
Diana v0.8.93 是一次回复稳定性与聊天表达修复版本:修复 Gemini 流式响应导致的循环崩溃,完善自然分条、重复问题识别和拒答冷却,并简化机器人配置卡片的视觉状态。本版本同时补齐各平台裸二进制发布资产。
优化改进
- 自然分条从提示词约束升级为发送层确定性处理。开启自然分条后,普通聊天中仅用于排版的软换行会转换为合适的中英文标点;列表、标题、引用、代码块和文档结构继续保留必要换行。
- 用户本轮明确要求“一条发送”时保留原始排版;明确要求“按内容分条”时临时启用整理,不修改机器人或群组的长期配置。
- 增加同题重发识别和发送前语义去重,降低用户重复提问或消息重投时生成近似重复回复的概率。
- 移除机器人卡片的激活态绿色高亮,减少多机器人配置页面中的视觉干扰;选择、启用和连接状态仍按原有状态字段显示。
- Release 新增 Linux amd64/arm64、macOS amd64/arm64、Windows amd64 五个平台的裸二进制;完整包仍包含前端、启动脚本和卸载脚本。
Bug 修复
- 修复 Gemini 流式响应偶尔不带
UsageMetadata时后端空指针崩溃的问题。根因是该 SDK 字段为可选值,而旧代码对每个数据块都直接解引用;修复后缺失统计时保留最近一次有效用量或使用零值,真正的空响应则返回可诊断错误,不再拖垮整个机器人进程。 - 修复模型拒答标志未被稳定识别的问题,并在同一会话短时间内连续拒答超过三次后暂停响应,避免机器人反复尝试、连续空转或发送相似拒答话术。
- 修复自然分条关闭、片段合并或主动闲聊场景中,模型逐句换行被原样塞进同一气泡而显得机械的问题。
行为说明
- “自然分条”现在同时控制语义分条和普通软换行整理;关闭后会尽量保留模型原始换行。
[diana-br]等显式消息边界仍然优先,平台单条消息硬限制仍可能触发必要切分。- 列表、代码、引用和文档布局不会被软换行整理压成一行。
- 拒答冷却只针对短时间连续拒答,不改变正常消息的主动回复、门禁或黑白名单规则。
升级指南
- 完整 Release 包:下载对应平台的
.tar.gz或.zip,解压后使用包内run.sh或run.bat。从支持 Release 自更新的旧版本升级时,也可在 WebUI 中检查并安装本版本。 - Docker:拉取
ghcr.io/suink/diana:v0.8.93;需要跟随最新稳定版时可使用ghcr.io/suink/diana:latest,然后按现有编排方式重建容器。 - 源码部署:切换到标签
v0.8.93,重新执行前端依赖安装与生产构建,再编译并重启后端。model/version/VERSION已与标签同步。 - 仅下载裸二进制时,需要自行提供
frontend-next/dist;希望直接运行 WebUI 的用户应优先下载完整包。
测试覆盖
- Go 全量测试、格式检查和模块校验通过。
- Vue 类型检查、前端测试和生产构建通过;npm 高危级别安全审计为 0 个漏洞。
- Linux amd64/arm64、Darwin amd64/arm64、Windows amd64 交叉构建通过。
- Docker 镜像构建与发布通过。
- 新增 Gemini 空响应/空用量、自然分条开关联动、本轮发送选择、中英文换行转换及结构化布局保护测试。
安装与下载
- 完整包适合直接部署,内含后端、启动脚本和
frontend-next/dist。 - 裸二进制适合已有前端资源或自定义运行环境的部署。
- 所有完整包和裸二进制均列入
SHA256SUMS,下载后可独立校验。
相关链接
Diana v0.8.92
Diana v0.8.92
这是一次回复投递与可靠性修订:统一单条长度预算,尊重本轮分条选择,超长内容优先自然拆分、必要时语义压缩,并修复纯图片审核上下文与社交链接重复解析问题。
优化改进
- 回复按语义段落和主要章节组织,标题尽量跟随正文,不再把连续标题或普通聊天机械拆成许多气泡;回复节奏改为尽量少发几条,不预设条数。
- 用户本轮要求“不要分条 / 一次发完”时,模型将选择传递到发送层:不自然拆分,也不自动转为 QQ 合并转发;明确允许分条时按分段流程投递。该选择不修改群设置或后续对话偏好,意图识别仍依赖模型,不保证所有措辞均被正确识别。
- 普通回复、Agent 回复和跟评的首轮生成提示均带有效的单条预算,减少超限后再调用模型。过长段先尝试按完整段落、句子或章节拆分,只压缩仍不合规的段,已达标的段不重写。
- QQ / OneBot 合并转发只包装已有分段,不因此删减正文,失败仍可回退普通分条。Telegram 没有这项合并转发功能,不自动拼接多条、不调用 OneBot;界面只对 OneBot 展示合并阈值。
Bug 修复
- 修复“用户要求单条,发送层仍继续分段”的问题:此前要求只停留在提示词中,现在内部投递选择参与发送决策;控制标记不进入正式消息、聊天历史或 Telegram 草稿。
- 修复超长回复直接截断、不同回复入口处理不一致的问题。现在先拆分、再按需压缩;单条选择只压缩不拆分。整轮最多两次压缩调用(包含纠正),共用 30 秒超时;失败不发送半份回复、不回退超长原文、不硬截断。无法在保留代码等受保护内容的同时满足上限时仍会失败。
- 修复纯图片消息审核被空文字误导的问题:复用本轮 OCR / 画面描述或已有图片描述缓存作为独立证据,不新增识图调用,也不拿候选回复冒充图片证据。内容质量审核聚焦可见准确性和完整性,不再用“是否需要接话”或风格偏好拦截;账号安全、循环判断和原有触发范围保持不变。
- 修复同一社交链接第一次成功、第二次却因再次抓取触发风控而失败的问题。此前成功结果未进入普通网页缓存,现在复用带稳定资源键的成功解析结果;失败不缓存,本地视频已清理则缓存失效。继续使用原解析缓存时长,默认 10 分钟,设为 0 仍关闭缓存;链接解析插件修订号为 0.3.1。
行为说明
max_reply_chars字段与默认值 3500 保留,但含义统一为“单条回复上限(字符)”,不再是整轮总字数限制。旧配置直接按新含义生效,群级覆盖和继承不变;多条合计较长但各条合规时不触发压缩,输出 token 预算与发送频率控制仍保留。- Telegram 另外校验渲染后的平台容量,保守按 4096 UTF-16 单元计算,并考虑昵称展开与格式。最终发送层拒绝仍超限的消息;无法安全拆分的代码块等仍可能发送失败。
- 语义压缩可能省略次要细节,不是无损压缩。关闭自然分条时不推断新边界,显式分条标记仍有效。
- 移除已无效的“最多分几条”“分段发送长度”设置;OneBot 合并转发阈值为空或为 0 时关闭对应触发条件。
破坏性变更
- 自定义提示词中的旧分条标记
<dianabr>需改成[diana-br];旧标记不再作为分条边界,历史默认提示词的迁移识别仍保留。 - 不再提供独立
groupmate风格,旧配置 / 人设值仍可读取并回落到助手风格。
安装与下载
以下一键命令与发布基线 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。
Windows PowerShell:
irm https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.ps1 | iexDocker(预构建镜像,无需克隆仓库):
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 查看。系统级配置文件需要 sudo 编辑。服务器开放远程访问需按 README 配置 DIANA_HOST,并使用 HTTPS 反向代理和防火墙,不直接暴露管理控制台。
手动下载仅提供五个平台完整包:Linux amd64 / arm64、macOS amd64 / arm64、Windows amd64,以及 SHA256SUMS 和自更新清单 latest.json,共 7 项资产。下载对应 .tar.gz / .zip 并对照 SHA256SUMS 校验后,解压运行 run.sh / run.bat。包内包含后端、编译好的 frontend-next/dist 和启动脚本,无需单独部署 WebUI 或安装 Node.js;不提供独立裸二进制,自定义部署可从完整包提取。
升级指南
- 一键安装 / 完整 Release 包:先备份配置和数据。一键安装用户重跑上方对应系统的安装命令;支持新包名的控制台也可使用自更新。手动部署下载对应完整包、校验 SHA-256、停止旧进程后替换程序和前端,保留原配置与数据,再运行
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.92,停止并删除旧容器后,使用上方docker run参数,将最后的镜像改为ghcr.io/suink/diana:v0.8.92。不要删除挂载的数据目录;版本标签和latest均提供。 - 源码部署:需要 Go 1.26+、Node.js 22。备份数据并处理好本地修改后,拉取仓库并切换
v0.8.92,在frontend-next执行npm ci、npm run build,回到仓库根目录执行go build -o dist/diana-webui ./cmd/webui,再按原服务配置重启。源码model/version/VERSION已同步,未注入构建参数时也会显示正确版本。
测试覆盖
- 发布基线通过
gofmt -l .、git diff --check、go test ./...,前端npm ci与生产构建通过,包含 16 项前端测试,依赖安装审计 0 漏洞。 - 发布 PR 与标签 CI 验证 Go、Vue、Linux amd64 / arm64、Darwin amd64 / arm64、Windows amd64 和 Docker;标签产物为五个完整包及两项元数据。
- 回归覆盖单条选择、自然拆分、只压缩超长段、整轮压缩预算、失败不发送、QQ 合并与回退、TG 不合并及平台长度边界、图片描述审核上下文、社交缓存过期和媒体失效。
- 本次发布验证不额外调用付费模型或真实 Telegram API;此前模型样本与离线回放不代表所有自然语言措辞和外部平台场景都已验证。
相关链接
完整版本对比:v0.8.91...v0.8.92
Diana v0.8.91
这是一次安装包交付与聊天体验修订:统一完整包名称、停止单独发布裸二进制,并修复主动回复显式分条被吞掉的问题。
优化改进
-
下载资产统一为
diana-<系统>-<架构>,macOS 使用直观的macos,不再使用darwin。仅提供五个平台完整包,均带后端、编译好的 WebUI 和启动脚本。 -
一键安装器和新版自更新器优先选择新包名;读取历史版本时仍兼容
diana-webui-…,校验和解压使用实际资产名称。 -
减少回复中机械重复的自称、语气词和逐句换行,让相关提示词与实际发送节奏一致。
-
版本弹窗统一使用“重启并安装”,加载时只切换图标、不改变按钮文字,避免操作中布局跳动。
Bug 修复
- 修复主动回复中明确分条标记被折叠成一条消息:原先主动回复分支把显式边界替换成换行,导致用户要求的分条失效。现在保留显式
<dianabr>及兼容旧标记;语义路由的求助和追问遵循正常分条设置,普通闲聊没有显式标记时仍保持克制,不会因排版换行自动拆成多个气泡。 - 仅迁移精确匹配的旧版单条回复默认提示词,不覆盖用户自定义内容;工具执行结果约束保持不变。
行为说明
- 包内可执行文件仍为
diana-webui/diana-webui.exe,旧平台文件名兼容副本保留,无需修改已有服务名称和回滚配置。 - 不再上传独立裸二进制。自定义部署可从完整包取出程序与前端资源;历史 Release 资产不改动。
- 本版共 7 个资产:Linux amd64/arm64、macOS amd64/arm64、Windows amd64 五个完整包,以及
SHA256SUMS、自更新清单latest.json。Docker 镜像继续发布。
升级指南
首次包名迁移需要手动触发安装:旧版自更新器只认识旧包名,不能通过旧 WebUI 直接升级到本版。
- 完整 Release 包/一键安装部署:重跑下方对应平台的一键命令,或停止服务后手动安装完整包,保留配置与数据;不要用空目录覆盖已有数据目录。新版安装器保留校验、备份及健康检查回滚机制。安装本版后,新版自更新器可识别后续新包名。
- Docker:拉取
ghcr.io/suink/diana:v0.8.91(或latest),使用原有挂载、环境变量与端口配置重建容器,保留数据卷;不要运行容器内自更新替换程序。 - 源码部署:备份配置与数据,在工作区无未保存改动时切换到
v0.8.91,按下方命令重建前后端,再使用原有服务管理方式重启:
git fetch --tags
git switch --detach v0.8.91
(cd frontend-next && npm ci && npm run build)
go build -o dist/diana-webui ./cmd/webui安装与下载
与 README 一致的一键安装命令:
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。
Windows PowerShell
irm https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.ps1 | iexDocker
以下与 README 一致,用于首次创建容器;已有部署按升级指南保留原有配置后重建:
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手动下载
从本页下载对应平台的 .tar.gz / .zip 和 SHA256SUMS,校验后解压,运行 run.sh / run.bat。Apple 芯片 Mac 选择 diana-macos-arm64.tar.gz,Intel Mac 选择 diana-macos-amd64.tar.gz。完整包已包含 WebUI,无需单独部署前端或安装 Node.js;控制台默认地址为 http://127.0.0.1:18080,首次登录凭据见启动输出。
测试覆盖
- 本地通过 gofmt、git diff 检查、Go 全量测试、前端依赖安装与生产构建(含 10 项前端测试);依赖审计 0 漏洞。
- 新增完整包发布白名单、五个平台命名、新旧包优先级、macOS 历史包回退,以及新旧包 SHA-256 校验与暂存安装回归测试。
- PR 与正式标签的 Go、Vue、五个平台交叉编译和 Docker CI 全部通过;Windows 安装器未进行本地实机安装测试。
- 发布后实际下载 macOS ARM64 完整包与 SHA256SUMS,独立计算 SHA-256 一致,并确认归档包含后端、启动脚本和 frontend-next/dist;自更新清单资产匹配,Docker v0.8.91 与 latest 指向同一镜像。
相关链接
Diana v0.8.90
Diana v0.8.90 是一次功能整合与稳定性更新:统一控制台加载体验和机器人会话隔离,完善长期记忆、连续消息回复、媒体缓存及磁盘维护,并纳入本轮已合并的全部 PR。
新增功能
- 助手回复模式:优先处理求助,降低无关闲聊的主动参与;超级活跃模式提高默认接话倾向,并修复已被意图识别放行、却在后置审核中误拦截的情况。
- 长期记忆按需查阅:增加只读
diana.memory工具,先搜索短索引,再按 ID 查阅全文、提取证据和版本。公共事实与摘要支持独立候选池及一跳关联扩展,无需 embedding 也能使用文字与关联检索。 - 跨平台公共记忆:双方机器人分别启用长期记忆与跨平台记忆后,按相关性检索非敏感群公共事实和摘要。默认关闭,不合并用户身份,不共享私聊、个人偏好、群规则、会话便签或其他平台原始聊天。
- RSS 多来源订阅:一条订阅可共用同一规则关注最多 10 个账号或 Feed,各来源独立维护游标;一轮命中内容合成一条通知,显示平台和账号。已有单来源订阅继续兼容。
- 本地 Agent 工具:增加
write_file、edit_file、grep、find_files,文件操作限制在 Diana 的 workspace 内;读、写、命令执行分别控制。新增主人专属、只读的diana.host_stats,复用控制台主机指标;温度和功率受平台与传感器支持限制,无法读取时不伪造零值。 - 下载缓存设置:在“设置 → 系统 → 下载缓存”选择按闲置天数、容量上限或永不清理;保存后立即生效并持久化,无需重启。
优化改进
- 控制台骨架屏:总览、提供商、机器人、插件、群管理、人员、笔记本、任务、事件、日志、设置和配置向导按实际结构加载;适配插件方块/横排及桌面、手机布局。刷新保留已有内容,避免闪现零值和空列表。
- 机器人操作统一:配置与删除采用同尺寸按钮,删除使用红色;修复 ghost 样式覆盖危险色、手机端操作按钮被挤窄的问题。
- 机器人插件开关独立:优先级为群级覆盖、机器人级覆盖、历史全局默认值。安装、参数和凭据仍共享,OpenAPI 等进程级能力保持全局开关。切换机器人显示平台、账号和 Bot ID,并跟踪真实请求进度,旧请求不会覆盖新作用域。
- 人员与事件可读性:人员支持按好感度、消息数和活跃时间排序;长期记忆展示结构化记录,原始最近发言作为排查缓冲单独折叠。事件还原昵称、引用及分享卡片摘要,日期按天分隔;日志操作人优先显示昵称。
- 阅读不被刷新打断:事件页停留时仅提示“有新事件”,点击提示或刷新后重新读取;离开页面暂停,返回重新加载。
- 媒体去重与复用:新写入媒体按 SHA-256 内容寻址,复用来源索引和并发下载。Telegram 可用稳定媒体标识减少重复下载;OneBot 仅信任明确提供且经过验证的 hash,不猜测文件名。旧文件继续可读,不自动扫描、迁移或删除历史重复副本。
- 断线回补减负:默认每会话只补处理最近 3 条消息,可在机器人配置中调整为 1–100 条;手动回补也遵循此限制,正常实时消息、历史查询工具和正式回复上下文长度不变。
Bug 修复
- 连续提问被吞掉:旧逻辑把同人短时间追发直接视为补充,可能丢掉前一问题的答案。现在只有模型明确判断为同题补充、且置信度不低于 0.9 时才合并;不同话题、低置信度、失败和超时保留独立路由。原有直接回复与主动回复策略不因此变成“每条消息必答”。本次不包含生成中增量注入或工具结果复用。
- 自然分条开关失效或消失:补齐可视开关轨道;群级未设置时动态继承所属机器人,不再把当时的全局值固化保存。既有显式 true/false 不自动清除;显式分条标记、超长消息切分和合并转发行为保持不变。
- 记忆来源混淆:修复跨群成员缓存的并发 map 写入;人员结构化记忆详情与计数同时按机器人、账号精确过滤,避免不同机器人下相同用户 ID 的记忆混入。空机器人 ID 只匹配旧版无命名空间记录。
- 错误前缀配置不生效:发送侧不再硬编码错误前缀;机器人自己的错误消息保留在历史中,让模型能理解“重试一下”。移除按正文关键词/正则猜测语义意图的残留;模型调用用途读取显式标签,不再扫描提示词猜分类。
- 媒体引用丢失或重复下载:补齐转发媒体恢复、本地分享索引持久化、损坏缓存重新下载和解析大小限制检查。缓存复用不绕过网络访问约束、完整性检查或当前大小限制。
- 日志轮转后看不到新输出:
diana logs -f跟随文件名重开新文件,外部截断后重新读取。 - 升级失败回滚不完整:文件切换前记录交换状态,源码更新脚本保留失败退出码;清理备份失败不会把已健康运行的新版本错误回滚。
行为说明
- 会话上下文固定按机器人配置档隔离,同平台不同机器人也不共享同编号会话。消息互通是显式转发,跨平台公共记忆是受约束的检索,两者不等于合并原始上下文。
- Telegram 默认抑制其他 Bot 的群消息;只有语义判断提到当前机器人时才放行,不要求一定使用
@,无法确认时保持静默。 - 入群申请和群邀请不再自动私聊通知主人;请求持久化、去重、主动查询、同意/拒绝及好友申请通知保持不变。
- 新建机器人配置提供受限的文件写入及只读诊断命令默认值;存量配置不会被静默扩权。旧部署可在控制台填入推荐默认值,检查后另行保存。
- 下载缓存默认闲置 7 天清理、不限容量;正在使用的文件受保护,不删除历史截图或 QQ 原始目录。WebUI 保存后的数据库值优先于 YAML;清理不等于缩小整个数据目录。
- 文件日志按 20 MiB 轮转、保留 5 份;数据库调试日志默认保留 7 天、其他日志 30 天,可配置永久保留。用量统计、聊天记录、长期记忆和配置不在日志清理范围;SQLite 空闲页可复用,文件不会立即缩小。
- 临时升级备份只保留本次尝试:创建前清理旧临时副本,健康检查成功后删除本次副本,失败时保留。安装后不启动时暂不清理;源码更新脚本在构建和文件替换成功后清理,仍需手动重启。请独立维护长期数据备份。
- 人员编辑/删除作用于画像、最近发言缓冲、好感度历史与恋人状态;结构化长期记忆当前只读,删除人员档案不会删除结构化记忆或聊天记录。删除群独立配置只恢复全局规则,不退群、不清除历史,可能重新启用该群回复。
破坏性变更
- 移除
isolate_platform_contexts开关及/api/assistant/config/context-isolation接口。旧关闭标记被忽略;原共享历史保留原位置,不自动复制或分配给各机器人,后续消息使用独立会话。 - 更新下载策略只展示“直连 GitHub / 自动选择镜像加速”,默认直连;需要加速时请显式选择自动模式。已固定的旧镜像设置继续生效,重新选择后才覆盖。GitHub Token 改在“设置 → 系统更新”管理;移除手动镜像列表/测速接口。
- 删除 RSS 插件的
twitter_rss_template设置。旧订阅继续使用已存地址;需要切换来源时编辑或重建订阅。RSS 插件因多来源结构与设置契约调整升级至 0.2.0。
升级指南
- 完整 Release 包:先独立备份数据与配置,再下载对应平台完整包并核对
SHA256SUMS,停服后替换程序、启动脚本及frontend-next/dist,保留原数据目录。已经包含 Release 自更新器的版本可从 WebUI 下载并确认安装;不含自更新器的旧版本需要先手动升级一次,不能直接通过旧 WebUI 自更新。 - Docker:使用
ghcr.io/suink/diana:v0.8.90,或拉取latest后重建容器,保留数据卷与环境变量。Docker 不使用 WebUI 替换宿主镜像。Compose 部署可在确认镜像标签后执行docker compose pull和docker compose up -d。 - 源码部署:切换至已合并的
v0.8.90标签,使用 Go 1.26.6 和 Node.js 22,执行前端npm ci、npm run build,再构建./cmd/webui并重启;不要只替换后端而沿用旧前端。源码版本回落值已同步为 v0.8.90。 - 已有群配置:需要跟随机器人级自然分条的群,请在群设置选择“跟随机器人”后保存;历史显式覆盖不会自动清除。
- 清理策略:升级前检查日志保留和缓存容量设置,并独立保存需要长期保留的备份;临时更新副本不再作为长期备份。从旧版本通过 WebUI 升级到本版时,安装阶段仍由旧更新器执行,备份保留规则以旧版为准;新版清理行为从后续新版更新器执行的升级或最新版安装脚本开始生效。
测试覆盖
- 全量
go test ./...、gofmt -l .、git diff --check、前端依赖安装与生产构建。 - 前端 10 项回归测试,包含骨架布局、危险按钮、隔离开关移除、重复弹窗与作用域切换;1440px、390px、320px 浏览器加载/错误/刷新场景检查。
- 媒体去重与缓存、日志维护、备份清理、命名空间边界和历史保留的 race 专项测试。
- GitHub CI 覆盖 Go、Vue、Linux amd64/arm64、Darwin amd64/arm64、Windows amd64 及 Docker。
- 语义分类使用模拟模型回归,不代表线上语义准确率保证;硬件指标受部署权限和平台支持限制。
安装与下载
- Release 包含 5 个平台的完整包、5 个裸二进制、
SHA256SUMS和更新清单latest.json,共 12 个资产。 - 发布后已独立下载并校验 Darwin ARM64 完整包,SHA-256 为
6044666557717945f8416b6d5fdaf82e6f67eaddefff4c5198e1965182c2b208,与SHA256SUMS一致;归档内已确认后端、run.sh与frontend-next/dist齐全。 - 完整包内含后端二进制、启动脚本及
frontend-next/dist,不需要安装 Go 或 Node。 - Docker 镜像:
ghcr.io/suink/diana:v0.8.90、ghcr.io/suink/diana:latest。 - 两个 Docker 标签均已生成,并独立确认指向同一 OCI digest:
sha256:be98318c7e1ba4429343e8dd121a8cc468936c8ca40f2cafd3eeb5fa732b97bb。
相关链接
- 优化页面加载骨架与机器人按钮,固定会话隔离
- 完善媒体缓存、日志与升级备份清理,稳定事件刷新和记忆归属
- 完善长期记忆召回:跨平台共享、关联检索和按需查阅
- 隔离连续消息话题,避免合并吞掉未完成回复
- 缓存与磁盘维护边界
完整版本对比:v0.8.89...v0.8.90
Diana v0.8.89
Diana v0.8.89 重点完善事件检索与会话筛选、跨平台消息互通、Telegram 引用上下文,并让 Agent 命令执行的权限与隔离状态清晰可见。
新增功能
- 事件页支持按内容搜索历史事件,可结合现有时间、处理结果和会话条件快速定位记录。
- 会话筛选器支持搜索,并将群聊与私聊分段展示;事件页补齐私聊筛选入口。
- 消息互通从插件页迁移到机器人配置页,改为明确的双端配对管理,并支持配置多组互通关系。
- Agent 命令执行新增沙盒配置接线与真实探测,界面和运行时可明确区分“功能未开启”“已开启但无隔离”和“已在沙盒中运行”。
优化改进
- 事件页进一步压缩统计区域和首屏布局,让事件记录本身获得更多展示空间;统计数字与说明同行,记忆块归入调用链面板。
- 下拉菜单挂载到页面根层,避免在弹窗和滚动容器中被裁切。
- 消息互通配置不再自动迁移旧插件字段,避免把含义不同的历史配置误转换成新端点关系。
Bug 修复
- 修复 Telegram 回复缺失被引用消息上下文的问题。生成回复时现在能看到引用内容,同时仍保持 Telegram 不支持真正流式发送的既有行为。
- 补齐 Registry 后备路由实际使用的模型身份,日志和运行时状态不再把故障切换后的模型记成空值或主模型。
- 飞书与 QQ 官方出站消息补齐平台消息 ID,改善后续引用、投递审计与跨平台互通的一致性。
- 命令沙盒状态改为实际试跑探测,不再仅凭配置推测隔离是否有效。
行为说明
- 消息互通的新配置以两端一对为基本单位;旧版插件配置不会被自动搬入,请在机器人页面确认或重新建立需要保留的互通关系。
- 命令执行即使配置为开启,也会分别显示当前隔离能力;没有可用沙盒时不会被描述为已经安全隔离。
升级指南
- 完整 Release 包:下载对应平台的压缩包并替换程序目录,保留现有数据目录与运行配置。
- Docker:拉取 ghcr.io/suink/diana:v0.8.89 或 latest 后重建容器,继续挂载原有数据卷。
- 源码部署:切换到 v0.8.89 标签,重新构建 frontend-next 和后端程序后重启。
- 从 v0.8.88 升级无需数据库手工迁移;使用消息互通的部署需在升级后检查新的机器人页配置。
测试覆盖
- 已通过 gofmt、git diff 检查及 go test ./...。
- 前端依赖审计为 0 个漏洞,Vue 类型检查与生产构建通过。
- 发布 PR 的 Linux amd64/arm64、Darwin amd64/arm64、Windows amd64 和 Docker 构建全部通过。
相关链接
- 命令执行的沙盒接线与可观测性:PR #404
- 完整版本对比:v0.8.88...v0.8.89
What's Changed
- 事件页首屏让给事件本身:可视高度 178px → 308px by @SuInk in #397
- 事件页统计改成一行文字:事件区占比 43% → 55% by @SuInk in #399
- 补齐 Registry 后备路由的模型身份,修复 Telegram 引用上下文缺失 by @SuInk in #398
- 消息互通搬到机器人页并改为两端一对,下拉菜单不再被弹窗裁掉 by @SuInk in #400
- 会话筛选器补上私聊:「全部会话」不再只有群 by @SuInk in #401
- 事件页支持搜索 by @SuInk in #402
- 会话筛选器支持搜索,群聊与私聊分段 by @SuInk in #403
- 命令执行的沙盒接线与可观测性:让「有没有隔离」和「开没开」看得见 by @SuInk in #404
- 准备 Diana v0.8.89 发布 by @SuInk in #405
Full Changelog: v0.8.88...v0.8.89
Diana v0.8.88
Diana v0.8.88 聚焦回复稳定性、模型故障切换、棋局图片一致性与管理界面可读性,并改善更新和日志兼容体验。
回复与模型稳定性
- 恢复 OpenAI Responses 流式接口中的工具调用解析,工具请求不再被误当成普通文本;上游失败时继续遵守机器人错误提示开关。
- 支持为模型配置有顺序的备用路由;主模型不可用时可按配置依次切换,降低单一模型故障导致的回复中断。
- 裸唤醒后补答时不再重复招呼或反问用户,直接承接需要回答的内容。
五子棋与图片任务
- 棋盘图片绑定临时棋局的 canonical 状态版本;棋局推进后会取消同局旧图片任务,发送前也会再次校验版本,避免旧棋盘在新落子之后补发。
- 同一棋局版本的图片任务会去重并短期复用,重复落子或多人同时追问不会反复生成相同棋盘。
- 坐标棋盘、表格和流程图等要求位置、数量准确的结构化画面优先使用 SVG 确定性渲染;人物、场景与艺术风格图片仍使用生成式图片模型。
管理界面
- 事件页顶部统计从八张零散卡片合并为三组核心指标,减少视觉噪声并更快定位处理结果、模型调用和 Token 消耗。
- 事件明细中的长期记忆与临时记忆默认折叠,需要时再展开,长事件记录更易浏览。
- 生成速率脚注会准确说明统计中包含的模型调用,不再错误显示“没有模型调用”。
- 更新面板首次打开即可加载版本与线路测速结果;更新完成后自动重载界面,减少手动刷新和旧前端残留。
数据兼容与修复
- 启动时迁移历史日志中带时区偏移的 created_at 值,统一为可排序格式,修复事件列表报 SQL 时间比较错误的问题。
- 保持临时任务状态的版本并发保护:状态可更新、完成或取消,结束后内容会清空且保留必要审计记录。
升级说明
本版本不包含破坏性配置变更,可从 v0.8.87 直接升级。运行中的临时棋局会继续使用现有持久化状态;新版本启动后,后续棋盘图片开始应用版本校验与去重规则。
What's Changed
- 裸唤醒触发补答时不再重复招呼和追问 by @SuInk in #387
- 更新面板一次加载出结果,更新完成后自动重载界面 by @SuInk in #389
- 支持机器人跨分组模型故障切换 by @SuInk in #388
- 修复 Responses 流式工具调用恢复与错误提示静默 by @SuInk in #390
- 迁移历史日志里带时区偏移的 created_at,让旧数据重新出现在统计里 by @SuInk in #391
- 事件明细里的记忆块默认收起 by @SuInk in #392
- 事件页统计卡从 8 张合并到 3 张 by @SuInk in #393
- 修复五子棋棋盘乱序并优先确定性渲染 by @SuInk in #394
- 生成速率脚注不再谎称没有模型调用 by @SuInk in #395
- 准备 Diana v0.8.88 发布 by @SuInk in #396
Full Changelog: v0.8.87...v0.8.88