# Αποδείξεις για τα AI workflows σου

2021, 2022, 2023, 2024, 2025, ήρθε πάλι εκείνη η εποχή του χρόνου για ένα νέο blog post, και αφού ζούμε σε μια περίοδο AI ψύχωσης, δεν αποτελεί έκπληξη ότι θα ξεφορτώσω τις σκέψεις μου πάνω σε αυτό.

«Η μηχανική λογισμικού αλλάζει», «Ο άνθρωπος είναι το bottleneck», «Η μηχανική λογισμικού πέθανε»..........
αυτό το άρθρο δεν είναι για αυτά.

Αυτό που σκέφτομαι από την αρχή όλου αυτού του AI hype είναι πώς μπορούμε να εφαρμόσουμε τις συνηθισμένες πρακτικές της μηχανικής λογισμικού, και την κοινή λογική (που δέχτηκε μεγάλο πλήγμα στην εποχή του AI 😅), στα AI workflows και συστήματά μας.
Ένα πράγμα στο οποίο συμφωνούν όλοι όσοι δεν είναι vibe coders είναι ότι η ορατότητα και οι μετρήσεις για το πώς δουλεύουν πραγματικά τα AI συστήματά μας είναι απαραίτητες.

## Λίγο ντετερμινισμό

Πάρε για παράδειγμα τα fixup commits. Όταν ο agent σου προσπαθεί να φτιάξει fixup commits σε κάποιον κώδικα, μπορείς να το αφήσεις στην τύχη και να τα κάνει όπως θέλει, ή μπορείς να φτιάξεις [ένα skill](https://github.com/PanosCodes/skill-fixup) που πάει πέρα από το «Φτιάξε fixup commits» και καλεί ένα script που προσπαθεί να προσθέσει λίγο ντετερμινισμό σε αυτή τη διαδικασία.

Στη δική μου περίπτωση η ροή είναι κάπως έτσι:

1. Έλεγχος της κατάστασης του repo
2. Εύρεση των κατάλληλων commits
3. Στιγμιότυπο του diff
4. Πρόχειρο πλάνο και επισήμανση συγκρούσεων

μετά μπαίνει το AI:

5. Ελέγχει το πλάνο
6. Αλλάζει στόχο ή αποφασίζει ό,τι δεν μπόρεσε να αποφασίσει το blame

και μετά ο κώδικας:

7. Επικυρώνει το πλάνο και το απορρίπτει αν κάτι θα προκαλούσε σύγκρουση
8. Φτιάχνει τα fixup commits

Το παραπάνω skill τρέχει πραγματικό κώδικα. Κάποια στιγμή όμως πρόσεξα ότι ένα από τα scripts αποτύγχανε. Επειδή τα LLMs είναι προσανατολισμένα στον στόχο, αντί να σταματήσει, ο agent εντόπιζε το κομμάτι που αποτύγχανε και έτρεχε μόνος του κάποια εκδοχή του.

Τα fixups έγιναν, αλλά το κομμάτι που «έγραψα» για να είναι ντετερμινιστικό δεν ήταν πια, και τίποτα δεν με ειδοποίησε.

Οπότε… λίγη ορατότητα θα ήταν χρήσιμη εκεί.

## Logs του harness

Ένα εργαλείο που χρησιμοποιούσαν οι μηχανικοί λογισμικού πολύ πριν από τα LLMs είναι… το logging.

Αν δουλεύεις με ένα τοπικό harness, όπως το Claude Code, έχεις πρόσβαση σε κάποιου είδους logs. Το Claude Code αποθηκεύει τα logs των sessions του στο

```text
~/.claude/projects/-some-project/some_session_id.jsonl
```

Μπορείς να δώσεις αυτό το αρχείο σε ένα άλλο session του Claude Code και να κάνεις ερωτήσεις για το session σου, ή να κάνεις `/fork` ένα session όταν τελειώσεις και να ρωτήσεις απευθείας εκεί, για να καταλάβεις καλύτερα τι έκανε ο agent.

## Ichnos 🔍

![Η προβολή ενός session στο Ichnos](./ichnos-session-view.png "Ένα session στο Ichnos")

Ζούμε στην εποχή του προσωπικού λογισμικού. Ο καθένας έχει τον δικό του slop κώδικα, φτιαγμένο με prompts στα μέτρα του.

Το δικό μου λέγεται [Ichnos](https://github.com/PanosCodes/ichnos). Συνδέεται στα callbacks του Claude Code και γράφει τα events του Claude σε μια τοπική βάση SQLite, μία ανά session. Έτσι έχεις μια εικόνα για:

- ποιο skill ενεργοποιήθηκε
- ποια εντολή απέτυχε
- χρόνους, για να εντοπίζεις αργές λειτουργίες

και μετά, με το skill που το συνοδεύει, ο agent μπορεί να κάνει query στα logs με `/ichnos sessions-id`

ώστε να γυρίσουμε πίσω στα AI εργαλεία και να κάνουμε προσαρμογές και βελτιστοποιήσεις.

## Περισσότερες σκέψεις

Αν είσαι στο στρατόπεδο του «LLM τα πάντα» και του κάψιμου tokens, τότε τα παραπάνω δεν σου χρησιμεύουν: «θα είναι πρόβλημα του επόμενου μοντέλου» να τα πάει καλύτερα.

Αν καταλαβαίνεις ότι η αυτοπεποίθηση δεν είναι το ίδιο με την ικανότητα, τότε θέλεις αποδείξεις, logs και νούμερα για το τι έκανε και τι δεν έκανε ο agent, όχι απλώς μια περίληψη. Όπως λέει και το ρητό, «Δεν μπορείς να βελτιώσεις αυτό που δεν μετράς». Μόλις μπορείς να δεις τι συμβαίνει, μπορείς να αρχίσεις να μετράς (περισσότερα γι' αυτό αργότερα) αν οι αλλαγές σου το έκαναν καλύτερο ή όχι.

Ζούμε σε μια εποχή όπου παίζουμε με λέξεις σε αρχεία `.md`, ζητάμε από LLMs να τροποποιήσουν οδηγίες που γράφτηκαν ήδη με prompts, με την ελπίδα ότι το «κάν' το μικρότερο, γρηγορότερο, καλύτερο, χωρίς λάθη» θα πιάσει. Χωρίς χειροπιαστές αποδείξεις, στην καλύτερη περίπτωση παίζουμε τζόγο.