Consume una unidad de estado sólido al año: el bug de registro de Codex es criticado como 'software defectuoso'

marsbitPublicado a 2026-07-02Actualizado a 2026-07-02

Resumen

El artículo reporta un grave problema en la herramienta de programación Codex de OpenAI: su sistema de registro de logs (bitácoras) escribe aproximadamente 640 TB de datos al año en los discos SSD de los usuarios, agotando prematuramente su vida útil. Esto ocurre porque, por defecto, registra un nivel excesivo de información de depuración (TRACE) en una base de datos SQLite local, realizando constantes operaciones de inserción y borrado que desgastan el disco sin aumentar el tamaño final del archivo. Aunque el problema se conoce desde abril y hay múltiples informes similares, OpenAI solo lo corrigió parcialmente tras hacerse público, reduciendo en un 85% las escrituras. La comunidad critica esta práctica como ejemplo de "software deficiente" que consume recursos del usuario sin consentimiento, y señala que la competencia, como Claude Code, presenta fallos similares. El caso refleja una tendencia preocupante en el desarrollo de software con IA, donde la ineficiencia se enmascara con hardware más potente.

¿'Consumir' una unidad de estado sólido de 1TB en un año?

Codex, la herramienta de programación insignia de OpenAI, está desgastando tu unidad de estado sólido con una escritura de 640 TB al año.

Hace un tiempo, un desarrollador abrió un issue en GitHub. Este issue, ahora marcado como 'Closed' y con el número #28224, lleva el título:

Los registros de feedback de SQLite de Codex pueden escribir 640TB al año, agotando rápidamente la vida útil de las SSD.

Según las mediciones del informante, su SSD principal perdió 37 TB de escritura tras 21 días de funcionamiento continuo. Extrapolando, eso supone unos 640 TB al año, suficientes para acabar con una unidad de consumo con una resistencia total a escritura (TBW) de 600 TB.

Como evidencia, adjuntó dos tablas.

En la evidencia 1, esta base de datos de registros siempre ocupa solo 1.2 GB, aparentemente sin cambios; pero su ID de fila autoincremental ya ha superado los 5.5 mil millones, mientras que las filas realmente retenidas son apenas poco más de 500,000, una diferencia de diez mil veces.

La clave está en que el desgaste del disco se mide por la cantidad total escrita, independientemente de lo que quede ahora: esas 5.5 mil millones de filas se escribieron todas en el disco, y borrarlas no devuelve el desgaste ya incurrido. Así que al revisar el archivo solo ves esas 500,000 filas, pero el disco ya ha soportado la escritura de 5.5 mil millones.

La evidencia 2 revela la distribución de estas 5.5 mil millones de filas: más del 90% es ruido de depuración que ni los propios desarrolladores revisarían. Solo el hecho de copiar cada paquete completo de datos WebSocket supone la mitad.

El culpable es una configuración predeterminada de Level::TRACE, que trata la vida útil de escritura de tu disco como papel de borrador gratuito.

Un comentario muy votado en Hacker News definió la situación:

Este es uno de los ejemplos más notorios de 'software defectuoso' (slopware).

Este usuario también añadió con frustración:

Es realmente trágico. El mundo necesita competencia para Anthropic.

Lo más embarazoso es que el problema no era desconocido.

Desde abril de este año hubo reportes esporádicos, que se arrastraron durante más de dos meses, hasta que los usuarios hicieron sus propios cálculos, escribieron informes y lo llevaron a los titulares de Hacker News para que fuera tomado en serio. Incluso así, esta ronda solo eliminó aproximadamente el 85% de la escritura de registros.

Algunos intentaron solucionarlo por su cuenta, pero descubrieron que no podían: las versiones de escritorio de estas herramientas son de código cerrado.

Otro comentario ingenioso: ¿cómo es que el proceso de revisión no detectó un error tan obvio? Ah, cierto... @codex, revisa esto.

640TB, ¿cómo se llega a esa cifra?

¿Qué representa 640TB?

Las SSD de consumo convencionales tienen una vida útil de escritura (TBW) típica de 150 a 600 TB, suficiente para décadas de uso normal.

Y la función de registro de Codex, que simplemente 'anota lo que hace', puede alcanzar esa cifra en un año.

Todo comenzó cuando este usuario revisó su disco. Su máquina, encendida continuamente durante 21 días, había escrito 37 TB en su SSD principal.

A ese ritmo, unos 640 TB al año.

Pero lo más absurdo es el método de escritura.

Codex mantiene localmente una base de datos SQLite, logs_2.sqlite, específicamente para registros de feedback. Este usuario la monitoreó durante 15 segundos: se insertaron 36,211 filas, pero el número total de filas retenidas se mantuvo en 681,774 desde el principio hasta el final, sin aumentar.

Por cada fila insertada, otra era eliminada. El conteo de filas constante, pero el disco era reescrito decenas de miles de veces.

A este mecanismo se le conoce como 'insertar y podar' (insert-and-prune).

Y lo más ridículo es lo que registra: una serie de eventos inotify del sistema de archivos.

ld.so.cache fue registrado 128,764 veces, locale.alias 37,982 veces, passwd 23,843 veces.

El mismo archivo, por el mismo programa, registrado cientos de miles de veces.

El ID autoincremental en los registros supera los 5.5 mil millones, mientras que las filas realmente conservadas son solo unas 500,000.

Una diferencia de diez mil veces.

Esto no es un bug, parece que una herramienta de programación con IA está recitando un mantra a su propio disco duro.

El archivo pesa 1GB, pero la escritura es de 640TB

¿Qué tamaño tiene logs_2.sqlite, escribiendo y borrando constantemente? Aproximadamente 1 GB.

Esto lleva al punto más contraintuitivo de todo el asunto: la vida útil de una SSD se mide por la 'cantidad de escritura', no por el 'tamaño del archivo'. Un archivo de 1 GB reescrito 640 veces equivale a 640 TB de escritura para el disco.

SQLite utiliza el mecanismo WAL (Write-Ahead Logging): cada cambio se escribe primero en el archivo -wal, y luego se consolida (checkpoint) en la base principal. Codex realiza decenas de miles de inserciones y eliminaciones cada 15 segundos, cada una pasando por WAL, actualización de índices y checkpoint. La misma área de almacenamiento, sobrescrita una y otra vez.

Una analogía: un cuaderno de 1 GB donde cada día borras y reescribes 1,750 veces, durante un año. El cuaderno es el mismo, pero el papel está gastado.

Esta es también la razón por la que este bug pudo permanecer oculto tanto tiempo: no ocupa espacio, solo quema vida útil.

Revisar el espacio disponible en disco no muestra anomalías, el tamaño del archivo se mantiene estable. Solo al consultar los contadores de salud SMART del disco se puede ver la acumulación silenciosa de escritura.

La causa raíz: una línea RUST_LOG ignorada

¿Por qué se registra tanto?

La respuesta está en una línea de configuración del código fuente de Codex: el 'sink' (receptor) del registro de feedback SQLite se inicializa con Targets::new().with_default(Level::TRACE).

En resumen, el registro está configurado por defecto en el nivel TRACE, el más alto, verboso y que registra todo.

El framework de registro de Codex es 'tracing' del ecosistema Rust, cuya práctica estándar es leer la variable de entorno RUST_LOG. Los usuarios lo intentaron, ajustando RUST_LOG a info, warn, incluso desactivándolo.

Inútil.

with_default(Level::TRACE) fija rígidamente el nivel predeterminado global en TRACE. RUST_LOG no tiene efecto en esta ruta. Crees que has desactivado el registro, pero sigue escribiendo.

Lo más engañoso de este tipo de bug no es que 'olvidaras configurarlo', sino que 'lo configuraste, y lo ignoró'.

Otro dato revelador es una proporción.

Separando los registros retenidos por categoría, TRACE representa el 70.7%, unos 732.5 MB. Sumando los dos flujos de telemetría espejada codex_otel (log_only y trace_safe), se añade otro 25.3%.

El 70% de la escritura es ruido TRACE. Sumando la telemetría espejada, el 96% son detalles irrelevantes que nadie revisaría.

Solo el 4% es contenido realmente significativo.

No es el primero, al menos es el noveno

El informante revisó el repositorio de Codex y descubrió que hay al menos 9 issues sobre 'crecimiento ilimitado de registros'.

#17320, escritura frenética de WAL durante respuestas en flujo, misma causa raíz que esta vez: TRACE ignorando RUST_LOG.

#24275, logs_2.sqlite en la versión de escritorio crece descontroladamente.

#22444, WAL crece infinitamente y no libera espacio.

#26374, escribe 0.75 GB al día, sin rotación.

#27911, una base de datos goals_1.sqlite de 4 KB, escrita a 11 MB/s.

#20563, el proceso escribe frenéticamente en disco incluso inactivo.

#27020, actividad de disco al 100% en Windows.

El origen más temprano se remonta a #12969, el PR que introdujo el 'sink' del registro de feedback SQLite configurado en nivel TRACE.

Una base de datos de 4 KB escrita a 11 MB por segundo merecería un artículo por sí sola. Y es un síntoma del mismo producto, del mismo sistema de telemetría que el de los 640 TB.

Esto indica que el sistema de registro y telemetría de Codex, desde el principio, carecía del concepto de 'presupuesto de recursos'.

Toda la industria compite por presupuesto de tokens, longitud de contexto, capacidad del modelo.

Pero casi nadie pregunta: ¿quién controla el presupuesto de disco, memoria, CPU de un Agente que se ejecuta 7x24 en la máquina del usuario?

Se corrigió, pero de manera muy 'OpenAI'

Reportado en GitHub el 14 de junio. El 23 de junio, el informante actualizó: tres PRs fusionados. Según sus propias pruebas en Codex, reducen aproximadamente el 85% del registro, por lo que cerró el issue.

Primero, ese 85%: no es el 100%, y aún no está completamente implementado.

De las tres correcciones, #29432 y #29457 se lanzaron con la versión 0.142.0, eliminando los registros WebSocket línea por línea y objetivos de ruido; la tercera, #29599, desactiva otro tipo de registros redundantes introducidos por puente, y llegará con la versión 0.143.0.

Incluso con las tres implementadas, el 15% restante aún supondría escribir unos 96 TB al año, pasando de 'agotar el disco en un año' a 'agotarlo en seis años'.

Algunos defienden la postura: los registros TRACE se almacenan por diseño para depuración, no es un bug, y son útiles para que OpenAI investigue casos límite.

Pero el problema reside precisamente ahí: usar la vida útil de las SSD de usuarios que pagan, como almacenamiento gratuito para la depuración del fabricante. ¿Los usuarios dieron su consentimiento para eso?

El campo de batalla de la programación: lo que se agota no es solo la SSD

Curiosamente, no solo Codex recibió críticas.

En los comentarios rápidamente añadieron: Claude Code también escribe registros de depuración intensivamente en local, obligando a algunos a enlazar el directorio de registros a un disco en RAM (tmpfs) para salvar sus SSD.

Dos herramientas líderes, la misma clase de problema.

Los comentarios de la comunidad pronto pasaron de un bug específico a cuestionar la calidad general de las herramientas de programación con IA.

Algunos se quejan de que estos agentes mantienen la GPU al máximo, consumen 70 GB de memoria, otros acuñaron un nombre para esta generación de software: software defectuoso (slopware).

La sugerencia original del desarrollador era simple: establecer un límite para la aplicación, que no supere los 3 GB. Solo esa línea, Codex tardó 9 Issues y varios meses en trazarla.

La pregunta es: ¿por qué una empresa que siempre habla de 'AGI' tropieza con un problema que un ingeniero en prácticas podría detectar?

¿Por qué pudo permanecer oculto tanto tiempo? Un comentario dio en el clavo.

Hace una década, con el registro en TRACE, el programa se colgaría al instante y se corregiría el mismo día. Hoy, las CPUs son rápidas, la memoria es grande, los discos son potentes. Este defecto es absorbido silenciosamente por el rendimiento del hardware. El programa funciona, la interfaz responde, el usuario no nota nada, hasta que un día la SSD falla prematuramente.

En los últimos años, el software se llena de código generado por IA, las funciones se acumulan, las capas de abstracción se apilan, el consumo de recursos se dispara, sostenido solo por hardware más rápido cada año.

Así surge un ciclo absurdo: el software se escribe peor, el hardware se fabrica más potente. Los usuarios, con la ilusión de que 'no va más lento', pagan por máquinas nuevas, que apenas sostienen software peor.

Un pequeño bug no derribará a OpenAI. Pero la competencia entre Codex y Claude Code ya se extiende desde la capacidad del modelo hasta la entrada del flujo de trabajo del desarrollador.

En este frente, cambiar rápidamente y responder a las necesidades de los desarrolladores no es un punto a favor, es el precio de entrada.

Referencias:

https://github.com/openai/codex/issues/28224

https://news.ycombinator.com/item?id=48626930

Este artículo proviene del WeChat público '新智元' (Nueva Era de la Inteligencia), autor: ASI启示录

Criptos en tendencia

Preguntas relacionadas

Q¿Cuál es el principal problema reportado con Codex de OpenAI?

AEl principal problema es que la función de registro de comentarios de Codex escribe aproximadamente 640 TB de datos al año en el disco duro del usuario, utilizando un mecanismo 'insertar y podar' (insert-and-prune) en una base de datos SQLite. Esto agota rápidamente la vida útil de un SSD de consumo, que suele tener un límite de escritura total (TBW) de entre 150 y 600 TB.

Q¿Por qué el archivo de registro `logs_2.sqlite` no crece mucho en tamaño pero aún así daña el SSD?

AEl archivo `logs_2.sqlite` se mantiene alrededor de 1 GB porque usa un mecanismo de 'insertar y podar', donde constantemente se añaden y eliminan filas. Sin embargo, cada operación de escritura (inserción o eliminación) cuenta para el desgaste del SSD, independientemente del tamaño final del archivo. Es como reescribir constantemente las mismas páginas de un cuaderno, desgastándolas aunque el número de páginas no aumente.

Q¿Cuál fue la causa raíz de la generación excesiva de logs en Codex?

ALa causa raíz fue una configuración de código que establecía el nivel de registro por defecto en TRACE (`with_default(Level::TRACE)`), el nivel más detallado. Esta configuración anulaba las variables de entorno como `RUST_LOG`, haciendo que el software registrara grandes cantidades de datos de depuración irrelevantes (como eventos del sistema de archivos) las 24 horas del día, incluso si el usuario intentaba desactivar los logs.

Q¿Cómo respondió OpenAI al problema y cuál fue el resultado?

AOpenAI fusionó tres solicitudes de cambios (pull requests) en el código para abordar el problema. Estas correcciones redujeron aproximadamente un 85% la escritura de logs. Sin embargo, incluso después de las correcciones, se estima que el software aún escribirá unos 96 TB al año, lo que sigue siendo un desgaste significativo para el hardware del usuario.

QSegún el artículo, ¿qué término se utiliza para describir software de baja calidad como el que exhibe este bug?

AEl artículo menciona que en los comentarios de Hacker News, este tipo de software se describe como 'slopware' (una combinación de 'slop', que significa bazofia, y 'software'), traducido en el texto como 'software de baja calidad' o 'software chapucero'. Se critica que, a pesar de los avances en IA, se descuiden aspectos básicos de la ingeniería de software y la gestión de recursos.

Lecturas Relacionadas

La mujer más rica de China se dedica a la capital de riesgo

La multimillonaria china Zhou Qunfei, conocida como la "Reina del Cristal" por fundar la empresa de componentes electrónicos Lens Technology, está incursionando activamente en el ámbito del capital de riesgo (VC) para invertir en empresas tecnológicas pioneras. Recientemente, invirtió una cantidad significativa (varios cientos de millones de yuanes) en X-Dimension.ai, una startup de Shenzhen valorada en 10.000 millones de yuanes (unicornio) que desarrolla inteligencia artificial corporizada (AGI físico) y robots humanoides. Su enfoque de inversión es práctico: Lens Technology ya utilizaba los productos de X-Dimension.ai en sus líneas de producción antes de que Zhou decidiera invertir personalmente. Zhou opera a través de dos vías principales: inversiones personales discretas a través de su empresa "Changsha Qunxin Investment" y participaciones estratégicas más visibles a través del grupo Lens Technology. Su cartera personal incluye empresas de semiconductores como XinAi Technology y Chixin Semiconductor. Por su parte, Lens Technology ha invertido recientemente en destacadas empresas de IA como BrainCo, Star Mapping, Q-Truck y Pudu Technology. Este movimiento de Zhou refleja una tendencia más amplia entre los magnates industriales chinos. Empresarios que acumularon fortunas en sectores tradicionales como la manufactura (por ejemplo, Liu Yi de Andon Health, Zhu Xingming de Inovance, Wang Laichun de Luxshare) están redirigiendo ahora su capital y experiencia industrial hacia áreas tecnológicas de vanguardia como la IA, la inteligencia corporizada, las interfaces cerebro-computadora y la fusión nuclear. Parecen compartir la convicción de que el futuro crecimiento económico ya no reside en sectores como el inmobiliario, sino en el mundo de los datos y los algoritmos. La trayectoria de Zhou es notable: pasó de ser una trabajadora migrante en una línea de ensamblaje a construir Lens Technology, un proveedor clave para Apple, Tesla y otras grandes marcas, con una capitalización de mercado que supera los 300.000 millones de yuanes. Ahora, junto con sus pares, está utilizando su riqueza para apostar por el próximo futuro tecnológico de China.

marsbitHace 17 min(s)

La mujer más rica de China se dedica a la capital de riesgo

marsbitHace 17 min(s)

En vísperas de su llegada a EE.UU., las acciones de SK Hynix se desploman como un perro callejero

Antes de su inminente listado en Nasdaq, las acciones de SK Hynix, el gigante surcoreano de chips de memoria, se desplomaron un 14.57% en la bolsa de Corea. Esta caída se produjo tras la especulación del mercado sobre una posible ralentización en el gasto de capital de las grandes tecnológicas, desencadenada por reportes de que Meta podría vender capacidad de computación de IA excedente. El contexto es crucial: SK Hynix está en la fase final de su proceso de oferta pública inicial (IPO) en Estados Unidos mediante ADR, con el objetivo de recaudar unos 294.000 millones de dólares para financiar la expansión de su capacidad de producción en Corea. La empresa se beneficia actualmente del auge de la IA, con una cuota de mercado superior al 50% en la memoria de alto ancho de banda (HBM), un componente crítico para los servidores de IA. El artículo argumenta que la fuerte reacción del mercado podría ser una exageración. Señala que los informes iniciales sobre Meta fueron modificados, eliminando la palabra "excedente" y matizando el alcance del plan, lo que sugiere una posible sobreinterpretación. Además, plantea que la reasignación o comercialización parcial de capacidad de computación por parte de una sola empresa no equivale necesariamente a un exceso de oferta a nivel de la industria ni al fin del ciclo de inversión en IA. La caída podría atribuirse más bien a una combinación de pánico puntual, posiciones apalancadas en un sector que había alcanzado máximos y una alta sensibilidad a cualquier noticia marginal. En conclusión, el autor ve la caída más como una oportunidad de compra que como un cambio fundamental en las perspectivas de la industria, considerando el fuerte posicionamiento de SK Hynix en HBM y el incentivo de los actores involucrados en su IPO para un debut exitoso en Wall Street.

Odaily星球日报Hace 18 min(s)

En vísperas de su llegada a EE.UU., las acciones de SK Hynix se desploman como un perro callejero

Odaily星球日报Hace 18 min(s)

arXiv se independiza de Cornell y comienza un nuevo capítulo como organización autónoma

El repositorio de preprints arXiv ha completado su transición para convertirse en una organización independiente sin ánimo de lucro, arXiv, Inc., dejando atrás su dependencia de la Universidad de Cornell después de 25 años. El cambio, efectivo desde el 1 de julio, incluye una nueva identidad visual y una estructura de gobernanza dirigida por un consejo directivo de hasta 12 miembros, con la Universidad de Cornell y la Simons Foundation como miembros fundadores. El profesor Ramin Zabih actuará como CEO interino hasta que se nombre un director ejecutivo permanente. La plataforma, fundada en 1991 por Paul Ginsparg, alberga más de 3,09 millones de artículos y sirve a una comunidad global con más de 37.000 millones de descargas. Su modelo de preprints ha revolucionado la velocidad de difusión del conocimiento, especialmente en campos como la IA. Los usuarios no experimentarán cambios funcionales inmediatos, y arXiv reitera su compromiso de seguir siendo gratuito para lectores y autores. Las razones clave para la independencia incluyen la necesidad de mayor flexibilidad financiera y operativa, ya que arXiv enfrentó un déficit en 2025, y la presión de adaptarse al rápido crecimiento y a los desafíos planteados por el contenido generado por IA. El futuro CEO deberá liderar la modernización técnica, desarrollar mecanismos para manejar el alto volumen de envíos y asegurar una base de financiación sostenible.

marsbitHace 23 min(s)

arXiv se independiza de Cornell y comienza un nuevo capítulo como organización autónoma

marsbitHace 23 min(s)

La Copa del Mundo está llena de sorpresas: el "dinero tonto" de los mercados de predicción me hace reír

**Resumen en Español (Resumen Ejecutivo):** El artículo de Odaily analiza el fenómeno de las sorpresas (*"fiascos"*) en el Mundial y las consecuencias en los mercados de predicción, donde tanto "dinero inteligente" como "dinero tonto" han sufrido grandes pérdidas. Se presentan tres casos paradigmáticos: 1. **España 0-0 Cabo Verde:** Un usuario (@betoor619) perdió 1 millón de dólares al apostar por una victoria española, esperando una ganancia "segura" de 85.000 dólares. La heroica actuación del portero Vozinha (40 años) frustró el pronóstico. 2. **Portugal 1-1 República Democrática del Congo:** Una "dirección inteligente" (49% de aciertos previos) perdió más de 243.000 dólares apostando por Portugal. La defensa congoleña neutralizó a un Portugal ineficaz, incluido Cristiano Ronaldo. 3. **Arabia Saudita 0-0 Cabo Verde:** Tras su éxito ante España, muchos apostaron por la victoria de Cabo Verde. Un usuario conocido como "indicador inverso de primer nivel" (@Zzzz87) perdió 80.000 dólares en este partido. Curiosamente, este usuario luego cambió su estrategia apostando por favoritos en eliminatorias, recuperando parcialmente sus pérdidas (ganancias de ~269.000 USD la última semana). La conclusión destaca la imprevisibilidad del fútbol. Los mercados de predicción demuestran que ningún resultado está garantizado, ni por el valor de mercado de los jugadores, ni por estadísticas previas, ni por el volumen de apuestas. La clave parece ser la adaptabilidad, observando los partidos y ajustando las estrategias, ya sea siguiendo al "dinero inteligente" o haciendo lo contrario al "dinero tonto".

Odaily星球日报Hace 25 min(s)

La Copa del Mundo está llena de sorpresas: el "dinero tonto" de los mercados de predicción me hace reír

Odaily星球日报Hace 25 min(s)

Trading

Spot

Artículos destacados

Cómo comprar T

¡Bienvenido a HTX.com! Hemos hecho que comprar Threshold Network Token (T) sea simple y conveniente. Sigue nuestra guía paso a paso para iniciar tu viaje de criptos.Paso 1: crea tu cuenta HTXUtiliza tu correo electrónico o número de teléfono para registrarte y obtener una cuenta gratuita en HTX. Experimenta un proceso de registro sin complicaciones y desbloquea todas las funciones.Obtener mi cuentaPaso 2: ve a Comprar cripto y elige tu método de pagoTarjeta de crédito/débito: usa tu Visa o Mastercard para comprar Threshold Network Token (T) al instante.Saldo: utiliza fondos del saldo de tu cuenta HTX para tradear sin problemas.Terceros: hemos agregado métodos de pago populares como Google Pay y Apple Pay para mejorar la comodidad.P2P: tradear directamente con otros usuarios en HTX.Over-the-Counter (OTC): ofrecemos servicios personalizados y tipos de cambio competitivos para los traders.Paso 3: guarda tu Threshold Network Token (T)Después de comprar tu Threshold Network Token (T), guárdalo en tu cuenta HTX. Alternativamente, puedes enviarlo a otro lugar mediante transferencia blockchain o utilizarlo para tradear otras criptomonedas.Paso 4: tradear Threshold Network Token (T)Tradear fácilmente con Threshold Network Token (T) en HTX's mercado spot. Simplemente accede a tu cuenta, selecciona tu par de trading, ejecuta tus trades y monitorea en tiempo real. Ofrecemos una experiencia fácil de usar tanto para principiantes como para traders experimentados.

592 Vistas totalesPublicado en 2024.12.10Actualizado en 2026.06.02

Cómo comprar T

Discusiones

Bienvenido a la comunidad de HTX. Aquí puedes mantenerte informado sobre los últimos desarrollos de la plataforma y acceder a análisis profesionales del mercado. A continuación se presentan las opiniones de los usuarios sobre el precio de T (T).

活动图片