Сжатие кода
Сжатие кода — это мощная функция, которая интеллектуально извлекает существенные структуры кода, удаляя детали реализации. Это особенно полезно для уменьшения количества токенов при сохранении важной структурной информации о вашей кодовой базе.
NOTE
Это экспериментальная функция, которую мы будем активно улучшать на основе отзывов пользователей и реального использования
Базовое использование
Включите сжатие кода с помощью флага --compress:
repomix --compressВы также можете использовать его с удалёнными репозиториями:
repomix --remote user/repo --compressКак это работает
Алгоритм сжатия обрабатывает код с помощью парсинга tree-sitter для извлечения и сохранения существенных структурных элементов при удалении деталей реализации.
Сжатие сохраняет:
- Сигнатуры функций и методов
- Определения интерфейсов и типов
- Структуры классов и свойства
- Важные структурные элементы
При этом удаляет:
- Реализации функций и методов
- Детали циклов и условной логики
- Внутренние объявления переменных
- Код, специфичный для реализации
Пример
Оригинальный код 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;
}После сжатия:
import { ShoppingItem } from './shopping-item';
⋮----
/**
* Рассчитать общую стоимость товаров
*/
const calculateTotal = (
items: ShoppingItem[]
) => {
⋮----
// Интерфейс товара
interface Item {
name: string;
price: number;
quantity: number;
}Конфигурация
Вы можете включить сжатие в файле конфигурации:
{
"output": {
"compress": true
}
}Сценарии использования
Сжатие кода особенно полезно, когда:
- Анализируете структуру и архитектуру кода
- Уменьшаете количество токенов для обработки LLM
- Создаёте высокоуровневую документацию
- Изучаете паттерны кода и сигнатуры
- Делитесь дизайном API и интерфейсов
Связанные опции
Вы можете комбинировать сжатие с другими опциями:
--remove-comments: Удаление комментариев кода--remove-empty-lines: Удаление пустых строк--output-show-line-numbers: Добавление номеров строк в вывод