ProjectGraphAgent — это система управления проектами на основе Jsonnet, разработанная для AI-агентов (таких как Cursor, Gemini, Claude, Roo, Kilocode). Она предоставляет комплексную среду для документирования архитектуры проекта, отслеживания расхождений между заявленным и наблюдаемым состояниями, генерации визуальных диаграмм, автоматизации сгруппированных коммитов и создания артефактов, понятных для агентов.
- Заявленный и наблюдаемый граф: Модель "заявленного" состояния в Jsonnet + модель "наблюдаемого" состояния от языковых адаптеров → автоматическое обнаружение расхождений.
- Система индексации путей: Быстрый поиск файлов с множественными стратегиями (по пути, директории, типу файла, именам с паттернами).
- Выходные данные для агентов: Скомпилированный граф в JSON, отчеты о расхождениях, диаграммы Mermaid, markdown-файлы с планами, снимки состояния и события.
- Автоматизация: Группировка коммитов, синхронизация AI-команд, интеграция с CI-воркфлоу.
- Поддержка нескольких языков: Адаптеры для TypeScript/JavaScript и Python (с возможностью расширения).
-
project_graph.jsonnet- Корневой файл, который собирает весь граф, включая метаданные проекта, сущности, отношения, политики и правила группировки коммитов.
-
graph_parts/entities.jsonnet: Определяет все основные компоненты, файлы и ресурсы проекта.relations.jsonnet: Определяет отношения между сущностями (например, какой компонент что использует, каналы IPC).templates.jsonnet: Переиспользуемые схемы для различных типов сущностей.policies.jsonnet: Определяет архитектурные правила и соглашения для проекта.meta.jsonnet: Содержит метаданные о самом графе проекта.ai_commands.jsonnet: Определяет сопоставления для команд AI-ассистентов.
-
scripts/ai_committer.mjs: Скрипт, который автоматизирует создание категоризированных Git-коммитов на основеcommitGroups, определенных вproject_graph.jsonnet.clean_project.mjs: Скрипт, связанный с графом проекта.graph_generator.mjs: Скрипт, который генерирует этот README, сравнивает граф с реальными файлами проекта и сообщает о любых расхождениях.graph_validator.mjs: (В будущем) Скрипт для проверки графа на соответствие политикам, определенным вpolicies.jsonnet.publish_workflow.mjs: Скрипт, связанный с графом проекта.sync_ai_commands.mjs: Скрипт, который синхронизирует определения AI-команд между различными файлами правил AI-ассистентов.sync_to_standalone.mjs: Скрипт, связанный с графом проекта.
ProjectGraphAgent включает мощную систему индексации путей, которая обеспечивает быстрый поиск файлов и сущностей по различным критериям:
findByPath(path): Найти сущность по точному пути файлаfindByDirectory(dir): Найти все файлы в директорииfindByFileType(ext): Найти все файлы с определенным расширениемfindByFileName(name): Найти файлы с определенным именемfindByPattern(pattern): Поиск файлов по паттернуpathExists(path): Проверить существование файла в индексеgetIndexStats(): Получить статистику индекса
- Индекс путей: Прямое сопоставление путь → сущность
- Индекс директорий: Директория → список сущностей
- Индекс типов файлов: Расширение → список сущностей
- Индекс имен файлов: Имя → список сущностей
// Найти конкретный конфигурационный файл local config = graph.templates.PathSearch.findByPath("package.json"); // Получить все TypeScript файлы local tsFiles = graph.templates.PathSearch.findByFileType("ts"); // Найти все файлы в директории src local srcFiles = graph.templates.PathSearch.findByDirectory("src"); // Проверить существование README local hasReadme = graph.templates.PathSearch.pathExists("README.md");
Эта система индексации особенно ценна для AI-агентов, обеспечивая эффективную навигацию и анализ больших кодовых баз.
-
Скопируйте систему в ваш проект:
cp -r ProjectGraphAgent/ ваш-проект/
-
Настройте конфигурацию в
ProjectGraphAgent/project_graph.jsonnet:{ projectName: 'название-вашего-проекта', projectUrl: 'https://github.com/ваш-логин/ваш-проект', description: 'Описание вашего проекта.', // ... остальная конфигурация } -
Установите зависимости:
# Установка Jsonnet # Linux: apt install jsonnet # macOS: brew install jsonnet # Windows: winget install jsonnet
-
Запустите генератор:
node ProjectGraphAgent/scripts/graph_generator.mjs --keep-compiled
ProjectGraphAgent/.cache/graph.json- Скомпилированный граф с наблюдаемыми данными и расхождениями.memory-bank/diagrams/graph.mmd- Диаграмма Mermaid для отношений.memory-bank/drift.md- Отчет о расхождениях (заявленное vs. наблюдаемое).memory-bank/plans/- Markdown-файлы с планами для конкретных доменов.
Добавьте в .github/workflows/*.yml:
- name: Generate Graph
run: node ProjectGraphAgent/scripts/graph_generator.mjs --keep-compiled
- name: Validate Graph
run: node ProjectGraphAgent/scripts/graph_validator.mjsЧтобы упростить взаимодействие с AI-ассистентами, вы можете настроить их на запуск npm run graph:audit и npm run graph:commit с помощью более простых, разговорных команд. Ниже приведены примеры того, как это сделать для различных AI-ассистентов на основе определений в graph_parts/ai_commands.jsonnet.
Важно: Точный синтаксис и возможности могут различаться у разных AI-ассистентов. Для получения точных сведений о конфигурации обратитесь к документации вашего AI.
## Graph Audit
- **Trigger Phrase:** "graph-audit"
- **Action:** Run `node project_graph/scripts/graph_generator.mjs`
- **Description:** Выполняет скрипт аудита графа проекта для проверки расхождений между определением графа и реальными файлами проекта.
## Graph Commit
- **Trigger Phrase:** "graph-commit"
- **Action:** Run `npm run graph:commit`
- **Description:** Выполняет скрипт AI Committer для автоматической категоризации и коммита подготовленных изменений на основе правил из project_graph.jsonnet.
## Sync Ai Commands
- **Trigger Phrase:** "sync-ai-commands"
- **Action:** Run `npm run sync:ai-commands`
- **Description:** Синхронизирует определения AI-команд между различными файлами правил AI-ассистентов.- **Command Aliases:** Когда пользователь запрашивает "graph-audit", "audit graph", "check graph" или "run audit", выполнить `node project_graph/scripts/graph_generator.mjs`.
- **Command Aliases:** Когда пользователь запрашивает "graph-commit", "commit graph", "auto commit" или "run committer", выполнить `npm run graph:commit`.
- **Command Aliases:** Когда пользователь запрашивает "sync-ai-commands", "sync ai", "update ai rules" или "sync assistant commands", выполнить `npm run sync:ai-commands`.## Graph Audit
- **Trigger Phrase:** "graph-audit"
- **Action:** Run `node project_graph/scripts/graph_generator.mjs`
- **Description:** Выполняет скрипт аудита графа проекта для проверки расхождений между определением графа и реальными файлами проекта.
## Graph Commit
- **Trigger Phrase:** "graph-commit"
- **Action:** Run `npm run graph:commit`
- **Description:** Выполняет скрипт AI Committer для автоматической категоризации и коммита подготовленных изменений на основе правил из project_graph.jsonnet.
## Sync Ai Commands
- **Trigger Phrase:** "sync-ai-commands"
- **Action:** Run `npm run sync:ai-commands`
- **Description:** Синхронизирует определения AI-команд между различными файлами правил AI-ассистентов.## Graph Audit
- **Trigger Phrase:** "graph-audit"
- **Action:** Run `node project_graph/scripts/graph_generator.mjs`
- **Description:** Выполняет скрипт аудита графа проекта для проверки расхождений между определением графа и реальными файлами проекта.
## Graph Commit
- **Trigger Phrase:** "graph-commit"
- **Action:** Run `npm run graph:commit`
- **Description:** Выполняет скрипт AI Committer для автоматической категоризации и коммита подготовленных изменений на основе правил из project_graph.jsonnet.
## Sync Ai Commands
- **Trigger Phrase:** "sync-ai-commands"
- **Action:** Run `npm run sync:ai-commands`
- **Description:** Синхронизирует определения AI-команд между различными файлами правил AI-ассистентов.- observedNotDeclared: 0
- declaredNotObserved: 13
ProjectGraphAgent разработан для работы в двух режимах:
-
Режим родительского проекта (
/home/igor/Документы/Проекты/agent_plugins_platform/ProjectGraphAgent/)- Содержит данные, специфичные для проекта (сущности и настройки Agent Plugins Platform).
- Используется для активной разработки и тестирования.
- Управляет родительским проектом (Agent Plugins Platform).
-
Автономный режим (
/home/igor/Документы/Проекты/ProjectGraphAgent/)- Чистый, универсальный шаблон.
- Готов к публикации на GitHub.
- Используется для распространения и переиспользования.
-
Разработка в родительском проекте:
# Работайте в agent_plugins_platform/ProjectGraphAgent/ # Вносите изменения в скрипты, graph_parts, адаптеры и т.д.
-
Синхронизация с автономной версией:
# Из директории agent_plugins_platform/ProjectGraphAgent/ npm run sync -
Очистка автономной версии для публикации:
cd /home/igor/Документы/Проекты/ProjectGraphAgent npm run clean -
Публикация на GitHub:
cd /home/igor/Документы/Проекты/ProjectGraphAgent git add -A git commit -m "feat: новое описание фичи" git push origin main
Для удобства используйте автоматизированный воркфлоу публикации:
# Из директории agent_plugins_platform/ProjectGraphAgent/
npm run publishЭтот скрипт:
- Синхронизирует изменения в автономную директорию.
- Очистит автономную версию от данных родительского проекта.
- Подготовит Git-коммит.
- Покажет инструкции для push.
Для автоматической отправки на GitHub:
npm run publish -- --pushСинхронизируемые файлы (из родительского проекта в автономный):
scripts/- Все скрипты автоматизации.graph_parts/- Шаблоны, политики, схемы (кромеentities).adapters/- Языковые адаптеры.README.md,README_PUBLISH.md,CHANGELOG.md,LLM_GUIDELINES.mdLICENSE,package.json,.gitignore
Исключенные файлы (специфичные для родительского проекта):
project_graph.jsonnet- Содержит данные родительского проекта.graph_parts/entities.jsonnet- Содержит сущности родительского проекта.settings.json- Настройки родительского проекта..cache/,memory-bank/- Сгенерированные артефакты.
Когда вы копируете ProjectGraphAgent из родительского проекта, вы можете очистить его от специфичных данных:
# Очистка от данных родительского проекта
npm run clean
# Или напрямую
node scripts/clean_project.mjsЭто приведет к:
- Сбросу
project_graph.jsonnetк шаблонным значениям. - Очистке
graph_parts/entities.jsonnetдо универсальных примеров. - Удалению
.cache/,memory-bank/,settings.json. - Обновлению
package.jsonметаданными ProjectGraphAgent. - Созданию соответствующего
.gitignore.
-
Скопируйте в отдельную директорию:
mkdir -p /home/igor/Документы/Проекты/ProjectGraphAgent cp -r ProjectGraphAgent/* /home/igor/Документы/Проекты/ProjectGraphAgent/ -
Запустите очистку:
cd /home/igor/Документы/Проекты/ProjectGraphAgent npm run clean -
Опубликуйте на GitHub:
git init git remote add origin https://github.com/LebedevIV/ProjectGraphAgent.git git add -A git commit -m "Initial commit: ProjectGraphAgent v0.1.0-alpha" git push -u origin main
Смотрите CLEANUP_INSTRUCTIONS.md для подробных инструкций.
✅ v1.0.0 - ПРОДАКШЕН ГОТОВ! 🎉
Функциональность:
- Интеллектуальная индексация с 4 типами индексов
- Полная интеграция с AI-агентами через PathSearch API
- Автоматизированные процессы экспорта и публикации
- Production-grade обработка ошибок и логирование
- Extensive документация и автоматизированные workflows
Совместимость:
- Node.js ≥18.0.0 | Jsonnet | ESM модули
- TypeScript & Python адаптеры
- Declarative Jsonnet конфигурация
- CI/CD готовность
MIT License (opens in new window)