djdocujAI · journallive

docujAI ApS · Allerød · siden februar 2025

Hvad vi har lært om AI, skrevet som en log.

Hver time, hvert blogindlæg og hver lektion på denne side er en hændelse i en append-only strøm. Siden gemmer ingen tilstand. Den folder strømmen, hver gang du kigger, og skubber ændringer ud til dig, mens de sker.

954timer logget
594arbejdsblokke
141blogindlæg
18lektioner
0nik fra læsere
753hændelser i strømmen
.cat --follow -T dj.*nyeste først
  1. dj.post.b98.publishedFra Pixi-bog til doktorafhandling: Hvor svær er din webshop at læse?03gz4k24w1dy
  2. dj.post.b97.publishedFire billeder. Og en udgivelsesrutine, der kontrollerer sit eget arbejde03gz4k24vvx2
  3. dj.post.b96.publishedWhat's up, doc03gz4k24vvx2
  4. dj.session.s20261002150000-160000.loggedcontent · 1t 00m03gz4k24vfih
  5. dj.session.s20261002104500-150000.loggedudvikling · 4t 15m03gz4k24va1m
  6. dj.session.s20261002101500-104500.loggedsalg · 0t 30m03gz4k24va1m
  7. dj.session.s20261002093000-101500.loggedcontent · 0t 45m03gz4k24v4kr
  8. dj.session.s20261002080000-093000.loggedudvikling · 1t 30m03gz4k24v4kr
  9. dj.session.s20261001130752-135948.loggeddrift · 0t 52m03gz4k24uz3w
  10. dj.session.s20261001114108-130752.loggedudvikling · 1t 27m03gz4k24uz3w
  11. dj.session.s20261001090421-114108.loggeddrift · 2t 37m03gz4k24utn1
  12. dj.session.s20260929171809-191652.loggedudvikling · 1t 59m03gz4k24uo66
  13. dj.session.s20260929141641-171809.loggedsalg · 3t 01m03gz4k24uo66
  14. dj.session.s20260929131500-141500.loggedmarketing · 1t 00m03gz4k24uipb

00Lige nu

Seneste fra timeloggen

  • blog-98 «Fra Pixi-bog til doktorafhandling: Hvor svær er din webshop at læse?» skrevet og udgivet som https://docujai.com/da/node/292 om Topify, sprogmål fra redaktionen, jev, LLM og polars, derefter opdateret ude…
  • Topify: sprogmål fra comma (fraser, skabelontekst, næsten ens beskrivelser med MinHash i polars, kendetegnende ord pr. kategori, hapax, ord i kontekst, produktpåstande), gjort klar til cross.stream uden lokale modul…
  • blog-97 «Fire billeder. Og en udgivelsesrutine, der kontrollerer sit eget arbejde» skrevet og udgivet som https://docujai.com/da/node/291
  • Folkets' udgivelsesmodul: Commons-billeder indlejret i brødteksten med Drupals media embed, opdatering af en udgivet artikel via JSON:API (PATCH på node-UUID), kontrol af den gengivne HTML og cache mod Commons' rateb…
  • kb build kan nu bygge type internt: ny typst-skabelon typst/internt.typ på docujAI-identiteten, build-internt i build.nu og dokumenteret i CLAUDE.md. Mødeoplægget bygget som PDF
  • blog-96 «What's up, doc» skrevet og udgivet som node/290: to måder at regne urgency på i todo-listen, regnestykket og jev, med fordele og ulemper og pointen at AI'en får én afgrænset faktor i et regnestykke, man…
  • todu-pluginet løftet til nushell 0.116 og installeret, todu-jev lagt ind i config.nu
TidsmaskinenSpol tilbage gennem måneder, uger og dage, og se timerne, indlæggene og lektionerne, som de stod dengang.→

01Det vi har lært

Atten lektioner fra vidensbasen, hver bundet til de indlæg, der bærer den. Genkender du en, så giv den et nik. Nikket er en hændelse som alle andre, og alle, der har siden åben, ser tallet stige.

Strategi

Mål værdi, ikke tokens

Hold tre kasser adskilt: timer sparet, det I slet ikke kunne før, og færre fejl. Den anden er den mest oversete og ofte den største. Og mål modenheden først. Et ROI-mål uden en baseline er et gæt med et regneark omkring.

Kvalitet

Tillid skal kunne tjekkes, ikke tros på

Hvert udsagn i AI-genereret tekst skal pege på den kilde, det bygger på. Et udsagn uden kilde er et flag, ikke en fejl, der glider igennem. Så opdager man hallucinationen, før kunden, revisoren eller journalisten gør det.

Arkitektur

AI i en kasse, kode rundt om

Det, der virker i drift, er ikke én stor model, der gør alt. Det er klassisk, deterministisk kode, der henter, validerer og logger, og som kalder en model i afgrænsede celler, hvor sproget faktisk er opgaven. Fejl bliver lokaliserbare, og regningen falder med en faktor ti eller mere.

Arkitektur

Ikke alt skal igennem en sprogmodel

Min morgenbriefing er 142 linjer kode, kører på seks sekunder og bruger ingen sprogmodel. Meget af det, der sælges som en AI-agent, er et script med gode datakilder. Spørg først, om opgaven kræver sprog, før du betaler for sprog.

Strategi

Tre niveauer, og det fjerde afgør det

Køb det, platformen klarer. Byg selv det, der kræver jeres egne data. Hent hjælp udefra til strategi, governance og de første piloter. Men intet lykkes, hvis medarbejderne ikke tør fortælle, hvilke dele af deres arbejde der er klodsede. Det er præcis dér, automatiseringen ligger.

Sikkerhed

Shadow AI er allerede i huset

Den officielle vej tager dage, og opgaven skal løses i dag. Så medarbejderne bruger de værktøjer, I ikke har købt. Et forbud flytter bare brugen ud af syne. En policy, en godkendt liste og logning gør den synlig, så den kan styres.

Ledelse

Bestyrelsen mangler en oversætter

AI er et ledelsesansvar, ikke et IT-projekt. Bestyrelsen har ikke brug for endnu en løsning, men for de rigtige spørgsmål og et ordforråd, der gør dem stillelige. Tre minutter med de spørgsmål kan spare tre timers møde.

Kvalitet

Man kan høre, når en model skrev det

Den falske kontrast, treklangen og stakkato-fragmenterne. Hver for sig er de legitime greb, men modellen griber efter dem igen og igen. Et website har nu to læsere, og kun den ene er et menneske. Den anden lægger mærke til alt, den første også lægger mærke til.

Praksis

Delt hukommelse ændrer, hvordan man tænker

En vidensbase, som både menneske og model læser og skriver i, gør hver samtale til en fortsættelse i stedet for en ny start. Men når modellen skriver med, skal man kunne se, hvilke sider den skrev. Herkomst er ikke pynt, det er forudsætningen for at stole på basen.

Praksis

Ej dine data, lej ikke dit værktøj

Mit CRM er en tekstfil, min RSS-læser har ingen algoritme, og vidensbasen er Markdown i git. Når data er dine egne og i åbne formater, kan AI arbejde på dem uden at spørge en leverandør om lov. Shellet er platformen, og pipen er den hårdest arbejdende tast.

Sikkerhed

Truslen kommer gennem dataene

En sprogmodel kan ikke skelne instruktion fra indhold. En webside, en mail eller et transkript kan bære skjulte ordrer, og firewalls ser dem aldrig. Forsvaret er lag: mindste rettigheder, adskilt indhold og et menneske foran de handlinger, der ikke kan fortrydes.

Strategi

Modellen er blevet det billigste led

Frontier-modellerne kom samme uge og kronede ingen mester. Der er ingen voldgrav mellem labs. Spørgsmålet er ikke, hvilken model der er bedst, men hvilken opgave der skal til hvilken model, og hvilken kontekst der kan caches til en tiendedel af prisen.

Kvalitet

Tricks forældes, klarhed gør ikke

Halvdelen af sidste års prompt-tricks koster nu penge, og et af dem er ligefrem forbudt. Det, der overlever hver modelgeneration, er det samme, der virker på en ny medarbejder: en klar opgave, en tjekliste og et tydeligt billede af, hvornår man er færdig.

Kontrol

Mennesket er chefen, og timeout er ikke nej

Spørger agenten om alt, bliver den godkendt af vane. Spørger den om intet, bliver den stoppet efter første uheld. Beslutningsretten skal ligge et sted, hvor den faktisk bruges, og et system, der læser en manglende beslutning som en beslutning, træffer valg på, at nogen sad i et møde.

Kvalitet

Modellen var ikke problemet, redaktionen var

Folkets Avis producerede slop i et år. Løsningen var ikke en bedre model, men et bureaukrati på skrift: hvor tingene står, hvem der må ændre hvad, og hvornår noget må komme ud. Prompten og modellen er den mindste del af et AI-system.

Kontrol

En instruktion er ikke en mekanisme

En instruktion er noget, modellen læser og for det meste følger. En mekanisme er noget, der returnerer en fejl. Testene bestod, men for en udgave af koden, der ikke fandtes mere. En agent må først arbejde alene, når reglerne er hashes og tjek, den ikke kan tale sig uden om.

Arkitektur

Saldoen er et resultat, loggen er sandheden

Løkken holder hele sin tilstand i hukommelsen og dør ved en genstart. Grafen orkestrerer. Loggen husker alt, der skete, så man kan spole tiden tilbage og svare på, hvad systemet vidste den 4. marts. Men start med den simpleste form: under 300 fakturaer er en hændelseslog en udgift uden modydelse.

Kontrol

Den, der underviser, må ikke give karakteren

Når to modeller deler arbejdet, skal de have hver sin opgave og aldrig lave den andens. Det, der binder dem sammen, er ikke en fælles database, men en log af hændelser, som begge kan læse og ingen af dem kan omskrive.

02Indlæggene

Alt fagligt udgivet på docujai.com, ordnet efter tema. Indlæg fra før udgivelsespipelinen står som arkiv.

Strategi, måling og governance26

Metode og kvalitet21

Egne systemer og automatisering20

Værktøj og praksis15

Strategi og rådgivning11

Nushell og teknik11

Sikkerhed og risiko8

Bestyrelse og ledelse6

Vidensbase og personlig metode6

Bestyrelse5

Domæne og kognition4

Sikkerhed3

Teknisk forklaring3

AI-søgning og llms.txt2

03Sådan er siden bygget

Der er ingen database bag siden, kun en strøm af hændelser i cross.stream. Alt andet er afledt af den og kan smides væk og bygges op igen.

  1. Hændelser. dj.session.*.logged, dj.post.*.published, dj.lesson.*.learned. Ordforrådet står ét sted, og en ukendt hændelse når aldrig strømmen.
  2. En ren fold. (tilstand, hændelse) → tilstand. Ingen ur, intet netværk. Det er den, der gør tidsmaskinen mulig: fold til en anden dato, og du har fortiden.
  3. HTML på serveren. http-nu renderer hver region i Nushell og skubber den ud over SSE.
  4. Datastar i browseren. Den morpher de regioner, serveren sender. Browseren har ingen model, kun det, den får vist.

Kilderne er vidensbasen ~/docujai/ainotes og timeloggen lek.timeclock. Noter om salg, kunder og job er filtreret fra, før de når strømmen.

.last dj.*den seneste frame, som storen har den
{
  "id": "03gz4k24w1dy0qqf434arv0ha",
  "topic": "dj.post.b98.published",
  "meta": {
    "n": 98,
    "title": "Fra Pixi-bog til doktorafhandling: Hvor svær er din webshop at læse?",
    "theme": "Egne systemer og automatisering",
    "url": "https://docujai.com/da/node/292",
    "at": "2026-10-02"
  }
}
# enhver klient kan skrive til strømmen
"" | xs append ./store dj.lesson.no-llm.nodded

# og enhver kan læse den
xs cat ./store -T 'dj.lesson.*' | last 3