feat: post-commit hängt git-block an session-datei an
- Hook erkennt *_session.md Dateien (vom Agent via /history erstellt) - Modus A: Git-Block an bestehende Konversations-Datei anhängen - Modus B: Nur Git-Stub wenn kein Agent-Log vorhanden (Hinweis ausgeben) - history.prompt.md: Dateinamen-Konvention _session.md dokumentiert
This commit is contained in:
parent
16588b1888
commit
bc23bd7f92
2 changed files with 51 additions and 22 deletions
|
|
@ -2,9 +2,14 @@
|
|||
# post-commit – Automatischer History-Log
|
||||
#
|
||||
# Läuft nach jedem erfolgreichen Commit.
|
||||
# Schreibt einen faktischen Eintrag in history/prompts/ mit:
|
||||
# - Commit-Hash, Branch, Datum, Message
|
||||
# - Liste der geänderten Dateien
|
||||
# Zwei Modi:
|
||||
#
|
||||
# A) Session-Datei gefunden (Agent hat /history ausgeführt):
|
||||
# → Git-Block wird an die bestehende Konversations-Datei ANGEHÄNGT.
|
||||
# Session-Dateien werden vom Agent mit dem Suffix "_session.md" erstellt.
|
||||
#
|
||||
# B) Keine Session-Datei für heute:
|
||||
# → Neuer Git-Stub (nur Metadaten, kein KI-Inhalt).
|
||||
#
|
||||
# Die Datei wird NICHT automatisch committed (kein Rekursionsrisiko).
|
||||
# Sie wird beim nächsten regulären Commit mit erfasst (history/ ist tracked).
|
||||
|
|
@ -22,16 +27,15 @@ if [ ! -d "history/prompts" ]; then
|
|||
exit 0
|
||||
fi
|
||||
|
||||
# Dateiname: Datum + Branch (bereinigt) + Hash
|
||||
BRANCH_CLEAN=$(printf '%s' "$BRANCH" | tr '/' '-' | tr ' ' '-')
|
||||
OUTFILE="history/prompts/${DATE}_${BRANCH_CLEAN}_${HASH}.md"
|
||||
|
||||
# Geänderte Dateien dieses Commits
|
||||
CHANGED_FILES=$(git diff-tree --no-commit-id -r --name-status "$FULL_HASH" 2>/dev/null \
|
||||
| awk '{printf "| %-1s | %s |\n", $1, $2}')
|
||||
|
||||
cat > "$OUTFILE" << EOF
|
||||
# Auto-Log: $MSG
|
||||
GIT_BLOCK=$(cat << EOF
|
||||
|
||||
---
|
||||
|
||||
## Git Commit
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
|
|
@ -40,24 +44,44 @@ cat > "$OUTFILE" << EOF
|
|||
| Commit | \`$FULL_HASH\` |
|
||||
| Autor | $AUTHOR |
|
||||
|
||||
## Commit Message
|
||||
### Commit Message
|
||||
|
||||
\`\`\`
|
||||
$MSG
|
||||
\`\`\`
|
||||
|
||||
## Geänderte Dateien
|
||||
### Geänderte Dateien
|
||||
|
||||
| Status | Datei |
|
||||
|---|---|
|
||||
$CHANGED_FILES
|
||||
|
||||
---
|
||||
*Automatisch generiert durch post-commit hook – kein KI-Inhalt.*
|
||||
*Für KI-generierte Zusammenfassung: Copilot Chat → \`/history\`*
|
||||
*Git-Block automatisch generiert durch post-commit hook.*
|
||||
EOF
|
||||
)
|
||||
|
||||
# Staging-Info ausgeben (nicht automatisch stagen – vermeidet Komplikationen)
|
||||
# Modus A: Session-Datei vom Agent für heute suchen (Suffix: _session.md)
|
||||
SESSION_FILE=$(ls "history/prompts/${DATE}_"*"_session.md" 2>/dev/null | tail -1)
|
||||
|
||||
if [ -n "$SESSION_FILE" ]; then
|
||||
printf '%s\n' "$GIT_BLOCK" >> "$SESSION_FILE"
|
||||
echo ""
|
||||
echo " ✓ history: $(basename "$OUTFILE") geschrieben"
|
||||
echo " ✓ history: Git-Block angehängt an $(basename "$SESSION_FILE")"
|
||||
echo " → Konversation + Commit in einer Datei"
|
||||
else
|
||||
# Modus B: Kein Agent-Log – reinen Git-Stub anlegen
|
||||
BRANCH_CLEAN=$(printf '%s' "$BRANCH" | tr '/' '-' | tr ' ' '-')
|
||||
OUTFILE="history/prompts/${DATE}_${BRANCH_CLEAN}_${HASH}.md"
|
||||
cat > "$OUTFILE" << STUB
|
||||
# Auto-Log: $MSG
|
||||
$GIT_BLOCK
|
||||
|
||||
*Kein Agent-Log vorhanden. Für vollständige Konversation: Copilot Chat → \`/history\` vor dem Commit ausführen.*
|
||||
STUB
|
||||
echo ""
|
||||
echo " ✓ history: $(basename "$OUTFILE") geschrieben (nur Git-Metadaten)"
|
||||
echo " → Tipp: '/history' vor dem Commit für vollständige Konversation"
|
||||
fi
|
||||
|
||||
echo " → wird beim nächsten Commit automatisch erfasst"
|
||||
|
|
|
|||
|
|
@ -9,10 +9,14 @@ Du hilfst dabei die Projekt-History zu pflegen. Es gibt zwei Aufgaben:
|
|||
|
||||
## Aufgabe A: Konversation loggen
|
||||
|
||||
Erstelle eine neue Datei `history/prompts/{{DATUM}}_{{TITEL}}.md` mit folgendem Inhalt:
|
||||
- Alle Fragen, Antworten, Entscheidungen aus dieser Sitzung
|
||||
- Datum und Aufgabentitel im Dateinamen (Format: `YYYY-MM-DD_kurz-beschreibung.md`)
|
||||
- Vollständig – nichts weglassen
|
||||
Erstelle eine neue Datei `history/prompts/{{DATUM}}_{{TITEL}}_session.md` mit der vollständigen Konversation.
|
||||
|
||||
**Wichtig zum Dateinamen:** Das Suffix `_session.md` ist zwingend — der post-commit Hook erkennt daran, dass ein Agent-Log existiert und hängt den Git-Block automatisch an statt eine neue Datei zu erstellen.
|
||||
|
||||
Format: `YYYY-MM-DD_kurz-beschreibung_session.md`
|
||||
Beispiel: `2026-06-02_tile-server-martin-setup_session.md`
|
||||
|
||||
Inhalt: **vollständig** – alle Prompts, Antworten, ausgeführte Befehle, Fehlermeldungen und Entscheidungen dieser Sitzung.
|
||||
|
||||
Struktur:
|
||||
```markdown
|
||||
|
|
@ -22,11 +26,12 @@ Struktur:
|
|||
[Was sollte erreicht werden]
|
||||
|
||||
## Verlauf
|
||||
|
||||
### Prompt 1
|
||||
[Frage/Anweisung]
|
||||
[Frage/Anweisung des Users]
|
||||
|
||||
### Antwort 1
|
||||
[Was der Agent geantwortet / getan hat]
|
||||
[Was der Agent geantwortet / getan hat, inkl. ausgeführter Befehle und deren Output]
|
||||
|
||||
### Prompt 2
|
||||
…
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue