Ir al contenido

Tutorial · Go

Backend · Tiempo estimado: ~12 min · Iteraciones Karajan: 1–2

Este tutorial te lleva desde un directorio vacío hasta una feature mergeada en un pequeño módulo Go usando la librería estándar más go test. También cubre la variante Cobra si quieres un binario CLI real por encima.

Deberías haber completado el setup común: npm install -g karajan-code, kj init dentro del proyecto y un kj doctor verde. Si kj doctor está rojo, arréglalo antes — kj run se negará a arrancar.

También necesitas Go 1.22+ (go version).

  1. Bootstrapea el proyecto.

    Ventana de terminal
    mkdir hello-go && cd hello-go
    go mod init dev.kj/hello
    git init -b main && git add -A && git commit -m "chore: scaffold"

    Crea un esqueleto mínimo en greeter.go para que Karajan tenga algo que extender:

    package hello
    // Greet devuelve el saludo para el nombre dado.
    // Implementación pendiente — Karajan la rellena.
    func Greet(name string) string {
    return ""
    }
  2. Inicializa Karajan en el repo.

    Ventana de terminal
    kj init
    kj doctor

    kj init crea .karajan/ y escribe la configuración del orquestador; kj doctor confirma que los CLIs de los agentes, Docker, Ollama, los puertos están sanos y detecta la toolchain de Go.

  3. Describe la feature en lenguaje natural.

    Sin fichero de spec. Sin JSON. Solo la tarea como se la dirías a un compañero:

    Ventana de terminal
    kj run "Implementa Greet(name string) en greeter.go para que \
    devuelva 'Hello, <name>!'. Si name está vacío, devuelve \
    'Hello, stranger!'. Añade un test table-driven en greeter_test.go \
    cubriendo ambos casos más un nombre unicode." \
    --methodology tdd \
    --coder claude \
    --reviewer codex \
    --reviewer-fallback claude \
    --max-iterations 5
  4. Mira el run en el HU Board.

    Abre http://localhost:4000 en otra pestaña mientras el pipeline corre. Verás, en tiempo real:

    • Cada rol activándose (planner → coder → tester → reviewer).
    • El prompt y la respuesta exactos de cada llamada al agente.
    • El diff tras cada iteración.
    • La salida de go test línea a línea.
    • El veredicto del reviewer.

    También puedes hacer tail del mismo trace en el terminal:

    Ventana de terminal
    kj tail
  5. Inspecciona el resultado.

    Ventana de terminal
    git status
    git diff --stat
    go test ./...

    Salida esperada de go test ./...:

    ok dev.kj/hello 0.002s

    En modo verboso verás los casos table-driven:

    Ventana de terminal
    go test -v ./...
    # === RUN TestGreet
    # === RUN TestGreet/named
    # === RUN TestGreet/empty
    # === RUN TestGreet/unicode
    # --- PASS: TestGreet (0.00s)
  6. Mergea.

    Karajan no hace push ni merge por ti por defecto — esa decisión es tuya. Cuando estés contento con el diff:

    Ventana de terminal
    git checkout -b feat/greeter
    git add -A && git commit -m "feat: add Greet(name)"
    git push -u origin feat/greeter
    gh pr create --fill

    O, si quieres que Karajan abra la PR por ti, añade --auto-commit --auto-pr a la invocación kj run.

Si quieres un binario CLI real en lugar de una librería:

Ventana de terminal
go get github.com/spf13/cobra@latest

Después lanza con un hint explícito:

Ventana de terminal
kj run "Envuelve Greet(name) en un comando 'hello-go greet --name=<name>' \
usando Cobra. Añade un test de integración que ejecute el binario y \
capture stdout." \
--methodology tdd \
--max-iterations 5

El coder genera cmd/root.go + cmd/greet.go y escribe un test basado en exec.Command. Compila con go build -o hello-go ./....