TGViewer
Azalio_tech Azalio_tech @azalio_tech · 658 subscribers
Post #39 864
#AI #opensource

Как с помощью генеративного ИИ улучшить PR в open source проект.

## Введение

Fluent Bit - это быстрый и легковесный логгер и форвардер логов, который часто используется в облачных средах для сбора и отправки данных. В этой статье я расскажу, как с помощью ИИ удалось быстро разобраться в незнакомой кодовой базе и подготовить качественный PR.

## Проблема

При настройке отправки логов в Amazon Kinesis через Fluent Bit я столкнулся с ограничением - плагин не позволял указать нестандартный порт для подключения. Это было критично в нашей инфраструктуре, где из-за особенностей сетевой архитектуры мы используем нестандартные порты для доступа к kinesis.

## Первоначальное решение

Мой коллега предложил простой патч, который решал проблему:
Было:


ctx->kinesis_client->port = 443;
struct flb_upstream *upstream = flb_upstream_create(config, ctx->endpoint,
443, FLB_IO_TLS,
ctx->client_tls);



Стало:


ctx->kinesis_client->port = ctx->port;
struct flb_upstream *upstream = flb_upstream_create(config, ctx->endpoint,
ctx->port, FLB_IO_TLS,
ctx->client_tls);


Патч работал, но для долгосрочного решения нужно было внести изменения в апстрим проекта. Пересборка Fluent Bit при каждом обновлении не самый удобный вариант.

## Работа с ИИ

Для работы я использовал cursor.com - форк VSCode с интегрированным Claude AI. Главное преимущество этого редактора в том, что он "понимает" всю кодовую базу проекта.

Вот как проходила работа с ИИ:

1. Сначала я показал ему существующий патч и попросил предложить улучшения. ИИ самостоятельно:
- Обнаружил существующие в кодовой базе механизмы логирования (flb_plg_debug и flb_plg_error)
- Предложил добавить информативные сообщения о выбранном порте
- Добавил валидацию входных данных после моей просьбы.

2. ИИ самостоятельно написал тесты, проверяющие:
- Инициализацию с дефолтным портом
- Использование кастомного порта
- Обработку некорректных значений порта

3. Когда возникли проблемы с подхватыванием порта, ИИ предложил пошаговую отладку через gdb:

# Сборка с отладочной информацией
cmake .. -DCMAKE_BUILD_TYPE=Debug -DFLB_DEV=On

# Запуск отладчика
gdb --args ./bin/fluent-bit -c /etc/fluent-bit/fluent-bit.conf

# Команды отладки
(gdb) break cb_kinesis_init
(gdb) run
(gdb) print flb_output_get_property("port", ins)
(gdb) print *ins


## Результат

Итоговый PR был вмержен в основную ветку проекта. На всю работу ушло около 6 часов, включая время на знакомство с кодовой базой Fluent Bit.

Теперь изменение конфигурации Fluent Bit для работы с нестандартным портом Kinesis выглядит так:


[OUTPUT]
Name kinesis
Match *
region us-east-1
port 4443 # Новый параметр
stream my-stream


Я надеюсь в версии fluent-bit 3.2 оно уже будет работать.

P.S. Я пробовал копилот от гитхаба для этой задачи - он мне показался несколько бесполезым и не шел ни в какое сравнение с sonnet 3.5.
GitHub out_kinesis_streams: add custom port support for Kinesis output plugin by azalio · Pull Request #9317 · fluent/fluent-bit This PR enhances the Kinesis output plugin by adding support for custom port configuration. The changes include: Added a new configuration option 'port' to allow users to specify ...
  • 👍 4
  • ❤ 1
More from @azalio_tech
  1. Sep 22, 2026Post #90
  2. Sep 7, 2026А хорошо бы запускать спокойно батчевые задачи на всех нодах кубера и не беспокоиться за S…
  3. Aug 14, 2026Показать что ты Лев Толстой, а не толстый лев можно тут: https://aot-kuberconf.ru/cfp (Отк…
  4. Aug 1, 2026У меня синдром дефицита внимания. Это когда внимание не держится на одном предмете дольше…
  5. Jul 19, 2026В последнее время уж больно часто стало появляться новостей про фотонику. Решил чуть копну…
  6. Jul 16, 2026Как некоторые тут знают, map-framework изначально писался под claude code. Что же делать е…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →