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,无需单独安装前端依赖。