Сесія Codex CLI на годину роботи: команди, витрата контексту й відкат через git

26 хв. читання
BINANCE · СПОТ І ДЕРИВАТИВИ
Крипта з нуля
Комісія 0,1%, торги 24/7, старт з $10
Відкрити рахунок

Коротко (TL;DR). Поки завдання триває пʼять хвилин, керувати сесією не потрібно. Через годину роботи все інакше: контекст забитий, агент відповідає не на те, про що ви щойно запитали, а в проєкті лежать правки, про які ви вже й не пам’ятаєте. Головне, що варто розуміти:

  • у сесії є прилади: показник «N% context left» у правому нижньому куті та команда /status;
  • звільнити контекст можна трьома різними способами — /compact, /clear і /new, і наслідки в них різні;
  • повернутися до перерваної роботи — codex resume (або codex resume --last), спробувати інший підхід без псування основної лінії — codex fork;
  • відкату правок у Codex немає: команду /undo прибрали, прапорець undo = true у конфізі більше нічого не робить, і відкат забезпечує ваш git.

Усе, що нижче, звірено на 11 серпня 2026: стабільна версія Codex CLI — 0.147.0 (вийшла 7 серпня), в альфа-каналі 0.148.0-alpha.7. Склад команд знято з вихідного коду й з офіційного довідника: набір змінюється від релізу до релізу, тому дати тут важливіші, ніж здається. Про сам екран термінала й один робочий цикл «запит → правки» є окремий розбір — інтерфейс Codex CLI і робочий цикл; тут ідеться про те, що відбувається з сесією на довгій дистанції.

Команди сесії Codex CLI: повна таблиця з живим прикладом

Slash-команда — це команда, яку ви набираєте прямо в полі введення агента, починаючи зі слеша. Вона керує не кодом, а самою сесією: моделлю, правами, контекстом, записом розмови. Наберіть / — відкриється список із підказками, і його можна фільтрувати, продовжуючи друкувати.

Офіційний перелік OpenAI називає їх developer commands (у побуті — codex slash commands, а англомовні шпаргалки шукають за codex cli commands). Команд понад сорок, але до керування довгою сесією належить близько двох десятків. Ось вони — з тим, що кожна насправді робить, і з прикладом, коли її кликати.

BINANCE COPY TRADINGКопітрейдинг на BinanceВідкрита статистика трейдерів, старт з $10, вимкнення одним кліком.Обрати трейдера
КомандаЩо робитьЖивий приклад: коли потрібна
/statusПоказує конфігурацію поточної сесії та витрату токенівАгент почав гальмувати: спершу дивимося, яка модель, які права і скільки контексту лишилося
/usageПоказує витрату по акаунту (це ліміти тарифу, не контекст)«Чому він відмовляється працювати» — перевіряємо, чи не вибрано квоту плану
/compactСтискає розмову, щоб не впертися в ліміт контекстуЛишилося менше пʼятої частини вікна, а рефакторинг не завершено
/newПочинає новий чат, не виходячи з CodexЗавершили міграцію бази, наступне завдання — верстка сторінки
/clearЧистить термінал і починає новий чатЕкран заріс виводом тестів, і ви хочете взятися за наступне завдання з чистого аркуша
/resumeВідкриває список збережених чатів і повертає вибранийЗранку продовжуєте те, що покинули ввечері
/forkВідводить нову гілку від поточного чатуХочете спробувати другий підхід, не псуючи запис робочого
/side (або /btw)Побічна розмова в одноразовій гілціТреба швидко запитати «а що робить ця функція», не засмічуючи основне завдання
/goalЗадає або показує ціль довгого завданняРобота на кілька годин: ціль ставиться один раз, агент тримає її сам
/diffПоказує git-diff разом із файлами, яких git ще не відслідковуєПеред комітом: перевірити, що саме агент наробив і чи не створив зайвого
/rolloutДрукує шлях до файлу поточної сесіїТреба зазирнути в запис розмови або зберегти його собі
/exportВивантажує розмову в markdownПередаєте завдання колезі або кладете розбір у документацію
/renameПерейменовує поточний чатУ списку сесій пʼять безіменних — підписуємо, поки пам’ятаєте, про що ця
/archiveАрхівує сесію та виходитьЗавдання здано, чат зі списку прибрати, але запис зберегти
/deleteВидаляє сесію назавжди та виходитьУ розмову потрапило зайве, і запис не має лишатися на диску
/debug-configПоказує, які значення конфігу справді діютьПеревірити, яке вікно і який поріг стиснення застосувалися насправді
/permissionsОбирає, що агентові дозволено без запитаньПочинається ділянка, де він багато писатиме у файли
/modelЗмінює модель і рівень міркувань усередині сесіїЗавдання ускладнилося — або навпаки, стало механічним

Два рядки цієї таблиці варто розгорнути окремо, бо за ними ховаються помилки. /permissions — це не «увімкнути все»: пісочниця й політика схвалень у Codex налаштовуються окремо, і розібрані вони в уроці про режими схвалення та пісочницю. А /usage часто плутають із контекстом: він про квоту тарифу ChatGPT, тобто про ліміти плану, і до розміру вікна сесії стосунку не має.

Які команди Codex не працюють, поки агент зайнятий

Цього немає в жодному довіднику, а на практиці болить. У вихідному коді Codex лежить окрема таблиця доступності: частину команд не можна виконати, поки агент робить хід. Серед недоступних — /compact, /new, /clear, /fork, /archive, /delete, /init, /export, /review, /plan.

Логіка зрозуміла: усі вони змінюють саму сесію, а змінювати її посеред ходу не можна. Але наслідок неприємний: «стисну контекст на ходу, поки він думає» не спрацює — а саме цієї миті вам зазвичай і хочеться.

Що робити натомість:

  • Tab — поставити команду або уточнення в чергу на наступний хід. Команда розбереться, коли до неї дійде черга, тому її меню й можливі помилки ви побачите лише після поточного ходу.
  • Enter — вкинути інструкцію в поточний хід, якщо агент явно пішов не туди.
  • Esc — перервати хід: поки агент зайнятий, рядок стану сам підказує esc to interrupt. Після зупинки ходу немає, тому доступні всі команди. Клавішу можна перепризначити через /keymap, тож підказка на екрані надійніша за пам’ять.

Практичний висновок: рішення «стискати чи починати заново» ухвалюють до того, як відправили важкий запит, а не посередині.

«N% context left»: від якого числа Codex обчислює залишок

У правому нижньому куті інтерфейсу світиться рядок на кшталт 100% context left. Це залишок контекстного вікна — того обсягу тексту, який модель тримає перед очима: ваші повідомлення, її відповіді, вміст прочитаних файлів і вивід запущених команд. Якщо відсоток чомусь невідомий, замість нього показується обсяг витрачених токенів.

Важливо розуміти, що залишок обчислюється не від однієї величини, а від меншої з двох: скільки лишилося до порога автоматичного стиснення і скільки лишилося до повного вікна моделі. Поріг завжди нижчий за стелю, тому зазвичай ви дивитеся саме на нього.

BINANCE SIMPLE EARNЗмусь крипту працюватиВідсотки на USDT і BTC без блокування — гроші лишаються під рукою.Розмістити
Що дивитисяДеЩо це означає
N% context leftправий нижній кутскільки місця лишилося до стиснення або до стелі вікна
/statusвведенням у полімодель, права, теки та витрата токенів поточної сесії
/debug-configвведенням у поліякі значення вікна й порога стиснення справді застосувалися
/usageвведенням у полівитрата квоти тарифу — інша сутність, не контекст

Окрема деталь, про яку варто знати заздалегідь: постійні інструкції проєкту теж займають місце. Файл AGENTS.md подається агентові на кожному ході незалежно від того, потрібен він саме зараз чи ні; за сторонніми замірами всі такі інструкції зводяться в один файл зі стелею 32 КіБ. Тобто роздутий AGENTS.md — це не разова, а постійна плата за кожен хід.

Чому в Codex видно 258k замість мільйона токенів

Це найчастіша претензія до довгих сесій, і побудована вона на порівнянні двох різних чисел. У трекері проєкту лежать звернення від 13 і 23 липня 2026 з однаковим змістом: вікно було 353 тисячі, стало 258 тисяч, а рекламують мільйон.

Арифметика на 11 серпня 2026 така. У параметрах моделі, які використовує CLI, стоїть вікно 272 000 токенів, а робочою вважається частка 95%:

  • 272 000 × 0,95 ≈ 258 400 токенів — саме те число, на яке скаржаться;
  • за незалежним розбором стеля 400 000 складається з 272 000 вхідних токенів і 128 000, зарезервованих під відповідь моделі;
  • мільйон із гаком — це стеля самої моделі в API, а не бюджет вашої сесії в Codex.

Застереження, без якого цифри вводять в оману: 272 000 у коді — це резервне значення, яке беруть, коли параметри моделі невідомі. Справжні приходять із сервера й змінюються разом із моделями. Тому запам’ятовувати треба не число, а спосіб його дізнатися: /status і /debug-config показують те, що діє у вас сьогодні.

Звідси й відповідь на питання, чи можна збільшити контекст. У конфізі є ключ model_context_window, і його справді можна задати. Але в коді значення з конфігу обрізається за максимумом моделі: береться менше з двох. Підняти вікно вище за модельне не вийде — ключ годиться лише щоб занизити його (наприклад, аби стиснення спрацьовувало раніше). Робочих способів «увімкнути мільйон» із конфігу не існує, що б не обіцяли пости в соцмережах.

Як Codex стискає контекст і що при цьому губиться

Стиснення (англійською це називається codex compaction) — це заміна довгої розмови короткою вижимкою, щоб робота продовжилася в тому самому чаті. У Codex це не локальна операція «модель переказала собі діалог»: для codex-моделей CLI звертається до сервера — є окремий виклик стиснення і параметр порога compact_threshold, після якого стиснення запускається автоматично.

Відповідь приходить у вигляді зашифрованого елемента, і офіційне формулювання тут пряме: він непрозорий і не призначений для читання людиною. Практичних наслідків два: вижимку не можна подивитися й не можна виправити. Разом із нею в нове вікно переноситься частина елементів попереднього — тобто це не «все викинули, лишили абзац».

Що просять зберегти при стисненні, відомо точно: сам промпт лежить у репозиторії й вимагає «контрольну точку контексту» — передати іншій моделі, яка продовжить завдання, чотири речі:

  1. поточний прогрес і ухвалені рішення;
  2. важливий контекст, обмеження та побажання користувача;
  3. що лишилося зробити — зрозумілими наступними кроками;
  4. критичні дані, приклади та посилання, потрібні для продовження.

Наступне вікно отримує вижимку з преамбулою «інша модель починала це завдання й лишила короткий виклад своїх міркувань — спирайся на нього і не дублюй роботу».

З цього переліку видно й те, чого в ньому немає: формулювань, відтінків, вашого «тільку не чіпай теку legacy, там усе тримається на добрій волі», якщо це не було записано як обмеження. Користувачі це відчувають — у трекері є прохання зберігати останні операційні кроки дослівно, бо після стиснення губиться ланцюжок уже зробленого.

Звідси головний прийом довгої роботи: важливе складати у файл, а не в чат. Файл переживе будь-яке стиснення, репліка — не обов’язково. Той самий принцип, лише на прикладі іншого агента, розібрано в матеріалі про те, як не втрачати контекст між сесіями.

Що робить Codex, коли контекст закінчився

У кінця вікна є двоступенева механіка, про яку майже не пишуть, а вона пояснює дивну поведінку агента.

Ступінь перша — попередження. У налаштуваннях є поріг залишку (reminder_threshold_tokens): коли до стиснення лишається менше за задане число токенів, у розмову підставляється нагадування, і в нього підставляється саме число залишку. Приходить воно один раз. Якщо ви бачили, що агент раптом почав «згортатися» й підбивати підсумки без вашого прохання — найімовірніше, він отримав саме це нагадування.

Ступінь друга — аварійна нотатка. Окремо резервується невеликий запас токенів понад порогом, і в описі його названо прямо: додаткові токени на нотатки в аварійному режимі. Коли залишок доходить до нуля, у розмову відправляється спеціальний промпт, і агент витрачає цей запас на запис стану для наступного вікна. Резерв виділяється лише тоді, коли такий промпт заданий.

За сторонніми розборами вихідного коду поріг обчислюється приблизно так: від вікна моделі відраховують запас під відповідь (до 20 000 токенів), потім ще близько 13 000 — залишок і є точкою спрацювання; для вікна 200 000 це приблизно 167 000 токенів. Це чужа реконструкція, а не задокументована формула, і покладатися на неї як на точну не варто. Там само зазначено, що поріг із конфігу обмежений згори приблизно 90% вікна.

/compact, /clear чи /new: три різні способи звільнити контекст

Усі три «звільняють контекст», і в довідниках їх часто подають як синоніми. Різниця принципова.

КомандаЩо пам’ятає агент післяЩо з записом сесіїКоли це правильний вибір
/compactвижимку минулої розмови: рішення, обмеження, наступні крокита сама сесія продовжуєтьсязавдання НЕ завершене, а місце закінчується
/newнічого з минулого чатупочинається новий чат, минулий лишається в історіїзавдання завершене, наступне — про інше
/clearнічого з минулого чатуновий чат плюс очищений екран терміналате саме, що /new, але ви ще й не хочете бачити простирадло виводу

Правило вибору просте: стиснення — для незавершеного завдання, новий чат — для нового завдання. Офіційні практики OpenAI кажуть те саме: /compact — коли розмова розрослася й потрібна вижимка попереднього контексту, свіжий чат — під нове завдання; до того ж Codex стискає розмову й сам.

Помилка, яка коштує найдорожче, — тягнути одну сесію тиждень. Кожне стиснення губить частину подробиць, а наступне стискає вже стиснене. До третього-четвертого кола агент упевнено працює з переказом переказу. Дешевше закрити завдання, покласти підсумок у файл і почати чистий чат.

Повернутися до перерваної роботи: codex resume, –last і список сесій

Сесії Codex зберігаються самі. Кожна — це JSONL-файл (по одному запису на рядок) у теці ~/.codex/sessions/РРРР/ММ/ДД/ з іменем на кшталт rollout-...jsonl; шлях до файлу поточної сесії друкує /rollout. Усередині — вся розмова, виклики інструментів і їхній вивід.

Способи повернутися:

  1. codex resume --last — відкрити останню сесію відразу, без вибору;
  2. codex resume — відкрити список і вибрати потрібну;
  3. codex resume <id> — відкрити конкретну сесію, якщо знаєте ідентифікатор;
  4. /resume — те саме зсередини вже запущеного Codex;
  5. codex exec resume — продовжити неінтерактивний запуск, це потрібно для скриптів і CI.

Дві деталі, через які люди вирішують, що «сесія зникла». Перша: за замовчуванням показуються чати поточного репозиторію — сесія з іншої теки в списку не з’явиться, для цього є прапорець --all. Друга: окремої команди на кшталт codex session list у CLI немає, перелік живе у вікні вибору; сторонні утиліти, які розбирають ту саму теку й показують історію плоским списком із пошуком (їх шукають за codex session history), люди пишуть саме тому.

Важливо розуміти, що саме відновлюється. Не «пам’ять» моделі — збереженого внутрішнього стану в неї немає. Відновлюється запис розмови, з якого контекст збирається наново. Звідси дві речі: повернення в дуже довгу сесію відразу займає багато контексту (інколи стиснення спрацьовує майже одразу після повернення — на це в трекері є окрема скарга), а сама сесія після повернення дописується в той самий файл.

Fork замість resume: коли потрібна друга спроба, а не продовження

Обидві операції відкривають стару сесію, але роблять різне:

  • resume — продовження тієї самої лінії: нові ходи дописуються в той самий файл, історія одна;
  • fork — нова гілка від вибраної точки: оригінал лишається недоторканим;
  • /side (аліас /btw) — одноразова гілка для побічного питання; усередині неї доступний лише невеликий набір команд, як-от /diff, /status і /export.

Правило: якщо ви збираєтеся спробувати інакше — беріть fork. Інакше невдалий експеримент назавжди лишиться в робочому записі завдання, і через місяць по ньому буде незрозуміло, що ви врешті зробили, а що скасували. Форкнути поточний чат можна й на ходу: codex fork --last знадвору, /fork зсередини.

Відкат правок Codex: чому скасовує їх git, а не агент

Це місце розходиться з частиною посібників: вони пропонують увімкнути в конфізі undo = true у блоці [features] й користуватися командою /undo.

На 11 серпня 2026 це не працює. У реєстрі функцій Codex ключ undo позначений як видалений і залишений «для сумісності, щоб старі конфіги й далі читалися»; під час розбору конфігу цей ключ просто пропускається — без попередження. Команди /undo в переліку немає. Прохання повернути її відкрите в трекері з 14 січня 2026, окрема заявка просить додати відкат до контрольної точки.

Друга пастка — подвійний Esc. Він відкриває попереднє повідомлення на редагування й дає змогу відвести гілку розмови з цієї точки. Це відкат розмови, а не файлів: у протоколі Codex так і написано — скидання останніх ходів із контексту не намагається повернути зміни у файловій системі, скасовувати правки на диску має клієнт. Тобто чат ви відмотали, а код на диску лишився новим.

Що ви хочете скасуватиЧим це робиться
останні повідомлення в розмовіподвійний Esc (редагування попереднього повідомлення й гілка від нього)
правки у відслідковуваних файлахgit restore <файл> або git checkout .
файли, які агент створивgit clean -fd (спершу подивіться git clean -nd)
весь набір правок завданняповернутися до свого коміту-чекпойнта

Робоча процедура, яка робить довгу сесію безпечною:

  1. Коміт перед завданням. Хай навіть із повідомленням «чекпойнт»: це ваша єдина кнопка скасування.
  2. /diff замість довіри. Команда показує git-diff разом із файлами, яких git ще не знає, — саме там виринають неочікувано створені файли.
  3. Дрібні коміти по ходу. Кожен робочий етап — коміт; тоді «відкатити» означає повернутися на один крок, а не втратити годину.
  4. Нічого важливого поза git. Незакомічений чернетковий документ у теці проєкту — це те, що нічим відновити: саме з такими історіями й приходять у трекер.

Як дробити довгу роботу на сесії й не втрачати контекст

Дисципліна коштує дешевше, ніж героїчний порятунок сесії на 3% залишку. Порядок, який працює:

  1. Одна сесія — одне завдання. Завершили — /new. Формулювання завдання при цьому важливе не менше за керування сесією: про це окремий урок про те, як ставити завдання Codex.
  2. Ціль — у /goal. Для роботи на кілька годин у цілі є власний бюджет токенів, тобто це механізм для агента, а не позначка для людини.
  3. Підсумки — у файл. Короткий NOTES.md або запис у задачнику: що зроблено, що вирішено, що далі. Це те, що переживе стиснення й стане входом у наступну сесію.
  4. Коміт на кожному етапі. Він же чекпойнт відкату.
  5. Побічні питання — у /side. Не тягніть «а як працює ця функція» в основну лінію завдання.
  6. Перейменувати й заархівувати. /rename дає сесії людське ім’я, /archive прибирає її зі списку, лишаючи запис на диску.

Ще одна причина не накопичувати сесії: файл запису лишається на диску й зберігає все, включно з виводом команд. Затирання секретів і токенів із показаних команд та з відтворюваної історії додали лише у версії 0.147.0 від 7 серпня 2026 — записи, зроблені раніше, чистішими не стануть. Якщо в розмову потрапило зайве, архівування не допоможе: архів не дорівнює видаленню, і для видалення є /delete та codex delete (безповоротно, разом із гілками субагентів).

Ризики довгої сесії Codex: що ламається за скаргами трекера

Картина за зверненнями в репозиторії проєкту на 11 серпня 2026. Номери в таблиці — це заявки користувачів, і частину з них уже закрито (тобто виправлено або визнано дублем): за датами видно, що скарги йдуть із березня по липень 2026, тому симптом варто знати, навіть якщо конкретну заявку закрили.

СимптомЩо відомоЩо робити
Агент відповідає на давніший запитissue #19116: біля порога стиснення сесія підвисає, при дуже великих вікнах агент береться за старий стан завданняперервати хід (Esc), перевірити /status, почати новий чат із підсумком у файлі
Стиснення йде по колу годинамиissue #14120 (CLI 0.112): Codex стискає раз за разом; за описом автора заявки після кожного стиснення лишається близько 12% контекстузупинити, /new, завдання віддати меншими частинами
Стиснення спрацьовує відразу після поверненняissue #29426 у застосунку Codex: коротка відновлена сесія стискається, хоч вікно майже порожнєне повертатися в найдовші сесії — форкнути або почати заново з нотаткою
Стиснення не скасувати, і воно гальмуєissue #24372 і #24432 у застосунку Codex: авто-стиснення триває до хвилинипланувати стиснення самому, не доводячи до автоматичного
Після стиснення губиться хід роботиissue #29356: просять зберігати останні операційні кроки дослівновести файл зі станом, не сподіваючись на вижимку
Вікно «врізали»issue #34926 і #32806: робочих 258k замість заявленого мільйонаорієнтуватися на /status, а не на рекламні цифри моделі

Є й зворотний бік: кінець вікна не обриває роботу молча — спершу приходить нагадування із залишком токенів, потім резервується запас на аварійну нотатку. А сама можливість працювати через кілька вікон підряд заявлена OpenAI як навчена здатність моделі: вона стискає сесію на межі вікна, отримує чисте вікно й продовжує, доки завдання не буде завершене. Це заява вендора, а не наш замір, але продуктова частина під неї зроблена — /compact, /resume, /fork, /goal і запис сесій на диск.

Часті запитання

Як продовжити перервану сесію Codex CLI?

Запустіть codex resume --last — відкриється остання сесія. Якщо потрібна не остання, наберіть codex resume і виберіть зі списку, а зсередини вже запущеного Codex — команду /resume. За замовчуванням показуються чати поточного репозиторію; щоб побачити сесії з інших тек, додайте прапорець --all. Відновлюється запис розмови, з якого контекст збирається наново.

Чи можна скасувати правки, які зробив Codex?

Засобами агента — ні. Команду /undo прибрали, а ключ undo = true у конфізі тепер молча ігнорується, хоч частина посібників досі радить його увімкнути. Подвійний Esc відкатує лише розмову: у протоколі прямо сказано, що зміни на диску він не повертає. Робочий відкат — гітом: коміт-чекпойнт перед завданням, далі git restore для змінених файлів і git clean -fd для створених.

Чим /compact відрізняється від /clear і /new?

/compact лишає вижимку розмови й продовжує ту саму сесію — це вибір для незавершеного завдання. /new починає новий чат: минулого контексту агент не пам’ятає, запис лишається в історії. /clear робить те саме, що /new, і додатково чистить екран термінала. Правило просте: стиснення — для продовження роботи, новий чат — під нове завдання.

Чи можна збільшити контекстне вікно Codex через config.toml?

Ні. Ключ model_context_window існує, але задане значення обрізається за максимумом моделі — береться менше з двох. Підняти вікно вище за модельне не вийде, занизити можна (інколи корисно, щоб стиснення спрацьовувало раніше). Справжній розмір вікна й поріг стиснення дивіться командами /status і /debug-config, а не за рекламними цифрами моделі.

Де лежать файли сесій Codex і як їх видалити?

Записи зберігаються як JSONL-файли в ~/.codex/sessions/РРРР/ММ/ДД/, шлях до поточного друкує /rollout. Усередині вся розмова разом із виводом запущених команд. Архівування не видаляє файл — воно прибирає сесію зі списку. Для видалення є /delete зсередини та codex delete знадвору; операція безповоротна й забирає гілки субагентів.

Що робити, якщо Codex стискає контекст по колу?

Це відома поведінка: у трекері є звернення про те, що стиснення повторюється годинами, так і не доходячи до правок. Перервіть хід клавішею Esc, подивіться /status, випишіть поточний стан роботи у файл і почніть новий чат командою /new, віддавши завдання дрібнішими частинами. Тягнути таку сесію далі дорожче, ніж почати заново з нотаткою.

Курс «OpenAI Codex: агентний кодинг» · модуль «Метод роботи». Повна програма і два маршрути навчання — на сторінці курсу.

Попередній урок: Codex CLI проти Codex Cloud: де вирішувати задачу

BINANCE SIMPLE EARN
Крипта лежить?
Simple Earn: відсоток нараховується щодня
Відкрити Earn
Поділитися
Зв'язатися:
Крипто- та data-аналітик, інженер-програміст (факультет комп'ютерних наук ХНУРЕ). В IT з 2008 року: адміністрував корпоративний моніторинг у «Vodafone Україна», сім років розробляв і просував веб-проєкти, п'ять років керував маркетингом на метриках — конверсія, CTR, ROI, LTV.Криптовалютними ринками займаюся з 2021 року: ончейн-метрики, токеноміка, макроекономічні індикатори. Розробив власну data-driven модель аналізу ринку на 30+ метрик. Стек — Python (pandas, NumPy, SciPy, matplotlib), математична статистика та EDA; збір і звірку даних автоматизую AI-агентами.Принцип — «Don't trust, verify»: кожна цифра перевірена за першоджерелом, ключові — щонайменше за двома незалежними; прогнози — лише сценарії з умовами. Теза без даних не публікується.