"Mis Temas Favoritos", de Jeffrey Emanuel Prompt 4: El optimizador de cerebro grande "Primero lee TODOS los archivos de AGENTS dot md y README dot md con mucha atención y entiende TODOS los dos. Luego usa tu modo agente de investigación de código para entender completamente el código, la arquitectura técnica y el propósito del proyecto. Luego, una vez que hayas hecho un trabajo extremadamente exhaustivo y meticuloso en todo eso y comprendido profundamente todo el sistema existente, lo que hace, su propósito, cómo se implementa y cómo todas las piezas se conectan entre sí, necesito que investigues, estudies y reflexiones de forma hiperintensiva sobre estas cuestiones en relación con este proyecto: ¿Hay otras ineficiencias graves en el sistema central? Lugares en la base de código donde: 1) los cambios realmente cambiarían la diferencia en cuanto a latencia/respuesta general y rendimiento; 2) y donde nuestros cambios serían demostrablemente isomorfos en términos de funcionalidad, de modo que sabríamos con certeza que no cambiaría las salidas resultantes dadas las mismas entradas (para métodos numéricos aproximados, se puede interpretar "igual" como "dentro de una distancia épsil"; 3) donde tienes una visión clara de un enfoque obviamente mejor en términos de algoritmos o estructuras de datos (ten en cuenta que para esto puedes incluir en tus contemplaciones estructuras de datos menos conocidas y algoritmos más esotéricos/sofisticados/matemáticos, así como formas de reformular el/los problema(s) para exponer otro paradigma, como la teoría de la optimización convexa o técnicas de programación dinámica. También ten en cuenta que si conoces bibliotecas de terceros bien escritas que funcionen bien, podemos incluirlas en el proyecto. Usa ultrathink."
Si te gusta este prompt, entonces echa un vistazo a sus temas de hermano mayor:
Jeffrey Emanuel
Jeffrey Emanuel10 ene, 12:18
He incluido aquí la versión en miniatura de este prompt porque la serie "My Favorite Prompts" se supone que son pepitas compactas, de tamaño de bocado y autónomas. Pero hoy he transformado esto en un sistema realmente loco. No es relevante si estás haciendo otro programa CRUD en React o una lista de tareas, pero si haces algo bastante complicado en Rust o Golang, o algo que involucre datos complejos, este enfoque da casi miedo en lo que puede hacer. Es un proceso de dos rondas. Aquí está la primera ronda: --- Primero lee TODOS los archivos md de AGENTS dot y README dot md con mucha atención y entiende TODOS los dos. Luego usa tu modo agente de investigación de código para entender completamente el código, la arquitectura técnica y el propósito del proyecto. Luego, una vez que hayas hecho un trabajo extremadamente exhaustivo y meticuloso en todo eso y comprendido profundamente todo el sistema existente, lo que hace, su propósito, cómo se implementa y cómo todas las piezas se conectan entre sí, necesito que investigues, estudies y reflexiones de forma hiperintensiva sobre estas cuestiones en relación con este proyecto: ¿Hay otras ineficiencias graves en el sistema central? lugares en la base de código donde 1) los cambios realmente cambiarían la aguja en términos de latencia/respuesta general y rendimiento; 2) de modo que nuestros cambios serían demostrablemente isomorfos en términos de funcionalidad, de modo que sepamos con certeza que no cambiaría las salidas resultantes dadas las mismas entradas; 3) donde tienes una visión clara de un enfoque obviamente mejor en términos de algoritmos o estructuras de datos (ten en cuenta que para esto puedes incluir en tus contemplaciones estructuras de datos menos conocidas y algoritmos más esotéricos/sofisticados/matemáticos, así como formas de reformular el/los problema(s) para exponer otro paradigma, como la lista que se muestra a continuación (Nota: Antes de proponer cualquier optimización, establecer métricas de referencia (latencia p50/p95/p99, rendimiento, memoria pico) y capturar perfiles de CPU/asignación/E/S para identificar los puntos calientes reales): - N+1 eliminación de patrones de consulta/obtención - E/S de E/S con copia cero / reutilización de búfer / dispersión de recogida - costes del formato de serialización (sobrecarga de análisis analizado/codificación) - colas acotadas + contrapresión (previenen la explosión de memoria y la latencia de cola) - cerraduras de fragmentación / rayas para reducir la contención - Memoización con estrategias de invalidación de caché - técnicas de programación dinámica - teoría de optimización convexa - evaluación perezosa / computación diferida - patrones iteradores/generadores para evitar materializar grandes colecciones - procesamiento en streaming/fragmentado para trabajo con límites de memoria - tablas de precomputación y consulta - búsqueda basada en índices frente a reconocimiento lineal de escaneo - búsqueda binaria (sobre datos y en espacio de respuesta) - técnicas de dos punteros y ventana deslizante - sumas prefijo / agregados acumulativos - ordenamiento topológico y conciencia DAG para grafos de dependencias - detección de ciclos - Union-Find para conectividad dinámica - recorrido de grafos (BFS/DFS) con terminación temprana - Dijkstra / A* para caminos más cortos ponderados - colas de prioridad / heaps - intenta operaciones con prefijo - filtros de Bloom para la pertenencia probabilística - árboles de intervalos/segmentos para consultas por rango - indexación espacial (árboles k-d, quadtrees, R-trees) - estructuras de datos persistentes/inmutables - Semántica de copiar al escribir - Agrupación de objetos/conexiones - selección de política de desalojo de caché (LRU/LFU/ARC) - selección de algoritmos conscientes por lotes - agrupación y fusión asíncrona de E/S - estructuras sin bloqueo para escenarios de alta contención - robo de trabajo para paralelismo recursivo - optimización del diseño de memoria (SoA vs AoS, localidad de caché) - cortocircuitos y terminación temprana - internamiento de cadenas para valores repetidos - razonamiento de análisis amortizado Teniendo en cuenta estas guías generales cuando corresponda: COMPROBACIONES DE APLICABILIDAD DE DP: - ¿Subproblemas superpuestos? → memoize con clave de estado estable - ¿Particionamiento/agrupación óptimo? → sumas prefijo + DP de intervalo - ¿Grafo de dependencias con recorrido repetido? → DP topológica de paso único COMPROBACIONES DE OPTIMIZACIÓN CONVEXA: - ¿Asignación/programación exacta forzada por forza? → flujo LP / coste mínimo con desempate determinista - ¿Ajuste continuo de parámetros con pérdida explícita? → mínimos cuadrados regularizados / QP - ¿Objetivo convexo grande y descomponible? → ADMM / métodos proximales También ten en cuenta que si conoces bibliotecas de terceros bien desarrolladas que funcionen bien, podemos incluirlas en el proyecto. REQUISITOS DE LA METODOLOGÍA: A) Primera línea de base: ejecutar el conjunto de exámenes y una carga de trabajo representativa; Graba la latencia, rendimiento y memoria pico de P50/P95/P99 con comandos exactos. B) Perfil antes de proponer: Capturar CPU + asignación + perfiles de E/S; Identifica los 3–5 puntos calientes principales por % de tiempo antes de sugerir cambios. C) Oráculo de equivalencia: Definir salidas doradas explícitas + invariantes. Para espacios de entrada grandes, añade pruebas basadas en propiedades o metamórficas. D) Prueba de isomorfismo por cambio: Cada diferencial propuesto debe incluir un breve esbozo de demostración que explique por qué las salidas no pueden cambiar (incluyendo orden, desempate, comportamiento en punto flotante y semillas RNG). E) Matriz de oportunidades: Clasificar a los candidatos por (Impacto × Confianza) / Esfuerzo antes de implementar; Céntrate solo en los elementos que probablemente muevan P95+ o en el rendimiento de forma significativa. F) Diferenciales mínimos: Una palanca de rendimiento por cambio. Sin factores no relacionados. Incluye orientación sobre la retroceso si existe algún riesgo. G) Barreras de regresión: Añadir umbrales de referencia o ganchos de monitorización para evitar futuras regresiones. Usa ultrathink. --- Puedes ejecutarlo una vez en Claude Code con Opus 4.5 y otra en Codex con GPT 5.2 Codex (empecé usando solo High porque Extra High es demasiado lento para mí, a menos que esté a punto de irme a la cama). Cuando terminen, dales a cada uno como 5 rondas rápidas de este: "Genial. Revisa todo de nuevo por si hay omisiones o errores evidentes, conceptuales, errores, etc. Usa ultrathink" Luego que guarden las salidas así: "Vale, guarda todo eso como PLAN_FOR_ADVANCED_OPTIMIZATIONS_ROUND_1__OPUS.md" "Vale, guarda todo eso en PLAN_FOR_ADVANCED_OPTIMIZATIONS_ROUND_1__GPT.md" Luego, en Claude Code, hace: "Compara lo que hiciste con PLAN_FOR_ADVANCED_OPTIMIZATIONS_ROUND_1__GPT.md y toma los mejores elementos de ahí para entrelazarlos en tu plan para conseguir un plan híbrido superior entre los mejores mundos editando tu archivo original de plan." Entonces esto: Relee AGENTS dot md para que aún lo tengas fresco en la mente. Ahora lee TODO PLAN_FOR_ADVANCED_OPTIMIZATIONS_ROUND_1__OPUS.md. Luego revisa cada cuenta con mucho cuidado, ¿estás seguro de que tiene sentido? ¿Es óptima? ¿Podríamos cambiar algo para que el sistema funcione mejor para los usuarios? Queremos un conjunto completo y granular de cuentas para todo esto, con tareas, subtareas y estructura de dependencias superpuestas, con comentarios detallados para que todo sea totalmente autosuficiente y autodocumentable (incluyendo antecedentes relevantes, razonamiento/justificación, consideraciones, etc., cualquier cosa que queramos que nuestro "yo futuro" sepa sobre los objetivos, intenciones, el proceso de pensamiento y cómo sirve a los objetivos generales del proyecto). Las cuentas deberían ser tan detalladas que nunca necesitemos consultar el documento original del plan de descuento. ¿Refleja con precisión TODO el expediente del plan de descuento de forma completa? Si se justifican cambios, revisa las cuentas o crea nuevas o cierra las que no sean válidas o inaplicables. ¡Es mucho más fácil y rápido operar en "espacio de planificación" antes de empezar a implementar estas cosas. ¡NO SIMPLIFIQUES DEMASIADO LAS COSAS! ¡NO PIERDAS NINGUNA FUNCIÓN NI FUNCIONALIDAD! Además, asegúrate de que, como parte de estas cuentas, incluyamos pruebas unitarias completas y scripts de prueba e2e con un registro detallado y excelente para asegurarnos de que todo funciona perfectamente tras la implementación. Recuerda USAR SOLO la herramienta 'bd' para crear y modificar las cuentas y añadir las dependencias a las cuentas." Luego unas cuantas rondas de: "Revisa cada cuenta con mucho cuidado, ¿estás seguro de que tiene sentido? ¿Es óptima? ¿Podríamos cambiar algo para que el sistema funcione mejor para los usuarios? Si es así, revisa las cuentas. ¡Es mucho más fácil y rápido operar en "espacio de planificación" antes de empezar a implementar estas cosas. ¡NO SIMPLIFIQUES DEMASIADO LAS COSAS! ¡NO PIERDAS NINGUNA FUNCIÓN NI FUNCIONALIDAD! También asegúrate de que como parte de los indicadores incluyamos pruebas unitarias completas y scripts de prueba e2e con un registro detallado y excelente para asegurarnos de que todo funciona perfectamente tras la implementación. Usa ultrathink." Luego deja que el enjambre suelte para implementarlo todo. Luego prepárate para la RONDA 2.
739