Με βάση μια πραγματική περίπτωση αυτόματου προγραμματισμού Claude Code, μοιραστείτε μερικές τεχνικές προτροπών

Αυτό το άρθρο, μέσω μιας πραγματικής περίπτωσης, μοιράζεται μια πραγματική περίπτωση χρήσης του Claude Code. Πριν το μοιραστώ, ας κάνουμε μια μικρή έρευνα.
Αρχική απαίτηση: Ένας αξιότιμος πληρωτέος χρήστης ήθελε να προσθέσω τον χρόνο τροποποίησης στα άρθρα μου.
Αυτή η απαίτηση, με την πρώτη ματιά, φαίνεται λίγο δύσκολη να υλοποιηθεί. Επειδή τα άρθρα στον ιστότοπό μου δεν αποθηκεύονται σε βάση δεδομένων, όλα δημιουργούνται χρησιμοποιώντας το SSG του next.js. Δεν έχουν καθόλου χρόνο ενημέρωσης.
Μια τεχνική εδώ είναι: κατά την επίλυση προβλημάτων, δεν πρέπει να τροφοδοτούμε απευθείας την αρχική απαίτηση στο Claude Code, για τους ακόλουθους λόγους:
1. Η αρχική απαίτηση είναι σχετικά ασαφής, και μπορεί να την ερμηνεύσει λανθασμένα. Αν την ερμηνεύσει λάθος, ενώ τελικά μπορεί να προσθέσει έναν χρόνο, αυτός ο χρόνος μπορεί να μην είναι αξιόπιστος.
2. Η κατανάλωση Token του Claude Code είναι πραγματικά πολύ ακριβή, επομένως, μια ασαφής απαίτηση μπορεί να οδηγήσει σε μεγάλη σπατάλη Token χωρίς νόημα.
Επομένως, πρέπει να αναλύσουμε την αρχική απαίτηση. Αρχικά, ρώτησα στο deepseek, και το deepseek μου έδωσε δύο λύσεις:
1. Χρόνος κατασκευής αρχείου: κάθε φορά που κάνουμε build, πρέπει να λαμβάνουμε τον χρόνο κατασκευής του αρχείου. Αλλά η στρατηγική συσκευασίας του turbopack είναι λίγο διαφορετική, κάθε φορά που κάνουμε build, η τιμή hash του αρχείου αλλάζει, οπότε αυτός ο χρόνος κατασκευής μπορεί να μην είναι αξιόπιστος.
2. Χρόνος υποβολής στο git: σκέφτηκα ότι αυτό θα πρέπει να είναι πιο αξιόπιστο.
Έχοντας μια γενική κατεύθυνση λύσης, είχα αυτήν την απλή προτροπή: Να μεταγλωττίσω τον χρόνο υποβολής του git στην κεφαλίδα κάθε άρθρου .mdx.
Το Claude Code είναι αρκετά αξιόπιστο, αν η προτροπή είναι ακριβής, γενικά δεν υπάρχει πρόβλημα, απλά ξεκίνησε να εκτελεί.
Αφού κόστισε 7 δολάρια από το όριο μου και πήρε περίπου 20 λεπτά, τελικά εκτελέστηκε με επιτυχία.
Όπως ήταν αναμενόμενο, συνέβη το απρόσμενο: παραλείφθηκαν αλλαγές σε 171 αρχεία.
Ένα πολύ προβληματικό σημείο εδώ είναι ότι, στην πραγματικότητα, τα αρχεία που παραλείφθηκαν είχαν απλώς περαστεί μια επιπλέον παράμετρος pass, όλα τα άλλα ήταν εντελώς ίδια.
<PostLayout pass>...Αλλά δεν ήταν ευέλικτο, και όρισε αυτήν την επιπλέον παράμετρο ως εντελώς διαφορετικό προσαρμοσμένο στοιχείο. Και μετά, το παρέλειψε και δεν το επεξεργάστηκε ~ ~
import Layout from 'components/post-layout';
import { getGitFileInfo } from '@/utils/git-info';
export default function Article({ children }: any) {
const gitInfo = getGitFileInfo('src/app/your-path/page.mdx');
return (
{children}
);
}Αλλά στην πραγματικότητα, το αποτέλεσμα που χρειαζόμουν ήταν αυτό, και το αποτέλεσμα εκτέλεσης ήταν εντελώς ίδιο.
import MdxLayout from 'components/mdx-layout';
export default function Article({ children }: any) {
return (
{children}
);
}Και τότε, έπεσα σε ένα πρόβλημα με την προτροπή.
Εισήγαγα ξανά την προτροπή: Χρησιμοποιήστε τον ίδιο τρόπο όπως παραπάνω για να αναδιαμορφώσετε τα 171 αρχεία που παραλείφθηκαν.
Αυτή η έκφρασή μου, αν το σκεφτείτε καλά, έχει μια μικρή ασάφεια. Επειδή το Claude Code μου είχε ήδη δώσει μια προτεινόμενη λύση, αλλά εγώ δεν την αποδέχτηκα. Η πρόθεσή μου ήταν να τροποποιήσω τα παραλειφθέντα αρχεία με τον ίδιο τρόπο όπως τα εκατοντάδες αρχεία που είχαν ήδη τροποποιηθεί, αλλά κατά την εκτέλεση, ερμηνεύτηκε ως: η προτεινόμενη λύση που μου είχε δώσει παραπάνω.
Αυτή η ασάφεια οδήγησε απευθείας στην εκτέλεση για 20 λεπτά σύμφωνα με τη λύση που δεν ήθελα, με 2 σφάλματα αυτοδιόρθωσης στη μέση, καταβροχθίζοντας άγρια τα token μου. Η σύγκρουση των δύο ασαφειών προκάλεσε σφάλματα.
Τελικά, αναγκάστηκα να εγκαταλείψω ξανά αυτήν την εκτέλεση και να διευκρινίσω ξανά το νόημά μου.
Σύνοψη
1. Στις προτροπές, είναι καλύτερο να περιλαμβάνονται σχετικά σταθερές και ακριβείς λύσεις. Όσο λιγότερο σκέφτεται το AI, τόσο μειώνεται ο ρυθμός παραισθήσεων.
2. Στις προτροπές απαιτήσεων, δεν πρέπει να υπάρχει ασάφεια. Η ασάφεια μπορεί εύκολα να οδηγήσει σε σφάλματα. Αν και το Claude Code μπορεί τελικά να τα διορθώσει, αυτό θα προκαλέσει μεγάλη κατανάλωση token. Και επειδή τα LLM βασίζονται σε μηχανισμούς πρόβλεψης για την παραγωγή αποτελεσμάτων, μια αρχική λανθασμένη ανάγνωση ή ασάφεια θα οδηγήσει κάθε επόμενο βήμα να απομακρύνεται όλο και περισσότερο σε λάθος κατεύθυνση, και θα προσπαθήσει να είναι λογικά συνεπές, δημιουργώντας πράγματα που δεν υπάρχουν. Όσο περισσότερο γράφει, τόσο μεγαλύτερο γίνεται το πρόβλημα, αυξάνοντας επίσης τη δυσκολία ελέγχου από τον προγραμματιστή. Αν εξαπατηθείτε από τις παραισθήσεις του, μπορεί να προκληθούν σοβαρές συνέπειες.
3. Οι περιορισμοί της φυσικής γλώσσας δεν είναι τόσο ακριβείς όσο του κώδικα. Στις προτροπές, η συμπερίληψη ονομάτων αρχείων, μεταβλητών κώδικα, ειδικών όρων κώδικα και τεχνικών όρων μειώνει σημαντικά τις παραισθήσεις του Claude Code.





