Documentación PRINCIPAL del proyecto ein-cli

Descripción general del proyecto

ein-cli es una aplicación Infernet CLI/TUI de interfaz dual que proporciona automatización de línea de comandos e interfaces de terminal interactivas para la inferencia de IA descentralizada a través de la red Infernet. El proyecto permite a los usuarios descubrir nodos de IA, realizar micropagos a través de X402 y consumir servicios de IA en una infraestructura de igual a igual.

Concepto central: Red Infernet

Infraestructura + Inferencia + Red: una red descentralizada donde cualquiera puede proporcionar capacidad de inferencia y consumir servicios de IA con micropagos X402.

Pila de tecnología

Dependencias principales

  • Go 1.21+ - Lenguaje de programación principal
  • Cobra - Marco CLI para comandos y banderas
  • Bubbletea - Marco TUI (patrón Modelo-Vista-Actualización)
  • Burbujas - Componentes TUI prediseñados (listas, entradas, controles giratorios)
  • Brillo de labios - Diseño y diseño para TUI
  • Viper - Gestión de configuración

Integración Infernet

  • Wallet API v2 - Integración de billetera Blockchain
  • Protocolo de pago X402 - Micropagos para inferencia de IA
  • Red base - Interacciones de contratos inteligentes para el registro de nodos
  • USDC - Token de pago para servicios de inferencia

Estructura del proyecto

ein-cli/
├── main.go                    # Entry point - determines CLI vs TUI mode
├── go.mod                     # Go module with Charm stack dependencies
├── go.sum                     # Dependency checksums
├── ein-cli                    # Compiled binary (executable)
│
├── cmd/                       # CLI commands (Cobra)
│   ├── root.go               # Root command with global flags
│   ├── api.go                # API-related CLI commands
│   └── version.go            # Version information command
│
├── internal/                  # Private application packages
│   ├── infernet/             # Infernet protocol client
│   │   ├── client.go         # Main Infernet client
│   │   └── node.go           # Node discovery and management
│   ├── wallet/               # Wallet integration
│   │   └── client.go         # Wallet API v2 client
│   ├── messages/             # Bubbletea custom messages
│   │   └── navigation.go     # Navigation message types
│   └── models/               # Data structures and configuration
│       ├── config.go         # Application configuration
│       └── api.go            # API request/response models
│
├── tui/                      # Terminal User Interface
│   ├── app.go                # Main TUI application coordinator
│   ├── router.go             # Screen navigation system
│   ├── keys.go               # Global key bindings
│   ├── styles/               # Styling and themes
│   │   ├── theme.go          # Purple theme color palette
│   │   └── components.go     # Component-specific styles
│   └── screens/              # Individual TUI screens
│       ├── main_menu.go      # Main navigation menu
│       ├── api_form.go       # Legacy API request form
│       ├── settings.go       # Configuration management
│       ├── help.go           # Help and documentation
│       ├── node_browser.go   # Infernet node discovery
│       └── wallet_manager.go # Wallet connection interface
│
├── pkg/                      # Public utility packages
│   └── utils/                # Helper functions
│
└── Documentation Files:
    ├── plan.md               # Original development roadmap (Phase 1)
    ├── step2inplan.md        # Infernet-specific implementation plan
    ├── PROJECT_STRUCTURE.md  # Detailed structure documentation
    └── CRUSH.md              # Development guidelines and commands

Diseño de arquitectura

Lógica del punto de entrada

La aplicación utiliza un enfoque de modo dual:

  • Sin argumentos: inicia el modo TUI interactivo
  • Con argumentos: ejecuta comandos CLI directamente
func main() {
    if len(os.Args) > 1 {
        cmd.Execute() // CLI mode
    } else {
        tui.NewApp().Run() // TUI mode
    }
}
 

Sistema de configuración

Configuración integral que admite funciones API heredadas y configuraciones específicas de Infernet:

type Config struct {
    Server   ServerConfig   // Legacy API configuration
    Theme    ThemeConfig    // UI theme preferences
    History  HistoryConfig  // Request history settings
    Auth     AuthConfig     // Authentication settings
    Infernet InfernetConfig // Infernet-specific configuration
}
 

Arquitectura de integración de Infernet

  • Node Discovery: integración de contratos inteligentes para encontrar proveedores de inferencia
  • Sistema de Pago: Micropagos X402 con USDC en red Base
  • Administración de billetera: API de billetera v2 para interacciones blockchain
  • Soporte de modelo: llama-3.3, mistral-7b, integración de difusión estable

Línea de tiempo de desarrollo (a partir de marcas de tiempo de archivos .md)

Según las marcas de tiempo de los archivos, el proyecto evolucionó de la siguiente manera:

  1. plan.md (10 de diciembre de 2024): concepto de cliente API genérico original
  2. PROJECT_STRUCTURE.md (10 de diciembre de 2024): documentación detallada de la arquitectura
  3. CRUSH.md (10 de diciembre de 2024): comandos y pautas de desarrollo
  4. step2inplan.md (11 de diciembre de 2024): pivote hacia la implementación específica de Infernet

Características clave

Implementación actual

  • ✅ Arquitectura de interfaz dual CLI/TUI
  • ✅ TUI interactiva basada en Bubbletea con tema morado
  • ✅ Comandos CLI basados en Cobra con indicadores globales
  • ✅ Gestión de configuración con Viper
  • ✅ Sistema de navegación en pantalla con migas de pan
  • ✅ Puntos de integración de clientes de Infernet
  • ✅ Arquitectura del cliente Wallet

Funciones específicas de Infernet (en desarrollo)

  • 🔄 Descubrimiento de nodos desde el registro de contratos inteligentes base
  • 🔄 Integración de pagos X402 para micropagos
  • 🔄 Inferencia de IA multimodelo (llama-3.3, mistral, difusión estable)
  • 🔄 Comparación de precios en tiempo real entre nodos
  • 🔄 Historial de transacciones y análisis de costos
  • 🔄 Plantillas de solicitud escritas previamente
  • 🔄 Selección de nodos basada en la reputación

Pantallas TUI- Menú principal: centro de navegación para todas las funciones

  • Navegador de nodos: descubre y compara nodos de inferencia
  • Wallet Manager: conecte la billetera y administre pagos
  • Formulario API: interfaz de solicitud de API heredada
  • Configuración: Gestión de configuración
  • Ayuda: Documentación y atajos de teclado

Cómo recrear el proyecto desde cero

1. Inicializar el módulo Go

mkdir ein-cli && cd ein-cli
go mod init ein-cli
 

2. Instalar dependencias

go get github.com/charmbracelet/bubbles@v0.18.0
go get github.com/charmbracelet/bubbletea@v0.25.0
go get github.com/charmbracelet/lipgloss@v0.9.1
go get github.com/spf13/cobra@v1.8.0
go get github.com/spf13/viper@v1.18.2
 

3. Crear estructura de proyecto

mkdir -p cmd internal/{infernet,wallet,messages,models} tui/{screens,styles} pkg/utils
 

4. Implementar archivos principales

Siga este orden de implementación:

  1. main.go - Punto de entrada con lógica de modo dual
  2. internal/models/config.go - Estructuras de configuración
  3. internal/models/api.go - Modelos de datos API
  4. cmd/root.go - Configuración de Cobra CLI con Viper
  5. tui/keys.go - Atajos de teclas
  6. tui/styles/theme.go - Paleta de temas morados
  7. tui/router.go - Sistema de navegación en pantalla
  8. tui/screens/main_menu.go - Implementación del menú principal
  9. tui/app.go - Coordinador principal de solicitudes de TUI

5. Construir y probar

go build -o ein-cli main.go
./ein-cli              # Launch TUI
./ein-cli --help        # Test CLI
./ein-cli version       # Test subcommands
 

6. Agregar integración con Infernet

  1. Implementar cliente de billetera en internal/wallet/
  2. Crear cliente Infernet en internal/infernet/
  3. Agregue la pantalla del navegador de nodos en tui/screens/node_browser.go
  4. Implementar la integración del sistema de pago.

Comandos de desarrollo

Construyendo y ejecutando

go build -o ein-cli main.go     # Build binary
go run main.go                  # Run without building
./ein-cli                       # Launch TUI mode
./ein-cli --help                # CLI help
 

Herramientas de desarrollo

go test ./...                   # Run tests
go fmt ./...                    # Format code
go vet ./...                    # Static analysis
go mod tidy                     # Clean dependencies
 

Configuración

Ubicación de configuración predeterminada

  • Archivo: ~/.ein-cli.yaml
  • Variables de entorno: con el prefijo EIN_
  • Indicadores CLI: anular la configuración del archivo de configuración

Secciones de configuración clave

  • Servidor: configuración de API heredada
  • Tema: personalización del tema morado
  • Historial: solicitar preferencias de historial
  • Infernet.Wallet: Configuración de red Blockchain
  • Infernet.Pago: Límites y preferencias de micropagos
  • Infernet.Nodes: Criterios de selección de nodos
  • Infernet.Models: preferencias del modelo de IA

Métricas de éxito

Objetivos técnicos

  • Inferencia de IA en menos de 5 segundos con micropago
  • Interfaz de comparación de precios de múltiples nodos
  • Transparencia total en las transacciones
  • Navegación intuitiva basada en teclado

Objetivos de experiencia del usuario

  • Conexión perfecta de billetera a través de Wallet API v2
  • Seguimiento del estado de pago en tiempo real
  • Borrar mensajes de error y comentarios.
  • Sistema de ayuda contextual

Mejoras futuras

Funciones planificadas

  • Soporte GraphQL para metadatos de nodos
  • Conexiones WebSocket para actualizaciones en tiempo real
  • Sistema de complementos para autenticación personalizada
  • Funciones de colaboración en equipo
  • Funcionalidad de servidor simulado para desarrollo.

Optimizaciones de rendimiento

  • Solicitar almacenamiento en caché para metadatos de nodo
  • Solicitudes de inferencia concurrentes
  • Transmisión de respuesta para grandes cargas útiles
  • Comprobación de disponibilidad del nodo en segundo plano.

Instrucciones del agente AI para la extensión

Para agregar una nueva pantalla TUI:

  1. Cree un archivo de pantalla en tui/screens/new_screen.go
  2. Implementar la interfaz del modelo Bubbletea (Inicio, Actualización, Ver)
  3. Agregue una constante de pantalla a tui/router.go
  4. Regístrese en tui/app.go inicializeScreens()
  5. Agregue navegación desde pantallas relevantes

Para agregar el comando CLI:1. Cree un archivo de comando en cmd/new_command.go

  1. Utilice la estructura de comando Cobra con indicadores persistentes
  2. Agregar al comando raíz en cmd/root.go init()
  3. Implementar lógica empresarial compartida en internal/

Para ampliar la configuración:

  1. Agregue campos a la estructura de configuración relevante en internal/models/config.go
  2. Actualice NewDefaultConfig() con valores predeterminados razonables
  3. Agregue validación si es necesario
  4. Actualice la pantalla de configuración para mostrar nuevas opciones.

Este proyecto proporciona una base sólida para construir herramientas de interacción de IA descentralizadas con capacidades de automatización (CLI) y exploración (TUI), diseñadas específicamente para el ecosistema de red Infernet.

Ver tambien: CLI PRS, project-architecture, Plan de implementación