Skip to main content
Glama

Переносимое состояние проекта на базе git для длительной AI-работы — в Claude Code, Cursor или в любом инструменте, говорящем на MCP.

Это не инструмент памяти. Инструмент памяти отвечает на вопрос «о чём мы говорили?» Continuity отвечает на другой вопрос: «что верно об этом проекте сейчас, и к чему нельзя прикасаться?»

Почему он устроен именно так

  • Состояние хранится в виде обычных markdown-файлов, отслеживаемых git. Git и есть журнал событий: история = git log, откат = git revert, аудит = git blame. Каждое утверждение читаемо человеком, поддаётся диффу и ручному редактированию. Вы просматриваете то, что захватил AI, так же, как просматриваете сгенерированный код — в виде диффа, когда захотите. Никакого шлюза одобрения в момент захвата нет.

  • Два режима хранения, один API. Режим репозитория (<repo>/.continuity/, находится подъёмом вверх от рабочей директории) подходит для редакторных/агентных инструментов с рабочей директорией проекта, таких как Claude Code. Центральный режим (~/.continuity/projects/<name>/, именованные проекты) подходит для инструментов без рабочей директории проекта, таких как Claude Desktop — вы просто обращаетесь к проекту по имени.

  • Контекст возобновления — это детерминированная проекция этих файлов (никакого LLM на пути чтения) — замороженные ограничения, активные решения с причинами, по которым они заменили более старые, отвергнутые пути, которые не стоит предлагать заново, открытые вопросы и следующий шаг.

  • Доверие строится на честности, а не на слепой вере. Каждое утверждение несёт confidence + provenance, поэтому новая сессия знает, что подтверждено, а что выведено AI, и калибруется вместо того, чтобы доверять всему.

Полная архитектура — в DESIGN.md, а обоснование — в poc/.

Related MCP server: KeepGoing MCP Server

Установка (как плагин Claude)

Continuity — это плагин Claude Code, распространяемый как собственный маркетплейс плагинов — этот репозиторий и есть маркетплейс. Он работает везде, где работает Claude Code: в терминале, в десктопном приложении и в вебе. В Claude Code:

/plugin marketplace add vikcena01/ai-continuity-plugin
/plugin install continuity@continuity-marketplace

Всё — встроенный MCP-сервер, навык continuity (авто-возобновление + авто-захват), хук SessionStart и команды /resume /freeze /why устанавливаются вместе. dist/ закоммичен и не имеет зависимостей, так что при установке не нужен шаг сборки.

Локальная разработка

npm install
npm run build   # typecheck + bundle to dist/
npm test        # build + 69 assertions across four suites

Цикл (CLI)

continuity init "Build Snip, an internal URL shortener"
continuity record-decision "PostgreSQL is the source of truth" --body "ops knows it; volume is modest"
continuity reject "DynamoDB as primary store" --reason "KV overhead unjustified at our volume"
continuity record-constraint "Short codes are exactly 7-char base62" --body "printed in marketing + partner contract"
continuity freeze "7-char base62"     # lock an invariant — fuzzy: id OR title substring
continuity resume                     # <- the compact state a new session gets
continuity why "301"                  # <- what a decision replaced, and why
continuity resolve "8-char codes" --reject --reason "separate namespace"
continuity list                       # ids are short: d1k3, c2m9, x1p4, ...
continuity log                        # the git-backed event log

Утверждения получают короткие, удобные для ввода идентификаторы — префикс типа, порядковый номер и двухсимвольный суффикс: d1k3, c2m9, x1p4. Суффикс — это то, что делает параллельную работу безопасной: без него два разработчика, каждый из которых записывает 16-е решение, оба пишут claims/d16.md и сталкиваются при слиянии. freeze / why / supersede / resolve принимают идентификатор или подстроку заголовка. Состояние записывается в claims/ и автоматически коммитится в git при каждом изменении — но никогда не пушится автоматически, поэтому resume предупреждает, когда захваченные коммиты лежат неотправленными.

Закрытие утверждения

resolve — единственный способ, которым утверждение достигает терминального статуса, и причина обязательна — утверждение, которое просто исчезает, ничему не учит следующую сессию:

continuity resolve <id-or-text> --accept --reason "..."   # a parked conflict wins
continuity resolve <id-or-text> --reject --reason "..."   # it becomes a guardrail
continuity resolve <id-or-text> --close  --reason "..."   # a settled risk/question

Принятие утверждения, припаркованного против замороженного, дополнительно требует --unfreeze. Замораживание — единственное человеческое действие в модели, поэтому его переопределение должно быть вторым осознанным действием.

Использование в Claude Desktop (MCP)

Любой хост, говорящий на MCP, но не имеющий рабочей директории проекта, может использовать MCP-сервер с именованными проектами. (Примечание: десктопное приложение Claude запускает внутри себя Claude Code, так что полный плагин — хуки, команды, навык — работает там; этот путь для хостов с чистым MCP.) Соберите (npm run build), затем добавьте в claude_desktop_config.json:

{
  "mcpServers": {
    "continuity": {
      "command": "node",
      "args": ["/absolute/path/to/ai-continuity-plugin/dist/mcp.js"],
      "env": { "CONTINUITY_HOME": "/Users/you/.continuity/projects" }
    }
  }
}

Затем в чате: «создай проект continuity под названием snip»create_project; «возобнови snip»resume_context; модель записывает решения/ограничения/отклонения по ходу работы. Вызываемый пользователем промпт resume — это замена авто-возобновления Claude Code для Desktop. Инструменты: list_projects, create_project, resume_context, record_decision, record_constraint, record_rejection, record_open, capture, resolve_claim, freeze_claim, why.

Как плагин Claude Code (бонус)

Этот репозиторий также является плагином Claude Code (манифест в .claude-plugin/plugin.json). Здесь, поверх MCP-сервера, вы получаете то, что Claude Desktop не умеет:

  • хук SessionStart (hooks/hooks.json), который автоматически внедряет resume_context в новых / возобновлённых / пост-компактных сессиях — вам никогда не приходится просить;

  • хук Stop, который выполняет проверку захвата в конце хода, так что решения записываются без того, чтобы кто-то помнил попросить. Два независимых предохранителя (stop_hook_active плюс временной троттлинг) делают цикл невозможным;

  • слэш-команды /resume, /freeze, /why.

Репозиторий также содержит .claude/settings.json, который регистрирует те же хуки против собственного закоммиченного dist/. Коллега, который просто выполняет git clone, получает авто-возобновление и авто-захват без установки чего-либо. Оба хука дедуплицируются на сессию, так что одновременное наличие установленного плагина и клонированного репозитория безвредно.

Формат утверждения

Каждый .continuity/claims/<id>.md:

---
id: d4k7
type: decision            # decision | constraint | rejected_alternative | mission | milestone | question | next_action | ...
status: accepted          # accepted | frozen | superseded | rejected | open | needs_review | resolved | done
resolution:               # set by `resolve`: why this claim was closed
confidence: confirmed     # confirmed | tentative | unverified
provenance:
  origin: manual
  created: 2026-08-04T00:00:00.000Z
supersedes: []
superseded_by: null
depends_on: []
tags: []
---
Postgres is the primary datastore; a Redis read cache may come later.

Формат утверждения (контракт)

Как только в чужом репозитории появляются утверждения, формат файла становится контрактом — поэтому он несёт версию:

---
schema: 1              # absent means 1
id: d16k3              # <type prefix><n><2-char suffix>; the suffix keeps concurrent clones from colliding
type: decision         # mission requirement decision constraint architecture milestone
                       # hypothesis experiment risk question next_action rejected_alternative
title: One crisp fact
status: accepted       # accepted active frozen open superseded invalidated rejected
                       # needs_review completed done resolved
confidence: confirmed  # unverified tentative confirmed
provenance: { origin: auto, created: ... }
supersedes: []
superseded_by: null
superseded_reason: ""  # why the replacement happened — travels with the claim
resolution: ""         # why it was closed, set by `continuity resolve`
---

Prose body. The reason, the context, whatever a future session needs.

Обещание стабильности. Утверждение, записанное более старой версией Continuity, всегда читается: отсутствие schema означает 1, а более старые формы мигрируют вперёд в памяти без перезаписи ваших файлов. Утверждение, записанное более новой версией Continuity, отвергается по имени, громко, а не полу-парсится — угадывание формы, которую мы не понимаем, — это путь к тихой деградации состояния. continuity migrate перезаписывает файлы в текущей схеме, когда вы хотите явную версию на диске.

Просмотр захваченного

Захват автономен, поэтому защита в том, что вы можете видеть, что было записано:

continuity review            # semantic diff: what appeared, changed status, or was edited — and why
continuity review --accept   # mark it reviewed

Он ловит и ручные правки, и записи инструментов, а контекст возобновления сообщает вам, когда есть ожидающие изменения.

Статус

v1.0 — детерминированное ядро + CLI + MCP-сервер + плагин Claude Code. Версионированные файлы утверждений, безопасные к коллизиям идентификаторы, нечёткий поиск, бюджетная проекция возобновления, журнал событий на git и 124 проверки в семи наборах (npm test).

Работает сегодня:

  • Автономный захват, управляемый хуком Stop в конце каждого хода — а не памятью модели.

  • Реконсилятор за каждым пакетным захватом: дедупликация, суперсессия с сохранением родословной и замороженный предохранитель, который паркует всё, что противоречит замороженному утверждению, как needs_review, вместо применения.

  • Глагол resolve для закрытия того, что припарковал реконсилятор, и для закрытия рисков/вопросов, когда они урегулированы.

Известные ограничения, отслеживаемые как утверждения в собственном .continuity/ этого репозитория: проверка захвата в хуке Stop троттлится максимум до одного раза за 10 секунд, поэтому решение, принятое в очень быстром обмене, всё ещё может быть пропущено (q3); а надёжное извлечение статуса из беспорядочных сессий остаётся открытым техническим риском (q2).

Знак

C, нарисованная одной непрерывной дугой — нить, которая выживает между сессиями, — завершающаяся узлом, единственным захваченным утверждением. assets/icon.svg — тот же знак на скруглённой плитке для аватара или фавиконки; assets/logo-light.svg и assets/logo-dark.svg — логотип-слово, выбираемый через prefers-color-scheme, так что обе темы GitHub работают.

Лицензия

MIT — см. LICENSE. Copyright (c) 2026 Vikash.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Gives AI coding assistants persistent memory, safety controls, and project awareness by tracking coding sessions, protecting critical files from modifications, and managing approval workflows with automatic changelog generation.
    19
    13
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides AI coding assistants with persistent project memory by capturing development checkpoints during git commits, branch switches, and inactivity. It enables seamless task resumption through tools that retrieve session history, momentum, and synthesized re-entry briefings.
    93
    3
    MIT

View all related MCP servers

Related MCP Connectors

  • Give your AI agent a persistent map of your project's structure, dependencies, and bugs.

  • Git-backed platform for skills, tools, and context for AI agents

  • The project brain for AI coding agents — memory, decisions, sprints, knowledge base via MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vikcena01/ai-continuity-plugin'

If you have feedback or need assistance with the MCP directory API, please join our Discord server