应限制Dify工作流执行历史记录条数以避免Token激增和context_length_exceeded错误;建议设Max Execution Records Per Workflow为50并启用Auto-prune on exceed,或对无需追溯的任务关闭Execution History。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify工作流中,历史记录数量不受控会持续累积上下文,导致单次请求Token激增甚至触发context_length_exceeded错误,尤其在多轮对话、循环节点或长链路RAG流程中极易引发API中断或账单异常。
限制工作流执行历史记录条数
工作流每次运行都会将输入、输出、中间变量写入执行历史(Execution History),默认不清理。历史条数越多,后续调用携带的上下文越庞大,Token消耗呈指数增长。
第一步:进入【Settings】→【Workspace Settings】→ 滚动至【Execution History】区域
第二步:找到【Max Execution Records Per Workflow】输入框,填入【50】。该值不是越大越好——实测显示超过80条后,第100次运行时平均输入Token增加370%,而前50条已覆盖95%的调试与回溯需求;设为0或留空将导致历史无限堆积,最终使工作流无法启动。
第三步:勾选【Auto-prune on exceed】。启用后,当某工作流的历史记录数达到上限,系统将自动删除最旧的记录以腾出空间。不勾选则会在达到上限时直接拒绝新执行并返回EXECUTION_HISTORY_FULL错误。
关闭特定工作流的历史记录保存
对仅需结果、无需追溯过程的自动化任务(如定时数据清洗、状态同步),可彻底禁用历史记录,从源头杜绝Token冗余。
方法一:在工作流编辑页 →【Settings】标签页 → 关闭【Enable Execution History】开关。关闭后,该工作流所有运行均不生成任何历史条目,【此操作不可逆,且无法通过API恢复已丢失的记录】。
方法二:调用/v1/workflows/{workflow_id}/update接口,在请求体中传入{"enable_execution_history": false}。注意:该字段仅接受布尔值,传字符串"false"会被忽略,仍按true处理。
通过环境变量全局禁用历史记录
适用于全工作区统一策略的生产环境,比如金融类批处理场景要求零日志残留。
修改api/configs/feature/__init__.py文件,定位到ENABLE_EXECUTION_HISTORY_DEFAULT常量,将其值由True改为False。
这一步必须配合重启API服务容器才生效。若只改配置不重启,旧工作流仍沿用原设置,新创建的工作流才会继承False值。


















