游乐游手机版
首页/AI热点日报/热点详情

Dify外部存储节点实现超长历史会话永久归档

类型:热点整理2026-08-07
Dify默认仅保留最近100轮对话,超长历史会话会丢失。通过外部存储节点(PostgreSQL或MinIO)可永久归档,需开启外部存储集成、启用会话历史导出、获取API密钥,部署对应存储并绑定至应用,设置归档所有会话。已有会话需调用API补录,配置后验证记录生成。

你可能遇到过这种场景:Dify里跑了一个客户服务机器人,对话进行到第101轮,结果前面的内容,没了。没错,Dify的内置数据库默认只保留最近100轮对话,超出部分,自动截断,丢了就丢了。

如果你需要完整保存所有历史交互记录,比如用于客服对话存档、合规审计等场景,那就必须借助外部存储节点,把会话数据流给接过来。

如何在Dify中利用外部存储节点实现超长历史会话的永久归档

配置外部存储节点接入权限

首先,打开Dify控制台,在左侧导航栏找到【Settings】,然后选择【Advanced】选项卡。第一步,把【External Storage Integration】这个开关打开。

关键一步来了:记得勾选【Enable session history export】。这个开关一旦打开,系统就会强制启用会话数据外发机制。注意了,如果这个开关没开,后面你做的所有配置都不生效,等于白忙活。

接着,页面底部会生成一个API密钥,复制下来,妥善保管。这个密钥只显示一次,丢了就得重新生成。

部署兼容的外部存储服务

接下来,你需要准备一个外部存储来接收数据。这里有两种常见方案,任选其一。

方法一:使用PostgreSQL自建表结构

创建一个名为dify_sessions的数据库,然后执行下面的建表语句:

CREATE TABLE sessions (id VARCHAR(255) PRIMARY KEY,app_id VARCHAR(255),user_id VARCHAR(255),messages JSONB NOT NULL,created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW());

这里有个技术细节需要留意:messages字段的类型必须是JSONB。如果用了其他类型,Dify写入数据时格式校验会失败,整条记录都会被丢弃。

方法二:对接MinIO对象存储

如果你更习惯用对象存储,可以在MinIO里新建一个存储桶,命名为dify-archives,并设置好读写权限。Dify写入数据时,会按照/app_id/user_id/YYYYMMDD/session_id.json这个路径来存放文件,完全自动管理。

绑定存储服务到具体应用

存储服务部署好后,需要把它绑定到目标应用上。

第一步:进入Dify应用编辑页,点击【Chatbot】标签,然后一直往下滚动,找到【Session Management】区域。

第二步:点击【Configure External Storage】,从下拉列表中选择你刚才配置好的PostgreSQL或MinIO实例。

第三步:在【Session Retention Policy】中,选择【Archive All】,然后保存设置。

设置完成后,新发起的会话将不再写入Dify的本地数据库,而是直接传到外部存储。但要注意,之前已有的会话历史不会自动迁移,你需要单独调用/v1/export_sessions这个API来触发补录。

验证归档是否生效

配置全部完成后,最好验证一下。

在应用中发起一次新对话,随便发送3条以上的消息。然后立即登录PostgreSQL,执行SELECT COUNT(*) FROM sessions WHERE app_id = 'your_app_id';,看看能不能查到记录。如果用的是MinIO,就去对应的路径下检查是否有.json文件生成。

如果查不到记录,先别慌。回到【Settings】→【Advanced】,确认一下API密钥是否过期,或者检查一下网络策略,看是不是拦截了Dify到存储服务地址的出站POST请求。

来源:https://www.php.cn/faq/2928949.html?uid=1589237

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。