Přeskočit na obsah

Druhý pár očí u každého merge requestu.

Geekbot reviewuje merge requesty na GitLabu, GitHubu i Bitbucketu, z tiketů dělá větve a z produkčních chyb opravy. Běží ve vaší pipeline a odpovídá přímo ve vlákně.

Funguje s

Zobrazit na
Merge request !482Otevřený

Opakované doručení webhooku s prodlevou

webhook-retry do main

Changes
internal/notify/deliver.go
41func deliver(ctx context.Context, hook Hook, body []byte) error {
- res, err := client.Post(hook.URL, "application/json", bytes.NewReader(body))
- if err != nil {
- return err
- }
- return res.Body.Close()
42+ for attempt := 0; ; attempt++ {
43+ res, err := client.Post(hook.URL, "application/json", bytes.NewReader(body))
44+ if err == nil && res.StatusCode < 300 {
45+ return nil
46+ }
47+ time.Sleep(backoff(attempt))
48+ }
49}
geekbotbotzreviewoval

Čtu změnu…

VERDICT: changes-needed

Dvě chyby k opravě, než se to mergne.

Každý push se reviewuje znovu. Zjištění čekají ⏳, dokud je kód nevyřeší ✅.

Pět agentů, poslední slovo má vždy člověk

Každý dělá jednu práci v nástrojích, které váš tým už používá, a zastaví se tam, kde má rozhodnout někdo z týmu.

  • Reviewer

    Přečte každý push do merge requestu a nechá zjištění přímo u řádků, kterých se týkají, s verdiktem nahoře.

  • Coder

    Vezme tiket označený štítkem, napíše změnu ve vlastní větvi a otevře merge request.

  • Bug Fixer

    Vezme produkční chybu ze Sentry nebo Bugsinku, najde příčinu a navrhne opravu jako merge request.

  • Patcher

    Pravidelně porovnává vaše lockfily se známými zranitelnostmi a drží jeden merge request s bezpečnostními aktualizacemi.

  • Chat

    Odpovídá na otázky o vašich review, bězích a kódu a když požádáte o změnu, spustí úkol.

Od tiketu po mergnutou změnu

Celý cyklus tak, jak běží na skutečném projektu. Geekbot nikdy nemerguje vlastní práci.

  1. 1

    Vy

    Označíte tiket

    Přidáte štítek v Jiře nebo Linearu. Screenshoty a přílohy z tiketu dostane agent spolu s textem.

  2. 2

    Coder

    Vznikne větev a merge request

    Coder přečte tiket i kód, commitne do nové větve a otevře merge request. Tiket se přesune do stavu Rozpracováno.

  3. Bug Fixer

    Přijde produkční chyba

    Bug Fixer ji převezme ze Sentry nebo Bugsinku a zapojí se do cyklu s vlastním merge requestem.

    3

    Reviewer

    Každý push dostane verdikt

    Zjištění skončí u řádků, kterých se týkají. Zeptejte se ve vlákně přes @geekbot proč, a dostanete odpověď.

  4. 4

    Tester

    QA okomentuje tiket

    Komentář od člověka s rolí testera se vrátí do stejného běhu, na stejnou větev.

  5. 5

    Vy

    Mergnete a board se posune

    Merge je vždy rozhodnutí člověka. Tiket se posouvá spolu s větví.

Označte tiket, dostanete merge request

Coder hlídá v Jiře a Linearu svůj štítek. Dá o sobě vědět přímo v tiketu, pracuje ve vlastní větvi a vrátí se s odkazem.

  • Screenshoty a přílohy z tiketu dostane agent spolu s textem.
  • Tiket se přesune do stavu Rozpracováno, když práce začne, a do review, když se otevře merge request.
  • Komentář testera v tiketu se vrátí do stejného běhu, na stejnou větev.
Zobrazit v
SHOP-142K řešení

Tlačítko přihlášení na malých displejích překrývá patičku

Na displeji širokém 375 px leží tlačítko Přihlásit se přes odkazy v patičce, takže na něj nejde klepnout. Screenshot v příloze.

login-mobile.png

Štítky

frontend

Aktivita

Zatím žádné komentáře.

Zrychleno. Skutečný běh trvá pár minut.

Odpovězte na review

Odpovězte pod zjištěním nebo zmiňte @geekbot kdekoli v merge requestu. Vysvětlí, proč to napsal, opraví review, když mu řeknete, co z kódu vidět nemohl, a když požádáte, předá opravu Coderovi.

  • Komentář rozhodne otázku, kterou diff rozhodnout nemohl. Chybu ale neodargumentuje.
  • Oprava, o kterou požádáte ve vlákně, se commitne do stejné větve, ne do nové.
  • Zapíná se pro každý projekt zvlášť, na GitLabu, v GitHub App a v aplikaci pro Bitbucket.
Merge request !512Otevřený

Cachování kurzů měn v pokladně

checkout-rate-cache do main

geekbotVERDICT: verifyJednu věc musí ověřit člověk.
internal/pricing/rates.go
18func NewCache(src Source) *Cache {
19 return &Cache{src: src, ttl: 24 * time.Hour}

geekbotbot

ttl je 24 hodin: ověřte, že podmínky poskytovatele kurzů dovolují kurz takhle dlouho cachovat. V tomto repozitáři nejsou.

Vyberte odpověď a uvidíte, jak na ni geekbot zareaguje.

20}

Odpovědět jako Jana

Každé review končí jedním ze tří slov

První řádek každé poznámky je verdikt a na GitLabu a GitHubu se zároveň nastaví jako štítek merge requestu. Když si model není jistý, odpovědí nikdy není souhlas.

lgtm
Nic v této změně nebrání merge.
verify
Něco, co samotný diff nerozhodne, třeba data za běhu nebo externí kontrakt. Řekne, co a kde ověřit.
changes-needed
Aspoň jedna chyba, za kterou si reviewer stojí. Opravte, pushněte a další review řekne, jestli je vyřešená.
  • npm
  • pnpm
  • yarn
  • bun
  • Go
  • Composer
  • pip
  • poetry
  • uv

Známé zranitelnosti, záplatované podle rozvrhu

Patcher přečte vaše lockfily, zeptá se databáze OSV, čeho se týkají, a udržuje pro každý repozitář jeden merge request s bezpečnostními aktualizacemi. Kontrola čistého repozitáře nestojí nic.

  • Jen bezpečnost. Balíčku se dotkne, když se advisory týká verze, kterou máte zamčenou, a cílem je nejmenší vydání, které ji opravuje.
  • Jeden průběžný merge request ve vlastní větvi, přestavěný při každém běhu, takže je to vždy všechno opravitelné teď, a ne hromada zastaralých.
  • Co nešlo opravit bez nové hlavní verze, vypíše v merge requestu pro člověka. Sám hlavní verzi nikdy nepřekročí.
Pravidladenněod střední závažnostibez hlavních verzí
acme/shopK záplatování: 3

Zranitelné závislosti

Zkontrolováno dnes ráno, jen z lockfilů.

  • Django3.2.03.2.25

    requirements.txtCVE-2021-31542 +65

    VysokáOprava k dispozici
  • semver7.3.27.5.2

    package-lock.jsonGHSA-c2qf-rxjj-qqgw

    VysokáOprava k dispozici
  • express4.17.14.21.2

    package-lock.jsonGHSA-rv95-896h-c2vc +2

    StředníOprava k dispozici
  • cookie0.5.00.7.0

    package-lock.jsonGHSA-pxg6-pf52-xh8x

    NízkáPod prahem
Zrychleno. Skutečný běh je naplánovaný, nebo Spustit teď v konzoli.

Jeden job v pipeline, kterou už máte

Vložte job do konfigurace CI. Review běží na vašem vlastním runneru s klíčem k modelu, který existuje jen pro ten jeden běh.

Nechcete sahat do CI? Nainstalujte GitHub App nebo aplikaci pro Bitbucket a review poběží na našich workerech.

Napojí se na

  • GitLab
  • GitHub
  • Bitbucket
  • Jira
  • Linear
  • Sentry
.gitlab-ci.yml
geekbot:code_review:
  image: docker.io/geekcoderscz/geekbot:v2
  stage: test # any stage your pipeline defines
  id_tokens:
    GEEKBOT_ID_TOKEN:
      aud: https://broker.geekcoders.space # required: the broker issues the OpenRouter key from this token
  variables:
    GEEKBOT_BROKER_URL: https://broker.geekcoders.space
  script:
    - geekbot review
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  allow_failure: true
  timeout: 60m

Postavený tak, aby mohl do vašeho kódu

Agent, který čte váš kód, musí být nudně předvídatelný v tom, kam ten kód putuje. Tohle jsou pravidla, podle kterých běží.

Reviewer smí jen číst
Může otevírat, prohledávat a vypisovat soubory. Nemůže spouštět příkazy, měnit soubory ani přistupovat k síti.
Klíč pro každý běh s limitem útraty
Každý běh dostane vlastní krátkodobý klíč k modelu s pevným limitem v dolarech. Sám vyprší a po běhu se smaže.
Váš runner, váš kód
V CI běží review na vašem runneru a kód jde přímo k poskytovateli modelu. Naše servery vydají klíč a dostanou hotové review, nikdy váš repozitář.
Zapisující agenti nikdy nemergují
Coder, Bug Fixer a Patcher pracují v izolovaném sandboxu, pushnou větev a otevřou merge request. Mergne člověk.
Vlastní model
Nasměrujte kteréhokoli agenta na OpenAI-kompatibilní endpoint, který provozujete, a tyto běhy se našeho účtu u modelů nedotknou.
Zapečetěné přístupové údaje
Tokeny, které připojíte, jsou šifrované AES-256-GCM a otevírají se jen ve chvíli, kdy je běh potřebuje.

Přečíst si přehled bezpečnosti

Platíte za práci, ne za licence

Každý tarif obsahuje měsíční příděl kreditů a všichni ve vaší organizaci jsou v ceně. Kredit odpovídá zhruba jedné běžné akci agenta (review, úkol). Náročnější úkoly a silnější modely spotřebují víc.

Ceny během bety

  • Starter

    Pro malý tým, který si Geekbota zkouší na pár repozitářích.

    $49/ měsíc

    100 kreditů v ceně

    • Všech pět agentů
    • GitLab, GitHub i Bitbucket
    • Neomezeně členů a repozitářů
    • Vlastní endpointy modelů
    Požádat o přístup
  • Team

    Pro tým, který chce mít zreviewovaný každý merge request.

    $199/ měsíc

    450 kreditů v ceně

    • Všech pět agentů
    • GitLab, GitHub i Bitbucket
    • Neomezeně členů a repozitářů
    • Vlastní endpointy modelů
    Požádat o přístup
  • Business

    Pro několik týmů, které denně používají všech pět agentů.

    $749/ měsíc

    1 800 kreditů v ceně

    • Všech pět agentů
    • GitLab, GitHub i Bitbucket
    • Neomezeně členů a repozitářů
    • Vlastní endpointy modelů
    Požádat o přístup

Nad rámec tarifu práce pokračuje za $0.60 za kredit až do měsíčního limitu, který nastaví vlastník. Limit nula znamená pevnou stopku.

Ceny jsou měsíční, v amerických dolarech a bez DPH. Česká DPH 21 % se připočítá tam, kde to vyžaduje zákon, a pokladna před zaplacením zobrazí konečnou cenu.

Platíte kartou přes platební bránu GoPay formou měsíční opakované platby a předplatné můžete kdykoli zrušit. Každá nová organizace začíná zkušební verzí zdarma a bez karty. Visa a Mastercard, zabezpečeno 3-D Secure.

Na co se týmy ptají nejdřív

Jaké modely Geekbot používá?

Špičkové modely přes OpenRouter, vybrané pro každý projekt a agenta zvlášť. Agenta můžete nasměrovat i na OpenAI-kompatibilní endpoint, který provozujete sami.

Používá se můj kód k trénování modelů?

Geekbot modely netrénuje. Požadavky jdou přes OpenRouter jen k poskytovatelům, kteří zpracovávají data v EU, neuchovávají je (nulová retence) a netrénují na nich.

Funguje to se self-managed GitLabem?

Ano. Review je CI job, takže běží všude, kde běží vaše runnery, včetně self-managed instancí GitLabu.

Může Geekbot mergovat nebo pushovat do hlavní větve?

Ne. Reviewer jen čte. Coder, Bug Fixer a Patcher pushují vlastní větve a otevírají merge requesty. Merge zůstává na vašem týmu.

Co se stane, když dojdou kredity?

Práce pokračuje a účtuje se po kreditech až do měsíčního limitu, který nastaví vlastník organizace. S limitem nula se nová práce zastaví do dalšího období.

Kde Geekbot vzniká?

V České republice, ve firmě Geekcoders.

Požádat o přístup

Během bety pouštíme týmy postupně. Napište nám, kde máte kód, a ozveme se.

Údaje použijeme jen k odpovědi na vaši žádost. Více v zásadách ochrany osobních údajů.

Dejte svému dalšímu merge requestu druhý pár očí.