既然节点会挂,我就用 LLM 搞了个自愈系统 (自纠错版)

既然节点会挂,我就用 LLM 搞了个自愈系统。今天下午,我盯着 n8n 工作流里那个自动滚动的绿色运行日志,突然意识到一个恐怖的事实:我亲手搭建的自动化管道,每一个节点都是一个潜在的断点。API 频率限制、网站反爬改版、第三方服务抽风、甚至我自己的 OpenAI 额度耗尽,任何一个环节崩掉,整个流程就卡死,像个植物人一样等着我去“抢救”。这他妈哪是自动化,这是给自己找了份 24 小时值班的网管工作。

2019年那会儿带团队做外包,最怕的就是客户半夜打电话说“系统挂了”。当时靠的是人肉轮班,电话打到爆。现在回归超级个体,难道还要被自己写的代码绑架?绝对不行。我得让系统自己会看病,会开药。

我的思路很简单,但实现起来全是坑。核心就一句话:用 LLM 做交叉验证和路径重路由。比如,我有一个核心节点是调用某电商平台的 API 抓取商品价格。传统做法是 try-catch,挂了就发警报邮件给我。现在不是。我在这个节点前后,部署了两个“侦察兵”LLM 调用。一个在请求前,用 GPT-4 根据历史请求数据和当前时间,预判 API 可能返回的错误类型(是限流403,还是数据结构变更200但内容为空)。另一个在请求后,如果原始节点返回的状态码或数据格式异常,不是直接报错,而是把错误信息、原始请求参数、以及爬下来的残缺 HTML(如果有)一起喂给另一个 LLM。

这个事后 LLM 的任务不是修代码,而是“找路”。它的系统指令是:“你是一个资源发现引擎。基于当前的错误描述和残留数据,列举三个可能的替代方案来获取目标信息。方案必须具体,例如:1. 更换同平台另一个未被频控的端点(给出具体URL示例);2. 使用 Playwright 模拟浏览器点击绕过 API 限制(给出大致代码逻辑);3. 切换至备用数据源,如竞品网站 A 或聚合平台 B(给出具体网址和解析建议)。”

然后,自愈系统会启动一个并行的“尝试队列”,按照 LLM 建议的优先级,去快速测试这些替代路径。测试过程本身也是自动化的,用简单的规则判断成功与否(比如是否能解析出价格数字)。一旦有一条路走通,工作流就会自动切换到这条新分支,并把这次“绕行”的成功方案和上下文,作为新的知识片段存储到向量数据库里。下次类似错误再出现,系统会先查知识库,直接用历史成功方案尝试,不行再召唤 LLM。

这里最大的坑有两个。一是 LLM 的幻觉。它可能建议一个根本不存在的 API 端点,或者给出无法执行的代码。我的应对是“沙盒测试”和“信用评分”。每个 LLM 建议的方案,都会在一个资源消耗极小的隔离环境里快速跑一下,失败就直接丢弃,并且给这个“建议”扣分。多次提供有效方案的 LLM 模型(我同时接入了 GPT-4 和 Claude)会获得更高权重。二是成本。每次错误都叫 GPT-4 来会诊,账单吃不消。所以我做了分级触发机制。只有高频核心节点、且错误类型不在现有知识库里的,才会动用顶级模型。一般的、已知的错误,直接走预设的备用路由。

搞这个不是为了炫技。2023年被 AI 震撼之后,我一直在想,一个超级个体凭什么和团队竞争?靠的就是这种“自愈力”。我的时间必须用在创造和决策上,而不是像消防员一样到处救火。这套系统运行两周,已经默默处理了十七次节点故障,我只在它尝试了所有路径都失败后,收到过一条钉钉告警。那一刻我才觉得,自动化终于有点自动的样子了。

它还不完美。LLM 的响应延迟是个问题,复杂场景下的路径寻找成功率大概在七成。但这已经让我晚上能关掉提醒睡个整觉了。所谓的超级个体,不是把自己累成狗,而是打造一个即使你躺平,也能持续运转并自我优化的系统。系统韧性,才是未来几年个人IP最深的护城河。接下来我打算把这套逻辑封装成 n8n 的自定义节点,就叫它“Surgeon”(外科医生)吧。

© 版权声明
THE END
喜欢就支持一下吧
点赞29 分享