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:
- plan.md (10 de diciembre de 2024): concepto de cliente API genérico original
- PROJECT_STRUCTURE.md (10 de diciembre de 2024): documentación detallada de la arquitectura
- CRUSH.md (10 de diciembre de 2024): comandos y pautas de desarrollo
- 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:
- main.go - Punto de entrada con lógica de modo dual
- internal/models/config.go - Estructuras de configuración
- internal/models/api.go - Modelos de datos API
- cmd/root.go - Configuración de Cobra CLI con Viper
- tui/keys.go - Atajos de teclas
- tui/styles/theme.go - Paleta de temas morados
- tui/router.go - Sistema de navegación en pantalla
- tui/screens/main_menu.go - Implementación del menú principal
- 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
- Implementar cliente de billetera en
internal/wallet/ - Crear cliente Infernet en
internal/infernet/ - Agregue la pantalla del navegador de nodos en
tui/screens/node_browser.go - 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:
- Cree un archivo de pantalla en
tui/screens/new_screen.go - Implementar la interfaz del modelo Bubbletea (Inicio, Actualización, Ver)
- Agregue una constante de pantalla a
tui/router.go - Regístrese en
tui/app.goinicializeScreens() - Agregue navegación desde pantallas relevantes
Para agregar el comando CLI:1. Cree un archivo de comando en cmd/new_command.go
- Utilice la estructura de comando Cobra con indicadores persistentes
- Agregar al comando raíz en
cmd/root.goinit() - Implementar lógica empresarial compartida en
internal/
Para ampliar la configuración:
- Agregue campos a la estructura de configuración relevante en
internal/models/config.go - Actualice
NewDefaultConfig()con valores predeterminados razonables - Agregue validación si es necesario
- 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