Was this page helpful?
I system prompt definiscono il comportamento, le capacità e lo stile di risposta di Claude. Claude Agent SDK fornisce tre modi per personalizzare i system prompt: utilizzando stili di output (configurazioni persistenti basate su file), aggiungendo al prompt di Claude Code, o utilizzando un prompt completamente personalizzato.
Un system prompt è l'insieme iniziale di istruzioni che modella il comportamento di Claude durante una conversazione.
Comportamento predefinito: Agent SDK utilizza un system prompt minimalista per impostazione predefinita. Contiene solo istruzioni essenziali per gli strumenti ma omette le linee guida di codifica di Claude Code, lo stile di risposta e il contesto del progetto. Per includere il system prompt completo di Claude Code, specifica systemPrompt: { preset: "claude_code" } in TypeScript o system_prompt={"type": "preset", "preset": "claude_code"} in Python.
Il system prompt di Claude Code include:
I file CLAUDE.md forniscono contesto e istruzioni specifiche del progetto che vengono letti automaticamente da Agent SDK quando viene eseguito in una directory. Servono come "memoria" persistente per il tuo progetto.
Posizione e scoperta:
CLAUDE.md o .claude/CLAUDE.md nella tua directory di lavoro~/.claude/CLAUDE.md per istruzioni globali su tutti i progettiIMPORTANTE: L'SDK legge i file CLAUDE.md solo quando configuri esplicitamente settingSources (TypeScript) o setting_sources (Python):
'project' per caricare CLAUDE.md a livello di progetto'user' per caricare CLAUDE.md a livello di utente (~/.claude/CLAUDE.md)Il preset di system prompt claude_code NON carica automaticamente CLAUDE.md - devi anche specificare le fonti di impostazione.
Formato del contenuto: I file CLAUDE.md utilizzano markdown semplice e possono contenere:
# Project Guidelines
## Code Style
- Use TypeScript strict mode
- Prefer functional components in React
- Always include JSDoc comments for public APIs
## Testing
- Run `npm test` before committing
- Maintain >80% code coverage
- Use jest for unit tests, playwright for E2E
## Commands
- Build: `npm run build`
- Dev server: `npm run dev`
- Type check: `npm run typecheck`Ideale per:
Caratteristiche principali:
settingSourcesGli stili di output sono configurazioni salvate che modificano il system prompt di Claude. Vengono archiviati come file markdown e possono essere riutilizzati in sessioni e progetti diversi.
Una volta creati, attiva gli stili di output tramite:
/output-style [style-name].claude/settings.local.json/output-style:new [description]Nota per gli utenti dell'SDK: Gli stili di output vengono caricati quando includi settingSources: ['user'] o settingSources: ['project'] (TypeScript) / setting_sources=["user"] o setting_sources=["project"] (Python) nelle tue opzioni.
systemPrompt con appendPuoi utilizzare il preset di Claude Code con una proprietà append per aggiungere le tue istruzioni personalizzate preservando tutte le funzionalità integrate.
Puoi fornire una stringa personalizzata come systemPrompt per sostituire completamente il valore predefinito con le tue istruzioni.
| Funzionalità | CLAUDE.md | Stili di output | systemPrompt con append | systemPrompt personalizzato |
|---|---|---|---|---|
| Persistenza | File per progetto | Salvati come file | Solo sessione | Solo sessione |
| Riutilizzabilità | Per progetto | Tra progetti | Duplicazione del codice | Duplicazione del codice |
| Gestione | Nel filesystem | CLI + file | Nel codice | Nel codice |
| Strumenti predefiniti | Preservati | Preservati | Preservati | Persi (a meno che non inclusi) |
Nota: "Con append" significa utilizzare systemPrompt: { type: "preset", preset: "claude_code", append: "..." } in TypeScript o system_prompt={"type": "preset", "preset": "claude_code", "append": "..."} in Python.
Ideale per:
Esempi:
npm run lint:fix prima di fare commit"migrations/"Importante: Per caricare i file CLAUDE.md, devi impostare esplicitamente settingSources: ['project'] (TypeScript) o setting_sources=["project"] (Python). Il preset di system prompt claude_code NON carica automaticamente CLAUDE.md senza questa impostazione.
Ideale per:
Esempi:
systemPrompt con appendIdeale per:
systemPrompt personalizzatoIdeale per:
Puoi combinare questi metodi per massima flessibilità:
import { query } from "@anthropic-ai/claude-agent-sdk";
// IMPORTANT: You must specify settingSources to load CLAUDE.md
// The claude_code preset alone does NOT load CLAUDE.md files
const messages = [];
for await (const message of query({
prompt: "Add a new React component for user profiles",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code", // Use Claude Code's system prompt
},
settingSources: ["project"], // Required to load CLAUDE.md from project
},
})) {
messages.push(message);
}
// Now Claude has access to your project guidelines from CLAUDE.mdimport { writeFile, mkdir } from "fs/promises";
import { join } from "path";
import { homedir } from "os";
async function createOutputStyle(
name: string,
description: string,
prompt: string
) {
// User-level: ~/.claude/output-styles
// Project-level: .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");
}
// Example: Create a code review specialist
await createOutputStyle(
"Code Reviewer",
"Thorough code review assistant",
`You are an expert code reviewer.
For every code submission:
1. Check for bugs and security issues
2. Evaluate performance
3. Suggest improvements
4. Rate code quality (1-10)`
);import { query } from "@anthropic-ai/claude-agent-sdk";
const messages = [];
for await (const message of query({
prompt: "Help me write a Python function to calculate fibonacci numbers",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code",
append:
"Always include detailed docstrings and type hints in Python code.",
},
},
})) {
messages.push(message);
if (message.type === "assistant") {
console.log(message.message.content);
}
}import { query } from "@anthropic-ai/claude-agent-sdk";
const customPrompt = `You are a Python coding specialist.
Follow these guidelines:
- Write clean, well-documented code
- Use type hints for all functions
- Include comprehensive docstrings
- Prefer functional programming patterns when appropriate
- Always explain your code choices`;
const messages = [];
for await (const message of query({
prompt: "Create a data processing pipeline",
options: {
systemPrompt: customPrompt,
},
})) {
messages.push(message);
if (message.type === "assistant") {
console.log(message.message.content);
}
}| Sicurezza integrata |
| Mantenuta |
| Mantenuta |
| Mantenuta |
| Deve essere aggiunta |
| Contesto dell'ambiente | Automatico | Automatico | Automatico | Deve essere fornito |
| Livello di personalizzazione | Solo aggiunte | Sostituisci predefinito | Solo aggiunte | Controllo completo |
| Controllo versione | Con progetto | Sì | Con codice | Con codice |
| Ambito | Specifico del progetto | Utente o progetto | Sessione di codice | Sessione di codice |
import { query } from "@anthropic-ai/claude-agent-sdk";
// Assuming "Code Reviewer" output style is active (via /output-style)
// Add session-specific focus areas
const messages = [];
for await (const message of query({
prompt: "Review this authentication module",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code",
append: `
For this review, prioritize:
- OAuth 2.0 compliance
- Token storage security
- Session management
`,
},
},
})) {
messages.push(message);
}