用途:为 Lindy webhook 触发流量和工作区用量构建应用侧控制,适用于触达速率限制、优化额度消耗或实现用量管控的场景。资料强调 Lindy 的套餐条款、价格、额度规则与服务限制可能变化,应从当前工作区与合同获取,而非把固定商业数字写进代码。本技能不假设存在未文档化的 Lindy REST API 或 SDK。
主要能力与用法:
- 先记录每个 Lindy 额度或服务约束的证据来源与复核日期,再独立选择应用自有控制项,例如每租户或工作负载的最大准入事件数、队列深度与时长上限、序列化负载大小上限、重试次数与总重试截止、每工作池并发数以及告警、削峰和停止阈值。这些是本地风险控制,不代表 Lindy 的服务限制。
- 在附加触发密钥前失败关闭:解析配置 URL,要求协议为 https、主机名严格为 public.lindy.ai、无用户名密码且路径以 /api/v1/webhooks/ 开头;拒绝空密钥。示例代码保留原样: const triggerUrl = new URL(process.env.LINDY_TRIGGER_URL ?? ''); const triggerSecret = process.env.LINDY_TRIGGER_SECRET ?? ''; if ( triggerUrl.protocol !== 'https:' || triggerUrl.hostname !== 'public.lindy.ai' || triggerUrl.username !== '' || triggerUrl.password !== '' || !triggerUrl.pathname.startsWith('/api/v1/webhooks/') ) { throw new Error('Refusing to send a trigger secret outside the expected Lindy webhook URL'); } if (triggerSecret.length === 0) throw new Error('LINDY_TRIGGER_SECRET is required'); 不要把触发密钥发送给回调接收方,也不要复用回调密钥。
- 入队前校验与去重:仅允许有文档的字段、类型、长度与枚举值;拒绝未知字段和超限负载;要求来自业务事件的稳定 requestId,并在共享幂等存储中原子预留后再入队。除非当前 Lindy 文档明确证明,调用方需自行维护去重账本。
- 全部署维度限流:在共享存储中使用原子令牌桶、漏桶或并发信号量,按隔离边界(如租户加智能体)键控;进程本地计数器不足。安全路径为:有界输入 → 共享幂等认领 → 持久队列 → 共享准入控制 → webhook 工作进程 → 结果账本。
- 响应检查与重试:2xx 仅表示传输接受,不代表任务完成;认证类及其他不可重试 4xx 视为永久失败;仅对 408、429 及选定 5xx 等显式瞬时结果重试,使用带上限的指数退避与抖动,并遵守本地最大延迟上限;耗尽后进入死信。记录状态类别、尝试次数、延迟与请求 ID,绝不记录密钥或完整负载。可在 Lindy 任务视图或携带同一 requestId 的认证回调中确认任务创建。
- 监控与调优:跟踪准入、排队、削峰、重试、死信与已确认事件,队列时长、响应状态类别及可用 Lindy 视图中的工作区用量;基线持续偏移时告警。
限制:资料未提供具体 Lindy 价格、额度数值或服务限制,需以当前工作区与合同为准;未说明存在可选用的 Lindy REST API 或 SDK,故不依赖;需自备共享原子存储、持久队列与死信处理。