Oh-My-NavLogg inn

Bygget med GitHub Copilot

PersonvernTilgjengelighetGitHub

Lag en agentpakke

For pakkeforfattere

Distribuer teamets eget oppsett som noe andre team kan installere.

Kom i gangGod praksisVerktøyRetningslinjernav-pilotcpltModellpriserStatistikkAdopsjonOrdbok

Innhold

  • Hva det er
  • Lag pakka
    • Struktur
    • Artefakttyper
    • Kjørbar kode
    • Manifestet
    • Valider
    • Distribuer
  • Gjenbruk
    • Kollisjoner
  • Vedlikehold
    • Når endringen når fram
    • Pensjonering
  • Ressurser

Hva det er

En agentpakke er et git-repo som sender AI-artefakter og en fil som beskriver dem. Det finnes ingen registrering, ingen godkjenning og ingen sentral liste å komme inn på. Et repo med et gyldig manifest er en agentpakke, og den som vil ha den, peker på repoet med --source. Skal du bare bruke Nav-innholdet, trenger du ikke denne sida: nav-pilot-dokumentasjonen dekker installasjon og bruk.

Lag pakka

Struktur

Katalognavnene er dine egne. layout i manifestet peker på dem: heter katalogen innhold/agenter hos deg, skriver du det der. Filnavnene inne i katalogene er låst, se artefakttypene under. Hver agentfil åpner med YAML-frontmatter som minst har name og description.

ditt-repo/
├── .nav-pilot/
│   └── agentpakke.json
├── agents/
│   └── grillmester.agent.md
└── skills/

Artefakttyper

TypeFormHva det er
agents<navn>.agent.mdPersonaer klienten kan startes som, eller underagenter andre kaller
skills<navn>/SKILL.mdKunnskap modellen laster ved behov
instructions<navn>.instructions.mdRegler som aktiveres mot matchende filer
prompts<navn>.prompt.md eller <navn>/Ferdige spørsmål brukeren kan kjøre
hooks<navn>.py og <navn>.hook.jsonSkript som kjører ved verktøykall
extensions<navn>/extension.mjsKode klienten laster inn

Kjørbar kode

Hooks og extensions er ikke tekst en modell leser. En hook kjører ved verktøykall, en extension lastes av klienten. Den som installerer pakka di kjører koden din på maskinen sin, så si i pakkas description hva den gjør.

Manifestet

Minste form som validerer. Både agents og skills må stå i layout, også når den ene er tom. primaryAgents er de agentene brukeren kan starte klienten som; resten er underagenter andre kaller.

.nav-pilot/agentpakke.json
{
  "contractVersion": "1",
  "name": "ditt-team",
  "description": "Hva pakka er til for",
  "layout": {
    "agents": "agents",
    "skills": "skills"
  },
  "clients": {
    "copilot": {
      "primaryAgents": ["grillmester"]
    }
  }
}

Valider

nav-pilot validate --source "$PWD"
Validating: /Users/deg/ditt-repo@c3f7ca3

  ℹ manifest: .nav-pilot/agentpakke.json
  ℹ agentpakke: ditt-team (contract version 1)
  ℹ clients: copilot (tier 1)

✓ /Users/deg/ditt-repo conforms to the agentpakke contract.

Kilden må være en absolutt sti. --source . blir forsøkt klonet som et GitHub-repo og feiler, så bruk "$PWD", eller "$GITHUB_WORKSPACE" i CI. Etiketten i utdataene er kilden du oppga, ikke navnet i manifestet. Skjemaet ligger i cli/nav-pilot/schemas/agentpakke-v1.json, så CI kan linte manifestet mot det uten nav-pilot.

Distribuer

nav-pilot install ditt-team --source navikt/ditt-repo --repo

Det er hele distribusjonen. Den som installerer får .nav-pilot/agentpakke.lock.json i sitt eget repo, med kilden og revisjonen, og committer den. Da installerer hele teamet fra samme revisjon.

Gjenbruk

Vil du bygge på Nav-pakka i navikt/copilot uten å vedlikeholde en kopi av den, committer du den samme erklæringa i ditt eget pakkerepo. Repoet ditt sender da både et manifest og en erklæring, og den som installerer pakka di får begge pakkenes innhold. Erklæringa løses på nytt ved hver install og sync.

.nav-pilot/agentpakke.lock.json
{
  "contractVersion": "1",
  "source": "navikt/copilot",
  "sha": "b73a69e0000000000000000000000000000000aa"
}

sha er påkrevd for en kilde på formen owner/repo. Uten den ville gjenbruken hentet det main tilfeldigvis holdt, og to installasjoner en uke fra hverandre fikk ulikt innhold. Installasjonen sier hva den gjenbrukte:

Source: navikt/ditt-repo@c3f7ca3
Reuses: navikt/copilot@b73a69e

Kollisjoner

Sender begge pakkene en agent med samme navn, installeres din. Det er samme regel som overrides i .github/copilot-sync.json: det teamet eier selv, eier de. Å skygge et artefakt er den normale måten å endre én ting fra en pakke du ellers tar rått. Det er ikke en feil, og varsles ikke.

Vedlikehold

Når endringen når fram

Konsumentene er pinnet til revisjonen de installerte. En endring du pusher, når dem først når nav-pilot sync --apply flytter pinnen hos dem, som én linje diff i en pull request de leser og godkjenner. En rettelse er derfor ikke ute samme dag. Å endre name i manifestet gjør eksisterende installasjoner til en annen pakke, så det er ikke en omdøping du gjør i forbifarten.

Pensjonering

Slett aldri et artefakt uten å føre det opp i .nav-pilot/retired-artifacts.json. En kilde hentes med --depth 1, så brukeren har ingen historikk å slå opp i, og en fil som bare forsvinner blir liggende hos alle som installerte den. Generer lista og commit den: scripts/generate-retired i navikt/copilot leser hashene ut av git-loggen, og mise run retired:check verifiserer i CI at lista stemmer. Skriptet er rundt hundre linjer og kan kopieres.

Ressurser

Feltreferansen

Beskriver hvert felt i manifestet og erklæringa, tier, stiregler og kompatibilitet.

Skjemaet

Kontrakten binæren validerer mot, og den CI kan linte mot.