---
title: "Управление моделями и навыками"
id: "583"
type: "page"
slug: "model-skills"
published_at: "2026-06-03T14:29:16+00:00"
modified_at: "2026-06-13T00:52:52+00:00"
url: "https://pastukhov.com/code/docs/validation/model-skills"
markdown_url: "https://pastukhov.com/code/docs/validation/model-skills.md"
excerpt: "Управление моделями и навыками — это направление поведения ИИ для более надежного вывода. Правильная конфигурация…"
---

# Управление моделями и навыками

[https://pastukhov.com/code/docs/validation/model-skills.md](https://pastukhov.com/code/docs/validation/model-skills.md)

Управление моделями и навыками — это направление поведения ИИ для более надежного вывода. Правильная конфигурация модели обеспечивает соответствие стоимости и возможностей для каждой задачи, а навыки предоставляют контекст, специфичный для проекта и задачи, что значительно улучшает самопроверку модели, сообщая ей точно, какие стандарты соблюдать. Цель здесь — итеративно настраивать навыки на основе ошибок, которые совершает модель, пока не будет достигнуто приемлемое качество генерации.

![Skill selector control](https://pastukhov.com/wp-content/uploads/2026/06/skill-selector-control.png)## Конфигурация окружения

Окружения позволяют переключаться между различными моделями ИИ и провайдерами без перезапуска сессии. Каждое окружение — это именованная коллекция переменных уровня Claude Code — ключей API, названий моделей, базовых URL-адресов и цен — хранящаяся в `.pastukhov/environments.yml`.

### Подстановка переменных

Переменные окружения поддерживают ссылки `$VARIABLE_NAME`. При активации окружения ссылки разрешаются в их фактические значения. Это работает как с другими переменными окружения, так и с системными переменными окружения, позволяя хранить секреты вне репозитория:

```
# .pastukhov/environments.yml — безопасно для коммита
environments:
  production:
    variables:
      - ANTHROPIC_API_KEY=$MY_API_KEY          # разрешается из системного окружения во время выполнения
      - ANTHROPIC_BASE_URL=https://api.anthropic.com
```

### Иерархическое наследование

Имена окружений поддерживают наследование на основе сегментов, разделенных дефисами. Окружение с именем `glm-5-turbo` автоматически наследует переменные как от `glm-5`, так и от `glm`. Определите общие настройки (ключ API, базовый URL) в родителе и переопределите только то, что отличается в дочерних элементах:

```
environments:
  glm:
    variables:
      - ANTHROPIC_BASE_URL=https://api.z.ai/api/anthropic
      - CLAUDE_DISABLE_EXPERIMENTAL_BETAS=true
  glm-5:
    variables:
      - ANTHROPIC_MODEL=glm-5
      - MODEL_INPUT_PRICE=1.00
  glm-5-turbo:
    variables:
      - ANTHROPIC_MODEL=glm-5-turbo
      - MODEL_INPUT_PRICE=1.20
```

### Переключение окружений во время чата

Используйте селектор окружений в области ввода чата для переключения в любое время. Переключение происходит мгновенно — следующее сообщение использует новую модель и настройки без начала нового чата или обновления страницы. Это позволяет использовать разные модели для разных этапов задачи: более дешевую модель для исследования и более мощную для реализации.

## Навыки как руководства по валидации

Навыки — это папки в `.claude/skills/`, содержащие файл инструкций `SKILL.md` и вспомогательные ресурсы (скрипты, документацию, примеры). Они предоставляют контекст, специфичный для проекта, который формирует поведение модели. С точки зрения валидации навыки — это основной механизм предотвращения ошибок до их возникновения.

### Frontmatter в SKILL.md

`SKILL.md` каждого навыка начинается с YAML frontmatter, определяющего метаданные:

```
---
name: code.development
description: Основной рабочий процесс разработки для этого проекта
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
model: claude-3-5-sonnet
---
```

- **allowed-tools** — Разделенный запятыми белый список инструментов, которые модель может использовать, когда этот навык активен. Ограничение инструментов снижает поверхность атаки и предотвращает непреднамеренные действия
- **model** — Переопределяет модель по умолчанию для этого конкретного навыка, полезно для навыков, которым требуются разные уровни возможностей

### Написание правил валидации в навыках

Наиболее эффективная валидация происходит до того, как модель напишет код. Включите конкретные правила в инструкции навыка, которые предотвращают распространенные ошибки. Однако не раздувайте файлы навыков — больше контекста означает меньше внимания к каждому требованию, что делает это как дорогостоящим, так и неэффективным — чем больше информации в контексте, тем меньше внимания уделяется каждому требованию. Начните с пустого и добавляйте короткие однострочные правила только после того, как модель совершит ошибку, затем попросите модель настроить сам навык, пока она не перестанет ошибаться. Предпочитайте, чтобы модель редактировала навыки, а не редактировала их вручную, и не терпите даже редких ошибок. Если вы заметите, что модель испытывает трудности с поиском файлов, использованием инструментов или неожиданным поведением, немедленно остановитесь и попросите ее сначала исправить навык — затем начните новый чат для проверки. Не сдавайтесь, пока это не будет идеально.

- **Стандарты кодирования** — Соглашения об именовании, правила организации файлов, архитектурные паттерны, которым следует проект
- **Ограничения технологий** — Какие библиотеки использовать, какие паттерны избегать, лучшие практики, специфичные для фреймворка
- **Правила структуры файлов** — Где должны размещаться новые файлы, паттерны именования, обязательные импорты или аннотации
- **Инструкции по процессу** — “Не собирайте вручную — сборки запускаются автоматически при изменении файлов” предотвращает лишние вызовы инструментов

Ожидайте 20–30 итераций добавления правил после ошибок, прежде чем大多数 рутинных задач достигнут точности около 85%.

### Конфигурация навыков

Навыки включаются и настраиваются в `.claude/skills.yml`. Каждый навык имеет флаг `enabled` и `color` для визуальной идентификации в селекторе навыков. Когда `enabled` равно `true`, навык появляется в элементе управления вводом сообщений под чатом, позволяя переключаться одним щелчком. Даже если навык отключен и не показан там, вы все равно можете попросить модель использовать его напрямую.

```
skills:
  version: 1.0
  activated:
    code.development:
      enabled: true
      color: '#3b82f6'
    project.planning:
      enabled: true
      color: '#84cc16'
```

## Селектор навыков

Селектор навыков в области ввода чата позволяет выбрать, какой навык активировать перед отправкой первого сообщения. Система автоматически добавляет `start with loading {skill name} skill` в ваше сообщение. Для переключения в середине чата он добавляет `load {skill name} skill` в следующее сообщение, изменяя контекст модели без потери истории разговора.

Выберите правильный навык для текущей задачи. Навык разработки загружает стандарты кодирования и инструкции рабочего процесса. Навык планирования загружает архитектурные рекомендации. Навык веб-сайта загружает паттерны управления контентом. Каждый навык фокусирует внимание модели на том, что важно для текущей задачи.

## Эффективные паттерны валидации

- **Пишите конкретные инструкции навыков** — Расплывчатые правила вроде “пишите чистый код” не помогают. Конкретные правила вроде “все конечные точки API должны возвращать NotFoundResult со свойством message” помогают
- **Ограничивайте разрешенные инструменты для каждого навыка** — Если навыку нужно только читать и записывать файлы, не давайте ему доступ к Bash. Меньше инструментов — меньше возможностей для ошибок
- **Используйте разные окружения для разных задач** — Быстрая дешевая модель для простых правок; мощная модель для сложной реализации. Переключайтесь в середине чата по мере развития задачи
- **Итеративно улучшайте навыки** — Каждая ошибка — это возможность улучшить навык. Кривая улучшения крута: 20–30 исправлений достигают точности ~85%

Полный справочник по окружениям см. в [Окружения](/code/docs/environments)
. Для управления и редактирования навыков см. [Навыки](/code/docs/skills)
. Для оптимизации контекста см. [Использование контекста](/code/docs/context-utilization)
.

**[← Мониторинг вывода развёртывания](/code/docs/validation/deploy-output)**

**[Изоляция Docker и пропуск разрешений →](/code/docs/validation/docker-isolation)**
