187 avläsningar Ny historia

Recensioner för My Journey Down the Rabbit Hole of Vibe

förbi Nilesh Raghuvanshi10m2025/04/22
Read on Terminal Reader

För länge; Att läsa

Dyk in i min färdbyggnad 'Vaani'- En minimal, privat, universell skrivbordsapp för tal till text med hjälp av vibe-kodning. Det är en praktisk titt på AI-samarbetsupplevelsen: hastigheten, striderna, insikterna och lärdomarna.
featured image - Recensioner för My Journey Down the Rabbit Hole of Vibe
Nilesh Raghuvanshi HackerNoon profile picture
0-item
1-item
2-item

Building Vaani (वाणी) - En minimal, privat, universell tal till text skrivbordsapplikation


För några dagar sedan tittade jag religiöst på den senaste videon från Andrej Karpathy där han introducerade Vibe Coding.


Jag har använt AI-kodassistenter ett tag, men är fortfarande mycket involverad i kodningsprocessen. AI fungerar mestadels som en smart auto-complete, tar över tråkiga boilerplate saker, skriver docstrings, eller ibland förklarar koden som jag skrev igår och bekvämt glömt. Vibe kodning lät mer som att ta examen från autocomplete till faktisk samskapande - ett skifte från AI som assistent till AI som en faktisk kodningspartner.


Intresserad av detta potentiella paradigmskifte bestämde jag mig för att uppleva det i första hand. I samma video delade Andrej att han använder röst som primär input ungefär 50% av tiden eftersom det är mer intuitivt och effektivt. Han föreslog några alternativ för Mac som fungerar som universella tal-till-textverktyg som fungerar över flera appar. Jag arbetar främst på Windows för att interagera med appar och Linux över kommandoraden.Voice Accesssom är super långsam), jag bestämde mig för att bygga en för mig själv. jag hade några andra potentiella idéer men bestämde mig för detta som jag ville bygga


    är
  • det i ett programmeringsspråk jag vet väl - Python
  • är
  • något jag är konceptuellt okänd med - ljudinspelning och bearbetning, inhemskt användargränssnitt
  • är
  • Ett verktyg som jag verkligen skulle använda och inte bara en leksak
  • är
  • något användbart för gemenskapen som jag kan öppna källkod
  • är
  • Lär dig något nytt längs vägen
  • är


Målet -Bygg en minimal, privat, universell tal-till-text skrivbordsapp


  • Minimal - Gör en sak riktigt bra - tal till text
  • är
  • Privat - Inget lämnar min maskin, allt offline
  • är
  • Universal - borde fungera med alla Windows-appar
  • är
  • Cross Platform - Bra att ha
  • är


Jag kallar detVaani (वाणी)betyder ”tal” eller ”röst” iSanskritoch .

VäntaSanskrit


GitHub

https://github.com/webstruck/vaani-speech-to-text


Installationen

pip install vaani-speech-to-text


Demo är


Den här artikeln kronikerar byggnadens resaVaaniDet är en praktisk utforskning av vad vibe kodning faktiskt känns som - den spännande hastigheten, de oväntade vägstopparna, ögonblicken av äkta insikt och lektionerna som lärt sig när man samarbetar intensivt med en AI.Claude Sonnet från 3.7, den bästa (igen, baserat på allmän vibe) tillgängliga kodningsassistent vid den tiden.Tillbehör till Google Gemini 2.5 Prohar släppts och jag bestämde mig för att använda den som en kod granskare.


BTW, den här artikeln är till stor del dikterad med hjälp avVaani😊


Låt oss vibe.

och setup


AI DeveloperFölj Claude Sonnet 3.7

AI Code ReviewerGemini 2.5 Pro förhandsgranskning 03-25


AI-utvecklaren och AI Code Reviewer hade alltid komplett kod som sammanhang för varje inbjudan. jag inledde en ny konversation när ett visst mål uppnås t.ex. en bugg är fixad eller en funktion implementeras och fungerar framgångsrikt. jag gjorde detta för att hantera sammanhanget och säkerställa bästa AI-prestanda. jag använde inte några agentiska IDEs (t.ex. Cursor, Windsurf, etc.) och litar istället påFörfattaren Claude DesktopochFrån Google AI StudioJag undvek också manuella kodändringar med avsikt att släppa koden med öppen källkod för gemenskapens granskning.


The Initial Spark: From Zero to Scaffolding på sekunder


Så var börjar vi? Traditionellt innebär detta noggrann planering. Till exempel skissera komponenter, utforma gränssnitt, välja bibliotek och ställa in projektstrukturen. Istället bestämde jag mig för att börja med en lat prompt som visas nedan.


är

Jag vill bygga en lätt tal till text app i Python för Windows-användare. tanken är att hjälpa Windows-användare att skriva saker snabbt med hjälp av röst i någon applikation t.ex. ord, powerpoint, webbläsare etc. Appen ska fungera lokalt utan internet för integritet.

är

I want to build a lightweight speech to text app in Python for Windows users. The idea is to help Windows users write things quickly using voice in any application e.g. word, powerpoint, browser etc. The app should work locally without the internet for privacy. Should activate using hot key or hot word.


och tro på sitt rykte,Claude Sonnet 3.7Det genererade en omfattande applikationsstruktur nästan omedelbart, komplett med:


    är
  • System tray integration med Tkinter
  • är
  • Global hotkey detektering med hjälp av tangentbord
  • är
  • Visuell återkoppling indikator UI
  • är
  • Inställningar persistens UI
  • är
  • Tala till text med Vosk
  • är
  • Grundläggande Audio Manager
  • är
  • Huvudinträdespunkt
  • är
  • Förpackning med pyinstaller
  • är


Den inledande fasen fångade perfekt locket av vibe kodning: kringgå timmar av design och grundläggande kodning, flytta direkt från idén till en påtaglig (även buggy) applikationsskelett.


Följ Riding the Waves: The Core Iteration Loop


Med de grundläggande komponenterna på plats började den verkliga utvecklingen genom att sätta sig i en särskild rytm – kärncirkeln i AI-assisterad vibe-kodning:


    är
  1. Feature Request / Bug Report: I'd describe a desired feature ("Let's add hot word detection") or report an issue ("The transcription results aren't appearing!"). Often, bug reports included error logs or screenshots.
  2. är
  3. AI Code Generation: AI skulle bearbeta begäran och generera kodavsnitt, ibland ändra befintliga funktioner, ibland lägga till helt nya moduler.
  4. är
  5. Integration & Testning: Jag skulle integrera AI: s kod i applikationen och manuellt testa funktionaliteten.
  6. är
  7. Om inte (vilket var vanligt!), skulle jag gå tillbaka till steg 1, ge mer specifika feldetaljer eller beskriva det oönskade beteendet.
  8. är


The Core Iteration Loop


Denna slinga var otroligt snabb, men också tungReaktivaVi följde inte en stor design; vi navigerade genom synen, fixar bara problem.EfterDe viktigaste utmaningarna uppstod snabbt:


    är
  • Callback Conundrums: Initiala försök att ansluta olika delar av programmet (som ljudinmatning till transkriptionsmotorn) misslyckades helt enkelt med att kommunicera korrekt.
  • är
  • Konkurrenskomplexiteter: Integrering av bakgrundsuppgifter (som kontinuerlig ljudbehandling) med användargränssnittet ledde till "klassiska" samtidiga problem - krascher eller hängningar relaterade till att få tillgång till delade resurser eller uppdatera användargränssnittet från fel tråd.
  • är
  • UI State Persistence: Att få inställningsfönstret för att på ett tillförlitligt sätt spara och ladda användarpreferenser visade sig vara överraskande svårt.
  • är
  • Kontinuerlig talbearbetning: När man blev ombedd att bygga ett kontinuerligt talbearbetningssystem kom AI med en överväldigande sofistikerad lösning som inkluderade kontinuerlig fångst, segmentbeställning, parallell bearbetning, ordnad införande, kontextmedvetenhet och så vidare.
  • är


Denna fas lyfte fram AI: s råa kraft för iteration men också det potentiella kaoset av debugging-kod som genereras av en annan enhet, som förlitar sig på AI för att fixa sina egna misstag baserat på dina observationer.


"Vänta, varför gör vi detta?" - Pivots och nödvändiga verklighetskontroller


medanClaude ärvisade imponerande kodningsförmåga, få de flesta saker rätt i första taget, det var inte ofelbart.Claude äroch förslag.Claude ärtycktes vara angelägna om att överkonstruera lösningarna som gör det extremt komplext i ett försök att göra det generiskt.Claude ärFöreslog en sofistikerad data bufferklass. Det fungerade men kände sig alltför komplex. När jag ifrågasatte behovet av denna komplexitet, medgav det och vi vände oss till mycket enklare direkt implementering genom att upptäcka naturliga pauser.


Ett annat exempel var när vi implementerade ljudkalibrering och insisterade (efter Gemini rättvis påpekade effektivitetsproblemet) det i inställningar. senare uppstod en praktisk tanke: "Vill inte denna kalibrering vara specifik för mikrofonen som används?".Claude ärFörst föreslogs lagring av kalibreringsinställningarper enhet, men tvingas med en enklare lösning: bara omkalibrera om ingångsenheten ändras.Återigen, med tanke på det praktiska användningssammanhanget (de flesta användare är osannolika att byta ingångsenheter ofta), väljer att uthärda ljudkalibreringen för endast 1 enhet gjorde mening.


är
Dessa ögonblick understryker att effektiv vibe kodning inte är passiv acceptans; det är en aktiv dialog där utvecklaren guidar, ställer frågor och ibland korrigerar AI: s bana.
är
Dessa ögonblick understryker att effektiv vibe kodning inte är passiv acceptans; det är en aktiv dialog där utvecklaren guidar, ställer frågor och ibland korrigerar AI: s bana.

Dessa ögonblick understryker att effektiv vibe kodning inte är passiv acceptans; det är en aktiv dialog där utvecklaren guidar, ställer frågor och ibland korrigerar AI: s bana.


Definiera "Vibe": Hur Vaani förkroppsligade detta tillvägagångssätt


Reflekterar på denVaaniUtvecklingsresan visade de grundläggande egenskaperna som ofta är förknippade med vibe-kodning:


    är
  • Minimal specifikation i förväg: Började med ett mål, inte en detaljerad plan.
  • är
  • AI som primär implementatör: AI skrev det stora flertalet av den ursprungliga koden och efterföljande funktioner/fixar.
  • är
  • Förfiningar som drivs av intuition: Förändringar drevs ofta av subjektiva tester (”kvaliteten känns dålig”, ”användargränssnittet bör vara rörligt”) snarare än formella krav.
  • är
  • Emergent design: Applikationens arkitektur och funktionsuppsättning utvecklades organiskt och reaktivt. Till exempel förenkla kärnljudledningen och lägga till parallella kontroller senare eller ersätta Tkinter med PySide6 för (threading) förenkling och ett modernt utseende.
  • är
  • Debugging delegation: Min roll i att fixa buggar var ofta att rapportera symtom exakt så att AI kunde generera botemedel.
  • är


Detta stämmer väl överens med den nuvarande diskussionen om att definiera vibe kodning genom dess hastighet, beroende av naturligt språk och ibland en mindre grad av utvecklare granskning.SpektrummedanVaanistartade nära "pure vibe" slutet, projektet naturligt skiftade mot mer struktur (begär modularisering, och kod recensioner) som det mognade och närmade sig release.


Beyond the Hype: Novel Insights från Trenches


Working so closely with the AI on a complete project yielded some insight that goes beyond the typical "AI is fast but makes mistakes" narrative.


    är
  1. AI har en överingenjörisk tendens: Upprepade gånger var AI: s första lösning mer komplex än nödvändigt (t.ex. inledande arkitektur, textbuffring, konfigurationshantering).
  2. är
  3. Utvecklaren som ett viktigt filter och validator: Det här var inte bara passiv kodning. Min roll utvecklades till att vara en kritisk validator, verklighetskontroll och komplexitetsfilter. Fråga AI varför denna arkitektur var lika viktig som att begära nya funktioner. Effektiv vibe kodning kräver aktivt mänskligt engagemang.
  4. är
  5. Det oundvikliga skiftet mot struktur: Pure vibe-kodning fick projektet ur marken otroligt snabbt. Men för att göra Vaani underhållsbart och redo att släppas (särskilt för öppen källkod) var ett medvetet skifte nödvändigt. Explicit begäran om modulering, kodkvalitetsanalys och refaktoring blev avgörande i senare skeden. Vibe-kodning kan vara ett steg men traditionella teknikprinciper behövs fortfarande för robust underhållsbar programvara.
  6. är
  7. Implicit lärande vs. djup förståelse: Jag lärde mig mycket genom att debugga AI: s kod. Men eftersom AI ofta tillhandahöll korrigeringar direkt, behövde jag inte alltid uppnå den djupaste nivån av förståelse för varför vissa komplexa problem inträffade (som subtila tävlingsförhållanden eller specifika UI-ramverk).
  8. är


The Double-Edged Sword: Väger fördelarna och nackdelarna


Pros:


    är
  • Blazing Speed: Prototypering och initial implementering av funktioner är häpnadsväckande snabbare.
  • är
  • Komplexitetshantering: AI kan snabbt generera kod för komplexa uppgifter (integrera bibliotek, hantera paralleller), vilket sänker barriären för inmatning.
  • är
  • Boilerplate Buster: Tråkig installation och repetitiv kod hanteras automatiskt.
  • är
  • Tvungen inlärning (via debugging): Att fixa AI-fel tvingar ofta till förståelse för problemdomänen, vilket indirekt främjar inlärning.
  • är


Cons:


    är
  • Hög risk för subtila buggar: Snabb generering och reaktiv debugging kan lätt missa kantfall, tävlingsförhållanden eller djupare logiska brister.
  • är
  • Potential för dålig arkitektur: AI: s initiala designval kan vara suboptimala eller alltför komplexa om de inte kritiskt utvärderas av utvecklaren.
  • är
  • Svåra debuggingcykler: Att fixa kod som du inte skrev, speciellt när AI kämpar med det underliggande problemet (som komplexa tillstånd eller samtidighet), kan vara frustrerande och tidskrävande.
  • är
  • Organiskt odlad, AI-genererad kod kan bli förvirrad och svår att förstå utan avsiktlig omarbetning och strukturering.
  • är
  • Skill Erosion Potential: Överdriven beroende kan hindra utvecklingen av grundläggande design, debugging, arkitektoniska färdigheter och viktigast av allt mänsklig intuition.
  • är
  • Icke-funktionella krav Försummelse: Säkerhet, prestanda, resurshantering och omfattande felhantering kan lätt förbises i rush för funktionalitet.
  • är


Taming the Vibe: Recommendations for Effective Collaboration


Vibe kodning är utan tvekan ett kraftfullt verktyg, men det kräver skicklighet att använda effektivt. Om du är en erfaren utvecklare och överväger detta tillvägagångssätt, här är mina generiska rekommendationer baserade på min erfarenhet av att byggaVaanioch .


    är
  1. Validera, acceptera inte bara: behandla AI-koden som ett utkast. Fråga dess arkitektoniska val ("Varför detta mönster? är det lämpligt här?"). Be om alternativ. Testa noggrant bortom "lycklig väg."
  2. är
  3. Handla som ett komplexitetsfilter: Om en AI-lösning verkar alltför komplex eller använder osäkra mönster utan god anledning, tryck tillbaka.
  4. är
  5. Plan för struktur: Erkänna att den ursprungliga vibe-kodade prototypen sannolikt kommer att behöva förfining. budgettid för refaktoring – förbättra modulariteten, lägga till tydlig dokumentation (kommentarer, READMEs) och förbättra kodkvaliteten innan man överväger ett projekt stabilt eller redo för release.
  6. är
  7. Fokusera på förståelse: Kopiera inte bara AI-koden. Använd AI som en handledare. När den ger en korrigering eller ett komplext stycke kod, be den att förklara resonemanget bakom det.
  8. är
  9. Utnyttja etablerade verktyg och metoder: När AI accelererar iterationen blir upprätthållandet av programvarukvaliteten ännu viktigare. Omfamna automatiserad tidig testning – enhet och integrationstester ger viktiga säkerhetsnät mot regressioner. Par detta med kodkvalitet och statiska analysverktyg (som linters och analyser) för att fånga buggar, stilproblem och anti-mönster som kan glida förbi både människor och AI.
  10. är


Slutsats: Vibe Coding - En kraftfull partner, inte en ersättning


My journey building Väntabekräftade att AI-assisterad "vibe-kodning" är mer än bara hype. Det förändrar fundamentalt utvecklingsarbetsflödet, vilket erbjuder en oöverträffad hastighet vid översättning av idéer till funktionell kod. Det tillät mig, en enda utvecklare, att bygga en rimligt komplex applikation i en bråkdel av tiden (~ 15 timmar) som det traditionellt kan ha tagit.

Vänta


Det är dock inte en magisk stav. Det är ett samarbete som kräver kommunikation, kritiskt tänkande och övervakning. AI fungerar som en otroligt snabb, kunnig men ibland överentusiastisk assistent. Det kan generera komplicerad logik på sekunder men kan missa den enklaste lösningen eller förbise verkliga begränsningar eller praktiska möjligheter. Det kan fixa buggar omedelbart men kan kämpa med nyanserna.


Den verkliga kraften uppstår när utvecklaren aktivt engagerar sig – vägleder AI, ifrågasätter dess antaganden, validerar dess utgång och tillämpar grundläggande principer för mjukvaruteknik. Vibe kodning ersätter inte utvecklarens färdigheter; det flyttar den mot arkitektur, validering, effektiv uppmaning och kritisk integration.

L O A D I N G
. . . comments & more!

About Author

Nilesh Raghuvanshi HackerNoon profile picture
Nilesh Raghuvanshi@webstruck
Senior Data Scientist @ Siemens | Crafting Industrial Copilots | Bridging Research, Strategy, and Impact

HÄNG TAGGAR

DENNA ARTIKEL PRESENTERAS I...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks