启用多用户会话隔离需三步:一、.env中设session_store=redis;二、配置redis_url及session_ttl;三、前端传x-user-id头。后台需开启自动清理并设ttl_hours与cleanup_interval,python脚本支持按用户、时间或redis键批量清理。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

本地部署Dify时启用多用户会话隔离
在自建服务器上运行Dify时,若多个用户共用同一套前端入口,不加干预会导致所有人的聊天记录混在一起,刚登录的用户可能看到别人昨天的订单咨询。必须从存储层切断共享路径。
第一步:修改Dify服务端配置文件 .env,将默认内存会话存储切换为Redis:
【SESSION_STORE=redis】
第二步:确保Redis服务已启动并可访问,然后在同一个.env中添加连接参数:
REDIS_URL=redis://127.0.0.1:6379/1
SESSION_TTL=3600
第三步:重启Dify服务使配置生效。此时每个用户的会话数据都会以session:{user_id}:{session_id}格式写入Redis第1号数据库,天然实现键级隔离。注意:user_id需由前端在调用API时通过X-User-ID请求头传入,否则Redis键中缺失用户维度,仍会串号。
配置Dify后台自动清理过期会话
光靠Redis自动过期还不够——Dify需要主动扫描并删除空闲会话,否则Redis里残留的键可能长期不触发EXPIRE逻辑。
进入Dify管理后台 → Settings → Application Settings → Session Management区域:
开启「Enable Auto Cleanup」开关;
填写ttl_hours=24(会话最长空闲24小时);
设置cleanup_interval=1h(每小时执行一次扫描)。
本地音视频转录整理技能 — 接收音频、视频、播客链接、字幕、原始转写稿或未整理文字,完成 ASR 转录(本地 faster-whisper / mlx-whisper)、文本清洗整理,输出分享式提纯版中文原文到本地 .txt 文件。所有产物保存在本地。
保存后,Dify会在后台定时执行SQL或Redis命令,精准删除last_active_at早于NOW() - INTERVAL 24 HOUR的所有会话记录。这一步不可跳过,否则即使Redis设置了EX,Dify内部消息索引表仍会保留脏数据。
编写Python脚本实现手动触发批量清理
当用户点击“清除全部历史”或响应GDPR删除请求时,需绕过定时任务立即执行清理。以下脚本支持按用户ID或时间范围批量清理:
方法一:按用户ID清空所有会话
安装依赖:pip install requests
执行命令:python clear_by_user.py --user-id usr_abc123
方法二:删除7天前所有会话(需Dify API开启DELETE /v1/conversations)
运行脚本前,确认环境变量DIFY_API_KEY和DIFY_BASE_URL已正确设置;
脚本会先调用GET /v1/conversations?limit=1000&offset=0拉取会话列表,再逐个比对created_at字段,对早于指定时间的session_id发起DELETE /v1/conversations/{id}请求;
【该操作不可逆,被删除的会话无法恢复】
方法三:强制刷新Redis中所有会话键(仅限开发环境应急使用)
直接执行redis-cli -n 1 KEYS "session:*" | xargs redis-cli -n 1 DEL,立刻清空第1号库全部会话键。生产环境禁用此方式,会误删活跃会话。










