Skip to content

Сжатие кода

Сжатие кода — это мощная функция, которая интеллектуально извлекает существенные структуры кода, удаляя детали реализации. Это особенно полезно для уменьшения количества токенов при сохранении важной структурной информации о вашей кодовой базе.

NOTE

Это экспериментальная функция, которую мы будем активно улучшать на основе отзывов пользователей и реального использования

Базовое использование

Включите сжатие кода с помощью флага --compress:

bash
repomix --compress

Вы также можете использовать его с удалёнными репозиториями:

bash
repomix --remote user/repo --compress

Как это работает

Алгоритм сжатия обрабатывает код с помощью парсинга tree-sitter для извлечения и сохранения существенных структурных элементов при удалении деталей реализации.

Сжатие сохраняет:

  • Сигнатуры функций и методов
  • Определения интерфейсов и типов
  • Структуры классов и свойства
  • Важные структурные элементы

При этом удаляет:

  • Реализации функций и методов
  • Детали циклов и условной логики
  • Внутренние объявления переменных
  • Код, специфичный для реализации

Пример

Оригинальный код TypeScript:

typescript
import { ShoppingItem } from './shopping-item';

/**
 * Рассчитать общую стоимость товаров
 */
const calculateTotal = (
  items: ShoppingItem[]
) => {
  let total = 0;
  for (const item of items) {
    total += item.price * item.quantity;
  }
  return total;
}

// Интерфейс товара
interface Item {
  name: string;
  price: number;
  quantity: number;
}

После сжатия:

typescript
import { ShoppingItem } from './shopping-item';
----
/**
 * Рассчитать общую стоимость товаров
 */
const calculateTotal = (
  items: ShoppingItem[]
) => {
----
// Интерфейс товара
interface Item {
  name: string;
  price: number;
  quantity: number;
}

Конфигурация

Вы можете включить сжатие в файле конфигурации:

json
{
  "output": {
    "compress": true
  }
}

Сценарии использования

Сжатие кода особенно полезно, когда:

  • Анализируете структуру и архитектуру кода
  • Уменьшаете количество токенов для обработки LLM
  • Создаёте высокоуровневую документацию
  • Изучаете паттерны кода и сигнатуры
  • Делитесь дизайном API и интерфейсов

Связанные опции

Вы можете комбинировать сжатие с другими опциями:

  • --remove-comments: Удаление комментариев кода
  • --remove-empty-lines: Удаление пустых строк
  • --output-show-line-numbers: Добавление номеров строк в вывод

Released under the MIT License.