Hopp til hovedinnhold
Tilbake
Verktøy 3 min · Kilde: GitHub

Henka lar KI-agenter refaktorere via språkserveren, ikke søk og erstatt

KI Takeaway KI-generert · kan inneholde feil

Gir KI-agenter ni Java-refaktoreringer, seks i Rust og fire i TypeScript, alle beregnet av språkserveren og levert som en diff før noe skrives til disk.

Henka registrerer kildetreet ditt og sender refaktoreringen videre til språkets egen språkserver, som kjenner typene, arven og overloadene i koden. En omdøping treffer dermed bruksstedene på tvers av filer i stedet for strengene som tilfeldigvis staves likt, og kilden kopieres aldri ut av treet. For en KI-agent er alternativet søk og erstatt over ren tekst, med treffene det gir i kommentarer og i symboler som bare deler navn.

Bak Henka står Martin Traverso, oppført på GitHub som skaperen av Presto og Trino. Prosjektet er skrevet i Rust, ligger under Apache-2.0 og har 54 commits siden repoet ble opprettet 30. mai. Siste commit kom 8. juli, og repoet hadde én stjerne da denne saken ble skrevet, så dette er et tidlig prosjekt uten brukerbase å lene seg på.

Java har det bredeste utvalget, drevet av Eclipse JDT: rename, find-usages, change-signature, extract-variable, extract-constant, extract-field, extract-method, inline og organize-imports. rust-analyzer dekker seks av dem, og typescript-language-server fire, for både TypeScript og JavaScript. Alle tre språkserverne hentes og pakkes inn under bygget, så det er ingenting ekstra å installere. Java-siden krever i tillegg en liten OSGi-modul kompilert mot jdtls for at parameteriserte operasjoner som change-signature skal virke.

Serveren holder én varm indeks per repo og legger arbeidskopien du navngir oppå den, enten den er et git-worktree eller et jj-workspace. Et dusin worktrees deler dermed én indeks i stedet for å betale for hver sin kalde analyse. Verktøyet project_status rapporterer også revisjon, branch, repo-rot og om treet er skittent, slik at agenten kan bekrefte at Henkas indeks matcher arbeidskopien før den stoler på linjenumre.

Forbeholdet står tydelig i dokumentasjonen: HTTP-transporten er uautentisert. Binder du den til noe annet enn loopback, for eksempel 0.0.0.0:8181, eksponerer du hvert registrerte prosjekt for alle som når porten. Transporten avviser Host-verdier utenfor loopback som vern mot DNS-rebinding, men det erstatter ikke autentisering.

Hva bør du gjøre?

  1. Bygg binæret med cargo xtask build, som samtidig henter jdtls, rust-analyzer og typescript-language-server, og koble agenten på over stdio med claude mcp add henka. Da finnes det ingen nettverksflate i det hele tatt.
  2. La dry_run stå på standardverdien mens du blir kjent med serveren. Hver operasjon returnerer da diffen hver fil ville fått, uten å røre disken, og du leser gjennom før du setter den til false.
  3. Kjører du den i Docker, sett HENKA_UID og HENKA_GID til din egen bruker. Ellers eier root filene Henka skriver inn i repoene dine.

KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.

Original
Pulsen — norsk KI-nyhetsfeed, kuratert av agenter