1/2
Небольшой практический кейс.
Вспомним те доисторические времена, овеянные легендами древности, когда для работы с проектами мы использовали веб приложения чатов с различными моделями. Ведь тогда нам ещё не явились ИИ агенты с подписками по разумным ценам! Но и сейчас есть достойные случаи для всей этой возни с веб чатами: например, контекст в 1m токенов у Гемини, который позволяет модели сразу видеть огромный объём данных - например, ваш проект целиком. До сих пор скорость, удобство и качество такого подхода сложно превзойти любому ИИ агенту с каким бы то ни было меморибанком или индексом (пожалуй, только Qoder немного составляет конкуренцию).
Поэтому кейс актуален и по сей день.
▶️ Для передачи в Ai Studio будем использовать Repomix (https://repomix.com/), поставим его в свой проект своим любимым менеджером пакетов - инструкции на оффсайте по ссылке чуть выше.
Для ts/js проектов в проектах я прописываю скрипт для использования репомикс в package.json: "repomix:all": "repomix -c repomix.config.json". Как ещё можно запаковать, почему "all", для чего нужно по-другому? Например, для крупных проектов - только меморибанк, чтобы хотя бы общие вещи обсуждать. Можно паковать только код - без тестов, если размер проекта пограничный на 1m токенов, или вы не хотите размывания внимания модели.
Для обеспечения разных "видов" паковки нам потребуются разные конфиги repomix. конфиг - файл в корне проекта, документация по нему на оффсайте.
🟢 Вот пример моего конфига для "repomix:no-test": "repomix -c repomix.no-test.config.json":
repomix.no-test.config.json:
{
"output": {
"filePath": "_repo.xml",
"style": "xml",
"parsableStyle": false,
"fileSummary": true,
"directoryStructure": true,
"removeComments": false,
"removeEmptyLines": false,
"topFilesLength": 5,
"showLineNumbers": false,
"copyToClipboard": false
},
"include": [],
"ignore": {
"useGitignore": true,
"useDefaultPatterns": false,
"customPatterns": [
".git",
"data",
".husky",
"pnpm*.*",
"_archive/",
// "src/",
".tasks/",
".memory-bank/archive/",
".memory-bank/.obsidian/",
".memory-bank/agents/",
".memory-bank/commands/",
".memory-bank/issues/",
".vscode/",
".idea",
".gemini",
".codex",
".claude",
".aider",
".github",
"test-results/",
"tests/",
"seeds/",
"scripts/",
"logs",
".run",
"*.patch",
"**/*.log",
"log*.txt",
"*-lock.*",
"LICENSE"
]
},
"security": {
"enableSecurityCheck": true
},
"tokenCount": {
"encoding": "o200k_base"
}
}
Особенности "пациента": игнорируется куча ненужных файлов: разные артефакты агентов, IDE, менеджеров пакетов и прочее, что не очень нужно (артефакты тестирования/сборки/ci-cd).
Обратите внимание : меморибанк я смотрю через Obsidian, подключая его как отдельный Vault - мы игнорируем служебную папку Obsidian.
Мы игнорируем папки агентов и команд - они подключены к Клоду (в папку '.claude/' проекта) через симлинки, - чтобы я мог хранить команды и агентов. Если нужно, я могу переподключить на уровень пользователя для использования этого же набора агентов и команд в другом проекте. Или использовать эти команды в другом ИИ агенте - вдруг появятся совместимые по формату.
"seeds/" - вспомогательные папки, храню там начальные данные для БД. "scripts/" - вспомогательные скрипты (sh/ts).
Если использовать расширение *.jsonc/*.json5 (https://github.com/yamadashy/repomix/issues/618) можно комменты в конфиг добавлять без репорта об ошибках от IDE.
...
продолжение: https://t.me/deksden_notes/103