feat: Add optional setup command to helix.yaml

Abierto
#11 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
68/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
python

Línea de trabajo

Empieza leyendo config.py y runner.py, especialmente _preflight() y el punto justo antes de que se inicie el agente. Sigue cómo helix run ejecuta los comandos y gestiona los fallos; después añade la configuración opcional de setup y actualiza la documentación o plantilla mencionada en la issue. Se considera terminado cuando setup se ejecuta una vez con la salida transmitida en tiempo real, se aborta claramente si falla y las configuraciones existentes permanecen sin cambios.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

Summary

Add support for an optional setup command in helix.yaml that runs once before the first experiment in a session. This allows helices to declare one-time setup steps (e.g. downloading model weights, caching datasets) as part of their configuration, making helix run fully self-contained without requiring manual pre-run steps.

Motivation

Currently, some helices require a one-time setup step to be run manually before helix run can work — for example, uv run prepare.py in helix-inference-opt downloads model weights and caches datasets. There is no way to declare this in helix.yaml, so users must remember to run it themselves on each new machine. This is a poor experience and easy to forget.

Proposed Change

Add an optional setup section to helix.yaml:

setup:
  command: uv run prepare.py
Behaviour
  • If setup.command is provided, the runner executes it once at the start of helix run, before the agent is invoked or any experiments are run.
  • If setup.command is absent, the runner proceeds as today (no change in behaviour).
  • The command runs in the repo root, inheriting the same environment as the evaluate command.
  • If the setup command exits non-zero, helix run should abort with a clear error message.
Schema Changes

In config.py, add a new optional SetupConfig model and field on HelixConfig:

class SetupConfig(BaseModel):
    command: str

class HelixConfig(BaseModel):
    ...
    setup: Optional[SetupConfig] = None
Runner Changes

In runner.py, after _preflight() and before launching the agent, add a setup step:

if self.config.setup:
    # run setup.command, stream output, abort on non-zero exit

Example helix.yaml

name: inference-opt
setup:
  command: uv run prepare.py
metrics:
  primary:
    name: tokens_per_sec
    optimize: maximize
  evaluate:
    command: uv run infer.py

Acceptance Criteria

  • SetupConfig added to config.py with command field
  • HelixConfig.setup is optional (existing helices without it are unaffected)
  • Runner executes setup command once per helix run session before the agent starts
  • Setup output is streamed to the terminal so the user can see progress
  • Non-zero exit aborts the session with a clear error
  • Docs/template updated to show the new field
Lenguaje dominante
Python
Estrellas
24
Forks
2
Merge medio
13 h 4 min
PR fusionados (30 d)
27

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de VectorInstitute/helix

Todos los issues de VectorInstitute/helix

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.