# Claude Code konteksti ja muisti: /compact, /clear ja CLAUDE.md käytännössä

> Mikä Claude Coden kontekstiin latautuu, milloin käyttää /clear tai /compact, miten CLAUDE.md-hierarkia ja auto memory toimivat ja miten pidät session kevyenä.

Lähde: https://vibekoodaus.fi/blogi/claude-code-konteksti-ja-muisti
Kirjoittaja: Vibekoodaus
Julkaistu: 2026-11-12
Päivitetty: 2026-11-12

---

# Claude Code konteksti ja muisti: /compact, /clear ja CLAUDE.md käytännössä

Jokainen Claude Coden sessio alkaa tyhjästä kontekstista. Claude ei muista eilistä keskustelua, ellei jokin tuo sitä mukaan. Samalla kaikki, mitä session aikana tapahtuu, kertyy kontekstiin: luetut tiedostot, komentojen tulosteet ja Clauden omat vastaukset.

Näistä kahdesta asiasta syntyy suurin osa arjen ongelmista. Claude unohtaa jotain, minkä sanoit tunti sitten. Tai sessio paisuu niin isoksi, että jokainen kysymys maksaa koko päivän historian verran. Tässä oppaassa käydään läpi, mitä kontekstiin oikeasti latautuu, miten `/clear` ja `/compact` eroavat ja miten CLAUDE.md-tiedostot ja auto memory kantavat tietoa sessiosta toiseen.

---

## Mikä on konteksti Claude Codessa?

Konteksti-ikkuna on kaikki, mitä Claude tietää sessiosta juuri nyt. Siihen kuuluvat ohjeesi, tiedostot joita Claude on lukenut, sen omat vastaukset ja myös sisältö, joka ei koskaan näy terminaalissa.

Osa latautuu ennen kuin kirjoitat mitään:

- **CLAUDE.md-tiedostot** (tai AGENTS.md, jos repositoriossa ei ole CLAUDE.md:tä)
- **Auto memory**, eli Clauden itse kirjoittamat muistiinpanot
- **MCP-työkalujen nimet**, eivät koko määrittelyt
- **Skillien kuvaukset**, eivät koko sisältö

Työn aikana kontekstiin tulee lisää. Jokainen luettu tiedosto lisää sitä. Polkukohtaiset säännöt latautuvat, kun Claude koskee niihin täsmääviin tiedostoihin. Hookien tulosteet ja komentojen tulosteet päätyvät nekin kontekstiin.

Olennaista on tämä: Claude Code lähettää koko keskustelun jokaisen pyynnön mukana. Jos sessiossa on ehtinyt olla kolme erillistä tehtävää, neljännen tehtävän jokainen kierros lukee myös kolmen edellisen historian. Välimuisti tekee tästä halvempaa, mutta ei ilmaista.

Useat nykyiset mallit tukevat miljoonan tokenin konteksti-ikkunaa, ja saatavuus riippuu tilauksesta. Isossa ikkunassa tila loppuu harvoin, mutta turhasta historiasta maksat silti.

---

## Katso oma tilanteesi: /context ja /usage

Ennen kuin alat optimoida, katso mitä sessiossa oikeasti on. Kaksi komentoa riittää:

```text
/context
/context all
/usage
```

`/context` näyttää kontekstin käytön värillisenä ruudukkona luokittain. Se antaa myös ehdotuksia, jos jokin työkalu vie paljon tilaa tai muistitiedostot ovat paisuneet. `/context all` listaa lisäksi otsikon **Memory files** alla kaikki CLAUDE.md- ja muistitiedostot, jotka latautuivat. Tämä on nopein tapa tarkistaa, näkeekö Claude ylipäätään ohjeesi.

`/usage` näyttää session kulut, tilauksen käyttörajat ja aktiivisuuden. Pro-, Max-, Ultra-, Team- ja Enterprise-tilauksissa se erittelee käytön skillien, subagenttien, pluginien ja MCP-palvelimien mukaan. Se myös huomauttaa, jos esimerkiksi pitkä konteksti tai välimuistin ohitukset vievät yli 10 % käytöstäsi. `/cost` on saman komennon alias.

---

## /clear vai /compact: kumpi ja milloin

Näistä kahdesta komennosta on eniten hyötyä, ja ne sekoitetaan usein keskenään.

### /clear: uusi tehtävä, tyhjä pöytä

`/clear` aloittaa uuden keskustelun tyhjällä kontekstilla. Vanha keskustelu ei katoa, vaan siihen pääsee takaisin komennolla `/resume`. Komennolla on myös aliakset `/reset` ja `/new`.

Käytä sitä aina, kun vaihdat kokonaan eri tehtävään. Kirjautumisbugin jälkeen et tarvitse sen historiaa, kun alat kirjoittaa sähköpostipohjia. Hyvä tapa on antaa vanhalle keskustelulle nimi samalla:

```text
/clear kirjautumisbugi
```

Nyt löydät sen `/resume`-listasta nimellä. `/clear` ei maksa mitään.

Toinen hyvä hetki on epäonnistunut korjaus. Jos olet korjannut samaa asiaa kahdesti ja se on yhä väärin, kolmas korjaus lisää vain keskusteluun kolmannen epäonnistuneen yrityksen. Claude Coden dokumentaatio suosittelee silloin `/clear` ja yhtä uutta, parempaa promptia, johon kirjoitat sen, mitä opit.

### /compact: sama tehtävä, kevyempi historia

`/compact` tiivistää keskustelun tähänastisen osan ja jatkaa samaa keskustelua. Sille voi antaa ohjeen siitä, mitä tiivistelmän pitää säilyttää:

```text
/compact keskity API-muutoksiin ja testikomentoihin
```

Ilman ohjetta Claude arvaa itse, mikä on tärkeää. Ohjeen kanssa tiivistelmä pitää sen, minkä sinä valitset. Tee näin erityisesti ennen kuin aloitat pitkän uuden vaiheen samassa tehtävässä.

Yksi asia kannattaa tietää: `/compact` lukee koko keskustelun tiivistääkseen sen. Pitkässä sessiossa se on siis itsessään iso pyyntö, varsinkin jos välimuisti on jo vanhentunut. Jos et tarvitse historiaa ollenkaan, `/clear` on halvempi.

### Automaattinen tiivistys

Claude Code tiivistää keskustelun automaattisesti, kun konteksti lähestyy rajaa, joten täysi ikkuna ei lopeta sessiota. Rajan voi säätää komennolla `/autocompact`:

```text
/autocompact 500k
```

Arvo `auto` palauttaa mallille viritetyn oletuksen. Asetus tallentuu käyttäjän asetuksiin.

### Osittainen tiivistys /rewind-komennolla

`/rewind` (tai Esc kahdesti tyhjässä kehotteessa) avaa valikon, jossa voit palauttaa koodin, keskustelun tai molemmat aiempaan kohtaan. Samasta valikosta voi valita viestin ja tiivistää vain osan keskustelusta valinnoilla **Summarize from here** tai **Summarize up to here**. Se on hyvä silloin, kun keskustelun alku on yhä olennainen mutta loppu on vanhentunut.

Huomaa, että tarkistuspisteet kattavat vain tiedostot, joita Claude muokkasi omilla muokkaustyökaluillaan. Pelkällä Bash-komennolla muutettua tiedostoa ei palauteta. Git on edelleen varsinainen turvaverkko.

---

## Mitä tiivistyksen jälkeen jää

Moni pelkää, että `/compact` vie ohjeet mukanaan. Osa jää, osa ei:

| Asia | Tiivistyksen jälkeen |
|---|---|
| Projektin juuren CLAUDE.md ja säännöt ilman `paths`-kenttää | Luetaan uudelleen levyltä |
| Auto memory | Luetaan uudelleen levyltä |
| Plan moden suunnitelma | Luetaan uudelleen levyltä |
| Alikansioiden CLAUDE.md-tiedostot | Latautuvat taas tarpeen mukaan |
| Säännöt, joissa on `paths`-kenttä | Latautuvat taas tarpeen mukaan |
| Luetut ja muokatut tiedostot | Enintään viisi viimeksi muokattua luetaan uudelleen |
| Käytettyjen skillien sisältö | Palautetaan, enintään 5 000 tokenia skilliä kohden ja 25 000 yhteensä |
| Keskustelussa annetut ohjeet | Tiivistyvät muun keskustelun mukana |

Viimeinen rivi on se, joka yllättää. Jos sanoit keskustelun alussa "älä koske migraatioihin" etkä kirjoittanut sitä mihinkään tiedostoon, ohje voi kadota tiivistelmässä. Pysyvät säännöt kuuluvat CLAUDE.md-tiedostoon.

Tiivistyksen voi myös ohjata pysyvästi. Lisää projektin juuren CLAUDE.md-tiedostoon oma osio:

```markdown
# Compact instructions

Tiivistäessäsi säilytä testien tulokset ja koodimuutokset.
```

---

## CLAUDE.md-hierarkia: mikä tiedosto latautuu mistä

CLAUDE.md on Markdown-tiedosto, jonka Claude lukee session alussa. Niitä voi olla useassa paikassa, ja jokaisella on oma laajuutensa:

| Taso | Sijainti | Kenelle |
|---|---|---|
| Organisaatio | macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`, Linux ja WSL: `/etc/claude-code/CLAUDE.md` | Kaikille organisaation käyttäjille |
| Käyttäjä | `~/.claude/CLAUDE.md` | Vain sinulle, kaikissa projekteissa |
| Projekti | `./CLAUDE.md` tai `./.claude/CLAUDE.md` | Tiimille versionhallinnan kautta |
| Paikallinen | `./CLAUDE.local.md` | Vain sinulle, tässä projektissa |

Tiedostot eivät korvaa toisiaan, vaan ne liitetään kontekstiin peräkkäin. Järjestys kulkee laajimmasta tarkimpaan, eli projektin ohje tulee käyttäjän ohjeen jälkeen. Hakemistopuussa sisältö järjestetään juuresta työkansioosi päin, joten käynnistyskansiota lähimpänä olevat ohjeet luetaan viimeisinä. Samassa kansiossa `CLAUDE.local.md` tulee `CLAUDE.md`:n perään.

Alikansiot toimivat eri tavalla. Työkansion alla olevat CLAUDE.md-tiedostot eivät lataudu käynnistyksessä, vaan vasta kun Claude lukee, kirjoittaa tai muokkaa jotain tiedostoa siinä alikansiossa. Monorepossa tämä on hyvä asia: frontendin ohjeet eivät vie tilaa, kun teet backendiä.

Muutama käytännön asia:

- **`CLAUDE.local.md` gitignoreen.** Se on henkilökohtaisille asioille, kuten oman testiympäristösi osoitteille.
- **Importit `@`-syntaksilla.** `See @README for project overview` tuo README:n kontekstiin. Importit auttavat järjestämään, mutta eivät säästä tilaa, koska tuotu tiedosto latautuu yhdessä CLAUDE.md:n kanssa.
- **HTML-kommentit poistetaan.** Lohkotason HTML-kommentit poistetaan ennen kuin sisältö menee kontekstiin. Niihin voi jättää ihmisille tarkoitettuja huomioita ilman, että ne maksavat tokeneita.
- **`/init` tekee pohjan.** Se analysoi koodin ja kirjoittaa CLAUDE.md:n, jossa on build- ja testikomennot ja löydetyt käytännöt. Siitä eteenpäin työ on lähinnä rivien poistamista.

Mitä tiedostoon kannattaa kirjoittaa, on käyty läpi tarkemmin oppaassa [miten kirjoittaa hyvä CLAUDE.md](/blogi/miten-kirjoittaa-hyva-claude-md). Lyhyt versio: kirjoita vain se, mitä Claude ei voi päätellä koodista. Esimerkiksi tällainen tiedosto riittää monelle projektille:

```markdown
# Komennot
- Asennus: pnpm install
- Yksi testitiedosto: pnpm vitest run polku/tiedostoon.test.ts
- Tyyppitarkistus: pnpm tsc --noEmit

# Käytännöt
- Käytä virheapufunktioita tiedostosta src/lib/errors.ts, älä heitä pelkkiä merkkijonoja
- src/legacy/ on yhä käytössä, mutta älä kopioi sen malleja uuteen koodiin

# Sudenkuopat
- Integraatiotestit tarvitsevat DATABASE_URL-muuttujan, katso .env.example
```

### Kuinka pitkä CLAUDE.md saa olla

Dokumentaation suositus on alle 200 riviä tiedostoa kohden. Jokainen rivi vie vähän Clauden huomiota jokaisessa tehtävässä, liittyi se tehtävään tai ei. Pitkä tiedosto vie enemmän kontekstia ja heikentää noudattamista.

Jos tiedosto on paisunut, `/doctor` ehdottaa poistettavaksi asioita, jotka Claude voi päätellä koodista itse, kuten kansiorakenteita ja riippuvuuslistoja. `/doctor prompt-audit` etsii vanhentuneita, keskenään ristiriitaisia ja olemattomiin tiedostoihin viittaavia ohjeita.

---

## Polkukohtaiset säännöt .claude/rules-kansiossa

Kun ohje koskee vain osaa koodista, sitä ei kannata pitää CLAUDE.md:ssä. Tee siitä sääntö kansioon `.claude/rules/` ja rajaa se poluilla:

```markdown
---
paths:
  - "src/api/**/*.ts"
---

# API-säännöt

- Jokaisessa endpointissa on syötteen validointi
- Käytä yhteistä virhevastauksen muotoa
```

Tämä sääntö latautuu vasta, kun Claude lukee tai muokkaa tiedostoa, joka täsmää polkuun `src/api/**/*.ts`. Säännöt ilman `paths`-kenttää latautuvat käynnistyksessä samalla painoarvolla kuin `.claude/CLAUDE.md`.

Muista tiivistyksen erikoisuus: polkukohtaiset säännöt latautuvat viestihistoriaan, joten tiivistys vie ne muun mukana. Ne palaavat, kun Claude koskee taas täsmäävään tiedostoon. Jos säännön on pakko pysyä aina mukana, poista siitä `paths`-kenttä tai siirrä se juuren CLAUDE.md:hen.

Monivaiheiset menettelyt, kuten julkaisu tai tietokantamigraatio, sopivat paremmin skilleiksi. Skillin koko sisältö latautuu vasta, kun sitä käytetään. Lisää aiheesta [skillien oppaassa](/blogi/claude-code-skillit).

---

## Auto memory: muistiinpanot, jotka Claude kirjoittaa itse

CLAUDE.md on sinun kirjoittamasi. Auto memory on toinen järjestelmä, jossa Claude kirjoittaa muistiinpanot itse. Se tallentaa neljää lajia asioita:

- `user`: roolisi, osaamisesi ja työtapasi
- `feedback`: korjaukset, joita annat, ja tavat, jotka hyväksyt
- `project`: käynnissä oleva työ, aikataulut ja päätökset, joita ei näe koodista
- `reference`: mistä löytyy tietoa projektin ulkopuolelta, esimerkiksi tikettijärjestelmä

Claude ei tallenna asioita, jotka voi päätellä koodista, eikä asioita, jotka CLAUDE.md jo kertoo. Se ei myöskään tallenna jotain joka kerta, vaan vain silloin, kun tiedosta olisi hyötyä myöhemmin.

Muistiinpanot ovat kansiossa `~/.claude/projects/projekti/memory/`. Kansio määräytyy git-repositorion mukaan, joten saman repositorion kaikki worktreet ja alikansiot jakavat saman muistin. Rinnakkaisista sessioista lisää [worktree-oppaassa](/blogi/claude-code-git-worktree-rinnakkain). Muisti on konekohtainen eikä siirry koneelta toiselle.

Kansiossa on sisällysluettelona toimiva `MEMORY.md` ja yksi tiedosto kutakin muistiinpanoa kohden. `MEMORY.md`:n ensimmäiset 200 riviä tai 25 kt, kumpi tahansa tulee ensin, ladataan jokaisen session alussa. Yksittäiset aihetiedostot Claude lukee vasta, kun tarvitsee niitä.

Jos haluat Clauden muistavan jotain, sano se suoraan: "muista, että tässä projektissa käytetään pnpm:ää". Se menee auto memoryyn. Jos haluat sen CLAUDE.md:hen, pyydä "lisää tämä CLAUDE.md:hen" tai muokkaa tiedostoa itse.

Auto memory on oletuksena päällä paikallisissa sessioissa. Hallinta tapahtuu `/memory`-komennolla. Se listaa CLAUDE.md-tiedostosi, avaa ne editoriin, näyttää muistikansion ja siinä on kytkin, jolla auto memoryn saa päälle tai pois. Yhdessä projektissa sen saa pois projektin asetuksilla:

```json
{
  "autoMemoryEnabled": false
}
```

Kaikki muistiinpanot ovat tavallista Markdownia, joten voit lukea, korjata ja poistaa niitä vapaasti.

---

## Kun Claude ei noudata CLAUDE.md:tä

Tämä on yleisin turhautuminen, ja syy on yleensä sama. Claude käsittelee CLAUDE.md:tä kontekstina, ei pakottavana asetuksena. Sisältö toimitetaan käyttäjäviestinä järjestelmäkehotteen jälkeen. Claude yrittää noudattaa sitä, mutta varmaa se ei ole, varsinkaan epämääräisten tai ristiriitaisten ohjeiden kohdalla.

Tarkistuslista:

1. **Latautuiko tiedosto?** Aja `/context all` ja katso otsikon **Memory files** alla oleva lista. Alikansion CLAUDE.md ei näy siinä, koska se latautuu vasta tarpeen mukaan.
2. **Onko ohje tarkka?** "Käytä kahden välilyönnin sisennystä" toimii paremmin kuin "muotoile koodi siististi".
3. **Onko ristiriitoja?** Jos kaksi tiedostoa ohjeistaa samaa asiaa eri tavalla, Claude voi valita kumman tahansa.
4. **Onko tiedosto liian pitkä?** Ohje voi hukkua joukkoon. IMPORTANT-sanan lisääminen ei yleensä auta.

Jos sääntö ei saa koskaan joustaa, se ei kuulu CLAUDE.md:hen ollenkaan. Esimerkiksi "aja testit ennen jokaista committia" toimii luotettavasti vain hookina, joka ajetaan joka kerta riippumatta siitä, mitä Claude päättää. Hookien teosta kertoo [hookien opas](/blogi/claude-code-hookit).

---

## Näin pidät session kevyenä

Kun perusteet ovat selvät, kevyt sessio on lähinnä tapoja:

- **`/clear` tehtävien välillä.** Nimeä vanha keskustelu samalla, niin löydät sen.
- **Anna subagentin lukea isot asiat.** [Subagentti](/blogi/claude-code-subagentit) tekee työnsä omassa kontekstissaan, ja sinulle palaa vain yhteenveto. Testiajot, lokit ja dokumentaation haku ovat hyviä ehdokkaita.
- **Siirrä erityisohjeet skilleihin.** Skill latautuu vasta käytettäessä, CLAUDE.md joka kerta.
- **Kytke käyttämättömät MCP-palvelimet pois.** `/mcp` näyttää palvelimet. Komentorivityökalut kuten `gh` ovat usein kevyempiä kuin MCP-palvelin. Lisää [MCP-oppaassa](/blogi/claude-code-mcp-opas).
- **Kirjoita tarkka prompt.** "Paranna tätä koodia" saa Clauden lukemaan laajasti. "Lisää syötteen validointi kirjautumisfunktioon tiedostossa auth.ts" pitää lukemisen pienenä.
- **Sivukysymys `/btw`-komennolla.** Se vastaa nopeaan kysymykseen lisäämättä mitään keskusteluhistoriaan.
- **Pysäytä ajoissa.** Esc keskeyttää Clauden heti, kun se lähtee väärään suuntaan, ja kaikki siihen asti tehty säilyy.

Taukojen vaikutus kannattaa tuntea. Välimuisti kestää tilauksella noin tunnin ja API-avaimella noin viisi minuuttia. Tauon jälkeinen ensimmäinen viesti lukee koko kontekstin uudelleen täydellä hinnalla. Jos lounaan jälkeen aloitat uuden tehtävän, uusi sessio on halvempi kuin vanhan jatkaminen.

---

## Esimerkki: yksi päivä, kolme tehtävää

Näin edellä kuvatut asiat näkyvät tavallisena työpäivänä. Aamulla korjaat lomakkeen validointibugin. Annat tarkan promptin, Claude korjaa ja ajaa testit. Valmis.

```text
/clear lomakebugi
```

Seuraavaksi iso tehtävä: maksuintegraation refaktorointi. Aloitat [plan modessa](/blogi/claude-code-plan-mode), hyväksyt suunnitelman ja annat Clauden tehdä. Parin tunnin jälkeen `/context` näyttää, että historia on kasvanut isoksi ja siinä on paljon vanhoja testitulosteita. Tehtävä on kesken, joten tyhjentäminen olisi väärä valinta:

```text
/compact säilytä refaktoroinnin suunnitelma, jäljellä olevat vaiheet ja testikomennot
```

Iltapäivällä huomaat, että Claude käyttää yhä vanhaa virheapufunktiota, vaikka korjasit sen aamulla. Korjaus oli pelkästään keskustelussa ja katosi `/clear`-komennon mukana. Pyydät Claudea lisäämään säännön CLAUDE.md:hen, jolloin se on mukana jokaisessa sessiossa tästä eteenpäin.

---

## Yhteenveto

Konteksti on Clauden työmuisti yhden session ajan, ja CLAUDE.md sekä auto memory ovat sen pitkäkestoinen muisti. `/clear` vaihtaa tehtävää ilmaiseksi, `/compact` keventää käynnissä olevaa tehtävää, ja `/context` kertoo, mistä tila koostuu. Pysyvät ohjeet kirjoitetaan tiedostoon, ja ehdottomat säännöt hookeiksi.

Aloita ajamalla `/context all` nykyisessä projektissasi. Katso, mitkä tiedostot latautuvat ja kuinka paljon tilaa ne vievät. Siitä näet nopeasti, mitä kannattaa karsia. Lisää arjen niksejä löytyy [Claude Coden käytännön vinkeistä](/blogi/claude-code-kaytannon-vinkit) ja koko työkalun perusteet [Claude Coden oppaasta](/blogi/claude-code-opas).

Kaikki Claude Code -oppaat asennuksesta laajennuksiin on aiheittain [Claude Code -oppaiden sivulla](/vibekoodaus/claude-code).
