Tahti ⭐
Tahti on avoimen lähdekoodin työkalu, jonka rakensimme automatisoimaan ohjelmistokehityksen työnkulkuja. Se ajaa autonomisia AI-botteja, jotka kirjoittavat koodia, korjaavat bugeja ja hallitsevat GitLab-merge requesteja — sinun aikasi vapautuu muuhun.
Käytämme Tahtia itse omien projektien ylläpitoon. Jos se kuulostaa hyödylliseltä, olet tervetullut ottamaan sen käyttöön.
Miten se toimii
Tahti on MCP-palvelin (Model Context Protocol). Se integroituu GitHub Copilot CLI:hin tekoälymoottorina. Kun se on konfiguroitu, ohjaat sitä luonnollisella kielellä Copilot-sessiossasi.
Peruskäsitteet:
Jobit ovat työn yksiköitä: tehtävänkuvaus, GitLab-repositorio ja haara. Jokainen jobi saa oman eristetyn paikalliskloonin, joten useampi botti voi toimia samanaikaisesti.
Botit suorittavat jobeja. Botti käy tehtävän läpi sykli kerrallaan, commitoi edistymisen jokaisen syklin jälkeen ja luo valmistuttuaan merge requestin. Jos CI menee läpi, MR voidaan yhdistää automaattisesti.
Monitorit tarkkailevat olosuhteita ja luovat jobeja automaattisesti — esimerkiksi luomalla korjausjobin aina kun CI-putki epäonnistuu.
Ajastukset ohjaavat automaattista botin suoritusta — poimivat odottavia jobeja ja ajavat niitä asetetuin väliajoin ilman manuaalista puuttumista.
Jobin elinkaari
Jobi kulkee näiden vaiheiden läpi:
- Luotu — Jobi on olemassa tehtävänkuvauksen ja kohderepositorioin kanssa. Botti ei vielä aja.
- Käynnissä — Botti työskentelee aktiivisesti. Se lukee TODO-listan, tekee muutoksia ja commitoi jokaisen syklin jälkeen.
- MR auki — Botti viimeisteli työn ja loi merge requestin. CI on käynnissä.
- Yhdistetty — MR yhdistettiin (manuaalisesti tai automaattisesti CI:n mentyä läpi). Jobi siirtyy arkistoon.
- Arkistoitu — Työtila siivottu, logit ja artefaktit tallennettu.
Jobit voivat myös olla pysähdyksissä (botti pysäytetty, työ säilytetty) tai epäonnistuneita (botti antoi periksi liian monien virheiden jälkeen). Pysähdyksissä olevia jobeja voi jatkaa koska tahansa.
Aloittaminen
Asenna Tahti:
npm install -g @kotocoop/tahti
Lisää se MCP-konfiguraatioosi (esim. ~/.copilot/mcp-config.json):
{
"mcpServers": {
"tahti": {
"command": "tahti"
}
}
}
Avaa sitten Copilot-sessio workspace-hakemistossasi. Copilot pyytää lupaa käyttää Tahti-työkaluja — hyväksy kerran ja olet valmis.
Tarvitset GitLab API -tokenin ja GitHub Copilot -tilauksen botteja varten.
Täydelliset asennusohjeet löytyvät Tahti-repositoriosta.
Jobien hallinta
Jobit ovat työn perusyksikkö. Luo sellainen kuvailemalla tehtävä luonnollisella kielellä.
Esimerkkiprompteja:
“Luo jobi kotocoop/myapp:lle develop-haaralle — lisää syötteen validointi kirjautumislomakkeeseen”
“Listaa kaikki jobit”
“Näytä mitä coverage-improvement -jobi on tehnyt tähän mennessä”
“Käynnistä botti login-validation -jobille”
“Pysäytä kaikki käynnissä olevat botit”
Monitorit
Monitorit toimivat taustalla ja luovat jobeja automaattisesti kun ehdot täyttyvät. Jokainen monitori tarkistaa asetetuin väliajoin ja noudattaa jäähtymisaikaa päällekkäisten jobien välttämiseksi.
Esimerkkiprompteja:
“Luo CI-monitori kotocoop/myapp:lle develop-haaralle, tarkista 5 minuutin välein”
“Näytä monitorien tila”
“Triggeröi SonarQube-monitori nyt”
“Pysäytä myapp:n CI-monitori”
CI-putkimonitori
Tarkkailee haaraa epäonnistuneiden putkien varalta. Kun viimeisin putki epäonnistuu, korjausjobi luodaan.
Tärkeimmät asetukset:
project— GitLab-projektin polku (esim.myteam/myapp)branch— tarkkailtava haara (oletus:develop)status— putken tila, joka triggeröi (oletus:failed)interval— tarkistusväli sekunteina (esim.300= 5 minuuttia)cooldown— minimiaika triggerien välillä (esim.3600= 1 tunti)
Kattavuusanalyysimonitori
Lataa kattavuusraportit CI-artefakteista ja tarkistaa onko tiedostoja alle kynnysarvon. Luo parannusjobeja kattavuustason mukaan ryhmiteltyinä.
Tärkeimmät asetukset:
project— GitLab-projektin polkuthreshold— kattavuusprosentti, jonka alle jäävät tiedostot triggeröivät jobin (oletus:80)jobName— CI-jobi, joka tuottaa kattavuusartefaktin (oletus:test:unit)
SonarQube-monitori
Hakee SonarQube-palvelimelta avoimia ongelmia. Luo korjausjobeja konfiguroitua vakavuustasoa vastaavista ongelmista.
Tärkeimmät asetukset:
serverUrl— SonarQube-palvelimen URLprojectKey— SonarQube-projektin avaintoken— SonarQube API -tokenseverities— vakavuustasot joihin reagoidaan (oletus:["CRITICAL", "MAJOR"])issuesPerJob— maksimi ongelmia per korjausjobi (oletus:10)fileCooldownMinutes— ohita haaralla äskettäin muokatut tiedostot (oletus:120)
Merge-konflikimonitori
Tarkistaa avointen merge requestien konfliktit kohdehaaran kanssa. Luo selvitysjobin jokaiselle konfliktoivalle MR:lle.
Tärkeimmät asetukset:
project— GitLab-projektin polkutargetBranch— haara, jota vasten tarkistetaan (oletus:develop)
Testivirhemanitori
Tunnistaa epäonnistuneet testijobinnit viimeisimmästä CI-putkesta ja luo debug-jobeja virheiden logit mukaan liitettynä.
Tärkeimmät asetukset:
project— GitLab-projektin polkubranch— tarkistettava haara
TODO-tiedostomonitori
Tarkkailee markdown-tiedostoja merkitsemättömien tehtäväkohtien (- [ ]) varalta. Kustakin uudesta kohdasta tulee jobi. Seuraa tilaa niin ettei jo käsiteltyjä kohtia triggeröidä uudelleen.
Tärkeimmät asetukset:
files— tarkkailtavat markdown-tiedostot (esim.["README.md", "ROADMAP.md"])onlyWhenIdle— luo jobeja vain kun muita jobeja ei ole aktiivisena (oletus:true)
Koodikommenttimonitori
Skannaa lähdekooditiedostoja TODO-, FIXME- ja HACK-kommenttien varalta. Luo siivousjobeja uusien kommenttien ilmestyessä.
Tärkeimmät asetukset:
extensions— skannattavat tiedostotyypit (esim.[".js", ".ts"])excludeDirs— ohitettavat hakemistot (esim.["node_modules", "dist"])commentTypes— seurattavat kommenttityypitthreshold— uusien kommenttien minimimäärä jobin triggeroimiseen (oletus:1)
MR-luontivirhemanitori
Skannaa jobien työtiloja epäonnistuneista merge request -luontiyrityksiä ja luo uusintayritystä varten jobeja.
Monimutkaisuuden automaattinen jakamismonitori
Etsii jobeja, jotka botit ovat merkinneet liian monimutkaisiksi, ja jakaa ne automaattisesti pienemmiksi alitehtäviksi.
Mukautettu skriptimonitori
Ajaa komentotulkkiskriptin ja triggeröi jobin kun tulos täsmää regexiin. Käytä tähän mitä tahansa ehtoa, jota sisäänrakennetut monitorit eivät kata.
Tärkeimmät asetukset:
scriptPath— skriptin polkusuccessPattern— regex, jota verrataan skriptin stdout-tulosteeseen
Ajastukset
Ajastukset ajavat odottavia jobeja automaattisesti asetetuin väliajoin. Ilman ajastusta käynnistät botit manuaalisesti.
Esimerkkiprompteja:
“Luo toistuva ajastus, joka ajaa 2 jobia 10 minuutin välein”
“Näytä aktiiviset ajastukset”
“Pysäytä toistuva ajastus”
Toistuvat ajastukset ajavat kiinteällä aikavälillä ja käynnistävät konfiguroitavan määrän botteja odottavien jobien poolista. Jobit valitaan prioriteetin mukaan tai satunnaisesti kun prioriteetit ovat samat.
Kertakäyttöiset ajastukset triggeröivät yksittäisen ajon viiveen jälkeen — hyödyllinen viivästettyihin käynnistyksiin.
Tyypillisiä käyttötapoja
Automaattiset CI-korjaukset. CI-monitori tarkkailee kehityshaaraa. Putki epäonnistuu → korjausjobi luodaan → botti diagnosoi ja korjaa → merge request luodaan. Manuaalista reagointia ei tarvita.
Testikattavuuden parantaminen. Kattavuusmonitori luo jobeja kun tiedostot alittavat kynnysarvon. Toistuva ajastus käy ne läpi ajan myötä.
Koodilaatu. SonarQube-monitori luo korjausjobeja vakavuustason ylittäville ongelmille. Aja rinnakkain tai yksi kerrallaan.
Tiekartan toteutus. Laita tehtävät markdown-tiedostoon checkboxeina. TODO-tiedostomonitori muuttaa ne jobeiksi ja toistuva ajastus ajaa ne.
Rinnakkainen työ. Aja useita botteja samanaikaisesti eri repositorioissa, ominaisuuksissa tai ylläpitotehtävissä — kukin omassa erstetyyssä työtilassaan.
Huomio tekoälystä ja yksityisyydestä
Tahtin botit käyttävät GitHub Copilot CLI:tä tekoälymoottoreinaan. Kun botti työskentelee koodisi parissa, koodi lähetetään GitHubille/Microsoftille ja käsitellään heidän käyttöehtojensa mukaisesti. Tahti itse toimii paikallisesti eikä lähetä koodiasi minnekään.
Lähdekoodi ja lisenssi
Tahtin kehittää Koto Co-op ja se julkaistaan avoimen lähdekoodin ohjelmistona.
- Lähdekoodi: gitlab.com/kotocoop/software/tahti
- npm: @kotocoop/tahti