{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 28,\n \"parent_id\": 16,\n \"slug\": \"ki-protokoll\",\n \"path\": \"\/ki-system\/ki-protokoll\",\n \"title\": \"Protokoll\",\n \"description\": \"Automatisches Logging-System für Claude Code Sessions. Erfasst alle Requests, Responses und Tool-Aufrufe in einer MariaDB-Datenbank via Hook-System.\",\n \"content\": \"<nav class=\\\"breadcrumb\\\">\\n <a href=\\\"\/docs\\\">Dokumentation<\/a> » <a href=\\\"\/docs\/ki-system\\\">KI-System<\/a> » Protokoll\\n<\/nav>\\n\\n<h1>KI-Protokoll<\/h1>\\n<p class=\\\"doc-meta\\\"><strong>Erstellt:<\/strong> 2025-12-20 | <strong>Aktualisiert:<\/strong> 2025-12-20<\/p>\\n\\n<p>Automatisches Logging-System für Claude Code Sessions. Erfasst alle Requests, Responses und Tool-Aufrufe in einer MariaDB-Datenbank via Hook-System.<\/p>\\n\\n<table>\\n <tr><th>Datenbank<\/th><td>ki_dev<\/td><\/tr>\\n <tr><th>Tabelle<\/th><td>protokoll<\/td><\/tr>\\n <tr><th>Hook-Script<\/th><td>\/var\/www\/tools\/ki-protokoll\/claude-hook\/log_to_db.py<\/td><\/tr>\\n <tr><th>Config<\/th><td>\/var\/www\/dev.campus.systemische-tools.de\/.claude\/settings.local.json<\/td><\/tr>\\n<\/table>\\n\\n<h2>Erfasste Events<\/h2>\\n<table>\\n <tr><th>Event<\/th><th>Beschreibung<\/th><\/tr>\\n <tr><td>UserPromptSubmit<\/td><td>User-Eingaben<\/td><\/tr>\\n <tr><td>PreToolUse<\/td><td>Tool-Aufruf (Request)<\/td><\/tr>\\n <tr><td>PostToolUse<\/td><td>Tool-Ergebnis (Response)<\/td><\/tr>\\n <tr><td>SessionStart<\/td><td>Session-Beginn<\/td><\/tr>\\n <tr><td>SessionEnd<\/td><td>Session-Ende<\/td><\/tr>\\n <tr><td>Stop\/SubagentStop<\/td><td>Abbruch-Events<\/td><\/tr>\\n<\/table>\\n\\n<h2>Datenbank-Schema<\/h2>\\n<pre><code>CREATE TABLE protokoll (\\n id bigint(20) NOT NULL AUTO_INCREMENT,\\n timestamp datetime(6) DEFAULT current_timestamp(6),\\n request_ip varchar(45) NOT NULL,\\n client_name varchar(255) NOT NULL,\\n request text NOT NULL,\\n request_timestamp datetime(6) NOT NULL,\\n response text DEFAULT NULL,\\n response_timestamp datetime(6) DEFAULT NULL,\\n duration_ms int(10) unsigned DEFAULT NULL,\\n tokens_input int(10) unsigned DEFAULT NULL,\\n tokens_output int(10) unsigned DEFAULT NULL,\\n tokens_total int(10) unsigned DEFAULT NULL,\\n model_name varchar(255) DEFAULT NULL,\\n status enum('pending','completed','error') DEFAULT 'pending',\\n error_message text DEFAULT NULL,\\n PRIMARY KEY (id),\\n KEY idx_timestamp (timestamp),\\n KEY idx_client_name (client_name),\\n KEY idx_status (status)\\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;<\/code><\/pre>\\n\\n<h2>Abfragen<\/h2>\\n<pre><code># Letzte 10 Einträge\\nmariadb ki_dev -e \\\"SELECT id, timestamp, client_name, status FROM protokoll ORDER BY id DESC LIMIT 10\\\"\\n\\n# Requests pro Tag\\nmariadb ki_dev -e \\\"SELECT DATE(timestamp) as tag, COUNT(*) as anzahl FROM protokoll GROUP BY DATE(timestamp) ORDER BY tag DESC\\\"\\n\\n# Durchschnittliche Duration\\nmariadb ki_dev -e \\\"SELECT AVG(duration_ms) as avg_ms FROM protokoll WHERE status = 'completed'\\\"<\/code><\/pre>\\n\\n<h2>Hook-Konfiguration<\/h2>\\n<p>Datei: <code>\/var\/www\/dev.campus.systemische-tools.de\/.claude\/settings.local.json<\/code><\/p>\\n<pre><code>{\\n \\\"hooks\\\": {\\n \\\"UserPromptSubmit\\\": [{\\n \\\"hooks\\\": [{\\n \\\"type\\\": \\\"command\\\",\\n \\\"command\\\": \\\"\/var\/www\/tools\/ki-protokoll\/claude-hook\/log_to_db.py\\\",\\n \\\"timeout\\\": 5\\n }]\\n }],\\n \\\"PreToolUse\\\": [{\\n \\\"matcher\\\": \\\"\\\",\\n \\\"hooks\\\": [{\\n \\\"type\\\": \\\"command\\\",\\n \\\"command\\\": \\\"\/var\/www\/tools\/ki-protokoll\/claude-hook\/log_to_db.py\\\",\\n \\\"timeout\\\": 5\\n }]\\n }],\\n \\\"PostToolUse\\\": [{\\n \\\"matcher\\\": \\\"\\\",\\n \\\"hooks\\\": [{\\n \\\"type\\\": \\\"command\\\",\\n \\\"command\\\": \\\"\/var\/www\/tools\/ki-protokoll\/claude-hook\/log_to_db.py\\\",\\n \\\"timeout\\\": 10\\n }]\\n }]\\n }\\n}<\/code><\/pre>\\n\\n<h2>Sicherheit<\/h2>\\n<ul>\\n <li>Sensible Daten (Passwörter, API-Keys, Tokens) werden automatisch mit [REDACTED] maskiert<\/li>\\n <li>Lange Inhalte werden auf 10.000 Zeichen gekürzt<\/li>\\n <li>DB-User hat entsprechende Rechte<\/li>\\n<\/ul>\\n\\n<h2>Abhängigkeiten<\/h2>\\n<pre><code># Python-Modul\\npip3 install pymysql<\/code><\/pre>\",\n \"status\": \"published\",\n \"sort_order\": 12,\n \"depth\": 1,\n \"created_at\": \"2025-12-20T11:13:58\",\n \"updated_at\": \"2025-12-27T15:58:19\"\n }\n}"
}
]
}