Skip to content

Aztekode/zytra-shell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zytra-shell

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 (pwsh si existe, si no powershell) con fallback a cmd
  • IA opcional (BYOK) con Ollama/OpenAI/DeepSeek

Requisitos

  • Go instalado (según go.mod)

Ejecutar en modo desarrollo

go run ./cmd/zytra

Compilar

go build ./cmd/zytra

En Windows, si quieres generar el ejecutable con nombre:

go build -o zytra.exe ./cmd/zytra

Estructura del proyecto

  • 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.json al runtime config

Configuración (config.json)

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ún os.UserConfigDir())

Ejemplo: copia config.example.json como config.json.

Campos principales:

  • prompt: string
  • shell: auto|powershell|cmd|bash
  • ai.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|none
  • ai.apiKeyEnv: nombre de variable de entorno para la key (cuando apiKeySource=env)
  • ai.apiKeyName: nombre en el keyring (cuando apiKeySource=keyring)
  • ai.maxStdoutBytes, ai.maxStderrBytes: límites de contexto enviado (hard cap)
  • ai.maxHistoryCmds: historial reciente máximo
  • ai.maxOutputTokens: límite de salida del modelo
  • ai.cacheEntries, ai.cacheMaxAgeSecond: cache para evitar requests repetidas
  • windows.primary: powershell|cmd
  • windows.fallback: cmd|powershell
  • linux.primary: bash

Notas

  • En Windows: primero intenta ejecutar la línea completa en PowerShell. Si PowerShell no reconoce el comando, intenta con cmd /C.

IA (BYOK)

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: requiere OPENAI_API_KEY (modelo recomendado: gpt-4o-mini)
  • ai.provider=deepseek: requiere OPENROUTER_API_KEY (modelo recomendado: deepseek/deepseek-r1)
  • ai.provider=openrouter: requiere OPENROUTER_API_KEY (útil para tus modelos publicados en OpenRouter)
  • ai.provider=ollama: no requiere key (usa ai.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 en config.json).
  • ai tokens muestra el uso de tokens (última llamada y total de sesión). En Ollama se reportan conteos de eval; en OpenAI/OpenRouter se usa el campo usage.
  • run_admin: en Windows dispara UAC (RunAs). En Linux usa sudo (puede pedir password).

UX

  • 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.

About

Zytra Shell is a powerfull shell with ia

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages