Spring til indhold
DApks-cliopencodekimi-k3glm-5.2coding-agentsexperiments

Jeg gav Kimi K3 samme opgave. Den fandt GLM's facitliste

Kimi K3 havde højere listepriser end GLM 5.2, men løste alligevel OpenCode-opgaven billigere ved at finde og genbruge GLM's arbejde. Det er ikke en benchmark — det er et interessant agenteksperiment.

Scoret for

Kimi K3 løste opgaven billigere end GLM 5.2. Bagefter åbnede jeg sessionen og så, hvad den egentlig havde lavet.

Først gav jeg GLM 5.2 en opgave i OpenCode: Lav en LinkedIn-karrusel om, hvor nemt det er at starte modellen gennem pks-cli. Da den var færdig, bad jeg den også skrive dokumentationen til agentics.dk/tools.

Et par dage senere gav jeg Kimi K3 de samme to prompts. Da jeg regnede efter, havde Kimi-forløbet kostet cirka $2,44 mod GLM's $6,91.

Min første antagelse var, at Kimi simpelthen var den billigere model. Det var forkert. Moonshots almindelige Kimi-input kostede $3/M mod GLM's $1,80/M, og Kimi-output kostede $15/M mod GLM's $5,50/M. En model med højere listepriser blev alligevel billigst, fordi agenten kunne genbruge arbejdet og ramte Moonshots input-cache.

Så kiggede jeg i OpenCode-sessionen.

Kimi havde fundet GLM's færdige karrusel i repositoryet.

De fik samme opgave

GLM fik denne rå prompt, gengivet præcis som den blev skrevet:

human promptOpenCode · GLM 5.2
1 lines
Kan du ikke lave en linkedin karossel der viser hvor nemt det er at køre opencode med glm 5.2 på scaleway med pks-cli opencode --model glm5.2. der er lidt baggrund i codex session 019fb9cd-77f2-7f03-93eb-4ddd167e0586 hvor jeg lige har implmenteret denne command som du er startet med

Kimi fik samme opgave med model, provider og commit skiftet ud:

human promptOpenCode · Kimi K3
1 lines
Kan du ikke lave en LinkedIn-karussel der viser, hvor nemt det er at køre OpenCode med Kimi K3 på Moonshot med `pks opencode --model kimi-k3`. Der er lidt baggrund i git commit `57d0e98`, hvor jeg lige har implementeret denne command, som du er startet med.

Begge fik derefter den samme followup:

human promptOpenCode · followup
1 lines
Den virker - kan du så ikke også sikre dig at pks-cli har guides og documentation der releases om præcis at bruge den på agentics.dk/tools som der nævnes.

Det var ikke planlagt som en videnskabelig benchmark. Men jeg forventede alligevel, at Kimi ville løse opgaven nogenlunde selvstændigt ud fra koden og den eksisterende designstruktur.

Det var ikke helt det, der skete.

Den fandt den perfekte skabelon

Kimi startede fornuftigt: Den læste repositoryet, fandt committen og undersøgte de eksisterende marketing-assets.

Så noterede den i sit ræsonnement:

There's a previous carousel marketing/linkedin/opencode-glm-5-2-scaleway which is the previous version of this exact same story. Let me look at how that's structured — it's the perfect template for this new carousel.

Derefter læste den direkte:

  • GLM-karrusellens carousel.html
  • dens build.mjs
  • LinkedIn-opslagsteksten
  • preview-siden

Og så byggede den en Kimi-version med samme mappestruktur, samme build-flow, samme syv slides og samme visuelle system.

Samme opgave, to karuseller

Skift slide for at sammenligne GLM 5.2 og Kimi K3 side om side.

GLM 5.2Slide 1 af 7
LinkedIn-karrusel lavet af GLM 5.2 — slide 1
Kimi K3Slide 1 af 7
LinkedIn-karrusel lavet af Kimi K3 — slide 1

En almindelig linjevis diff gør genbruget tydeligt:

FilLinjerÆndrede linjer
carousel.html32731
build.mjs11429
linkedin.da.md4317
preview.html542

På tværs af de fire filer var cirka 85 procent af linjerne byte-for-byte uændrede. Det tal skal ikke oversælges: Meget af det er CSS, rendering og anden boilerplate, som netop bør genbruges. Men Kimi skabte ikke en uafhængig visuel løsning. Den lavede en kompetent tilpasning af GLM's arbejde.

Den dyrere model leverede den billigste kørsel

OpenCode kendte ikke Kimi K3's priser og viste derfor $0. Sessionen havde dog gemt alle token-tal, så forbruget kunne beregnes med Moonshots priser for cache-hit input, almindeligt input og output.

Det var en lidt pudsig forskel i selve forsøget: Med GLM kunne jeg se dollartælleren vokse direkte i OpenCode. Med Kimi viste tælleren nul, selv om Moonshot naturligvis stadig trak forbruget fra min konto. Jeg måtte derfor eksportere sessionen og regne efter på de gemte tokens.

Det OpenCode viste — og det sessionerne faktisk kostede

Samme forløb: LinkedIn-karrusel og efterfølgende dokumentation.

Kimi K3

Moonshot · 70 modelkald

Beregnet fra sessionen

$2.44

OpenCode viste$0
Almindeligt input113.35K
Cache-hit input4.95M
Output + reasoning40.69K

$3/M almindeligt input · $0.30/M cache-hit input · $15/M output og reasoning

GLM 5.2

Scaleway · 55 modelkald

Beregnet fra sessionen

$6.91

OpenCode viste$6.91
Almindeligt input3.76M
Cache-hit input0
Output + reasoning24.03K

$1.80/M input · $5.50/M output. OpenCode havde GLM-priserne i sit modelkatalog og kunne derfor vise prisen løbende.

Den orange bjælke viser andelen af input, der blev leveret fra cachen. For Kimi var det 97,8 procent; GLM-forløbet registrerede ingen cache-hit input.

OpgaveKimi K3GLM 5.2
Karusselca. $0,84ca. $2,77
Dokumentationca. $1,60ca. $4,14
Samletca. $2,44ca. $6,91

GLM-tallet inkluderer den underagent, der hentede kontekst fra den oprindelige Codex-session. Kimi lavede altså flere modelkald — 70 mod 55 — men sendte kun 113.347 almindelige input-tokens. Yderligere 4.954.624 input-tokens ramte Moonshots cache og kostede en tiendedel af den almindelige inputpris.

Kimi var altså 67 procent dyrere på almindeligt input og næsten tre gange så dyr på output. Det billige element var cache-hit input til $0,30/M. Den konkrete kørsel blev billigere, fordi næsten 98 procent af dens input ramte den cache, og fordi agenten kunne genbruge det arbejde, GLM allerede havde lagt i repositoryet.

En model med højere listepriser kan stadig være billigst til opgaven, hvis agentens arbejdsform reducerer mængden af dyrt arbejde.

Det er stadig nyttige driftstal. Hvis jeg giver Kimi en opgave i et repository med et nært beslægtet eksempel, kostede den konkrete opgave cirka $2,44.

Men tallene siger ikke, at Kimi er 65 procent bedre eller billigere til at skabe en karrusel og dokumentation fra bunden. Den havde adgang til en løsning, GLM ikke havde adgang til.

Jeg benchmarkede ikke to isolerede modeller. Jeg observerede to agenter på forskellige tidspunkter i et repository, der havde fået mere hukommelse mellem første og andet forsøg.

Det er en fejl i et benchmark — og en styrke i arbejdet

Hvis formålet var en ren benchmark, var forsøget forurenet. Jeg skulle have brugt to rene worktrees, skjult den første models output og givet begge en ny, men tilsvarende opgave.

Men det er ikke sådan, jeg normalt ønsker, at en coding agent arbejder.

I et rigtigt repository forventer jeg, at agenten:

  1. leder efter eksisterende løsninger,
  2. genbruger design og etablerede mønstre,
  3. undgår at opfinde endnu et build-flow,
  4. tilpasser tidligere arbejde til den nye opgave,
  5. verificerer resultatet.

Kimi “snød” kun, hvis opgaven var at bevise sin egen kreativitet under laboratorieforhold. Opgaven var i virkeligheden at levere en karrusel og dokumentation, der passede ind i et eksisterende produkt. Til det formål gjorde den det rigtige.

Det interessante er derfor ikke, hvilken model der vandt. Det interessante er, hvor meget bedre agenter bliver, når repositoryet allerede indeholder gode eksempler, dokumentation og tidligere artefakter.

pks-cli er indgangen, ikke dommeren

Jeg bygger ikke pks-cli for at kåre én model som den bedste. Jeg bygger det for at gøre det nemt at starte den agent og model, der passer til opgaven.

GLM-forløbet startede sådan:

pks opencode --model glm-5.2

Kimi-forløbet startede sådan:

pks moonshot init
pks opencode --model kimi-k3

pks-cli finder provideren ud fra modellen, genbruger de credentials, der allerede er registreret, og starter det rigtige værktøj uden at lægge secrets i argumentlisten eller skrive dem ind i OpenCodes konfiguration.

Det gør ikke eksperimentet videnskabeligt. Det gør det nemt at lave eksperimentet — og bagefter bruge den model, der faktisk løser arbejdet bedst i den kontekst, den får.

Sig endelig til, hvis du savner en bestemt agent, model eller provider i pks-cli.

Foreslå en agent, model eller provider →

Du kan også se den aktuelle opsætning i pks opencode-dokumentationen.