Zerox.LSAI

Language Server for AI — Panoramica del Progetto

Cos'è

LSAI è un server MCP che fornisce analisi semantica del codice ottimizzata per i token agli assistenti AI. Integra Roslyn (C#) e server LSP (Python, TypeScript, JavaScript, Java) dietro un'architettura a plugin unificata, fornendo code intelligence avanzata (ricerca, utilizzi, gerarchia, chiamanti, outline, ecc.) in formati compressi che risparmiano 82–86% dei token rispetto al JSON LSP grezzo.

Include una console di gestione web (Angular + PrimeNG) per gestire repository, monitorare l'utilizzo e configurare i workspace. Il tutto pacchettizzato in una singola immagine Docker.

18 Strumenti MCP 5 Linguaggi 6 Formati di Output 617 Test

Architettura

graph LR
    AI["🤖 Assistente AI\nAI Assistants"] -->|"Protocollo MCP\nHTTP"| Server
    User["🌐 Browser"] --> SPA

    subgraph LSAI["Server Zerox.LSAI — ASP.NET"]
        Server["Host MCP\n18 Strumenti + Formattatori"]
        WS["Gestore Sessioni\nWorkspace"]
        DB[("SQLite")]
        SPA["Console Angular\nPrimeNG"]
        Server --> WS
        Server --> DB
    end

    subgraph Plugins["Plugin — caricati a runtime"]
        Roslyn["Plugin.Roslyn\nC# via API Roslyn"]
        LSP["Plugin.Lsp\nClient StreamJsonRpc"]
    end

    WS --> Roslyn
    WS --> LSP

    subgraph LSPServers["Server LSP Esterni — processi gestiti"]
        Pyright["Pyright\nPython"]
        TSLS["typescript-language-server\nTS + JS"]
        JDTLS["Eclipse JDTLS\nJava"]
    end

    LSP -->|"stdin/stdout"| Pyright
    LSP -->|"stdin/stdout"| TSLS
    LSP -->|"stdin/stdout"| JDTLS
  

Stima dei Tempi di Sviluppo

Quanto impiegherebbe uno sviluppatore super senior .NET/Angular a costruire questo progetto da zero, scrivendo tutto il codice a mano?

Dettaglio per Fase

#FaseGiorniNote
0Ricerca + POC Spike3Spec protocollo MCP, API Roslyn, protocollo LSP, validare fattibilità con uno spike minimale
1Ambiente + Scaffolding1.NET 10, Node.js, Python, Java SDK, repo git, struttura solution, Directory.Build.props, CI base
2Contratti Core2ILsaiPlugin, DTO, enum, interfacce formati output, parametri/risultati operazioni
3Infrastruttura Plugin3Isolamento AssemblyLoadContext, discovery plugin via convenzione deps.json, validazione, registrazione DI
4Server + Trasporto MCP3Host ASP.NET, integrazione MCP SDK, 18 definizioni tool, gestione sessioni workspace, config Kestrel
5Formattatori Output26 formati (CompactText, CompactTextVerbose, TurboCompact, CompilerOutput, GrepOutput, LanguageSyntax)
6Plugin Roslyn (C#)6Caricamento workspace MSBuild, 11 operazioni. Le API Roslyn hanno spigoli vivi
7Plugin LSP Bridge10Client StreamJsonRpc, handshake LSP, capabilities, ciclo di vita processi, 4 config linguaggio. La parte più difficile
8Console Web — Backend4SQLite + EFCore, migrazioni, RepositoryManager, UsageTracker, REST API
9Console Web — Frontend5Angular 21, PrimeNG, Dashboard, pagina Repository, pagina Linguaggi, generazione client API
10Pacchettizzazione Docker3Dockerfile a 3 stadi, tutti i server LSP, file compose, binding Kestrel, strategia porte
11Testing5617 test unitari, E2E per linguaggio, benchmark efficienza token, validazione cross-platform
12Bug Fixing + Rifinitura4Bug risoluzione path, edge case LSP, problemi cross-platform, trappole case sensitivity NTFS
TOTALE51~10,5 settimane, ~2,5 mesi

Confronto Scenari

ScenarioMoltiplicatoreTotale
Ottimistico (tutto fila liscio, nessuna sorpresa)1x~51 giorni lavorativi (~2,5 mesi)
Realistico (server LSP capricciosi, vicoli ciechi, 61K righe a mano)1,8x~90 giorni (~4,5 mesi)
Pessimistico (deadlock OmniSharp, quirk JDTLS, bug cross-platform)2,5x~125 giorni (~6 mesi)
Risultato reale con AI (AI coding assistant, ~95% scritto da AI)0,18x9 giorni

Dove Se Ne Va il Tempo

Il Plugin LSP Bridge (Fase 7) domina perché:

Il Plugin Roslyn (Fase 6) è il secondo divoratore di tempo:


Timeline Reale di Sviluppo (con AI Coding Assistant)

Il progetto è stato costruito con un AI coding assistant che ha scritto ~95% del codice, diretto da uno sviluppatore senior che ha progettato l'architettura e preso tutte le decisioni. Ruolo umano: architettura, decisioni, prompting, review, test manuali.

94 Commit 440 File 61.712 Righe Aggiunte 9 Giorni Lavorativi

Dettaglio Giorno per Giorno

GiornoCommitCosa È Stato CostruitoOreFase (stima manuale)
Giorno 1 (sera) 9 Risultati POC, scaffolding progetto, contratti core, plugin loader ~3-4h Fasi 0+1+2+3
Giorno 2 26 Formattatori output, server MCP + 12 tool, Roslyn Tier1 (7 op.), Roslyn Tier2+3 (4 op.), trasporto HTTP, sessioni workspace, test E2E (24), distribuzione, README, gap analysis ~12-14h Fasi 3+4+5+6 + Feature 8-11
Giorno 3 10 Bug fix (ricerca, diagnostica, dipendenze), chiusura gap, formati output a 3 livelli, ricerca OmniSharp ~8-10h Fase 5 v2 + Feature 12
Giorno 4 3 Plugin LSP Bridge per Python (basato su OmniSharp), 7 fix critici da test live ~4-5h Inizio Fase 7
Giorno 5 2 Config multi-linguaggio (TS, JS, Java), didOpen per-file, auto-rilevamento linguaggio ~4-5h Fase 7 continua
Giorno 6 4 Porting cross-platform WSL/Linux, server LSP nativi, indagine jdtls, bug risoluzione path ~8h Fase 7 + cross-platform
Giorno 7 5 Root cause deadlock OmniSharp trovata, riscrittura completa StreamJsonRpc (27 file, +2161/−1075 righe), readiness deterministica ~10h Fase 7 debugging profondo
Giorno 8 17 Fix capabilities LSP, E2E 15/15, benchmark efficienza token (8 test), Docker 3 stadi, script deploy ~12h Fine Fase 7 + Fase 10
riposo 0 0
Giorno 9 18 Rinomina progetto, tool lsai_source, REST API (controller + servizi + 121 test), migrazione SQLite/EFCore, scaffold Angular 21, PrimeNG, pagine Dashboard + Repository + Linguaggi, hosting SPA, aggiornamento Docker ~12-14h Fasi 8+9+10
TOTALE 94 ~73-80h ~9-10 giorni lavorativi

Stima vs Realtà

Come baseline si usa la stima realistica (1,8x), dato che quella ottimistica di 51 giorni presuppone zero sorprese — cosa che non succede mai con quirk non documentati dei server LSP.

FaseStima realistica (manuale)Reale (con AI)Speedup
Ricerca + Scaffolding~7 giorni~0,3 giorni23x
Contratti Core~4 giorni~0,2 giorni20x
Infrastruttura Plugin~5 giorni~0,2 giorni25x
Server + Trasporto MCP~5 giorni~0,3 giorni17x
Formattatori Output~4 giorni~0,5 giorni8x
Plugin Roslyn (C#)~11 giorni~0,5 giorni22x
Plugin LSP Bridge~18 giorni~4,5 giorni4x
Console Web — Backend~7 giorni~0,5 giorni14x
Console Web — Frontend~9 giorni~0,5 giorni18x
Docker~5 giorni~0,5 giorni10x
Testing~9 giornidistribuito
Bug fixing + Rifinitura~7 giorni~1,5 giorni5x
TOTALE~90 giorni (~4,5 mesi)9 giorni10x

Osservazioni Chiave

  1. Fasi ad alto boilerplate (contratti, DI, scaffold server) = speedup 10–15x. L'AI eccelle nel generare codice ripetitivo e basato su pattern. Contratti core + plugin loader + server host sono stati completati in una sera + mattina.
  2. Debugging LSP = solo 4x di speedup. Questa è stata l'unica area dove l'AI non ha potuto abbreviare il dolore. Ogni server LSP ha quirk non documentati. OmniSharp aveva un deadlock architetturale che ha richiesto la lettura del codice sorgente della libreria, la formulazione di ipotesi e la loro verifica. Questa fase da sola ha consumato il ~45% del tempo totale di sviluppo.
  3. La riscrittura OmniSharp → StreamJsonRpc (27 file) è avvenuta in un singolo giorno. Qui la programmazione AI brilla: refactoring meccanico su larga scala con pattern chiari. Un umano avrebbe impiegato 3–5 giorni per la stessa riscrittura.
  4. Il Giorno 2 è stato sovrumano. 26 commit che coprono 6+ fasi stimate in un solo giorno. Questo volume di output è fisicamente impossibile senza assistenza AI — non per la velocità di battitura, ma per il puro volume di codice corretto e testato prodotto.
  5. L'impegno umano totale è stato ~73–80 ore in 9 giorni. Il lavoro “umano” è stato principalmente: decisioni architetturali, prompting, revisione dell'output AI, test manuali MCP, debugging del comportamento dei server LSP e direzione dell'AI per risolvere i problemi. Le battute di codice effettive sono state minimali.