Системные промпты определяют поведение Claude, возможности и стиль ответов. Claude Agent SDK предоставляет три способа настройки системных промптов: использование стилей вывода (постоянные конфигурации на основе файлов), добавление к промпту Claude Code или использование полностью пользовательского промпта.
Системный промпт - это начальный набор инструкций, который формирует поведение Claude на протяжении всего разговора.
Поведение по умолчанию: Agent SDK использует пустой системный промпт по умолчанию для максимальной гибкости. Чтобы использовать системный промпт Claude Code (инструкции по инструментам, руководящие принципы кода и т.д.), укажите systemPrompt: { preset: "claude_code" } в TypeScript или system_prompt="claude_code" в Python.
Системный промпт Claude Code включает:
Файлы CLAUDE.md предоставляют специфичный для проекта контекст и инструкции, которые автоматически читаются Agent SDK при запуске в каталоге. Они служат постоянной "памятью" для вашего проекта.
Расположение и обнаружение:
CLAUDE.md или .claude/CLAUDE.md в вашем рабочем каталоге~/.claude/CLAUDE.md для глобальных инструкций во всех проектахВАЖНО: SDK читает файлы CLAUDE.md только когда вы явно настраиваете settingSources (TypeScript) или setting_sources (Python):
'project' для загрузки CLAUDE.md на уровне проекта'user' для загрузки CLAUDE.md на уровне пользователя (~/.claude/CLAUDE.md)Пресет системного промпта claude_code НЕ загружает автоматически CLAUDE.md - вы также должны указать источники настроек.
Формат содержимого: Файлы CLAUDE.md используют обычный markdown и могут содержать:
# Руководящие принципы проекта
## Стиль кода
- Используйте строгий режим TypeScript
- Предпочитайте функциональные компоненты в React
- Всегда включайте комментарии JSDoc для публичных API
## Тестирование
- Запускайте `npm test` перед коммитом
- Поддерживайте >80% покрытия кода
- Используйте jest для модульных тестов, playwright для E2E
## Команды
- Сборка: `npm run build`
- Dev сервер: `npm run dev`
- Проверка типов: `npm run typecheck`Лучше всего для:
Ключевые характеристики:
settingSourcesСтили вывода - это сохраненные конфигурации, которые изменяют системный промпт Claude. Они хранятся как markdown файлы и могут быть повторно использованы в разных сессиях и проектах.
После создания активируйте стили вывода через:
/output-style [имя-стиля].claude/settings.local.json/output-style:new [описание]Примечание для пользователей SDK: Стили вывода загружаются, когда вы включаете settingSources: ['user'] или settingSources: ['project'] (TypeScript) / setting_sources=["user"] или setting_sources=["project"] (Python) в ваших опциях.
systemPrompt с appendВы можете использовать пресет Claude Code со свойством append для добавления ваших пользовательских инструкций, сохраняя при этом всю встроенную функциональность.
Вы можете предоставить пользовательскую строку как systemPrompt, чтобы полностью заменить значение по умолчанию своими собственными инструкциями.
| Функция | CLAUDE.md | Стили вывода | systemPrompt с append | Пользовательский systemPrompt |
|---|---|---|---|---|
| Постоянство | Файл на проект | Сохранены как файлы | Только сессия | Только сессия |
| Повторное использование | На проект | Между проектами | Дублирование кода | Дублирование кода |
| Управление | В файловой системе | CLI + файлы | В коде | В коде |
| Инструменты по умолчанию | Сохранены | Сохранены | Сохранены | Потеряны (если не включены) |
Примечание: "С append" означает использование systemPrompt: { type: "preset", preset: "claude_code", append: "..." } в TypeScript или system_prompt={"type": "preset", "preset": "claude_code", "append": "..."} в Python.
Лучше всего для:
Примеры:
npm run lint:fix перед коммитом"migrations/"Важно: Чтобы загрузить файлы CLAUDE.md, вы должны явно установить settingSources: ['project'] (TypeScript) или setting_sources=["project"] (Python). Пресет системного промпта claude_code НЕ загружает автоматически CLAUDE.md без этой настройки.
Лучше всего для:
Примеры:
systemPrompt с appendЛучше всего для:
systemPromptЛучше всего для:
Вы можете комбинировать эти методы для максимальной гибкости:
import { query } from "@anthropic-ai/claude-agent-sdk";
// ВАЖНО: Вы должны указать settingSources для загрузки CLAUDE.md
// Пресет claude_code сам по себе НЕ загружает файлы CLAUDE.md
const messages = [];
for await (const message of query({
prompt: "Добавь новый React компонент для профилей пользователей",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code", // Используй системный промпт Claude Code
},
settingSources: ["project"], // Требуется для загрузки CLAUDE.md из проекта
},
})) {
messages.push(message);
}
// Теперь Claude имеет доступ к руководящим принципам вашего проекта из CLAUDE.mdimport { 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",
"Тщательный помощник по обзору кода",
`Ты эксперт по обзору кода.
Для каждой отправки кода:
1. Проверь на ошибки и проблемы безопасности
2. Оцени производительность
3. Предложи улучшения
4. Оцени качество кода (1-10)`
);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);
}
}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);
}
}| Поддерживается |
| Поддерживается |
| Поддерживается |
| Должна быть добавлена |
| Контекст окружения | Автоматический | Автоматический | Автоматический | Должен быть предоставлен |
| Уровень настройки | Только дополнения | Заменить по умолчанию | Только дополнения | Полный контроль |
| Контроль версий | С проектом | Да | С кодом | С кодом |
| Область | Специфично для проекта | Пользователь или проект | Сессия кода | Сессия кода |
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);
}