Baseret på et virkeligt eksempel med Claude Code autoprogrammering, deler jeg nogle promptteknikker

Denne artikel deler et virkeligt brugseksempel på Claude Code gennem en konkret sag. Før vi deler, lad os lave en lille undersøgelse.
Oprindeligt behov: En værdifuld betalende bruger ønskede, at jeg skulle tilføje artikelændringstidspunktet i artiklerne.
Ved første øjekast ser dette behov svært ud at implementere. Fordi artiklerne på min hjemmeside ikke er gemt i en database, de er alle bygget ved hjælp af next.js's SSG. De har slet ikke et opdateringstidspunkt.
Et trick her er: Når vi løser problemer, skal vi ikke bare fodre det oprindelige behov direkte til Claude Code, af følgende årsager:
1. Det oprindelige behov er relativt vagt, det kan misforstås. Hvis det først misforstår, kan det til sidst tilføje et tidspunkt, men det tidspunkt er måske ikke pålideligt.
2. Claude Codes Token-forbrug er virkelig særligt dyrt, derfor kan vage behov føre til, at en masse Tokens bliver brugt meningsløst.
Derfor skal vi nedbryde det oprindelige behov. Jeg konsulterede først deepseek, som gav mig to løsninger:
1. Filbyggertid: Hver gang vi bygger, skal vi hente filens byggetid. Men turbopack's pakkestrategi er lidt anderledes, hver gang den bygger, ændres filens hash-værdi, så denne byggetid er måske ikke særlig pålidelig.
2. git commit-tid, jeg tænkte, dette burde være mere pålideligt.
Efter at have en grov løsningsretning, havde jeg dette enkle prompt: Kompiler git commit-tiden i toppen af hver .mdx artikel.
Claude Code er ret pålideligt, hvis promptet er præcist, er der generelt ingen problemer, det kører bare løs.
Efter at have brugt 7 dollars af min kredit, og efter cirka 20 minutter, lykkedes det endelig.
Som forventet skete der det uventede, det sprang over ændringer i 171 filer.
Et meget irriterende punkt er her, at de filer, der blev sprunget over, faktisk kun havde et ekstra pass parameter sendt med, alt andet var helt ens.
<PostLayout pass>...Men det var ikke fleksibelt, det definerede dette ekstra parameter som et helt andet brugerdefineret komponent. Og så sprang det det over uden at behandle det ~ ~
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 (
<Layout gitInfo={gitInfo || undefined}>
{children}
</Layout>
);
}Men den virkelige situation er, at jeg havde brug for dette resultat, kørselsresultatet er helt ens.
import MdxLayout from 'components/mdx-layout';
export default function Article({ children }: any) {
return (
<MdxLayout pass filePath="src/app/r19base/(4.compiler)/23.compilerlower/page.mdx">
{children}
</MdxLayout>
);
}Og på dette tidspunkt faldt jeg i en fælde med promptet.
Jeg indtastede promptet igen: Brug samme metode som ovenfor til at refaktorere de 171 sprunget-over filer.
Min formulering, ved nærmere eftertanke, har en vis tvetydighed. Fordi Claude Code allerede havde givet mig en foreslået løsning, men jeg anerkendte ikke denne løsning. Min hensigt var at ændre de sprunget-over filer med den samme løsning som de hundredvis af filer, der allerede var ændret, men under udførelsen blev det forstået som: den ovennævnte løsning, den havde foreslået.
Denne tvetydighed fik det direkte til at køre i 20 minutter efter en løsning, jeg ikke ønskede, og der opstod endda 2 fejl med selv-reparering undervejs, det slugte voldsomt mine tokens, de to typer tvetydighed begyndte at slås og forårsagede fejl.
Til sidst var jeg nødt til at opgive denne udførelse igen og præcisere min betydning på ny.
Opsummering
1. I promptet er det bedst at inkludere en relativt stabil og præcis løsningsmetode, jo mindre AI skal tænke, jo bedre, dette kan reducere hallucinationer.
2. Der må absolut ikke være tvetydighed i behovspromptet, tvetydighed kan let føre til fejl. Selvom Claude Code til sidst kan reparere det, vil det forbruge en masse tokens. Og fordi LLM er baseret på en forudsigelsesmekanisme til at producere resultater, vil tidlig misforståelse, tvetydighed osv. føre til, at hvert efterfølgende skridt går længere og længere i den forkerte retning, og det vil også forsøge at være logisk selvkonsistent, generere ting, der ikke eksisterer, jo mere det skriver, jo større bliver problemerne, og det øger også udviklerens gennemgangsvanskeligheder. Hvis du bliver narret af dets hallucinationer, kan det have alvorlige konsekvenser.
3. Naturligt sprogs begrænsningskraft er ikke så præcis som kode. I promptet vil inkludering af filnavne, kodevariabler, kodespecifikke ord, fagtermer osv. i høj grad reducere Claude Codes hallucinationer.





