Claude Architect · Lektion

Sessionsisolering til reviews

Gennemgå i en ny instans uden genereringskontekst

Lektion 3 af 413 trin

Sessionsisolering til reviews er en gratis Claude Architect-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Claude Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Claude Architect-kurset indeholder 4 lektioner i alt.

Problemet med forfatterens forudindtagethed

Når Claude genererer kode og derefter kontrollerer den i samme session, er kontrollen kompromitteret. Modellen har stadig sin egen argumentation i konteksten, så den har tendens til at forsvare sine valg i stedet for at udfordre dem.

Dette er antimønstret med selvkontrol i samme session. Forfatteren husker begrundelsen for hver beslutning og markerer sjældent sine egne antagelser som tvivlsomme.

Princippet i prøven er kontant: Kontrol med en uafhængig, ny instans er bedre end selvkontrol i samme session. I CI/CD betyder det, at kontrolløren aldrig bør dele kontekst med generatoren.

Hvorfor en ny instans vinder

En kontrollør, der starter med et tomt kontekstvindue, ser på ændringerne som en outsider. Den har ingen interesse i, hvorfor en funktion blev skrevet på en bestemt måde, så den vurderer udelukkende koden på dens egne meritter.

  • Genereringskontekst = de prompts, den udforskning og den argumentation, der frembragte koden.
  • Kontrolkontekst = kun koden, standarderne og kontrolkriterierne.

Ved at holde disse adskilt fjerner du den bekræftelsesbias, der får en selvkontrol til at godkende sit eget arbejde. Sessionsisolering er den mekanisme, der håndhæver denne adskillelse i en arbejdsgang.

Ikke-interaktiv tilstand i CI

Arbejdsgange har ingen terminal, man kan skrive i, så Claude Code skal køre i ikke-interaktiv tilstand (udskrivningstilstand). Brug -p (eller --print) til at sende én prompt og få ét resultat tilbage, og afslut derefter.

Dette er grundlaget for et isoleret kontroltrin: Hver kørsel er en ny proces med sin egen rene kontekst, fuldstændig adskilt fra et eventuelt tidligere genereringstrin.

# Non-interactive review invocation in a CI job
claude -p "Review the staged diff for correctness and security issues." \
  --output-format json

Fortolkeligt output til kontrollen

Et CI-trin har brug for maskinlæsbare resultater, ikke prosa. Tilføj --output-format json, så arbejdsgangen kan fortolke fund og afgøre, om bygningen skal bestå eller fejle.

Hvis JSON-output kombineres med et skema, bliver resultatet deterministisk at bruge: Dit kontrolscript læser strukturerede felter i stedet for at søge i fri tekst efter ord som "LGTM" eller "done" — hvilket er et antimønster.

claude -p "$(cat .ci/review-prompt.md)" \
  --output-format json \
  > review-result.json

# Gate script parses structured fields, never scans text
jq '.findings[] | select(.severity == "blocker")' review-result.json

To processer, to kontekster

Det reneste isoleringsmønster i CI/CD er at dele generering og kontrol op i to separate Claude Code-kørsler. Genereringsjobbet skriver kode; et senere, uafhængigt -p-job kontrollerer den.

Fordi hver kørsel er sin egen proces, overtager kontrolløren aldrig generatorens samtalehistorik. Det afspejler reglen om flere agenter fra prøven: Underagenter overtager ikke en koordinators historik — kontekst skal videregives eksplicit og må aldrig antages.

# Stage 1 — generation (its own session/context)
claude -p "Implement the feature described in TICKET-412."

# Stage 2 — review (a brand-new process, zero shared context)
claude -p "Review the resulting diff against our coding standards." \
  --output-format json

Genoptagelse er ikke isolering

Det kan være fristende at bruge --resume til genereringssessionen og bede den om at gennemgå sit eget arbejde. Lad være. En genoptaget session bringer den oprindelige argumentation tilbage i konteksten — og det er netop den selvvurderingsbias, du vil undgå.

Der er endnu en risiko: resultater fra genoptagne værktøjskald kan være forældede, hvis kodebasen er ændret, siden de blev gemt. Nogle gange er en ny session, der startes med et struktureret resumé, bedre end at genoptage en navngiven session direkte.

For at få en uvildig gennemgang skal du som standard bruge en ny session hver gang.

# --resume continues a NAMED session (keeps prior context — biased for review)
claude --resume feature-412 -p "Now review what you wrote."   # avoid for review

# fork_session branches from a shared point — still inherits context
# For review, prefer a clean -p invocation instead.

Giv kun ændringerne og reglerne

En isoleret gennemgangsmodel skal modtage en kort og relevant datapakke: de ændringer, der skal undersøges, samt de standarder, der skal anvendes. Skær fyldige værktøjsresultater ned til de felter, der betyder noget — en overfyldt kontekst udløser «lost-in-the-middle»-effekten, hvor modellen i langt højere grad fokuserer på begyndelsen og slutningen end på midten.

Hold kriterierne for gennemgangen tæt på begyndelsen eller slutningen af prompten, så de ikke begraves midt i konteksten.

git diff --staged > /tmp/diff.patch

claude -p "You are an independent reviewer with no prior context.

Review ONLY this diff against the rules below.

<rules>$(cat .ci/review-rules.md)</rules>

<diff>$(cat /tmp/diff.patch)</diff>" \
  --output-format json

Udtømmende kriterier slår vage anmodninger

En isoleret session har ingen fælles antagelser at falde tilbage på, så kriterierne skal være udtrykkelige. Præcise regler reducerer antallet af falske positiver markant.

  • Vagt: "be more precise" — giver støjende og inkonsekvente markeringer.
  • Udtømmende: "flag a comment only when it contradicts the code it describes" — giver resultater, du kan handle på.

Ved CI-gennemgange er målet specifikt at minimere falske positiver — en gennemgangsmodel, der råber «ulv», bliver ignoreret og svækker tilliden til kontrollen.

Few-shot-eksempler giver ensartethed

Hvis en isoleret gennemgangsmodel skal opføre sig ensartet fra kørsel til kørsel, skal du tilføje 2-4 målrettede few-shot-eksempler, der dækker de tvetydige tilfælde. Modellen generaliserer ud fra dem — den gentager dem ikke bare.

Few-shot er det rigtige værktøj til ensartethed, randtilfælde, outputformat og reduktion af opdigtede resultater. Et par velvalgte eksempler på flag og do-not-flag får gennemgangsmodellens vurderinger til at stemme overens med jeres teams standard.

<examples>
  <example verdict="flag">
    Code swallows the exception silently — masks failures. Report it.
  </example>
  <example verdict="do-not-flag">
    A TODO comment about future work is not a defect. Ignore it.
  </example>
</examples>

Struktureret output fastlåser afgørelsen

Tving gennemgangsmodellen til at afgive en struktureret afgørelse via et værktøj og JSON Schema. Sæt tool_choice til "any", så modellen skal kalde et værktøj — det garanterer struktureret output i stedet for fri tekst.

Markér kun et felt som required, når det altid er til stede. Gør aldrig et felt, der muligvis mangler, obligatorisk, ellers opfinder modellen en værdi. Brug en enum med valgmuligheden "other" samt et frit tekstfelt til detaljer, så nye typer af resultater stadig kan repræsenteres.

review_tool = {
    "name": "submit_review",
    "description": "Return the review verdict and findings.",
    "input_schema": {
        "type": "object",
        "properties": {
            "verdict": {"enum": ["pass", "fail"]},
            "findings": {
                "type": "array",
                "items": {
                    "type": "object",
                    "properties": {
                        "category": {"enum": ["bug", "security", "style", "other"]},
                        "detail": {"type": "string"}
                    },
                    "required": ["category", "detail"]
                }
            }
        },
        "required": ["verdict"]
    }
}

# tool_choice="any" guarantees a tool call (structured output)
message = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=2048,
    tools=[review_tool],
    tool_choice={"type": "any"},
    messages=[{"role": "user", "content": review_prompt}],
)

Gentagne kørsler: Rapportér kun nye problemer

Når en pull request opdateres, og gennemgangen køres igen, vil en ny session markere alt igen fra bunden — også allerede anerkendte punkter. Det skaber støj.

Mønsteret er: Ved en ny kørsel skal du inkludere de tidligere resultater og kun rapportere nye eller stadig uløste problemer. Du bevarer sessionsisoleringen — det er stadig en ren gennemgang — samtidig med at du udtrykkeligt giver de tidligere resultater med som input. Konteksten overdrages bevidst i stedet for at blive arvet fra en genoptaget genereringssession.

claude -p "Independent re-review. Below are the diff and the findings
from the previous run. Report ONLY new issues or prior issues that
are still unfixed. Do not repeat resolved items.

<previous_findings>$(cat last-review.json)</previous_findings>
<diff>$(git diff --staged)</diff>" \
  --output-format json

Hurtigt tjek

Test din forståelse af den centrale beslutning bag isolerede gennemgange.

Opsummering: Isolation efter design

Vigtige pointer om sessionsisolerede gennemgange i CI/CD:

  • En ny instans er bedre end selvvurdering — forfatteren forsvarer sit eget arbejde; det gør en udenforstående ikke.
  • Adskilte processer — gennemgå med et særskilt claude -p-kald; brug aldrig --resume på genereringssessionen til gennemgangen.
  • Ikke-interaktivt + JSON — -p sammen med --output-format json giver ren kontekst og resultater, der kan fortolkes; søg aldrig i tekst med grep efter signaler om færdiggørelse.
  • Udtømmende kriterier + 2-4 few-shot-eksempler minimerer falske positiver og holder afgørelser ensartede.
  • tool_choice "any" tvinger struktureret output frem; gør kun felter, der altid er til stede, obligatoriske.
  • Ved gentagne kørsler skal du udtrykkeligt videregive tidligere resultater og kun rapportere nye eller uløste problemer.
  • Aldrig skal blokerende gennemgange før sammenlægning sendes gennem Batch API.
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
26
Lektioner
104

Ofte stillede spørgsmål

Er lektionen “Sessionsisolering til reviews” gratis?

Ja — alle 3 lektioner i læringssporet Claude Architect, inklusive “Sessionsisolering til reviews”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Claude Architect-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Sessionsisolering til reviews”?

Gennemgå i en ny instans uden genereringskontekst Du øver dig i Claude Architect med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Claude Architect?

Der kræves ingen tidligere erfaring. Claude Architect på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Sessionsisolering til reviews”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Claude Architect-lektion?

Ja. Alle Claude Architect-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Ikke-interaktiv tilstand
  2. Struktureret output
  3. Sessionsisolering til reviews
  4. Testgenerering og standarder
← Tilbage til Claude Architect