Shell mínima escrita en Go, pensada para correr en Windows y Linux.
Incluye:
- REPL simple con prompt
- Built-ins:
cd,exit - Parseo de argumentos con comillas simples/dobles
- Prompt con ruta actual (no muestra ruta si estás en Home)
- En Windows ejecuta PowerShell por defecto (
pwshsi existe, si nopowershell) con fallback acmd - IA opcional (BYOK) con Ollama/OpenAI/DeepSeek
- Go instalado (según go.mod)
go run ./cmd/zytrago build ./cmd/zytraEn Windows, si quieres generar el ejecutable con nombre:
go build -o zytra.exe ./cmd/zytra- cmd/zytra/main.go: entrypoint
- internal/shell: core (REPL, parser, builtins, dispatch)
- internal/runner: runners por terminal (PowerShell, cmd, bash, fallback)
- internal/configfile: load/save de
config.json - internal/appconfig: aplica
config.jsonal runtime config
Puedes configurar prompt y el runner principal/fallback con un config.json.
Orden de búsqueda:
- Ruta en
ZYTRA_CONFIG ./config.json(directorio actual)user config dir/zytra/config.json(segúnos.UserConfigDir())
Ejemplo: copia config.example.json como config.json.
Campos principales:
prompt: stringshell:auto|powershell|cmd|bashai.enabled:true|false(default:false)ai.provider:ollama|openai|openrouter|deepseek(default:ollama)ai.model: string (ej:llama3.1,gpt-4o-mini,deepseek/deepseek-r1)ai.ollamaHost: URL (default:http://localhost:11434)ai.apiKeySource:env|keyring|noneai.apiKeyEnv: nombre de variable de entorno para la key (cuandoapiKeySource=env)ai.apiKeyName: nombre en el keyring (cuandoapiKeySource=keyring)ai.maxStdoutBytes,ai.maxStderrBytes: límites de contexto enviado (hard cap)ai.maxHistoryCmds: historial reciente máximoai.maxOutputTokens: límite de salida del modeloai.cacheEntries,ai.cacheMaxAgeSecond: cache para evitar requests repetidaswindows.primary:powershell|cmdwindows.fallback:cmd|powershelllinux.primary:bash
- En Windows: primero intenta ejecutar la línea completa en PowerShell. Si PowerShell no reconoce el comando, intenta con
cmd /C.
Habilita IA en config.json y usa el builtin ai:
ai explain
ai suggest
ai chat por que fallo este comando?
ai tokens
ai chat es el modo “conversación” para preguntas libres.
Modo build (mínimo):
ai build crea un proyecto de Go con un comando hello y un README
El agente propone una lista de pasos (mkdir/read/write/run/run_admin) y pide confirmación por cada paso.
Configuración interactiva (recomendado):
zytra config ai
Alias:
zytra ai config
Keys:
ai.provider=openai: requiereOPENAI_API_KEY(modelo recomendado:gpt-4o-mini)ai.provider=deepseek: requiereOPENROUTER_API_KEY(modelo recomendado:deepseek/deepseek-r1)ai.provider=openrouter: requiereOPENROUTER_API_KEY(útil para tus modelos publicados en OpenRouter)ai.provider=ollama: no requiere key (usaai.ollamaHost)
Notas:
- La IA manda contexto limitado (tails de stdout/stderr + historial reciente) y usa cache para reducir tokens/costo.
- Si configuras el token con
zytra config ai, se guarda en el keyring del sistema (no en texto plano enconfig.json). ai tokensmuestra el uso de tokens (última llamada y total de sesión). En Ollama se reportan conteos de eval; en OpenAI/OpenRouter se usa el campousage.run_admin: en Windows dispara UAC (RunAs). En Linux usasudo(puede pedir password).
- El prompt y los errores usan colores ANSI cuando el output es un TTY.
- Ctrl+C (interrupción) no imprime error y regresa al prompt.