返回列表

开源贡献-Langflow

围绕 Langflow 的异步取消传播和 LFX 工具并发调用隔离,修复共享状态污染与异常吞噬问题,补充同步/异步回归测试。

Langflow 是用于构建和部署 AI Agent 与工作流的可视化平台。本次贡献覆盖两条容易在生产环境放大的异步边界:内存持久化在取消期间必须保留 CancelledError,以及组件工具调用不能通过临时修改共享方法影响并发请求。

  • - 保留 asyncio.CancelledError 原始语义
  • - 回滚清理在二次取消时仍能完成
  • - 工具调用使用深拷贝隔离 send_message 状态
  • - 同步与异步重叠调用均有确定性回归测试

开发记录

  • fix(mem0): defer client import during startup:在 Langflow 启动过程中,Mem0 组件的客户端导入会立即执行,导致在导入阶段就创建或修改 `.mem0` 家目录,产生不必要的文件系统副作用。这一问题会影响只读容器环境或对文件系统有严格限制的部署场景,同时可能干扰遥测退出逻辑和 `Memory` 输出类型的正常行为。Issue #14227 报告了该启动时副作用问题,需要在不改变用户可见功能的前提下,将 Mem0 相关初始化延迟到组件真正被使用时再执行,并确保现有配置(如 API 密钥传递方式)不受影响。
  • fix(memory): propagate message cancellation:aadd_messagetables 在 commit、refresh 或 rollback 清理阶段收到 asyncio.CancelledError 时,递归重试和异常包装可能把取消转换为 ValueError,破坏任务组的取消传播并掩盖原始控制流。
  • fix(lfx): isolate component tool message suppression:组件工具调用通过临时修改共享 component 的 send_message 方法来抑制工具消息;同步和异步调用重叠时会互相看到对方的临时状态,造成 UI 消息串扰和竞态。