- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github | ||
| docs | ||
| graphify | ||
| scripts | ||
| tests | ||
| tools | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| AGENTS.md | ||
| ARCHITECTURE.md | ||
| BENCHMARKS.md | ||
| CHANGELOG.md | ||
| Dockerfile | ||
| LICENSE | ||
| LICENSE-MIT | ||
| NOTICE | ||
| pyproject.toml | ||
| README.md | ||
| README.upstream.md | ||
| SECURITY.md | ||
| uv.lock | ||
Graphify-1C
Graphify-1C строит единый поисковый граф файловой выгрузки 1С: метаданных, модулей BSL, основной конфигурации и всех выбранных расширений. Его главная задача — дать агенту короткий путь от вопроса к нужным исходникам в большой конфигурации. Вместо поиска по тысячам файлов и чтения целых модулей агент запрашивает конкретный объект, его входящие или исходящие связи и проверяет несколько найденных строк. HTML-граф служит для исследования человеком; для ежедневной работы агента предназначен локальный SQLite-индекс.
Пошаговая инструкция для новичка — установка, подключение первого и следующих проектов, проверка результата и работа в ChatGPT, Codex, Claude Code и VS Code. Настройка проекта агентом по одной ссылке — короткий запрос для агента с доступом к терминалу.
Проект основан на Graphify. Исходная документация сохранена в README.upstream.md. Лицензии и уведомления авторов сохранены в репозитории.
Возможности
- Автоматическое обнаружение основной конфигурации в
src/cfи всех корректных непосредственных расширений вsrc/cfe/*. Чтобы включить только часть расширений, укажите корнем./src/cfи повторите--extensionдля каждого выбранного каталога. - Узлы конфигурации и расширений, объектов метаданных, реквизитов, табличных частей, форм, модулей, процедур и функций.
containsсвязывает конфигурацию с объектами, объект с составными частями, модуль с методами. - Каждый узел хранит происхождение:
source_type=configuration|extension,extension_name, путь к исходному XML/BSL и, если известна, строку. Объекты разных расширений не сливаются. EXTENDSсвязывает заимствованные объекты с базовыми;BEFORE,AFTER,INSTEAD,CHANGE_CONTROL— перехваты методов. Все расширения, изменяющие одну цель, остаются в графе.calls,calls_server,references,type_reference,query_reads,writes,handler,uses_commandи другие связи помогают искать вызовы, использование метаданных, чтение таблиц и движения по регистрам.- Дисковый SQLite-индекс поддерживает поиск по имени/ID и постраничный просмотр входящих и исходящих связей. Для большого графа локальный просмотрщик показывает обзор и загружает связи по запросу, не рисуя весь граф сразу.
- Универсальные возможности оригинального Graphify для других проектов сохранены. Их перечень — в исходном README; особенности применения к 1С описаны ниже.
Какие вопросы решает агент
| Вопрос | Первый запрос к графу |
|---|---|
| Где используется объект или метод? | Найти точный ID; просмотреть входящие calls, references, type_reference, query_reads, writes по страницам. |
| Что затронет изменение документа? | Просмотреть contains для состава, затем входящие ссылки, вызовы и расширения. |
| Какие расширения меняют объект или метод? | Входящие EXTENDS и связи перехватов; проверить extension_name каждой вершины. |
| Откуда запись регистра? | Входящие writes, затем владеющие методы/модули через contains. |
| Где расположен элемент формы или обработчик? | Найти имя; пройти contains, uses_command, handler к форме и модулю. |
Результат поиска — список кандидатов для проверки, а не доказательство полноты выполнения программы. Динамические вызовы, сложные запросы и поток данных могут остаться неразрешёнными. Проверка на двух конфигурациях сравнивает ответы, время поиска и объём выдачи инструментов; общий расход токенов агента ею не измерен.
Два режима форка
| Задача | Команда | Результат |
|---|---|---|
| Подключить очередной проект к агентам | graphify-1c init-project . |
Локальные инструкции Codex, Claude и VS Code с сохранением существующих правил; программу ставить снова не нужно. |
| Извлечь граф метаданных и BSL всей конфигурации 1С с расширениями | graphify-1c analyze ./src |
Единый JSON-граф; HTML и SQLite при указании --html. |
| Обновить граф после изменений исходников 1С | graphify-1c update . |
Проверка текущего проекта; при изменениях повторный анализ той же конфигурации и выбранных расширений. |
| Найти объект и пройти его связи без чтения большого JSON | graphify-1c index search, neighbors, explain, path |
Небольшой ответ из локального SQLite; поиск и связи поддерживают --limit и --offset. |
| Посчитать связи и сохранить все места использования | graphify-1c index groups, index export |
Краткие счётчики в ответе; полный список JSONL записывается на диск без передачи агенту. |
| Открыть большой граф человеку | graphify-1c serve graphify-out/graph.html |
Локальный сервер обзора и соседей. |
| Анализировать обычный код, документы и медиа средствами Graphify | Универсальные команды и навык из исходной документации | Отдельный универсальный граф со своей экстракцией, кластеризацией, wiki и экспортами. |
Функции оригинального Graphify сохранены, включая его универсальный поиск, путь, объяснение, интеграции с агентами и MCP. Их наличие не означает, что они используют специализированный SQLite-индекс 1С. Для больших конфигураций используйте index; текущая версия не объединяет универсальный граф документов/медиа с графом метаданных 1С. Команда graphify-1c update . сохраняет выбранные расширения и пути результатов, быстро завершается при неизменных исходниках. После изменений она заново строит граф и индекс, повторно используя кэш разбора неизменённых BSL-модулей размером от 4 КиБ. graphify-1c update . --force выполняет полный анализ без этого кэша.
Установка и запуск
Требуются Python 3.10+, Git и pipx. Форк устанавливается один раз для пользователя в отдельное окружение, а его команда получает имя graphify-1c:
python -m pip install --user pipx
python -m pipx ensurepath
git config --global core.longpaths true # Windows: для сборки парсера BSL
python -m pipx install --suffix=-1c 'graphifyy[onec] @ git+https://github.com/alexjamk/Graphify-1C.git'
После открытия нового терминала перейдите в корень каждого проекта 1С и выполните:
graphify-1c init-project . --agents 'codex,claude,vscode'
graphify-1c analyze ./src --out graphify-out/graph.json --html graphify-out/graph.html
Для второго проекта повторите только init-project и analyze из его корня. У каждого проекта отдельные граф и манифест; индекс обычно находится в graphify-out/graph.sqlite, а при другом размещении агент берёт его путь из манифеста. Codex, Claude или VS Code читают правила текущего проекта. init-project добавляет graphify-out/ в .gitignore и не заменяет существующие инструкции. Если оригинальный graphify уже установлен, он сохранится как отдельная команда. Подробности — в пошаговой инструкции.
Из корня проекта найдите объект и его входящие связи (точный ID возьмите из результата поиска):
graphify-1c index search graphify-out/graph.sqlite 'ЗаказКлиента'
graphify-1c index neighbors graphify-out/graph.sqlite '<точный ID>' --direction in --relation calls --limit 10 --offset 0
graphify-1c index neighbors graphify-out/graph.sqlite '<точный ID>' --direction in --relation calls --limit 10 --offset 10
graphify-1c index groups graphify-out/graph.sqlite '<точный ID>' --direction in
graphify-1c index export graphify-out/graph.sqlite '<точный ID>' graphify-out/usages.jsonl --direction in --relation calls
Повторяйте страницы до пустого ответа. Для разных видов использования повторите запрос с нужным --relation. Размер страницы ограничен 30 записями, вывод команды — 12 КиБ. Если нужно сохранить тысячи совпадений, используйте index export и не отправляйте весь файл агенту. Большой JSON 1С защищён от загрузки в память даже при повышенном общем лимите Graphify. На графах до 5000 узлов SQLite может не создаваться автоматически: тогда выполните graphify-1c index build graphify-out/graph.json graphify-out/graph.sqlite.
Для большого графа запустите локальный просмотрщик и откройте адрес, который он напечатает:
graphify-1c serve graphify-out/graph.html
Пример структуры проекта:
src/
├── cf/ # основная конфигурация
└── cfe/
├── РасширениеА/
└── РасширениеБ/
Для агента подготовлен порядок работы с вопросами и связями. Также доступны состояние реализации, архитектура просмотра и проверки на конфигурации «Управление торговлей».
Данные и ограничения
В репозитории нет выгрузок конфигураций, копий баз и построенных графов. Результаты анализа записываются локально в graphify-out/ и исключены из Git. Встроенные тесты и небольшие исходные фикстуры включены.
Восстановление динамических вызовов и составных текстов запросов может быть неполным. Полная инкрементальная индексация пока не реализована; текущие ограничения перечислены в статусе проекта. Большой JSON теперь записывается потоком, а SQLite-индекс заменяется только после успешной сборки.
Команды graphify-1c analyze/update/index/serve предназначены для специализированного графа 1С. Сохранённые функции оригинального Graphify (query, path, explain, навыки, универсальная индексация, wiki, экспорты, MCP) доступны; некоторые из них читают полный graph.json и не подходят для ежедневных запросов к графу 1С на сотни тысяч узлов. Их результат и потребление памяти следует оценивать отдельно. update при неизменных исходниках использует быстрый отпечаток имён, размеров и времени изменения файлов. При изменениях XML, итоговые JSON и SQLite всегда пересобираются; неизменённые крупные BSL-модули берутся из локального кэша разбора. Для проверки с нуля используйте update . --force. Кэш находится рядом с результатами анализа и не входит в репозиторий проекта.