diff --git a/src/config/prompts.ts b/src/config/prompts.ts index 86467b5..ec8dc59 100644 --- a/src/config/prompts.ts +++ b/src/config/prompts.ts @@ -4,15 +4,15 @@ export const AI_PROMPTS = { toolSelection: (mode: string, userQuery: string, selectionMethod: string, maxSelectedItems: number) => { const modeInstruction = mode === 'workflow' - ? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW mit mehreren Tools/Methoden über verschiedene Phasen. Wählen Sie 15-25 Tools aus, die den vollständigen Untersuchungslebenszyklus abdecken.' - : 'Der Benutzer möchte SPEZIFISCHE TOOLS/METHODEN, die ihr konkretes Problem direkt lösen. Wählen Sie 3-8 Tools aus, die am relevantesten und effektivsten sind.'; + ? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW mit mehreren Tools/Methoden über verschiedene Phasen. Wählen Sie 15-25 Methoden/Tools aus, die den vollständigen Untersuchungszyklus (Datensammlung - Auswertung - Analyse - Berichterstattung) abdecken.' + : 'Der Benutzer möchte SPEZIFISCHE TOOLS/METHODEN, die ihr konkretes Problem direkt lösen. Wählen Sie 4-10 Methoden/Tools aus, die am relevantesten und effektivsten sind.'; - return `Sie sind ein DFIR-Experte mit Zugang zur kompletten forensischen Tool-Datenbank. Sie müssen die relevantesten Tools und Konzepte für diese spezifische Anfrage auswählen. + return `Sie sind ein DFIR-Experte mit Zugang zur kompletten forensischen Methoden/Tool-Datenbank. Sie müssen die relevantesten Methoden, Tools und Konzepte für diese spezifische Anfrage auswählen. AUSWAHLMETHODE: ${selectionMethod} ${selectionMethod === 'embeddings_candidates' ? - 'Diese Tools wurden durch Vektor-Ähnlichkeit vorgefiltert, sie sind bereits relevant. Ihre Aufgabe ist es, die BESTEN aus diesem relevanten Set auszuwählen.' : - 'Sie haben Zugang zur vollständigen Tool-Datenbank. Wählen Sie die relevantesten Tools für die Anfrage aus.'} + 'Diese Methoden/Tools wurden durch Vektor-Ähnlichkeit vorgefiltert, sie sind bereits relevant. Ihre Aufgabe ist es, die BESTEN aus diesem relevanten Set auszuwählen. Wähle mindestens eine Methode und ein Tool, wenn vorhanden.' : + 'Sie haben Zugang zur vollständigen Methoden/Tool-Datenbank. Wählen Sie die relevantesten Methoden/Tools für die Anfrage aus. Wähle mindestens eine Methode und ein Tool, wenn vorhanden.'} ${modeInstruction} @@ -25,17 +25,17 @@ KRITISCHE AUSWAHLPRINZIPIEN: - Für SCHNELLE/DRINGENDE Szenarien → Priorisieren Sie METHODEN und schnelle Antwort-Ansätze - Für ZEITKRITISCHE Vorfälle → Wählen Sie Triage-Methoden über tiefe Analyse-Tools - Für UMFASSENDE Analysen → Dann betrachten Sie detaillierte Software-Tools - - METHODEN (Typ: "method") sind oft besser als SOFTWARE für prozedurale Anleitung + - METHODEN (Typ: "method") sind oft besser als SOFTWARE für prozedurale Anleitung, eine gute Mischung ist aber zwingend erforderlich. 3. **SZENARIO-SPEZIFISCHE LOGIK**: - - "Schnell/Quick/Dringend/Triage" Szenarien → Rapid Incident Response und Triage METHODE > Volatility + - "Schnell/Quick/Dringend/Triage" Szenarien → Rapid Incident Response und Triage METHODE > Volatility oder ähnliche - "Industrial/SCADA/ICS" Szenarien → Spezialisierte ICS-Tools > generische Netzwerk-Tools - "Mobile/Android/iOS" Szenarien → Mobile-spezifische Tools > Desktop-Forensik-Tools - - "Speicher-Analyse dringend benötigt" → Schnelle Speicher-Tools/Methoden > umfassende Volatility-Analyse + - "Speicher-Analyse dringend benötigt" → Schnelle Speicher-Tools/Methoden > umfassende Volatility-Analyse oder ähnliche ANALYSE-ANWEISUNGEN: 1. Lesen Sie die VOLLSTÄNDIGE Beschreibung jedes Tools/Konzepts -2. Berücksichtigen Sie ALLE Tags, Plattformen, verwandte Tools und Metadaten +2. Berücksichtigen Sie ALLE Tags, Plattformen, verwandte Tools und Metadaten und Beschreibungen 3. **PASSENDE DRINGLICHKEIT**: Schnelle Szenarien brauchen schnelle Methoden, nicht tiefe Analyse-Tools 4. **PASSENDE SPEZIFITÄT**: Spezialisierte Szenarien brauchen spezialisierte Tools, nicht generische 5. **BERÜCKSICHTIGEN SIE DEN TYP**: Methoden bieten prozedurale Anleitung, Software bietet technische Fähigkeiten @@ -44,14 +44,14 @@ Wählen Sie die relevantesten Elemente aus (max ${maxSelectedItems} insgesamt). Antworten Sie NUR mit diesem JSON-Format: { - "selectedTools": ["Tool Name 1", "Tool Name 2", ...], + "selectedTools": ["Methode/Tool Name 1", "Methode/Tool Name 2", ...], "selectedConcepts": ["Konzept Name 1", "Konzept Name 2", ...], - "reasoning": "Detaillierte Erklärung, warum diese spezifischen Tools für diese Anfrage ausgewählt wurden, und warum bestimmte populäre Tools NICHT ausgewählt wurden, falls sie für den Szenario-Kontext ungeeignet waren" + "reasoning": "Detaillierte Erklärung, warum diese spezifischen Methoden/Tools für diese Anfrage ausgewählt wurden, und warum bestimmte populäre Tools NICHT ausgewählt wurden, falls sie für den Szenario-Kontext ungeeignet waren" }`; }, scenarioAnalysis: (isWorkflow: boolean, userQuery: string) => { - const analysisType = isWorkflow ? 'forensische Szenario' : 'technische Problem'; + const analysisType = isWorkflow ? 'Untersuchungsszenario' : 'technische Problem'; const considerations = isWorkflow ? `- Angriffsvektoren und Bedrohungsmodellierung nach MITRE ATT&CK - Betroffene Systeme und kritische Infrastrukturen @@ -63,26 +63,28 @@ Antworten Sie NUR mit diesem JSON-Format: return `Sie sind ein erfahrener DFIR-Experte. Analysieren Sie das folgende ${analysisType}. -${isWorkflow ? 'FORENSISCHES SZENARIO' : 'TECHNISCHES PROBLEM'}: "${userQuery}" +${isWorkflow ? 'UNTERSUCHUNGSSZENARIO' : 'TECHNISCHES PROBLEM'}: "${userQuery}" Führen Sie eine systematische ${isWorkflow ? 'Szenario-Analyse' : 'Problem-Analyse'} durch und berücksichtigen Sie dabei: ${considerations} -WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen, Aufzählungen oder Markdown-Formatierung. Maximum 150 Wörter.`; +WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen, Aufzählungen oder Markdown-Formatierung. Maximum 120 Wörter.`; }, investigationApproach: (isWorkflow: boolean, userQuery: string) => { const approachType = isWorkflow ? 'Untersuchungsansatz' : 'Lösungsansatz'; const considerations = isWorkflow ? `- Triage-Prioritäten nach forensischer Dringlichkeit -- Phasenabfolge nach NIST-Methodik -- Kontaminationsvermeidung und forensische Isolierung` : +- Phasenabfolge nach Methodik (Datensammlung - Auswertung - Analyse - Bericht) +- Kontaminationsvermeidung und forensische Isolierung +- Objektivität und Transparenz` : `- Methodik-Auswahl nach wissenschaftlichen Kriterien - Validierung und Verifizierung der gewählten Ansätze -- Integration in bestehende forensische Workflows`; +- Integration in bestehende forensische Workflows +- Objektivität, Transparenz, Reproduzierbarkeit`; - return `Basierend auf der Analyse entwickeln Sie einen fundierten ${approachType} nach NIST SP 800-86 Methodik. + return `Basierend auf der Analyse entwickeln Sie einen fundierten ${approachType} nach Methodik (Datensammlung - Auswertung - Analyse - Bericht). ${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}" @@ -90,17 +92,16 @@ Entwickeln Sie einen systematischen ${approachType} unter Berücksichtigung von: ${considerations} -WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 150 Wörter.`; +WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 120 Wörter.`; }, criticalConsiderations: (isWorkflow: boolean, userQuery: string) => { const considerationType = isWorkflow ? 'kritische forensische Überlegungen' : 'wichtige methodische Voraussetzungen'; const aspects = isWorkflow ? - `- Time-sensitive evidence preservation + `- zeitkritische Beweissicherung vs. Gründlichkeit - Chain of custody requirements und rechtliche Verwertbarkeit -- Incident containment vs. evidence preservation Dilemma -- Privacy- und Compliance-Anforderungen` : - `- Tool-Validierung und Nachvollziehbarkeit +- Transparenz und Reproduzierbarkeit` : + `- Methoden-/Tool-Validierung und Nachvollziehbarkeit - False positive/negative Risiken bei der gewählten Methodik - Qualifikationsanforderungen für die Durchführung - Dokumentations- und Reporting-Standards`; @@ -128,41 +129,41 @@ ${phaseTools.map((tool: any, index: number) => `${index + 1}. ${tool.name}: ${to - Skill Level: ${tool.skillLevel} - Tags: ${tool.tags?.join(', ') || 'N/A'}`).join('\n\n')} -Bewerten Sie ALLE Tools vergleichend für diese spezifische Aufgabe UND Phase. Wählen Sie die 2-3 besten aus. +Bewerten Sie ALLE Methoden/Tools vergleichend für diese spezifische Aufgabe UND Phase. Wählen Sie die 2-3 besten aus. Es sollte eine Mischung aus Methoden und Tools sein, sofern verfügbar. BEWERTUNGSKRITERIEN: -- Wie gut löst das Tool das forensische Problem im SZENARIO-Kontext? +- Wie gut löst die Methode/das Tool das forensische Problem im SZENARIO-Kontext? - Wie gut passt es zur spezifischen PHASE "${phase.name}"? -- Wie vergleicht es sich mit den anderen verfügbaren Tools für diese Phase? +- Wie vergleicht es sich mit den anderen verfügbaren Methoden/Tools für diese Phase? Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format: [ { - "toolName": "Exakter Tool-Name", + "toolName": "Exakter Methoden/Tool-Name", "taskRelevance": 85, - "justification": "Vergleichende Begründung warum dieses Tool für diese Phase und Aufgabe besser/schlechter als die anderen geeignet ist", + "justification": "Vergleichende Begründung warum diese Methode/dieses Tool für diese Phase und Aufgabe besser/schlechter als die anderen geeignet ist", "limitations": ["Spezifische Einschränkung 1", "Einschränkung 2"] } ] WICHTIG: - taskRelevance: 0-100 Score basierend auf Szenario-Eignung UND Phasen-Passung im VERGLEICH zu anderen Tools -- Nur die 2-3 BESTEN Tools auswählen und bewerten +- Nur die 2-3 BESTEN Methoden/Tools auswählen und bewerten - justification soll VERGLEICHEND sein ("besser als X weil...", "für diese Phase ideal weil...")`; }, toolEvaluation: (userQuery: string, tool: any, rank: number, taskRelevance: number) => { - return `Sie sind ein DFIR-Experte. Erklären Sie DETAILLIERT die Anwendung dieses bereits bewerteten Tools. + return `Sie sind ein DFIR-Experte. Erklären Sie DETAILLIERT die Anwendung dieser/dieses bereits bewerteten Methode/Tools. PROBLEM: "${userQuery}" TOOL: ${tool.name} (bereits bewertet mit ${taskRelevance}% Aufgaben-Eignung) BESCHREIBUNG: ${tool.description} -Das Tool wurde bereits als Rang ${rank} für diese Aufgabe bewertet. Erklären Sie nun: +Die Methode/das Tool wurde bereits als Rang ${rank} für diese Aufgabe bewertet. Erklären Sie nun: Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format: { - "detailed_explanation": "Detaillierte Erklärung warum und wie dieses Tool für diese spezifische Aufgabe eingesetzt wird", + "detailed_explanation": "Detaillierte Erklärung warum und wie diese Methode/Tool für diese spezifische Aufgabe eingesetzt wird", "implementation_approach": "Konkrete Schritt-für-Schritt Anleitung zur korrekten Anwendung", "pros": ["Spezifischer Vorteil 1", "Spezifischer Vorteil 2"], "limitations": ["Spezifische Einschränkung 1", "Spezifische Einschränkung 2"], @@ -171,7 +172,7 @@ Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format: WICHTIG: - Keine erneute Bewertung - nur detaillierte Erklärung der bereits bewerteten Eignung -- "limitations" soll spezifische technische/methodische Einschränkungen des Tools auflisten +- "limitations" soll spezifische technische/methodische Einschränkungen der Methode/des Tools auflisten - "pros" soll die Stärken für diese spezifische Aufgabe hervorheben`; }, diff --git a/src/pages/api/ai/enhance-input.ts b/src/pages/api/ai/enhance-input.ts index 68ada2a..392ca86 100644 --- a/src/pages/api/ai/enhance-input.ts +++ b/src/pages/api/ai/enhance-input.ts @@ -81,12 +81,13 @@ QUALITÄTSKRITERIEN FÜR FRAGEN: - Forensisch spezifisch, nicht allgemein (❌ "Mehr Details?" ✅ "Welche forensischen Artefakte (RAM-Dumps, Disk-Images, Logs) stehen zur Verfügung?") - Methodisch relevant (❌ "Wann passierte das?" ✅ "Liegen Log-Dateien aus dem Incident-Zeitraum vor, und welche Retention-Policy gilt?") - Priorisiert nach Auswirkung auf die forensische Untersuchungsqualität +- Die Frage soll maximal 30 Wörter umfassen ANTWORTFORMAT (NUR JSON, KEIN ZUSÄTZLICHER TEXT): [ - "Forensisch spezifische Frage 1?", - "Forensisch spezifische Frage 2?", - "Forensisch spezifische Frage 3?" + "spezifische Frage 1?", + "spezifische Frage 2?", + "spezifische Frage 3?" ] NUTZER-EINGABE: diff --git a/tools-yaml-editor.html b/tools-yaml-editor.html index 8a31b7e..98e4252 100644 --- a/tools-yaml-editor.html +++ b/tools-yaml-editor.html @@ -172,7 +172,6 @@ font-size: 0.9em; margin-top: 8px; display: -webkit-box; - -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }