Навыки Codex CLI
Навыки — это механизм расширения Codex CLI, который позволяет создавать пользовательские рабочие процессы и автоматизированные задачи. С помощью навыков вы можете определять, как Codex ведёт себя в конкретных сценариях.
Что такое навык?
Навык — это настраиваемый шаблон поведения, который сообщает Codex, как обрабатывать определённые типы задач. Вы можете создавать собственные навыки, чтобы:

- Автоматизируйте распространённые задачи разработки
- Определяйте доменно-специфичные рабочие процессы обработки
- Настраивайте стандарты проверки кода
- Создавайте шаблоны и правила для конкретного проекта
Система навыков позволяет Codex адаптироваться к потребностям разных проектов и рабочих процессов, как если бы вашей команде назначили выделенного помощника по разработке.
Каталоги навыков
Codex загружает навыки из следующих мест:
| Расположение | Описание |
|---|---|
~/.codex/skills/ | Глобальный каталог навыков, доступный всем проектам |
{项目目录}/.codex/skills/ | Каталог навыков уровня проекта |
Configure the specified directory | Указывается через skills.directory в config.toml |
Конфигурирование каталогов навыков
Настройка каталогов навыков
enabled = true
directory = "~/my-codex-skills"
Структура файлов навыка
Каждый навык — это отдельная папка, содержащая следующие файлы:
skill-name/ ├── skill.md # 技能定义文件(必需) └── (可选的辅助文件)
Формат файла skill.md
Пример определения навыка
name: Проверка кода
description: Выполните углублённую проверку кода и предложите улучшения
trigger: /review
---
# Навык проверки кода
Когда пользователь запрашивает проверку кода, выполните следующие шаги:
## Стандарты проверки
1. Читаемость кода
2. Проблемы производительности
3. Риски безопасности
4. Соблюдение лучших практик
5. Покрытие тестами
## Формат вывода
Предоставьте следующий структурированный отчёт:
- Список проблем (отсортированный по серьёзности)
- Рекомендации по улучшению
- Оценка кода (1-10)
Метаданные навыка
Начало каждого файла навыка должно содержать метаданные в формате YAML:
| Поле | Type | Описание | Обязательный |
|---|---|---|---|
name | string | Название навыка | Да |
description | string | Описание навыка | Да |
trigger | string | Ключевые слова-триггеры | нет |
Когда ваш ввод соответствует триггеру навыка, Codex автоматически использует этот навык для выполнения задачи.
Создание пользовательских навыков
Давайте создадим простой навык в качестве примера:
Шаг 1: Создайте каталог навыка
Создайте папку навыка
Шаг 2: Напишите определение навыка
Создайте skill.md
name: Генерация тестов
description: Генерация модульных тестов для кода
trigger: test
---
# Навык генерации тестов
Когда пользователь запрашивает генерацию тестов, выполните следующие шаги:
## Шаги
1. Проанализируйте функциональность существующего кода
2. Определите граничные случаи, которые нужно протестировать
3. Выберите подходящий фреймворк для тестирования
4. Сгенерируйте тестовые случаи
## Стандарты тестирования
- Покрытие должно включать обычные случаи, граничные случаи и случаи ошибок
- Каждый тест-кейс должен быть независимым и не зависеть от порядка выполнения других тестов
- Используйте понятные имена для тестовых функций
## Формат вывода
Сгенерируйте тестовый код, который можно запустить напрямую, и включите необходимые тестовые данные.
Шаг 3: Использование навыка
Теперь, когда вы вводите содержимое, связанное с "test", Codex автоматически использует этот навык:
Активация навыков
Помогите мне сгенерировать тесты для этой функции
Пожалуйста, протестируйте этот модуль
Встроенные навыки
В Codex есть несколько распространённых встроенных навыков:
| Название навыка | Слова-триггеры | Описание |
|---|---|---|
| Ревью кода | review, audit | Провести код-ревью и предоставить предложения по улучшению |
| Отладка | debug, debugging | Помочь найти и исправить проблемы |
| Рефакторинг | refactor, refactoring | Оптимизировать структуру кода без изменения функциональности |
| Документация | doc, documentation | Сгенерировать документацию кода |
Вы можете переопределить поведение встроенных навыков, чтобы создать версии, соответствующие потребностям проекта.
Приоритет навыков
Когда совпадает несколько навыков, Codex выбирает в соответствии со следующим приоритетом:
- Точное совпадение (идентичные триггерные слова)
- Совпадение по вхождению (входные данные содержат триггерное слово)
- Семантическое совпадение (ИИ оценивает релевантность)
Принудительное использование конкретных навыков
Вы можете принудительно использовать конкретный навык с помощью слэш-команды:
Принудительное использование навыка
@skill-name описание вашей задачи
Расширенная конфигурация навыков
Условные триггеры
Вы можете настроить навыки так, чтобы они срабатывали при определённых условиях:
Пример условного триггера
name: Python Skill
description: Обработка, специфичная для проекта Python
trigger: python
when:
file_pattern: "*.py"
directory: "src/"
---
# Навык проекта Python
Этот навык применяется только при обработке файлов Python.
Многошаговые задачи
Навыки могут определять сложные многошаговые рабочие процессы:
Многошаговые навыки
name: Полная разработка функции
description: Полный рабочий процесс от требований до реализации
триггер: разработка функции
---
# Полный рабочий процесс разработки функции
## Этап 1: Анализ требований
- Понимание функциональных требований
- Выявление граничных случаев
- Проектирование структур данных
## Этап 2: Проектирование
- Проектирование структуры функций/классов
- Определение интерфейсов
- Выбор алгоритмов
## Этап 3: Реализация
- Написание кода
- Добавить комментарии
- Написать документацию
## Фаза 4: Тестирование
- Написать модульные тесты
- Проверить граничные случаи
- Проверить покрытие
## Фаза 5: Коммит
- Создать Git-коммит
- Написать сообщение коммита
Лучшие практики работы с навыками
Соглашения об именовании
- Используйте понятные описательные имена
- Имена должны отражать функциональность навыка
- Избегайте использования китайских названий (это может вызвать проблемы с кодировкой)
Выбор триггерных слов
- Выбирайте часто используемые ключевые слова
- Избегайте чрезмерно широких триггерных слов
- Учитывайте естественные способы выражения пользователей
Гранулярность навыка
- Ответственность навыка должна быть одноцелевой
- Один навык решает один тип задач
- Сложные рабочие процессы можно реализовать с помощью комбинаций навыков
Хороший навык должен вызывать у пользователей ощущение, что «Codex понимает мои потребности», а не требовать от них изучения специального синтаксиса.
Управление навыками
Список доступных навыков
Просмотреть список навыков
/skills
Отключить навыки
Если вы не хотите использовать навык, можно удалить соответствующий файл или переместить его в другой каталог.
Обновление навыков
После изменения файла навыка необходимо перезапустить Codex, чтобы изменения вступили в силу.
Библиотека примеров навыков
OpenAI официально предоставляет несколько готовых навыков для ознакомления и использования:
Посетите репозиторий GitHub, чтобы увидеть больше примеров:https://github.com/openai/codex/tree/main/skills
ЧАВО
В: Навык не срабатывает?
Проверьте, правильно ли указан формат метаданных файла навыка, убедитесь, что формат заголовка YAML правильный, и файл заканчивается на.mdправильное окончание.
Вопрос: Как отлаживать навык?
Вы можете использовать в Codex/debugкоманду для просмотра подробной информации о сопоставлении навыков.
Вопрос: Повлияют ли навыки на обычное поведение Codex?
Навыки лишь предоставляют рекомендации; Codex по-прежнему принимает независимые решения. Если навыки настроены неправильно, Codex будет использовать поведение по умолчанию.
Другие расширения