continuity
Переносимое состояние проекта на базе 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.
This server cannot be installed
Maintenance
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
- AlicenseBqualityDmaintenanceGives 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.1913MIT
- AlicenseNot gradedqualityFmaintenanceProvides 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.933MIT
- AlicenseAqualityCmaintenanceEnables AI coding assistants to access grounded, branch-scoped codebase context via semantic search, git tracking, change ledger, and structured feature management with Project Tracks.191MIT
- AlicenseNot gradedqualityCmaintenanceProvides a memory layer for AI coding agents with Git-powered version control, enabling automatic tracking of prompts, context, and code diffs.191MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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