我把名为Zoya的Dograh AI语音代理部署到公司生产网站,负责处理4K视频制作、音频工程和App开发业务的客户咨询。上线后的前48小时一切正常,代理在对话流程里应答如流,完全没有异常延迟。可刚到第三天,线上用户突然反馈服务菜单页面直接卡死,会话无限加载,所有新发起的交互全部掉线。

问题来得毫无征兆。一查后台,100%的新交互都失败了,相当于这段时间里任何潜在客户都无法联系到我们。本地开发环境一切正常,唯独容器化的生产实例在持续运行48小时左右会悄悄丢失状态,最终导致系统提示无法正确初始化。Docker容器的环境变量没有做持久化,卷挂载也设得草率,每次重启后工作流上下文就被重置,代理因此失去对话记忆,连基本的引导语都加载不出来。

更棘手的是,旧配置经过多次匆忙修补已经乱成一团,继续在上面打补丁只会拉长排查时间。我干脆把之前那套配置文件整个归档,从零搭建了一套全新的代理设置。新方案规范了Docker卷映射,把需要持久化的目录显式挂载出来,环境变量全部挪到.env文件并通过启动脚本注入。同时重写了系统提示的加载顺序,确保容器启动时即便工作流引擎还没完全就绪,提示注入器也能等待依赖服务存活后再执行。

为了让故障能在早期暴露,我加入了Docker健康检查端点,代理就绪之前拒绝任何外部连接。配合Sentry捕获的异常堆栈,可以快速判定是状态丢失还是提示加载环节出错。重启策略也改成了在退出码非零时自动拉起,避免手动干预。

这些调整上线后,新代理连续运行多日没有再出现会话中断,所有对话上下文都能在容器重启后恢复。整件事让我意识到,对于需要长期保持会话状态的AI代理,光让容器跑起来远远不够,必须把状态持久化和初始化健壮性当作一等需求来设计,否则一条配置疏漏就能让整个业务窗口期全军覆没。