| Kilo Code: обзор архитектуры |
|
| Добавил(а) microsin | ||||||||||||||||||||||||||||||||||
|
Это перевод обзора на архитектуру платформы Kilo [1], который может помочь разработчикам понять, как различные компоненты этой системы взаимодействуют друг с другом. [Архитектура системы] Kilo это платформа искусственного интеллекта (AI) для программистов, построенная вокруг центральной подсистемы командного интерфейса (Kilo CLI engine), на основе которой работает каждый клиентский интерфейс — командная строка терминала, плагин VS Code и облачные сервисы. Архитектура следует традиционному подходу многоуровневых слоев, где все клиенты коммуницируют с CLI через HTTP + SSE, и CLI соединяется с провайдерами AI (моделью ИИ) либо напрямую, либо через Kilo Cloud.
Рис. 1. Диаграмма архитектуры Kilo AI. [Kilo CLI] CLI (packages/opencode/) это ядро, на основе которого построены все продукты. Оно содержит среду выполнения ИИ-агента (AI agent runtime), запуск инструментария, управление сессией, интеграцию с провайдером выбранной модели, и HTTP-сервер. Каждый клиент порождает или подключается к процессу обслуживания (kilo serve) и коммуницирует с ним через HTTP + SSE с помощью @kilocode/sdk. CLI может работать в нескольких режимах: kilo — интерактивный TUI (Text User Interface, текстовый пользовательский интерфейс) для работы программиста в терминале. Ключевые подсистемы внутри CLI:
[Client Layer] Все клиенты — это всего лишь тонкие обертки над CLI (интерфейсом командной строки). Это означает: ● Вся "умная" логика (обработка ИИ, вызов инструментов, LSP, управление сессиями) находится в CLI-бинарном файле. ● Клиент (расширение VS Code, TUI в терминале) отвечает только за: - Запуск CLI-процесса. Преимущество такого подхода: любой новый клиент можно создать, просто реализовав обертку для вызова CLI-движка. VS Code Extension. Слой клиента в виде плагина/расширения VScode (packages/kilo-vscode/) содержит в себе бинарник CLI, и порождает kilo serve как дочерний процесс. Плагин включает: Sidebar Chat — основной интерфейс с пользователем. Текстовый диалог, в котором программист задает вопросы, и модель AI ему отвечает. TUI, текстовый пользовательский интерфейс - еще один слой клиента. Это встроенный в сам CLI интерфейс, который работает прямо в терминале. Отличительная особенность: TUI построен с использованием SolidJS — библиотеки для создания веб-интерфейсов (как React, но быстрее). Рендерится в терминале через OpenTUI — библиотеку, которая позволяет отображать веб-компоненты (HTML/CSS/JS) в текстовой среде терминала. [Kilo Cloud] Сервис облачного слоя платформы, который расширяет возможности локального CLI, добавляя управление доступом, маршрутизацию к моделям и автономных агентов в облаке. Важный момент: инфраструктура облака живет в отдельном репозитории — то есть это отдельный продукт/компонент, не смешанный с кодом локального CLI. Kilo Gateway. Шлюз (packages/kilo-gateway/ в этом репозитории, плюс маршруты API в облаке) обрабатывает следующие задачи: Authentication — аутентификация (вход в систему через GitHub, Google, корпоративный SSO, см. Q007 [2]), управление API-ключами для доступа к Kilo Cloud из скриптов/CI. Обеспечивает контроль доступа на основе ролей (RBAC) — кто может использовать дорогие модели (GPT-4, Claude Opus), кто может создавать автономных агентов. Cloud Agent. Это ключевой компонент Kilo Cloud, который выполняет AI-задачи по кодингу непосредственно в облаке, а не на локальной машине пользователя. Cloud Agent реализован как Cloudflare Worker — бессерверная функция, работающая на границе сети Cloudflare. Это обеспечивает глобальную доступность, автоматическое масштабирование и изоляцию. Обеспечивает запуск Kilo CLI в изолированных средах (sandbox) через web-дашборд, webhooks или автоматизированные рабочие процесса. Обеспечивает защищенное API для следующих задач: ● Создание и управление сессиями кодирования с полной интеграцией GitHub/GitLab. Kilo Bot. это бот для GitHub/GitLab, который автоматически реагирует на комментарии в issues и упоминания в pull requests (PR). Он не выполняет работу сам, а отправляет задачи в Cloud Agent. Простыми словами: это интерфейс, который позволяет вам "общаться" с Kilo прямо в вашем репозитории, как с коллегой. KiloClaw. Это отдельная многопользовательская (multi-tenant) платформа для выполнения вычислений, работающая поверх Fly.io (сервис глобального развертывания приложений) и управляемая через Cloudflare Worker (выполняет роль главного контролера: принимает запросы пользователя, создаёт или выбирает нужную машину на Fly.io, перенаправляет трафик, координирует работу через Durable Objects). Durable Objects — это особая возможность Cloudflare Workers, позволяющая поддерживать согласованное состояние между запросами: State management: хранит информацию о пользователе, т. е. какая машина ему выделена, какой у неё статус (запущена, остановлена, обновляется), какие задачи выполняются. Рис. 2. Диаграмма архитектуры Kilo Cloud. Code Review. Это автоматизированный сервис проверки кода, который интегрируется с GitHub через веб-hooks, анализирует pull requests (PR) с помощью Cloud Agent и публикует замечания/предложения прямо в PR. Сервис учитывает лимиты параллельности на организацию и автоматически ставит задачи в очередь. Поддерживает лимиты одновременной работы организации и автоматическую обработку очереди запросов. Простыми словами: автоматический ревьюер кода в вашем GitHub-репозитории, который пишет комментарии к строкам кода, как живой разработчик. Auto Triage. Это автоматический сервис для обработки GitHub issues, который классифицирует задачи (баг, фича, вопрос), находит дубликаты через поиск векторной похожести (semantic similarity) и опционально создаёт PR с исправлением для уверенных в своем действии проблем. Простыми словами: "AI-администратор" репозитория, который разбирает входящие задачи, группирует похожие и иногда даже сам их чинит. App Builder. Это сервис, который строит (build) и развертывает (deploy) пользовательские приложения через Cloud Agent. Пользователи могут генерировать полноценные приложения из промптов (текстовых описаний запросов), а App Builder координирует работу Cloud Agent для создания каркаса, итеративной доработки и развертывания результата. Gas Town. Это платформа для мульти-агентного управления, которая координирует работу автономных AI-агентов по кодингу над реальными Git-репозиториями. Gas Town работает полностью на Cloudflare (центральный Durable Object управляет всем состоянием, а Docker-контейнеры на Cloudflare Containers запускают процессы агентов через Kilo CLI). Простыми словами: "фабрика AI-разработчиков", где множество агентов параллельно работают над разными задачами в разных репозиториях, полностью автоматически и без участия человека. Ключевые концепции: Town — workspace/project, который содержит один или несколько rig-ов (репозиториев). Агенты работают в следующей иерархии:
Reconciler Loop (цикл приведения к желаемому состоянию) запускается каждые 5 секунд и управляет всеми переходами состояния в системе. Этот цикл постоянно сравнивает: Желаемое состояние (desired state) — какие задачи должны быть выполнены, какие конвои активны, какие агенты свободны. Если есть расхождение → Reconciler принимает действия, чтобы привести систему к желаемому состоянию. [Ключевые концепции] Modes (режимы). Это конфигурируемые пресеты, с помощью которых настраивается поведение агентов: ● Определение, какие инструменты доступны. Model Context Protocol (MCP). MCP позволяет расширить функционал агента с помощью внешних инструментов: ● Серверы (например GitHub, Linear, Jira, Postgres, Context7, Browserbase) предоставляют дополнительные функциональные возможности. Checkpoints. Система управления состоянием на основе Git, которая позволяет безопасно экспериментировать (safe exploration). Она создаёт фиксации (commits) для отслеживания изменений, позволяет откатываться к предыдущим состояниям и использует теневой репозиторий для изоляции. Выполняет следующие функции: ● Создает фиксации (commits) для отслеживания изменений. Простыми словами: "машина времени для кода", встроенная в Kilo/Gas Town, которая позволяет агентам пробовать разные решения, не боясь сломать основную ветку. Worktrees. Git-изоляция рабочих деревьев (worktrees) для параллельного выполнения задач: ● Каждая сессия агента может работать в своем собственном worktree. [Шаблоны разработки] Коммуникация клиент - сервер. Все клиенты общаются с CLI через его HTTP + SSE API. Пакет @kilocode/sdk предоставляет клиента TypeScript: import { KiloClient } from "@kilocode/sdk" Module Export Pattern. Организация экспортов построена вокруг плоских ESM-экспортов внутри каждого модуля с последующим повторным экспортом через пространства имён (namespace) из индексного файла для группового доступа. Ключевое правило: не добавлять новых деклараций export namespace, так как экспорт на верхнем уровне проще для tree-shaking и лучше работает с Node runtime для удаления типов (type-stripping runtime). // packages/opencode/src/session/session.ts Импортируйте конкретный экспорт, когда это возможно, и используйте namespace re-export (Session.create, Session.list) только когда вызывающему коду нужен групповой доступ к модулю или когда необходимо сохранить существующую публичную форму API. CLI Server API. API сервера построен на базе Hono (лёгкий веб-фреймворк для JavaScript/TypeScript) и публикует OpenAPI-совместимый HTTP + SSE API, который используется пакетом @kilocode/sdk. Некоторые группы маршрутов мигрируются за экспериментальный Effect HttpApi мост с сохранением формы SDK. Клиенты не должны зависеть от деталей миграции. ● Обеспечивается стабильный вывод SDK, когда маршруты перемещаются между Hono и Effect HttpApi. Реализация инструмента. Шаблон реализации инструмента следуют единообразному паттерну с валидацией схем через Zod: export const ReadTool = Tool.define({ [Build System] Проект использует следующую систему сборки (Build System). Это набор инструментов, используемых для управления моно-репозиторием, сборки артефактов и тестирования: Bun — пакетный менеджер (monorepo workspaces) и среда для запуска утилит (runtime). [Репозитории]
См. также: Настройка окружения разработки [3]. [Ссылки] 1. Kilo Code Architecture Overview. 5. Building for the Kilo Ecosystem https://kilo.ai/docs/contributing/ecosystem |