aionclaw支持sql查询结果缓存与去重机制以避免重复请求。启用「sql查询结果缓存」开关后,默认缓存10分钟内相同sql及参数组合结果(有效期600秒);关闭则直连数据库,高并发下易致连接超限。去重可选三种方式:一是在sql中手动添加not in子句并维护aionclaw_cache_log日志表;二是加时间窗口过滤(如5分钟内更新数据);三是在定时任务中启用「执行指纹校验」,基于sql哈希或业务主键自动跳过24小时内已成功执行的批次。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在使用AionClaw执行数据库查询类自动化任务时,若未配置缓存或去重逻辑,AI智能体可能对同一查询条件反复发起请求,导致接口限流、响应延迟甚至数据不一致。
启用内置查询结果缓存
打开AionClaw主界面→点击左下角【设置】图标→进入「技能运行」→开启「SQL查询结果缓存」开关。
该功能默认缓存最近10分钟内相同SQL语句与参数组合的执行结果,缓存有效期为600秒,无需额外配置数据库连接池或Redis实例。关闭此开关后,所有SELECT语句将绕过本地缓存直连目标数据库,【高并发场景下易触发数据库连接数超限】。
在SQL语句中嵌入唯一标识去重
方法一:使用WITH RECURSIVE或临时表标记已处理ID
在编写自定义SQL技能脚本时,在WHERE子句后追加AND id NOT IN (SELECT processed_id FROM aionclaw_cache_log),并确保aionclaw_cache_log表存在且有索引。这一步必须由用户手动创建日志表并授权写入权限,否则查询将报错退出。
方法二:添加时间窗口过滤
将原查询SELECT * FROM orders WHERE status = 'pending'改为SELECT * FROM orders WHERE status = 'pending' AND updated_at > NOW() - INTERVAL 5 MINUTE,强制限定只查最近5分钟变更的数据,避免全表扫描重复拉取历史记录。
配置定时任务跳过已执行批次
第一步:在「定时任务」面板新建一个数据库同步任务。
第二步:点击「高级选项」→勾选「启用执行指纹校验」→在「指纹字段」中填入SQL哈希值或业务主键字段名(如order_no、user_id)。
第三步:保存后,系统会自动为每次成功执行生成唯一指纹并写入本地SQLite缓存库。下次触发时,若检测到相同指纹已在过去24小时内执行成功,则跳过本次运行。
注意:指纹校验仅对「成功完成」的任务生效,失败任务不计入去重范围,防止异常中断后永久漏处理。











