- Remove shouldSearchContent() trigger gate — search runs on all messages - extractSearchQueries() now extracts from ANY message, not just trigger-matched - Redis cache (24h TTL) prevents redundant searches for same query - initSearxngCache() lazy-connects via config.REDIS_URL - Cache miss→API, hit→skip — fire-and-forget writes - Both text batch + media path simplified