Понимание системных промптов
Системный промпт - это начальный набор инструкций, который формирует поведение Claude на протяжении всего разговора.Поведение по умолчанию: Agent SDK использует пустой системный промпт по умолчанию для максимальной гибкости. Чтобы использовать системный промпт Claude Code (инструкции по инструментам, руководящие принципы кода и т.д.), укажите
systemPrompt: { preset: "claude_code" } в TypeScript или system_prompt="claude_code" в Python.- Инструкции по использованию инструментов и доступные инструменты
- Руководящие принципы стиля и форматирования кода
- Настройки тона ответа и многословности
- Инструкции по безопасности и защите
- Контекст о текущем рабочем каталоге и окружении
Методы изменения
Метод 1: Файлы CLAUDE.md (инструкции на уровне проекта)
Файлы CLAUDE.md предоставляют специфичный для проекта контекст и инструкции, которые автоматически читаются Agent SDK при запуске в каталоге. Они служат постоянной “памятью” для вашего проекта.Как CLAUDE.md работает с SDK
Расположение и обнаружение:- Уровень проекта:
CLAUDE.mdили.claude/CLAUDE.mdв вашем рабочем каталоге - Уровень пользователя:
~/.claude/CLAUDE.mdдля глобальных инструкций во всех проектах
settingSources (TypeScript) или setting_sources (Python):
- Включите
'project'для загрузки CLAUDE.md на уровне проекта - Включите
'user'для загрузки CLAUDE.md на уровне пользователя (~/.claude/CLAUDE.md)
claude_code НЕ загружает автоматически CLAUDE.md - вы также должны указать источники настроек.
Формат содержимого:
Файлы CLAUDE.md используют обычный markdown и могут содержать:
- Руководящие принципы и стандарты кодирования
- Специфичный для проекта контекст
- Общие команды или рабочие процессы
- Соглашения API
- Требования к тестированию
Пример CLAUDE.md
Использование CLAUDE.md с SDK
Когда использовать CLAUDE.md
Лучше всего для:- Общий для команды контекст - Руководящие принципы, которым должны следовать все
- Соглашения проекта - Стандарты кодирования, структура файлов, шаблоны именования
- Общие команды - Команды сборки, тестирования, развертывания, специфичные для вашего проекта
- Долгосрочная память - Контекст, который должен сохраняться во всех сессиях
- Инструкции под контролем версий - Коммит в git, чтобы команда оставалась синхронизированной
- ✅ Постоянство во всех сессиях в проекте
- ✅ Совместное использование с командой через git
- ✅ Автоматическое обнаружение (не требуется изменений кода)
- ⚠️ Требует загрузки настроек через
settingSources
Метод 2: Стили вывода (постоянные конфигурации)
Стили вывода - это сохраненные конфигурации, которые изменяют системный промпт Claude. Они хранятся как markdown файлы и могут быть повторно использованы в разных сессиях и проектах.Создание стиля вывода
Использование стилей вывода
После создания активируйте стили вывода через:- CLI:
/output-style [имя-стиля] - Настройки:
.claude/settings.local.json - Создать новый:
/output-style:new [описание]
settingSources: ['user'] или settingSources: ['project'] (TypeScript) / setting_sources=["user"] или setting_sources=["project"] (Python) в ваших опциях.
Метод 3: Использование systemPrompt с append
Вы можете использовать пресет Claude Code со свойством append для добавления ваших пользовательских инструкций, сохраняя при этом всю встроенную функциональность.
Метод 4: Пользовательские системные промпты
Вы можете предоставить пользовательскую строку какsystemPrompt, чтобы полностью заменить значение по умолчанию своими собственными инструкциями.
Сравнение всех четырех подходов
| Функция | CLAUDE.md | Стили вывода | systemPrompt с append | Пользовательский systemPrompt |
|---|---|---|---|---|
| Постоянство | Файл на проект | Сохранены как файлы | Только сессия | Только сессия |
| Повторное использование | На проект | Между проектами | Дублирование кода | Дублирование кода |
| Управление | В файловой системе | CLI + файлы | В коде | В коде |
| Инструменты по умолчанию | Сохранены | Сохранены | Сохранены | Потеряны (если не включены) |
| Встроенная безопасность | Поддерживается | Поддерживается | Поддерживается | Должна быть добавлена |
| Контекст окружения | Автоматический | Автоматический | Автоматический | Должен быть предоставлен |
| Уровень настройки | Только дополнения | Заменить по умолчанию | Только дополнения | Полный контроль |
| Контроль версий | С проектом | Да | С кодом | С кодом |
| Область | Специфично для проекта | Пользователь или проект | Сессия кода | Сессия кода |
systemPrompt: { type: "preset", preset: "claude_code", append: "..." } в TypeScript или system_prompt={"type": "preset", "preset": "claude_code", "append": "..."} в Python.
Случаи использования и лучшие практики
Когда использовать CLAUDE.md
Лучше всего для:- Специфичных для проекта стандартов и соглашений кодирования
- Документирования структуры и архитектуры проекта
- Перечисления общих команд (сборка, тест, развертывание)
- Общего для команды контекста, который должен быть под контролем версий
- Инструкций, которые применяются ко всему использованию SDK в проекте
- “Все API конечные точки должны использовать шаблоны async/await”
- “Запускай
npm run lint:fixперед коммитом” - “Миграции базы данных находятся в каталоге
migrations/”
settingSources: ['project'] (TypeScript) или setting_sources=["project"] (Python). Пресет системного промпта claude_code НЕ загружает автоматически CLAUDE.md без этой настройки.
Когда использовать стили вывода
Лучше всего для:- Постоянных изменений поведения между сессиями
- Конфигураций, общих для команды
- Специализированных помощников (обзорщик кода, специалист по данным, DevOps)
- Сложных изменений промпта, которые нуждаются в версионировании
- Создание специализированного помощника по оптимизации SQL
- Построение обзорщика кода, ориентированного на безопасность
- Разработка помощника по обучению с конкретной педагогикой
Когда использовать systemPrompt с append
Лучше всего для:
- Добавления конкретных стандартов или предпочтений кодирования
- Настройки форматирования вывода
- Добавления знаний, специфичных для домена
- Изменения многословности ответа
- Улучшения поведения Claude Code по умолчанию без потери инструкций по инструментам
Когда использовать пользовательский systemPrompt
Лучше всего для:
- Полного контроля над поведением Claude
- Специализированных задач одной сессии
- Тестирования новых стратегий промпта
- Ситуаций, где инструменты по умолчанию не нужны
- Построения специализированных агентов с уникальным поведением
Комбинирование подходов
Вы можете комбинировать эти методы для максимальной гибкости:Пример: Стиль вывода с дополнениями, специфичными для сессии
См. также
- Стили вывода - Полная документация по стилям вывода
- Руководство по TypeScript SDK - Полное руководство по использованию SDK
- Справочник по TypeScript SDK - Полная документация API
- Руководство по конфигурации - Общие опции конфигурации