# AGENTS.md fortæller Codex, hvordan den skal arbejde. Ikke hvad der er der.

Canonical source: https://maguyva.ai/da/for-codex

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

AGENTS.md fastlægger arbejdsaftalen. MCP lader Codex tilgå værktøjer. Maguyva er MCP-serveren, der giver Codex et søgbart kort over dit repo, så den første rettelse ikke er et gæt på filstrukturen.

> AGENTS.md er aftalen. MCP er kanalen. Maguyva er kortet.

## Den lagdelte stack

Fire idéer. Hver løser én opgave.

### AGENTS.md

Hvordan Codex bør opføre sig på dette repo.

### MCP

Hvordan Codex rækker ud efter eksterne værktøjer og kontekst.

### Maguyva

MCP-serveren, der leverer forankrede repo-fakta.

### Arbejdsområder, ikke brugere

Agenter medfører ingen ekstra gebyrer pr. bruger. [Se priser](https://maguyva.ai/da/pricing)

## AGENTS.md er en arbejdsaftale. Brug den.

Vedvarende instruktioner hører hjemme i [`AGENTS.md`](https://developers.openai.com/codex/guides/agents-md). Det er det rette sted til:

- Build-, test- og lint-kommandoer, Codex bør køre.
- “Gør altid X / gør aldrig Y”-sikkerhedsregler afgrænset til en mappe.
- Navngivningskonventioner og refaktoreringspræferencer.
- Henvisninger til de kanoniske beslutningslogge og arkitekturnoter.

Hold den kortfattet. Afgræns den. Commit den.

Men `AGENTS.md` blev aldrig designet til at være et søgbart indeks over hvert symbol, hver fil og hvert kaldested i dit repo.

## Hvor AGENTS.md alene bliver statisk i stor skala

Fire svigttilstande, én pr. kort.

### // aftaler er ikke et indeks

At fortælle Codex *hvordan den skal arbejde* fortæller den ikke *hvad der findes*. Den første rettelse på en ukendt pakke er et gæt på filstier og funktionsnavne. AGENTS.md kan ikke opremse hvert symbol, og det ville du heller ikke ønske.

### // dokumentet driver væk fra koden

En AGENTS.md-blok, der beskriver din kø-topologi, er korrekt, indtil nogen introducerer en ny consumer. Koden er nu den eneste sandhed, og dokumentet er selvsikkert forældet. Codex læser det forkerte.

### // omdøbning er et grafproblem

“Hvad refererer til denne klasse?” kan ikke besvares ud fra en markdown-fil. Enten grep'er-og-håber Codex sig gennem monorepoet, eller også beder den dig indsætte kaldesteder i chatten.

### // kontekstvinduer er ikke gratis

At proppe AGENTS.md indtil Codex “ved nok” æder tokens, der burde betale for ræsonnement. Efter et par KB bytter du svarkvalitet for statisk kontekstvolumen.

## Hvordan de tre lag hænger sammen

Codex-brugere tænker allerede i denne form. Siden bør gøre det tydeligt.

- **AGENTS.md**: aftaler (hvordan Codex opfører sig)
- **MCP**: kanalen (hvordan den tilgår værktøjer)
- **Maguyva**: kodebasefakta (hvad den ser)

- **AGENTS.md**: hvordan Codex opfører sig på dette repo.
- **MCP**: hvordan Codex rækker ud efter værktøjer og kontekst. [(spec)](https://modelcontextprotocol.io/docs/getting-started/intro)
- **Maguyva**: hvad Codex ser, når den stiller kodebasen et spørgsmål. Semantisk, AST-, graf- og tekstsøgning leveret med filstier og linjenumre.

> AGENTS.md fortæller Codex *hvordan den skal arbejde*.
> Maguyva giver Codex *noget at arbejde ud fra*.

## Tre workflows

Codex-specifikke. Forankret i den faktiske kaldgraf — ikke Codex' grep.

### 01. Omdøb en delt klasse, find alle afhængige først

```text
codex> omdøb PaymentClient → BillingClient

graph::callers(PaymentClient)            12 referencer på tværs af 7 pakker
graph::importers(src/payments/client.ts)  9 importører
graph::extends(PaymentClient)             2 underklasser (RetryClient, MockClient)

→ Codex foreslår en migrering med 21 rettelser med fillisten direkte i svaret.
[exit 0]
```

Codex spørger Maguyva om afhængige *før* den begynder at rette. Migreringslisten kommer tilbage forankret i den faktiske graf — ikke Codex' erindring.

### 02. Find den rigtige implementering, ikke teststubben

```text
codex> hvordan håndterer normalizePhoneNumber E.164?

semantic::query("normalize phone E.164")
  src/util/phone.ts:88   normalizePhoneNumber()   ← rigtig impl.
  test/util/phone.spec.ts:14  jest.mock(...)      ← stub
[exit 0]
```

Navne lyver. Mocks overskygger rigtig kode. Maguyva rangerer den rigtige implementering over test-mock'en.

### 03. Tjek blast radius før en refaktorering

```text
codex> hvad kalder QueueDispatcher.publish?

graph::callers(QueueDispatcher.publish)
  3 i src/billing/*    1 i src/audit/*    1 i src/notifications/*
[exit 0]
```

Kaldesteder på tværs af pakker dukker op direkte. Diffen er forankret i de rigtige importører — ikke Codex' grep.

## Opsætning i Codex CLI

Tre trin. Free-niveau: 3 repos, Op til 50K indekserede repo-linjer, intet kreditkort.

### 01. Indekser et repo på maguyva.ai

Vælg ét, du kender godt, så du kan verificere svarene.

### 02. Tilføj Maguyva som en MCP-server i din Codex-konfiguration

`~/.codex/config.toml`

```text
export MAGUYVA_API_KEY=mgv_xxxx
codex mcp add maguyva --url https://maguyva.tools/mcp --bearer-token-env-var MAGUYVA_API_KEY
```

```toml
[mcp_servers.maguyva]
url = "https://maguyva.tools/mcp"
bearer_token_env_var = "MAGUYVA_API_KEY"
```

### 03. Stil ét spørgsmål, du allerede kender svaret på

Start ikke med hele din virksomhed. Start med ét repo og ét verificerbart spørgsmål.

## Indekser ét repo, du allerede kender.

Forbind Codex over MCP. Stil ét spørgsmål, du kan verificere svaret på.
