Analisi tecnica di nikcli v1.259.0: release readiness, sicurezza e performance #194
Replies: 2 comments
|
Ho ri-verificato da zero tutti i punti che avevo scritto sopra, su Confermato con numeri esatti
Sui README → #196. Gate del formatting → #197 ( Una cosa che avevo detto maleHo scritto "route coverage strict: 187/187". Il numero è giusto ma non è un gate: Test suite — confermata, e con la classificazione che mancavaRieseguita bypassando il Avevo scritto 3489 / 66 / 1 su 3556: combacia a meno di flakiness (2 test di differenza sul totale, 4 sui fallimenti). Il gate non è verde, confermato. Avevo però lasciato i 62 fallimenti come "alcuni possono essere specifici di Windows", che non è utile a nessuno. Classificati per firma dell'errore: Ambiente Windows, non bug del prodotto (~la grande maggioranza)
Bug vero, e piccolo — const root = new URL("../../src/", import.meta.url).pathnameSu Windows Da guardare, non classificabili dall'output — 10 test Se qualcuno può eseguire la suite su Linux e incollare qui il totale, si separa in un colpo solo il rumore Windows dai fallimenti veri. Sospetto che il verde reale sia molto vicino, ma il costo di scoprirlo non dovrebbe ricadere ogni volta su chi sviluppa da Windows — vedi #195 e #197. Sicurezza — segnalata in privatoI punti 1, 2, 3 e 5 della mia lista sono confermati nel codice, e in tre casi la situazione è peggiore di come l'avevo descritta: non è solo "da hardenizzare", c'è un percorso di escalation concreto su un server in ascolto. Visto che il repo è pubblico e il pacchetto è su npm, non li metto qui. Li ho aperti come segnalazione privata: GHSA-28wx-vfqc-xjfx (Security → Advisories). Dentro ci sono file, riga, impatto e fix proposto per ciascuno. @nikomatt69 in sintesi, senza dettagli sfruttabili:
Posso aprire le PR per tutti e tre appena decidi la tempistica di disclosure; partirei dal primo. Come la vedo sulla prioritàConfermo la scaletta che avevo proposto, con una correzione: metterei #195 in cima anche prima delle security, perché finché il typecheck non passa su Windows non c'è un gate verde su cui appoggiare la verifica di qualunque fix. Poi advisory, poi #197 (in un commit solo di formatting, con la SHA in La classificazione completa dei 62 fallimenti (firme di errore, conteggi, e il bug in Correzione sui 247 file non formattatiHo sbagliato, e il consiglio che avevo dato era dannoso. I 247 file non hanno drift di formattazione: il repo non ha Due verifiche: E confrontando ogni file segnalato con il proprio output Prettier a CR rimossi: su 45 file campionati dei 251 (i primi 20 più uno spread di 25 preso ogni decimo), tutti e 45 differivano solo per i fine riga. Zero con modifiche reali. Quindi il commit Stessa causa, per inciso, dietro il diff gonfiato di #183: fine riga, non riformattazione. #197 è stato riscritto di conseguenza — titolo e fix erano entrambi sbagliati. |
|
The distinction between a green route-coverage number and an actual CI gate is an important production-readiness detail, especially with 62 failures and cross-platform symlink behavior still in the path. I would separate the release benchmark into platform-specific test classes and record startup, time-to-first-token, long-session RSS, events per second, and fallback/error rates for the LLM adapter. Keeping the 255 advisories, auth scope checks, upload quota, and symlink failures as explicit gates would make the stabilization work measurable without hiding environment-specific failures. I am testing an OpenAI-compatible multi-model API layer around official/provider-backed Chinese models, with particular interest in latency, fallback, usage visibility, and workflow-level benchmark behavior. For nikcli, would the next useful comparison be Linux vs Windows parity, or the LLM adapter's completed-workflow latency and failure rate? |
Uh oh!
There was an error while loading. Please reload this page.
Ciao @nikomatt69,
ho fatto una revisione tecnica di
live-mainal tagv1.259.0, con working tree pulito, concentrandomi su release readiness, sicurezza, architettura e performance.Sintesi
nikcli ha una base molto ambiziosa e ricca: TUI, server HTTP/SSE/WebSocket, SDK, mobile, plugin, MCP, bot, workflow, sync/event sourcing e telemetria. Per uso locale CLI/TUI lo considero promettente; per un server esposto in produzione lo considererei ancora da consolidare.
Evidenze riproducibili
Passano:
packages/nikcli;Restano invece questi blocker:
bun turbo typecheckfallisce nel checkout Windows conTS1128inpackages/app/src/custom-elements.d.tsepackages/enterprise/src/custom-elements.d.ts. I file sono symlink Git e Windows li presenta come file contenenti il solo path, non come direttive TypeScript; anchedesktoperedita il problema daapp.bun run --cwd packages/nikcli testsi ferma alformat:check: 247 file non sono conformi a Prettier.README.mdindica la versione1.149.0mentre package e tag sono1.259.0; inoltre documentabun run builddalla root, ma lo script root non esiste.Sicurezza da hardenizzare
La documentazione chiarisce correttamente che il sandbox locale non è una barriera di sicurezza e che il server senza password è una scelta dell'utente. Restano comunque aree importanti da rendere più difficili da configurare male:
startsWithcon credenziali abilitate;bun auditriporta 255 advisory sull'intero monorepo (le 4 critical risultano in altri workspace); nel percorso nikcli restano comunque advisory high da triagiare su MCP SDK, Hono, Drizzle, minimatch, shell-quote,wse transitive.Performance e mantenibilità
Il core è molto grande (circa 845 file e 215k righe) e contiene moduli profondi, dual runtime Hono/Effect e dual percorso AI SDK/native. I miglioramenti con il miglior rapporto rischio/beneficio mi sembrano:
config,provider,sessione TUI: build/typecheck incrementali più rapidi e minore superficie di regressione.Non stimerei percentuali senza benchmark. Misurerei startup al primo frame, time-to-first-token, RSS su sessioni lunghe, eventi/sec e memoria/throughput degli upload.
Priorità proposta
P0: correggere i
.d.tscross-platform, rendere typecheck/test gate obbligatori e chiudere i problemi auth/scope/upload.P1: portare il formatting a zero, classificare i 66 test falliti, aggiornare le dipendenze vulnerabili e riallineare README/versioni/script.
P2: consolidare Hono/Effect e AI SDK/native, poi ottimizzare storage e moduli profondi sulla base dei benchmark.
Nel complesso vedo una piattaforma con ottime potenzialità, ma la release attuale beneficia più da hardening e stabilizzazione che dall'aggiunta di nuove feature. @nikomatt69, mi interessa sapere se questa direzione coincide con la roadmap del progetto.
All reactions