
Jul 4, 2026
2026년 AI 검색 가시성을 위한 최고의 AI 웹사이트 빌더: Wix, Framer, Webflow, We0 비교
2026년에는 AI 웹사이트 빌더를 선택하는 일이 더 이상 단순히 페이지를 더 빠르게 생성하는 것만을 의미하지 않습니다. 중요한 것은 웹사이트가 Google, AI Overviews, ChatGPT 스타일 검색 및 기타 AI 발견 채널에서 이해되고, ...

Une explication claire du bug du journal de retour SQLite de Codex, pourquoi une petite base de données locale de journaux pouvait tout de m...
Un récent problème de journalisation de Codex a transformé une discrète base de données locale en un étonnamment gros générateur d’écritures sur SSD. Selon le rapport GitHub original, les journaux de feedback SQLite de Codex pouvaient écrire environ 640 To par an avec le schéma d’utilisation signalé. Pour un SSD grand public évalué à environ 600 TBW, ce chiffre n’est pas simplement un petit désordre ; il est proche de l’endurance d’écriture garantie du disque.
Le plus étrange, c’est que la base de données de journaux ne semblait pas énorme. Le fichier pouvait rester autour d’un gigaoctet, tandis que les écritures historiques réelles continuaient de s’accumuler en arrière-plan. C’est pourquoi ce bogue a attiré autant d’attention : il ne remplissait pas le disque de manière évidente, mais pouvait tout de même épuiser les cycles d’écriture.
Note sur la source : Cet article est basé sur la republication par BAAI Hub du rapport de Xinzhiyuan et a été recoupé avec l’issue GitHub publique et la discussion sur Hacker News. Les logos de marque, codes QR, invites à suivre et images décoratives sans rapport provenant de la page originale n’ont pas été inclus.
Le chiffre paraît d’abord exagéré, il est donc utile de commencer par la mesure.
Dans l’issue GitHub, l’auteur du signalement a indiqué qu’après environ 21 jours de fonctionnement, le SSD principal avait écrit environ 37 To. Extrapolé sur une année complète, cela représente environ 640 To. La principale source suspectée était la base de données locale SQLite des journaux de feedback de Codex.
Codex écrivait dans des fichiers situés sous le répertoire de configuration local :
~/.codex/logs_2.sqlite
~/.codex/logs_2.sqlite-wal
~/.codex/logs_2.sqlite-shmLe comportement n’était pas simplement « le fichier journal grossit indéfiniment ». Au lieu de cela, cela ressemblait davantage à une boucle d’insertion et d’élagage : Codex insérait de nouvelles lignes, puis supprimait les anciennes afin de maintenir stable le nombre de lignes conservées. La taille visible du fichier restait relativement calme, mais le disque devait tout de même traiter les écritures répétées.
Un échantillon de 15 secondes tiré du rapport montrait clairement le problème :
Métrique | Avant | Après |
Lignes conservées | 681,774 | 681,774 |
ID de ligne maximal | 5,003,347,015 | 5,003,383,226 |
Cela signifie qu’environ 36 211 lignes ont été insérées en 15 secondes, même si le nombre de lignes conservées n’a pas augmenté du tout. De l’extérieur, la base de données semblait stable, mais le renouvellement des écritures continuait en dessous.
Les entrées de journal fréquentes n’étaient pas non plus toutes des événements applicatifs à forte valeur. Les exemples comprenaient du bruit répété au niveau du système de fichiers et des dépendances, comme des événements inotify :
128,764x TRACE log: inotify event: ... name: Some("ld.so.cache")
37,982x TRACE log: inotify event: ... name: Some("locale.alias")
23,843x TRACE log: inotify event: ... name: Some("passwd")Le résultat était un système de journalisation local capable de réécrire continuellement le stockage tout en donnant aux utilisateurs très peu de signes visibles qu’il se passait quelque chose d’inhabituel.
La partie la plus contre-intuitive de cet incident est simple : l’usure d’un SSD dépend du volume total d’écritures, pas de la taille actuelle du fichier.
Une base de données locale peut rester autour de 1 Go pendant que l’application écrit, élague, indexe, crée des points de contrôle et réécrit de façon répétée certaines de ses parties. Du point de vue de l’état de santé du stockage, ce qui compte n’est pas seulement la taille apparente du fichier aujourd’hui. Ce qui compte, c’est la quantité de données écrites au fil du temps.
Métrique | Valeur |
Taille actuelle du fichier | 1,2 Gio |
Lignes actuellement conservées | 506 149 |
Nombre total d’identifiants de ligne alloués | 5 543 677 486 |
La base de données actuelle ne conservait qu’environ un demi-million de lignes, tandis que l’identifiant de ligne auto-incrémenté avait déjà dépassé les 5,5 milliards. C’est le cœur de l’histoire de l’amplification d’écriture : les anciennes lignes peuvent disparaître de la vue actuelle de la base de données, mais les écritures disque qui les ont créées ont déjà eu lieu.
Le WAL de SQLite, ou journalisation en écriture anticipée, joue également un rôle ici. Avec le mode WAL, les modifications sont ajoutées à un fichier -wal séparé avant d’être réintégrées dans la base de données principale lors d’un point de contrôle. Le WAL est un mécanisme SQLite normal et utile, mais lorsqu’une application effectue des insertions et des suppressions très fréquentes, il peut multiplier la quantité d’activité disque qui se produit en arrière-plan.
En termes simples : le carnet semble toujours mince, mais les mêmes pages ont été écrites, effacées et réécrites de nombreuses fois.
Le rapport a mis en évidence un détail de configuration particulièrement important dans le chemin de journalisation de Codex :
Targets::new().with_default(Level::TRACE)Dans l’écosystème tracing de Rust, le filtrage des journaux est souvent contrôlé au moyen de cibles et de niveaux. Les utilisateurs peuvent raisonnablement s’attendre à ce que la variable d’environnement RUST_LOG aide à réduire la verbosité des journaux à quelque chose comme info, warn ou un niveau inférieur.
Mais dans ce chemin, le récepteur du journal de commentaires SQLite utilisait une valeur par défaut de TRACE. TRACE est le niveau le plus verbeux, et il peut capturer des détails de dépendances de bas niveau, l’activité brute du protocole et d’autres informations de débogage superflues. Le rapport d’incident soutenait que cette valeur par défaut signifiait que la base de données locale persistante des journaux continuait à stocker bien plus qu’elle ne le devrait.
La répartition des journaux conservés montrait à quel point le contenu de niveau TRACE était dominant :
Niveau | MiB estimés | Part des octets |
TRACE | 732.5 | 70.7% |
INFO | 266.5 | 25.7% |
DEBUG | 30.6 | 3.0% |
WARN | 5.9 | 0.6% |
Le rapport a également noté que deux sources de journaux liées à OpenTelemetry et mises en miroir, codex_otel.log_only et codex_otel.trace_safe, représentaient une autre part importante des octets de journaux conservés. Dans cet échantillon, l’auteur du rapport estimait que filtrer ces catégories bruyantes pourrait supprimer la majeure partie du volume de journaux conservés sans désactiver complètement les journaux de retour d’information.
C’est pourquoi ce bogue a semblé si frustrant pour les développeurs. Ce n’était pas simplement « vous avez oublié de configurer la journalisation ». Cela ressemblait davantage à « vous avez essayé de réduire la journalisation, mais ce chemin persistait malgré tout à conserver des journaux verbeux ».
Le rapport ne présentait pas cela comme un accident isolé. Il énumérait un ensemble de problèmes Codex liés aux journaux SQLite, à la croissance du WAL, à une forte activité disque et à une journalisation locale illimitée ou excessive.
Voici quelques exemples mentionnés dans le rapport :
Problème | Thème signalé |
| Écritures SQLite WAL excessives pendant le streaming, car les journaux TRACE ignoraient |
| Croissance de |
| Fichiers WAL restant alloués ou augmentant de façon inattendue |
| Croissance du journal de feedback SQLite sans rétention ni rotation suffisantes |
| Amplification des écritures sur une minuscule base de données SQLite |
| E/S intensives provenant de processus Codex inactifs |
| Temps d’activité du disque à 100 % sous Windows / WSL2 |
Le problème énumérait les trois correctifs ainsi :
Pull Request | Objectif | Note de version dans l’issue |
| Arrêter de consigner chaque événement WebSocket Responses | Publié dans |
| Filtrer les cibles bruyantes des journaux persistants | Publié dans |
| Arrêter de conserver les événements de journal relayés | Prévu pour |
Une réduction de 85 % est significative, mais ce n’est pas la même chose que de prouver que la journalisation locale dispose désormais d’un budget d’écriture strict à long terme. C’est cette distinction qui explique pourquoi la discussion s’est poursuivie. Les développeurs ne demandaient pas seulement si ce bug précis avait été atténué ; ils demandaient si les agents de codage IA devraient avoir des limites plus claires pour la télémétrie locale persistante.
Le ticket GitHub incluait également une solution de contournement simple partagée par un commentateur. Elle bloque les insertions dans la table logs en créant un déclencheur SQLite :
sqlite3 ~/.codex/logs_2.sqlite "CREATE TRIGGER IF NOT EXISTS
block_log_inserts BEFORE INSERT ON logs BEGIN SELECT RAISE(IGNORE);
END;"Utilisez ce type de solution de contournement avec prudence. Elles peuvent réduire les écritures de journaux locaux, mais elles peuvent aussi supprimer des données de diagnostic dont les équipes de support ou les développeurs pourraient avoir besoin plus tard. En général, mettre à jour vers une version corrigée et vérifier le comportement actuel des journaux est plus sûr que de modifier silencieusement une base de données d’application sans comprendre le compromis.
La discussion a rapidement dépassé le seul cas de Codex. Sur Hacker News, les développeurs ont également évoqué des critiques plus larges concernant les outils de codage IA : forte utilisation du GPU, consommation importante de mémoire, activité en arrière-plan et gros journaux de débogage locaux.
Un outil peut sembler « correct » dans l’interface utilisateur tout en consommant discrètement des ressources en arrière-plan. Les processeurs rapides, la grande quantité de mémoire et les disques NVMe modernes peuvent masquer les problèmes pendant longtemps. L’application peut ne pas se figer. Le disque peut ne pas se remplir. Le terminal peut continuer à répondre. Mais les indicateurs de santé du matériel peuvent raconter une autre histoire.
C’est pourquoi cet incident est devenu une étude de cas utile pour les outils de développement IA. Les capacités du modèle comptent, mais la qualité opérationnelle locale compte aussi. Un agent de codage qui réside sur la machine d’un développeur a besoin de paramètres par défaut raisonnables, de limites de conservation, d’une rotation des journaux et d’un moyen pour les utilisateurs de comprendre ce qu’il fait.
Il s’agissait d’un problème signalé de journalisation de Codex, dans lequel les journaux locaux de feedback SQLite pouvaient générer de très grandes quantités d’écritures disque. Le rapport GitHub estimait environ 640 To d’écritures par an selon le schéma d’utilisation mesuré par l’auteur du signalement.
logs_2.sqlite pouvait-il tout de même user un SSD ?WAL signifie Write-Ahead Logging. SQLite écrit d’abord les modifications dans un fichier -wal distinct, puis les réintègre plus tard dans la base de données principale via des checkpoints, ce qui est un comportement normal mais peut générer beaucoup d’activité lorsque les insertions et suppressions se produisent très fréquemment.
TRACE est le niveau de journalisation le plus détaillé. Dans l’échantillon signalé, le contenu de niveau TRACE représentait environ 70,7 % des octets de journaux conservés, et le problème soulevait que des journaux détaillés de dépendances et de protocoles étaient conservés par défaut.
La mise à jour du ticket GitHub indiquait que trois PR avaient été fusionnées, le rapporteur estimant qu’elles pourraient éviter environ 85 % des journaux d’après les retours issus de son utilisation de Codex. Deux correctifs étaient indiqués comme publiés dans 0.142.0, tandis que le troisième était indiqué comme prévu pour 0.143.0.
Ce rapport spécifique portait sur Codex. Toutefois, la préoccupation plus large s’applique aux agents d’IA locaux en général : les outils toujours actifs ont besoin de budgets de ressources clairs pour le disque, le CPU, la mémoire, la télémétrie et les journaux conservés.
Dépôt GitHub d’OpenAI Codex : le dépôt public de Codex CLI et du code source associé.
SQLite : le moteur de base de données embarqué utilisé par de nombreuses applications et outils locaux.
Documentation de SQLite sur la journalisation en écriture anticipée : documentation officielle expliquant le fonctionnement du WAL et l’importance des points de contrôle.
tracing Rust : le framework Rust de journalisation structurée et de diagnostic évoqué dans le problème Codex.
smartmontools : un ensemble d’outils permettant de vérifier les données de santé SMART du stockage, y compris les compteurs d’écriture des SSD sur les disques compatibles.
Hacker News : la plateforme de discussion où le rapport sur la journalisation de Codex a suscité une attention plus large de la part des développeurs.
Problème n° 28224 concernant les journaux de commentaires SQLite de Codex : le principal problème GitHub documentant l’estimation rapportée de 640 To/an d’écriture et les éléments de preuve.
Arrêter de journaliser chaque événement WebSocket de Responses #29432 : l’une des PR fusionnées répertoriées dans le cadre du travail de réduction de la journalisation.
Filtrer les cibles bruyantes des journaux persistants #29457 : la PR s’est concentrée sur le filtrage des cibles de journalisation persistante bruyantes.
Arrêter de persister les événements de journalisation relayés #29599 : la PR de suivi visait à empêcher la persistance des événements de journalisation des dépendances relayés.
Discussion sur Hacker News : discussion de la communauté autour de la journalisation de Codex, des écritures sur SSD et de la qualité des outils de codage par IA.
README de l’interface CLI OpenAI Codex : README du dépôt officiel pour installer et exécuter l’interface CLI Codex.
Documentation SQLite WAL : explication officielle des fichiers WAL, des points de contrôle et des considérations de performance.

Jul 4, 2026
2026년에는 AI 웹사이트 빌더를 선택하는 일이 더 이상 단순히 페이지를 더 빠르게 생성하는 것만을 의미하지 않습니다. 중요한 것은 웹사이트가 Google, AI Overviews, ChatGPT 스타일 검색 및 기타 AI 발견 채널에서 이해되고, ...

Jul 4, 2026
Trae Work는 더 이상 단순한 AI 코딩 도구가 아닙니다. 이 We0 글에서는 Trae Work를 AI 오피스 플랫폼과 비교하고, AI 코딩이 창업자, 개발자, 마케터, 크리에이터를 위한 팀 전체의 워크플로가 될 수 있는 이유를 설명합니다.

Jul 4, 2026
Google Search Console은 새로운 검색 생성형 AI 성과 보고서를 도입했습니다. 이 글은 기업 웹사이트 관점에서 어떤 데이터를 볼 수 있는지, 어떤 데이터는 볼 수 없는지, 페이지가 AI 개요/AI 모드에 진입했는지 판단하는 방법, 그리...