Автоматизация Codex и CI/CD

Codex предоставляет несколько методов автоматизации, которые можно использовать в скриптах, конвейерах и на стороне сервера.


Неинтерактивный режим (exec)

Команда exec используется в сценариях скриптов и автоматизации, без необходимости открывать TUI.

Базовое использование

команда exec

# Выполнить одноразовую задачу
codex exec "Проверьте код и выведите отчёт"

# Вывод в файл
codex exec -o review.md "Проверьте src/auth.py"

# Использовать конкретную модель
codex exec -m gpt-5.4-mini "Проанализируйте структуру проекта"

# Полностью автоматическое выполнение
codex exec --full-auto "Запустите тесты и исправьте ошибки"

Общие параметры

ПараметрОписание
-mУказать модель
-oВывод результата в файл
--full-autoПолностью автоматическое выполнение
--ephemeralНе сохранять файлы сессии
--jsonФормат вывода JSON Lines
--output-schemaВывод в соответствии с форматом JSON Schema
--sandboxУстановите режим песочницы

Чтение из стандартного ввода

ввод stdin

# Чтение из канала
echo "Объясни эту ошибку" | codex exec -

# Чтение из файла
codex exec - < task.txt

# Многострочная задача
cat <<EOF | codex exec -
Проанализировать/каталог src
Найти потенциальные ошибки
Вывести предложения по исправлению
EOF

Возобновить сессию

Возобновить выполнение

# Возобновить последнюю сессию
codex exec resume --last "Продолжить исправление ошибок"

# Возобновить указанную сессию
codex exec resume --session abc123 "Следующая задача"

По умолчанию exec выполняется в песочнице только для чтения и не изменяет файлы.


Codex SDK

Codex SDK предоставляет программный интерфейс для вызова возможностей Agent в коде.

Установка SDK

Установка SDK

npm install @openai/codex-sdk

Примеры использования

Базовое использование SDK

import { Codex } from '@openai/codex-sdk';

// Создать клиент Codex
const codex = new Codex({
  apiKey: process.env.OPENAI_API_KEY
});

// Выполнить задачу
const thread = await codex.run({
  prompt: 'Проверьте файл src/auth.py',
  model: 'gpt-5.4'
});

// Получить результат
console.log(thread.messages);

// Continue task
const followUp = await codex.run({
  threadId: thread.id,
  prompt: 'Fix the discovered bugs'
});

Сценарии применения SDK

  • Интеграция в конвейеры CI/CD
  • Создание пользовательских приложений Agent
  • Автоматизация внутренних инструментов
  • Пакетная обработка задач

GitHub Action

Официальный Codex GitHub Action позволяет запускать задачи в конвейерах CI.

Базовый рабочий процесс

Пример GitHub Action

span style="color: green;">
name: Ревью Codex

on
: [pull_request]

jobs
:
  codex-review
:
    runs-on
: ubuntu-latest
    steps
:
      - uses
: actions/checkout@v4
        with
:
          fetch-depth
: 0

      - name
: Запуск ревью Codex
        uses
: openai/codex-action@v1
        with
:
          prompt-file
: '.github/codex-review.md'
          model
: 'gpt-5.4'
          sandbox
: 'workspace-write'
          output-file
: 'review.md'

      - name
: Опубликовать ревью
        uses
: actions/github-script@v7
        with
:
          script
: |
           const fs = require('fs');
            const review = fs.readFileSync('review.md', 'utf8');
            github.rest.pulls.createReview({
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: context.issue.number,
              body: review,
              event: 'COMMENT'
            });

Параметры действия

ParametersОписание
promptУкажите описание задачи напрямую
prompt-fileУкажите путь к файлу задачи
modelИспользуемая модель
sandboxРежим песочницы
output-fileПуть к выходному файлу
codex-argsДополнительные параметры CLI

Конфигурация безопасности

Настройки безопасности

span style="color: green;">
- name: Запустить Codex
  uses
: openai/codex-action@v1
  with
:
    prompt
: 'Проверить изменения'
    safety-strategy
: 'drop-sudo'
    unprivileged-user
: 'codex-runner'
    allow-users
: ['maintainers']

При использовании GitHub Action убедитесь, что API-ключ хранится в Secrets, не встраивайте его в код.


Сервер приложений

Сервер приложений предоставляет возможности Codex в виде серверного API.

Запуск сервера приложений

Запуск службы

# Запуск сервера приложений
codex app-server

# Укажите порт
codex app-server --port 3000

# Удалённый доступ
codex --remote ws://server:3000

Применимые сценарии

  • Совместное использование возможностей Codex командой
  • Удалённый вызов CI/CD
  • Интеграция во внутренние платформы

MCP-сервер

Предоставьте Codex как инструмент MCP, чтобы другие агенты могли его вызывать.

Настройте Codex MCP

Конфигурация MCP-сервера

# В конфигурации других агентов
[mcp_servers.codex]
command = "codex"
args = ["mcp-server"]

Лучшие

Безопасность

  • Используйте режим песочницы только для чтения
  • Сохраните API-ключ как секреты
  • Ограничьте условия срабатывания (только определённые события)
  • Просмотрите вывод перед применением изменений

Надёжность

  • Установите разумный тайм-аут
  • Используйте --ephemeral, чтобы избежать остаточного состояния
  • Убедитесь, что задача выполнена успешно, прежде чем продолжать
  • Предусмотрите откат в случае сбоя

Часто задаваемые вопросы

Вопрос: В чём разница между exec и интерактивным режимом?

exec завершается после одного выполнения, подходит для автоматизации; интерактивный режим продолжает диалог.

Вопрос: Как аутентифицироваться в CI/CD?

Используйте переменную среды CODEX_API_KEY, хранящуюся в Secrets.

Вопрос: Может ли GitHub Action изменять файлы?

Да, установите sandbox: workspace-write.

Вопрос: как использовать в Docker?

Установите Codex в образ, настройте аутентификацию, затем вызовите его.

Другие расширения