SLS 的 LogStore 是 Append-Only 追加写入模式,不支持原地更新,而 Dify 工作流执行过程存在状态流转(从 RUNNING 变为 SUCCEEDED/FAIL)。SLS 插件采用了多版本控制策略来解决这个矛盾:
写入策略: 每次状态更新时不覆盖旧日志,而是新写入一条包含完整状态的日志记录。插件在日志模型中引入了一个纳秒级时间戳字段 log_version 来区分同一执行记录的不同版本。
读取策略: 在查询或统计时,插件内部会自动生成聚合 SQL,对于同一个 workflow_run_id,始终选取 log_version 最大的那条记录作为最终状态。
此外,插件还实现了 Schema 自动同步——启动时自动扫描 SQLAlchemy 模型定义并与 SLS 索引配置进行 Diff,发现新字段后自动更新索引,用户无需手动维护。SLS 还原生支持 PostgreSQL 协议,绝大部分原有的统计与分析 SQL 可通过 PG 兼容模式直接在 SLS 上执行。