从0到1:企业级AI项目迭代日记 Vol.56|每一个“差点能用”,都是一次真实的用户流失
系统最危险的状态不是明显崩溃,而是“差点能用”:语音识别差点准确、知识库差点入库成功、AI生成差点没超时、沙箱差点跑通。
每一个“差点”,用户都感知到了,但监控可能没有。
这一轮的工作,是把上一轮做完的功能,从“差点能用”推到“真的能用”。
一、沙箱能跑代码,但跑不了文件
代码沙箱上线之后,用户开始真的用它——然后发现:能跑 Python,但处理 Excel 会报错,生成图表没有输出。
Excel 读写需要额外的文件处理库,沙箱镜像里没有预装;图表生成依赖图形界面,但容器环境里没有显示器,matplotlib 默认的渲染后端会直接失败。这类问题在本地开发时不会出现,修复之后沙箱支持 Excel 和 PPT 文件读写,图表渲染切换到无头模式,配置固化到部署层,不再依赖运行时环境是否恰好正确。
同期修了一个更隐蔽的问题:沙箱服务的内部调用在某个环境下走了外部代理,导致请求超时返回 502——功能逻辑完全正确,只是网络路由配置让内部调用绕了一个大圈。
二、工具步骤可视化:让过程可信
智能体运行时,用户看到的是最终回答。但在回答出来之前,智能体可能调用了五个工具、查了三个知识库、执行了一段代码。这个过程之前是黑盒的,用户不知道智能体“做了什么”,只知道“给了一个结果”。
这轮把工具调用的参数和返回值带进了流式事件,前端工具步骤可以展开查看详情,同时对敏感字段做了脱敏处理。这个改动不是新增能力,而是让已有能力变得可观测。用户能看到过程,才能判断结果是不是可信的。
三、AI生成超时与飞书语音:资源配错了
智能体中心新增了 AI 润色和生成能力。上线之后用户反馈“点了没反应”或“报错”。根因是超时配置按普通接口标准设了 30 秒,但 AI 生成慢的时候需要一两分钟,触发后返回 500,用户看到的是一个无法理解的失败。修复分两步:超时放宽到 120 秒,限制输出长度,超时时明确返回 504 而不是 500。
飞书语音消息打通转写之后,第一个反馈是中文识别不准。根因是默认使用的转写模型太小,没有针对中文做特殊处理,繁体字输出也没有转简体。把模型升档,加了中文语言提示,补了繁转简,准确率明显提升。
这两个问题有一个共同点:功能本身没有问题,但相关的资源配额和配置假设错了——时间给得不够,模型选得太小。这类错误只在真实使用中才会暴露。
四、知识库链路的两个状态问题
绑定竞态:编辑智能体时修改知识库绑定,弹窗里的保存和关闭弹窗时主表单的保存会互相覆盖,第二次保存拿的是旧状态,把第一次的结果覆盖掉了。用户的感知是“改了,但没生效”。更糟的是:不可操作的绑定项在整体替换逻辑里被一起清掉了,用户只改了一个,系统把所有都重置了。修复后绑定更新逻辑区分了“用户主动修改的部分”和“只读的部分”。
入库雪崩:知识库入库是多阶段的异步流程——上传、分析、向量化、入库。分析阶段因网关偶发卡顿触发重试,重试又触发了更多重试,最终整个文件回滚重跑,入库进度归零。同时分析阶段和“可检索”状态耦合在一起,分析没完成就不标记为可检索,用户看到“未就绪”误以为入库失败。修复方向是限制重试放大的链条,同时把分析状态和可检索状态解耦。
这一轮没有新的大功能,全是“最后一公里”:沙箱能处理文件了,工具过程能看见了,AI生成不会莫名超时了,语音识别不会识别成繁体了,知识库绑定保存不会悄悄丢了,知识库入库不会雪崩了。
每一项单独看都不大,但加在一起,是用户每天真实会碰到的那些卡住的地方。
这,是第五十六天。
《从0到1:企业级AI项目迭代日记》记录一个企业级 AI 项目从创意、架构到落地的真实过程。不讲神话,只记录进化。
如果你也在做企业 AI 落地,欢迎留言来聊。或者,把这篇转发给一个正在踩同样坑的朋友。
