Навыки Codex CLI

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


Что такое навык?

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

Codex 技能系统

  • Автоматизируйте распространённые задачи разработки
  • Определяйте доменно-специфичные рабочие процессы обработки
  • Настраивайте стандарты проверки кода
  • Создавайте шаблоны и правила для конкретного проекта

Система навыков позволяет Codex адаптироваться к потребностям разных проектов и рабочих процессов, как если бы вашей команде назначили выделенного помощника по разработке.


Каталоги навыков

Codex загружает навыки из следующих мест:

РасположениеОписание
~/.codex/skills/Глобальный каталог навыков, доступный всем проектам
{项目目录}/.codex/skills/Каталог навыков уровня проекта
Configure the specified directoryУказывается через skills.directory в config.toml

Конфигурирование каталогов навыков

Настройка каталогов навыков

[skills]
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ОписаниеОбязательный
namestringНазвание навыкаДа
descriptionstringОписание навыкаДа
triggerstringКлючевые слова-триггерынет

Когда ваш ввод соответствует триггеру навыка, Codex автоматически использует этот навык для выполнения задачи.


Создание пользовательских навыков

Давайте создадим простой навык в качестве примера:

Шаг 1: Создайте каталог навыка

Создайте папку навыка

mkdir -p ~/.codex/skills/Generate tests

Шаг 2: Напишите определение навыка

Создайте skill.md

---
name: Генерация тестов
description: Генерация модульных тестов для кода
trigger: test
---

# Навык генерации тестов

Когда пользователь запрашивает генерацию тестов, выполните следующие шаги:

## Шаги

1. Проанализируйте функциональность существующего кода
2. Определите граничные случаи, которые нужно протестировать
3. Выберите подходящий фреймворк для тестирования
4. Сгенерируйте тестовые случаи

## Стандарты тестирования

- Покрытие должно включать обычные случаи, граничные случаи и случаи ошибок
- Каждый тест-кейс должен быть независимым и не зависеть от порядка выполнения других тестов
- Используйте понятные имена для тестовых функций

## Формат вывода

Сгенерируйте тестовый код, который можно запустить напрямую, и включите необходимые тестовые данные.

Шаг 3: Использование навыка

Теперь, когда вы вводите содержимое, связанное с "test", Codex автоматически использует этот навык:

Активация навыков

# Эти входные данные активируют навык "Generate Test"
Помогите мне сгенерировать тесты для этой функции
Пожалуйста, протестируйте этот модуль

Встроенные навыки

В Codex есть несколько распространённых встроенных навыков:

Название навыкаСлова-триггерыОписание
Ревью кодаreview, auditПровести код-ревью и предоставить предложения по улучшению
Отладкаdebug, debuggingПомочь найти и исправить проблемы
Рефакторингrefactor, refactoringОптимизировать структуру кода без изменения функциональности
Документацияdoc, documentationСгенерировать документацию кода

Вы можете переопределить поведение встроенных навыков, чтобы создать версии, соответствующие потребностям проекта.


Приоритет навыков

Когда совпадает несколько навыков, Codex выбирает в соответствии со следующим приоритетом:

  1. Точное совпадение (идентичные триггерные слова)
  2. Совпадение по вхождению (входные данные содержат триггерное слово)
  3. Семантическое совпадение (ИИ оценивает релевантность)

Принудительное использование конкретных навыков

Вы можете принудительно использовать конкретный навык с помощью слэш-команды:

Принудительное использование навыка

# Команда использования навыка
@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 понимает мои потребности», а не требовать от них изучения специального синтаксиса.

Управление навыками

Список доступных навыков

Просмотреть список навыков

# Введите в Codex
/skills

Отключить навыки

Если вы не хотите использовать навык, можно удалить соответствующий файл или переместить его в другой каталог.

Обновление навыков

После изменения файла навыка необходимо перезапустить Codex, чтобы изменения вступили в силу.


Библиотека примеров навыков

OpenAI официально предоставляет несколько готовых навыков для ознакомления и использования:

Посетите репозиторий GitHub, чтобы увидеть больше примеров:https://github.com/openai/codex/tree/main/skills


ЧАВО

В: Навык не срабатывает?

Проверьте, правильно ли указан формат метаданных файла навыка, убедитесь, что формат заголовка YAML правильный, и файл заканчивается на.mdправильное окончание.

Вопрос: Как отлаживать навык?

Вы можете использовать в Codex/debugкоманду для просмотра подробной информации о сопоставлении навыков.

Вопрос: Повлияют ли навыки на обычное поведение Codex?

Навыки лишь предоставляют рекомендации; Codex по-прежнему принимает независимые решения. Если навыки настроены неправильно, Codex будет использовать поведение по умолчанию.

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