Skip to main content

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 3 docs/*.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.json instructions
  • 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)

Source distribution for doubled-graph 2.0.1
File Size Uploaded Provenance
doubled_graph-2.0.1.tar.gz 424.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for doubled-graph 2.0.1
File Interpreter ABI Platform
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.

Release history Release notifications | RSS feed

This release

2.0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page