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

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

Системный промпт - это начальный набор инструкций, который формирует поведение Claude на протяжении всего разговора.
Поведение по умолчанию: Agent SDK использует пустой системный промпт по умолчанию для максимальной гибкости. Чтобы использовать системный промпт Claude Code (инструкции по инструментам, руководящие принципы кода и т.д.), укажите systemPrompt: { preset: "claude_code" } в TypeScript или system_prompt="claude_code" в Python.
Системный промпт 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: Использование systemPrompt с append

Вы можете использовать пресет Claude Code со свойством append, чтобы добавить свои пользовательские инструкции, сохраняя при этом всю встроенную функциональность.
import { query } from "@anthropic-ai/claude-agent-sdk"

const messages = []

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

Метод 3: Пользовательские системные промпты

Вы можете предоставить пользовательскую строку как systemPrompt, чтобы полностью заменить значение по умолчанию своими собственными инструкциями.
import { query } from "@anthropic-ai/claude-agent-sdk"

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

const messages = []

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

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

ФункцияСтили выводаsystemPrompt с appendПользовательский systemPrompt
Постоянство✅ Сохранено как файлы❌ Только сессия❌ Только сессия
Повторное использование✅ Между проектами❌ Дублирование кода❌ Дублирование кода
Управление✅ CLI + файлы⚠️ В коде⚠️ В коде
Инструменты по умолчанию✅ Сохранены✅ Сохранены❌ Потеряны (если не включены)
Встроенная безопасность✅ Поддерживается✅ Поддерживается❌ Должна быть добавлена
Контекст среды✅ Автоматический✅ Автоматический❌ Должен быть предоставлен
Уровень настройки⚠️ Заменить по умолчанию⚠️ Только дополнения✅ Полный контроль
Контроль версий✅ Да✅ С кодом✅ С кодом
Обнаружение/output-style❌ Не обнаруживается❌ Не обнаруживается
Примечание: “С append” означает использование systemPrompt: { type: "preset", preset: "claude_code", append: "..." } в TypeScript или system_prompt={"type": "preset", "preset": "claude_code", "append": "..."} в Python.

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

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

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

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

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

Когда использовать пользовательский systemPrompt

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

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

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

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

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

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

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

См. также