Ir al contenido

Tutorial · Python

Python · Tiempo estimado: ~12 min · Iteraciones Karajan: 1–3

Este tutorial te lleva desde un directorio vacío hasta una feature mergeada en un pequeño proyecto Python (CLI / librería / script de datos). La receta es deliberadamente mínima para que la puedas re-ejecutar sobre un repo real cambiando el bootstrap por cd <tu-repo>.

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 Python 3.10+ en el PATH (python --version). En macOS recomendamos pyenv; en Linux usa el paquete de la distro; en Windows usa el instalador oficial con la opción “Add to PATH” marcada.

  1. Bootstrapea el proyecto.

    Ventana de terminal
    mkdir hello-py && cd hello-py
    python -m venv .venv
    source .venv/bin/activate # Windows: .venv\Scripts\activate
    pip install --upgrade pip
    pip install pytest
    git init -b main && git add -A && git commit -m "chore: scaffold"

    Crea un pyproject.toml mínimo para que el tester de Karajan sepa cómo invocar pytest:

    [project]
    name = "hello-py"
    version = "0.0.1"
    requires-python = ">=3.10"
    [tool.pytest.ini_options]
    testpaths = ["tests"]
  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 y los puertos están sanos. kj doctor también detecta tu versión de Python y la registra en el perfil del proyecto.

  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 "Añade una función 'greet(name)' en src/hello.py que devuelva \
    'Hello, <name>!'. Añade un test pytest en tests/test_hello.py que importe \
    la función y verifique la salida para el nombre 'world'." \
    --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 pytest 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
    pytest

    Salida esperada de pytest:

    ============================= test session starts ==============================
    collected 1 item
    tests/test_hello.py . [100%]
    ============================== 1 passed in 0.02s ===============================
  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/greet-function
    git add -A && git commit -m "feat: add greet(name) function"
    git push -u origin feat/greet-function
    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.

El mismo run lanzado vía MCP desde cualquier cliente MCP-capable (Cursor, Claude Desktop, Codex):

{
"tool": "kj_run",
"params": {
"task": "Añade una función 'greet(name)' en src/hello.py que devuelva 'Hello, <name>!'. Añade un test pytest.",
"methodology": "tdd",
"coder": "claude",
"reviewer": "codex",
"reviewerFallback": "claude",
"maxIterations": 5
}
}