近期上下文
保留当前会话最近消息,优先满足引用、追问和连续对话。
实现
平台适配器只负责收发与归一化,Assistant Runtime 拥有决策边界,模型和工具在明确权限内执行,SQLite 保存可恢复的状态。
架构
| 目录 | 职责 |
|---|---|
cmd/webui/ | 进程入口、环境装配、SQLite 和运行时依赖注入。 |
model/assistant/ | 消息事件、通道、回复决策、Agent、媒体、记忆与任务。 |
model/llm/ | 统一请求、Provider adapter、模型目录、token 预算和重试。 |
model/storage/ | Schema、配置、消息、事件、记忆和任务持久化。 |
webui/ | Gin API、鉴权、配置、事件、更新和 SSE。 |
frontend-next/ | Vue 3 管理控制台。 |
调用链
平台 adapter 将文本、@、引用、图片、文件和发送者转换为统一 MessageEvent。
解析引用、转发和媒体引用,将短效平台图片写入本地历史媒体缓存。
检查机器人/群启用、回复时间、屏蔽用户、群等级和机器人互聊抑制。
私聊直接处理;群聊检查显式 @、引用、触发词和插件命令。显式 @ 的优先级高于引用。
未直接触发的普通群聊由意图模型即时判断,最多等待 60 秒,避免永久排队。
组合系统提示、关系、长期记忆、近期历史、图片和工具证据,并按 token 预算裁剪。
选择对话或视觉角色;Agent 执行受限工具并记录每一步。
回复回到来源通道,持久化是否回复的详细原因、发送结果、耗时与 token。
记忆
保留当前会话最近消息,优先满足引用、追问和连续对话。
历史达到阈值后提炼主题、结论和未完成事项,减少重复 token。
异步提取稳定事实、偏好和关系信息,带来源、置信度和更新时间。
按时间、关键词、用户、群和平台检索;跨群与跨通道分别受独立开关控制。
检索先使用结构化过滤缩小范围,再做文本相关性与时间衰减排序,最后只向模型提供命中的证据片段。摘要重新加载配置时不会重新计算,只有输入历史变化或摘要版本升级才失效。
多模态
数据
| 数据 | 默认位置 | 备份要求 |
|---|---|---|
| 配置、凭据、会话、消息、记忆、任务 | data/diana.db | 必须备份,并保持主库与 WAL/SHM 一致。 |
| 入站媒体 | data/media | 可按容量淘汰;历史识图需要时一并备份。 |
| 运行日志 | logs/diana.log | 定期轮转,不公开平台事件和调试上下文。 |
| 安装与更新备份 | .installer/backups、.diana-updates | 保留最近可用版本和恢复证据。 |