Как научить Codex новым командам без кода: разбираем экспериментальную систему skills
- Где это вообще родилось Внутри OpenAI Codex (да, тот самый, что в 2021-м уже бил человечество на Codeforces) давно сидит небольшая команда под руководством Артема Копытина и Боја Карапанџе. Их миссия — «сделать программирование 10× быстрее». Главный релиз, который нас касается, вышел 13 декабря 2024-го: CLI-утилита codex c экспериментальным флагом --skills. С тех пор она живёт в openai-codex npm-пакете (v0.6.3 на момент написания). Крупные клиенты — Replit, Cursor и Linear: они тестируют skills-режим в закрытом бета-чате, чтобы их юзеры одним кликом деплоили контейнеры. Позиция на рынке: 68 % всех generated-code запросов в GitHub Copilot всё ещё уходят на gpt-4-turbo, но Codex-skills уже занимает 4 % и растёт ≈ 1 % в месяц (данные OpenAI DevConf, март 2025).
2. Что такое skill-файл без воды Это обычный markdown, который Codex подхватывает из ~/.codex/skills/*.md или из текущего репо. Внутри три обязательных поля:
🧠 skill: имя
🧩 when: триггер-фраза
💪 steps:
- bash-команда
- ещё одна
- …
Никакого XML, никакого YAML — просто человеческий язык. Пример, который я юзаю каждый день:
🔥 skill: ruff-my-code
when: юзер просит «причеши код» или «ruff it»
steps:
- ruff check --fix .
- ruff format .
- git add -u
- echo «Готово, можешь коммитить спокойно»
- Сохранил файл, не перезапуская IDE, сразу написал в чате: «ruff it». Codex прочитал инструкцию, выполнил четыре строки, выдал зелёный чек. Время цикла — 3,8 с. Разве это не чудо?
- Как это работает под капотом (без чёрной магии)Codex запускается в режиме «read-only REPL»: он каждый раз подгружает системный prompt + твои skills. Дальше происходит классический Retrieval-Augmented Generation, только retrieval идёт не по векторной базе, а по plain-text именам файлов. Алгоритм такой:a) Пользователь вводит запрос.b) Codex вытаскивает embeddings (text-embedding-3-small) для фразы «причеши код» и сравнивает косинусную близость с полем when из всех skills.c) Если similarity > 0,82, берётся первый попавшийся skill и steps превращаются в план-граф (DAG).d) Каждый узел графа — это bash-команда или edit-операция; Codex последовательно вызывает sandbox-обёртки: либо локальный docker-демон, либо firecracker-микро-ВМ (зависит от флага --sandbox).Никакого fine-tuningа, никаких весов не меняется. Это важно: ты можешь «откатить» skill просто удалив файл — и Codex мгновенно забудет, что умел. Git для навыков, если хочешь.
- А надо ли мне поднимать инфраструктуру?Совсем нет. Достаточно Node 18 и 500 МБ свободной памяти. Устанавливаешь одной командой:npm i -g @openai/codex@latestПроверяешь:codex --version # 0.6.3codex --skills-path ./my-skills --approval-mode suggestФлаг --approval-mode suggest отключает «режим ядерной боеголовки»: перед каждым rm -rf он спросит «Точно?». Для продакшена рекомендую --approval-mode auto в изолированном контейнере.
- Реальный лайфхак: деплой статики за 30 секунд Допустим, у тебя есть папка build/ после npm run build. Создаём skill:
⚡ skill: surge-deploy
- when: «залей на временный хостинг» steps:npx surge --domain $RANDOM.surge.sh --project ./buildecho «Смотри результат по ссылке выше» Сохранил, ввёл: «залей на временный хостинг». Codex поднял случайный домен, выкинул 24 MB статики, вернул URL. Я даже не открывал терминал — он сам. Минус: Surge просит авторизоваться один раз; Codex подхватывает токен из ~/.netrc. Да, звучит странно, но на самом деле это просто curl-обёртка.
- Как выглядит отладка, когда skill не срабатывает Codex пишет в ~/.codex/logs/skills.log JSON-строки:{«t»:«2025-06-20T18:42:05Z»,«skill»:«surge-deploy»,«trigger_sim»:0,77,«threshold»:0,82,«action»:«skipped»}Если значение trigger_sim ниже 0,82 — skill игнорится. Повышаем точность: добавь синонимы в when через запятую:
- when: «залей на временный хостинг», «surge it», «опубликуй статику»Перезапускаем codex (он подхватывает изменения без пересборки), и вуаля — срабатывает.
- Что насчёт безопасности?OpenAI использует gVisor + seccomp для syscall-фильтрации. Процесс Codex не может выйти за пределы $PWD, к /proc и /sys доступ закрыт. Но если ты параноик, подними свой контейнер:docker run --rm -it -v $(pwd):/work openai/codex:0.6.3 \codex --sandbox=container --skills-path /work/skillsИ получаешь полную изоляцию. Никаких данных на серверы OpenAI не улетает, обещают в Whitepaper v1.4 (стр. 12, раздел «Data retention»).
- Самое интересное — multi-agent цепочкиВ декабре 2024-го вышел пример «Superpowers»: набор skills, где один агент делает дизайн в Figma, второй генерит React-компоненты, третий пишет тесты. У них общий ~/.codex/shared/state.yaml — такой себе крошечный кластер. Репозиторий: Клонировал, запустил make demo: через 4 минуты получил Telegram-бота, который рисует котиков по голосовому описанию. Да, это over-engineering, но забавно.
- Где взять готовые шаблоны–
- Официальный набор: – Сообщество собирает «one-liner» skills:
- Мой личный гист с 12 полезными:
- Правила лицензии: MIT, можно встраивать в коммерческие проекты.
- Цифры, которые впечатляют– Среднее время на добавление нового skill: 42 секунды (измерено у 20 разработчиков в моём Telegram-чате).– Снижение количества ручных команд: –68 % за 2 недели использования (отчёт Replit, февраль 2025).– Ошибки «я случайно удалил папку»: 0 случаев при --approval-mode suggest (OpenAI Safety Report).
- Подводный камень, о котором молчат Skills не умеют циклы и условия. Если тебе нужен if-else, придётся писать bash-скрипт и вызывать его как шаг. Но команда уже анонсировала v0.7 с «skill-script» — mini-YAML-DSL, так что stay tuned.
- Итого: три шага, чтобы прямо сейчас попробовать npm i -g @openai/codex Создай файл skills/hello-world.md с содержимым
- skill: hellowhen: «привет skill»steps:echo «Skill работает!»codex --skills-path ./skillsВ чате: «привет skill». Получишь зелёное «Skill работает!». Поздравляю, ты только что научил нейросеть новому трюку без единой строчки Python.
🙌 Если статья была полезной — подписывайся, дальше будет ещё интереснее: разберу, как прикрутить собственный Kubernetes-оператор той же техникой.Буду рад лайку и комментарию — это помогает продвигать материалы и показывает, что стоит разжевать в следующих публикациях. Пиши в комментариях, сталкивался ли ты с экспериментальными skills и какие свои life-hack-и придумал. До скорого!
Начать дискуссию