Системные промпты определяют поведение Claude, его возможности и стиль ответов. Claude Code SDK предоставляет три способа настройки системных промптов: использование стилей вывода (постоянные конфигурации на основе файлов), добавление к промпту по умолчанию или полная его замена.

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

Системный промпт - это начальный набор инструкций, который формирует поведение Claude на протяжении всего разговора. Системный промпт по умолчанию Claude Code включает:
  • Инструкции по использованию инструментов и доступные инструменты
  • Руководящие принципы стиля кода и форматирования
  • Настройки тона ответа и многословности
  • Инструкции по безопасности и защите
  • Контекст о текущем рабочем каталоге и окружении

Методы изменения

Метод 1: Стили вывода (постоянные конфигурации)

Стили вывода - это сохраненные конфигурации, которые изменяют системный промпт Claude. Они хранятся как markdown файлы и могут быть повторно использованы в разных сессиях и проектах.

Создание стиля вывода

import { writeFile, mkdir } from 'fs/promises'
import { join } from 'path'
import { homedir } from 'os'

async function createOutputStyle(name: string, description: string, prompt: string) {
  // Уровень пользователя: ~/.claude/output-styles
  // Уровень проекта: .claude/output-styles
  const outputStylesDir = join(homedir(), '.claude', 'output-styles')
  
  await mkdir(outputStylesDir, { recursive: true })
  
  const content = `---
name: ${name}
description: ${description}
---

${prompt}`
  
  const filePath = join(outputStylesDir, `${name.toLowerCase().replace(/\s+/g, '-')}.md`)
  await writeFile(filePath, content, 'utf-8')
}

// Пример: Создание специалиста по обзору кода
await createOutputStyle(
  'Code Reviewer',
  'Thorough code review assistant',
  `Вы эксперт по обзору кода.

Для каждой отправки кода:
1. Проверьте на ошибки и проблемы безопасности
2. Оцените производительность
3. Предложите улучшения
4. Оцените качество кода (1-10)`
)

Использование стилей вывода

После создания активируйте стили вывода через:
  • CLI: /output-style [style-name]
  • Настройки: .claude/settings.local.json
  • Создать новый: /output-style:new [description]

Метод 2: Использование appendSystemPrompt

Опция appendSystemPrompt добавляет ваши пользовательские инструкции к системному промпту по умолчанию, сохраняя при этом всю встроенную функциональность.
import { query } from "@anthropic-ai/claude-code"

const messages = []

for await (const message of query({
  prompt: "Помогите мне написать Python функцию для вычисления чисел Фибоначчи",
  options: {
    appendSystemPrompt: "Всегда включайте подробные docstrings и аннотации типов в Python коде."
  }
})) {
  messages.push(message)
  if (message.type === 'assistant') {
    console.log(message.message.content)
  }
}

Метод 3: Использование customSystemPrompt

Опция customSystemPrompt заменяет весь системный промпт по умолчанию вашими пользовательскими инструкциями.
import { query } from "@anthropic-ai/claude-code"

const customPrompt = `Вы специалист по программированию на Python. 
Следуйте этим руководящим принципам:
- Пишите чистый, хорошо документированный код
- Используйте аннотации типов для всех функций
- Включайте исчерпывающие docstrings
- Предпочитайте паттерны функционального программирования, когда это уместно
- Всегда объясняйте свой выбор кода`

const messages = []

for await (const message of query({
  prompt: "Создайте конвейер обработки данных",
  options: {
    customSystemPrompt: customPrompt
  }
})) {
  messages.push(message)
  if (message.type === 'assistant') {
    console.log(message.message.content)
  }
}

Сравнение всех трех подходов

ФункцияСтили выводаappendSystemPromptcustomSystemPrompt
Постоянство✅ Сохранены как файлы❌ Только сессия❌ Только сессия
Повторное использование✅ Между проектами❌ Дублирование кода❌ Дублирование кода
Управление✅ CLI + файлы⚠️ В коде⚠️ В коде
Инструменты по умолчанию✅ Сохранены✅ Сохранены❌ Потеряны (если не включены)
Встроенная безопасность✅ Поддерживается✅ Поддерживается❌ Должна быть добавлена
Контекст окружения✅ Автоматический✅ Автоматический❌ Должен быть предоставлен
Уровень настройки⚠️ Заменить по умолчанию⚠️ Только дополнения✅ Полный контроль
Контроль версий✅ Да✅ С кодом✅ С кодом
Обнаружение/output-style❌ Не обнаруживается❌ Не обнаруживается

Случаи использования и лучшие практики

Когда использовать стили вывода

Лучше всего для:
  • Постоянные изменения поведения между сессиями
  • Конфигурации, разделяемые командой
  • Специализированные ассистенты (обзорщик кода, специалист по данным, DevOps)
  • Сложные модификации промптов, которые нуждаются в версионировании
Примеры:
  • Создание специализированного ассистента по оптимизации SQL
  • Построение обзорщика кода, ориентированного на безопасность
  • Разработка учебного ассистента с определенной педагогикой

Когда использовать appendSystemPrompt

Лучше всего для:
  • Добавление специфических стандартов кодирования или предпочтений
  • Настройка форматирования вывода
  • Добавление знаний, специфичных для домена
  • Изменение многословности ответов

Когда использовать customSystemPrompt

Лучше всего для:
  • Полный контроль над поведением Claude
  • Специализированные задачи одной сессии
  • Тестирование новых стратегий промптов
  • Ситуации, где инструменты по умолчанию не нужны

Комбинирование подходов

Вы можете комбинировать эти методы для максимальной гибкости:

Пример: Стиль вывода с дополнениями, специфичными для сессии

import { query } from "@anthropic-ai/claude-code"

// Предполагая, что стиль вывода "Code Reviewer" активен (через /output-style)
// Добавляем области фокуса, специфичные для сессии
const messages = []

for await (const message of query({
  prompt: "Проверьте этот модуль аутентификации",
  options: {
    appendSystemPrompt: `
      Для этого обзора приоритизируйте:
      - Соответствие OAuth 2.0
      - Безопасность хранения токенов
      - Управление сессиями
    `
  }
})) {
  messages.push(message)
}

См. также