doubled-graph
MCP-сервер для LLM-агентов, работающих с большими кодовыми базами.
Проблема: агент правит код не зная, кто вызывает функцию и какой у неё контракт — получаем регрессии и тихий дрейф. doubled-graph даёт агенту два графа одновременно:
- Computed graph — AST-граф реального кода (через CodeGraphContext): кто вызывает что, где определено.
- Declared graph — граф из артефактов GRACE 4 (
.grace/): замысел, контракты, верификация.
Четыре MCP-инструмента:
| Инструмент | Когда |
|---|---|
analyze |
построить/обновить граф |
impact |
радиус влияния изменений — до правки |
context |
360° вид: символ + контракт + вызовы |
detect_changes |
дрейф кода от артефактов — до коммита |
Установка
Требования: Python 3.11+, Bun ≥ 1.3.14 или Node+tsx (движок @osovv/grace-cli 4.2.1),
pipx.
doubled-graph — CLI-утилита. Рекомендуемый способ — pipx: он ставит её в изолированный venv и кладёт бинарь в PATH. Это также обходит PEP 668 (externally-managed-environment) на современных Homebrew/Debian/Ubuntu.
1. Установить pipx
| OS | Команда |
|---|---|
| macOS | brew install pipx |
| Debian / Ubuntu | sudo apt install pipx |
| Fedora | sudo dnf install pipx |
| Arch | sudo pacman -S python-pipx |
| Windows / прочее | python3 -m pip install --user pipx |
После установки один раз добавьте pipx-папку в PATH и перезапустите терминал:
pipx ensurepath
2. Установить doubled-graph
pipx install doubled-graph
Уже работаете в своём venv или conda-окружении? Тогда подойдёт обычная установка:
python3 -m pip install doubled-graph.
Первые шаги
1. Онбординг репозитория
cd your-project
doubled-graph setup
Одна команда:
- установит
@osovv/grace-cli@4.2.1через первый найденный JS-менеджер (bun→npm→yarn→pnpm); если Bun отсутствует — поставитtsxтем же менеджером и запустит grace под Node. Установленный движок 3.x будет обновлён: он умеет читать толькоdocs/*.xml - подготовит артефакты
.grace: мигрирует GRACE 3docs/*.xml(копирование, без удаления исходников) или создаст пустой скелет Grace 4, если артефактов нет вовсе - скопирует
prompts/иmethodology/в репозиторий - запишет 7 наших skills в native-формат для всех известных IDE одновременно (
.claude/skills/,.cursor/rules/,.continue/rules/,.roo/rules/,.kilocode/rules/,.opencode/rules/+opencode.json,.windsurfrules) — мы не знаем, каким клиентом вы пользуетесь - зарегистрирует MCP-сервер в вашей IDE (Claude Code / Cursor / Continue)
- установит
git post-commitхук для автообновления графа - запустит первый полный
analyze
Посмотреть план без реальных изменений:
doubled-graph setup --dry-run
Явно указать IDE:
doubled-graph setup --ide claude-code
2. Подключить MCP вручную (если нужно)
Рекомендуем doubled-graph setup — он сам сгенерирует .mcp.json с правильными значениями. Это важно: GUI-приложения (Claude Desktop, Cursor, Continue) на macOS стартуют без ~/.local/bin в PATH, и простая запись command: "doubled-graph" у них не работает.
Если нужно прописать руками — используйте абсолютный путь к Python, в который установлен doubled-graph:
# Узнать путь к нужному Python:
doubled-graph --version # проверить, что бинарь работает
head -1 "$(which doubled-graph)" # вывести shebang — это и есть нужный python
.mcp.json в корне репозитория:
{
"mcpServers": {
"doubled-graph": {
"command": "/Users/you/.local/pipx/venvs/doubled-graph/bin/python",
"args": ["-m", "doubled_graph", "serve"]
}
}
}
3. Инициализация
Введите в ваш ИИ первый промт. Остальные промты он сам подгрузит.
Сценарий 1. Новый проект — prompts/new-project/00-entry-prompt.md.
Сценарий 2. Миграция существующего — prompts/migrate-existing-project/00-entry-prompt.md.
Сценарий 3. Обновление версии методики (1.9.x → 2.0) — prompts/upgrade-methodology/00-entry-prompt.md.
4. Проверить, что всё встало
doubled-graph --version # 2.0.1
doubled-graph status --repo . # artifacts.project_kind = grace4, grace_engine.upgrade_required = false
doubled-graph lint --repo . # summary.errors = 0
doubled-graph migrate check --repo . # map_pending / placeholders — что осталось заполнить
Если project_kind = grace3 — артефакты ещё не перенесены: doubled-graph setup --repo ..
Если upgrade_required = true — движок старее 4.x: npm install -g @osovv/grace-cli@4.2.1, затем setup повторно.
Если lint вернул markup.module-map-missing — это содержательная работа, промпт prompts/upgrade-methodology/01-content-gaps.md.
Другие команды
# Диагностика миграции GRACE 3 -> GRACE 4 (ничего не пишет)
doubled-graph migrate check
# Миграция артефактов (legacy docs/*.xml остаются на месте)
doubled-graph migrate apply --dry-run
doubled-graph migrate apply
# Шлюз к движку: линт, модули, файлы, верификации
doubled-graph lint
doubled-graph module show M-AUTH
doubled-graph module health M-AUTH
doubled-graph file show src/auth.py
doubled-graph verify V-M-AUTH
doubled-graph status
doubled-graph --version
# Обновить граф вручную
doubled-graph analyze --mode auto
# 360° контекст символа
doubled-graph context validateUser
# Текущая фаза методологии (migration | post_migration)
doubled-graph phase get
doubled-graph phase set post_migration --reason "migration complete"
Удаление
pipx uninstall doubled-graph
(или python3 -m pip uninstall doubled-graph, если ставили в venv).
Это снимает сам CLI и Python-зависимости. Артефакты, которые doubled-graph setup создал в вашем репозитории, нужно удалить вручную:
- запись
doubled-graphв.mcp.json(Claude Code) /.cursor/mcp.json/.continue/config.json - скопированные
prompts/иmethodology/— если они больше не нужны - skill-файлы для IDE: каталоги
.claude/skills/doubled-graph-*/,.cursor/rules/doubled-graph-*.mdc,.continue/rules/doubled-graph-*.md,.roo/rules/doubled-graph-*.md,.kilocode/rules/doubled-graph-*.md,.opencode/rules/doubled-graph-*.md, блок между<!-- doubled-graph-skills:start -->/<!-- ... :end -->в.windsurfrules, и запись.opencode/rules/*.mdвopencode.jsoninstructions - git-хук
.git/hooks/post-commit(проверьте содержимое — там может быть ваша логика поверх нашей) - локальный кеш графа:
rm -rf .doubled-graph - grace-cli (отдельный Bun/Node-пакет 4.x) — через тот менеджер, которым ставился:
bun remove -g @osovv/grace-cliилиnpm uninstall -g @osovv/grace-cli
Обновление с 1.9.x (GRACE 3 → GRACE 4)
2.0 — ломающий релиз: движок @osovv/grace-cli 4.x валидирует только .grace
и отказывается читать docs/*.xml. Клиенту нужны два шага:
pipx upgrade doubled-graph # 1. обновить пакет
cd your-project
doubled-graph setup # 2. обновить движок и подготовить .grace
Что делает setup: ставит движок 4.2.1, конвертирует docs/*.xml → .grace
(модули M-*, зависимости, V-M-* с командами/сценариями/тест-файлами),
создаёт недостающие обязательные документы, добавляет LINKS: M-* в
MODULE_CONTRACT (без этого файл не привязан к модулю), приводит MAP_MODE
в соответствие с ROLE. Legacy docs/ не изменяются и не удаляются.
Если миграцию не сделать:
| Сценарий | Последствия |
|---|---|
| Остались на 1.9.x | Всё работает по-старому, но без обновлений и поддержки .grace |
Обновили 2.0, setup не запускали |
doubled-graph lint → project.grace3-detected (exit 1), MCP file_show/module_show → invalid-project; impact/context/detect_changes продолжают читать legacy docs/*.xml с пометкой deprecated |
Мигрировали, но LINKS не поправили |
lint зелёный, но модули «пустые»: module show не показывает файлы, detect_changes даёт code_without_module на весь код |
Обновление версии методики — отдельный (третий) сценарий, он не требует проходить миграцию
заново: prompts/upgrade-methodology/00-entry-prompt.md
(готовый промт для ИИ: статус → setup → проверки → закрытие пробелов).
После обновления остаётся только содержательная работа — заполнить пустые
V-<M> и MODULE_MAP по реальному коду и тестам. Готовый промпт:
prompts/upgrade-methodology/01-content-gaps.md
— скопируйте текст из блока «Промт» в ИИ-ассистента; он соберёт map_pending /
placeholders, допишет карты модулей, заполнит верификации командами из
существующих тестов и прогонит финальные проверки. Выдуманные команды запрещены
(иначе «не проверено» станет «проверено»). При желании можно архивировать
docs/ — отдельным решением.
Документация
- SPEC.md — архитектура, хранилище
.doubled-graph/ - TOOLS.md — подробные схемы инструментов
- HOOKS.md — git и Claude Code хуки
- CHANGELOG.md — история изменений
Лицензия
MIT. Upstream-компоненты (CodeGraphContext, grace-marketplace) — MIT.
Metadata
Release files for doubled-graph 2.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| doubled_graph-2.0.1.tar.gz | 424.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| doubled_graph-2.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 823.0 kB
Release files / doubled_graph-2.0.1.tar.gz
| Download URL | doubled_graph-2.0.1.tar.gz |
|---|---|
| Size | 424.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b819fc6874ee18c628baec24546cade3f864f85b909e69c9174960f2c6c6b8e5
|
|
BLAKE2b-256 checksum How to use checksums |
e24b9311f4772c3d431f0cf9319d57e2408d1387d0b191f73035b43b23f256ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / doubled_graph-2.0.1-py3-none-any.whl
| Download URL | doubled_graph-2.0.1-py3-none-any.whl |
|---|---|
| Size | 398.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fa58a4bca2d044a32da8e7f06444e6dc26f54d0fb263b50c0d199d2ba5b0dea6
|
|
BLAKE2b-256 checksum How to use checksums |
9f9632304a939e6d816ba2e7398095b3bd85a0ef8638305d2b88306a0e1a7210
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Security for doubled-graph 2.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.