Skip to main content
Glama

wctx

Контекст рабочего пространства для агентов кодирования.

Ваша система охватывает несколько репозиториев. Контекст вашего агента тоже должен.

wctx capture --summary "what this session figured out"   # at the end of a session
wctx search  "has anyone looked at this?"                # from any other repo, later
Session in Repo A
        ↓
discovers behavior in Repo B
        ↓
wctx
        ↓
fresh session in Repo B retrieves it

Сессия агента кодирования ограничена репозиторием, потому что именно там редактируются файлы. Исследуемая система — нет. Поэтому сессия в вашем UI-репозитории выясняет, что ошибка на самом деле в вашем SDK — а когда вы открываете новую сессию в SDK неделю спустя, эти знания исчезают.

wctx превращает завершённые сессии агентов в структурированный, подтверждённый доказательствами инженерный контекст и предоставляет его будущим сессиям через MCP. Локально-ориентированный: никакого облачного аккаунта, никаких эмбеддингов, никакой загрузки транскриптов.


Двухминутная демонстрация

pnpm install
pnpm demo

Никакого API-ключа, никакой сети. Он создаёт три синтетических репозитория, импортирует завершённую сессию из одного, а затем задаёт вопрос на естественном языке из другого:

$ wctx search "Has the selfie session expiration issue already been investigated?" --repo websdk-demo

  3 result(s) · 4 candidates · 14ms · searched websdk-demo plus 2 related repositories

  1. WebSDK uploadSessionImage does not retry after session expiration  [finding]
     from websdk-demo · session ses_8d3fb1a5 · commit 45a4cab · confidence 0.87
     · matches the query text
     · same repository
     · matches symbol uploadSessionImage

  3. Verify UI delegates selfie upload to the WebSDK  [finding]
     from verify-ui-demo · session ses_8d3fb1a5 · commit b041200 · confidence 0.95
     · matches the query text
     · verify-ui-demo uses websdk-demo (direct consumer)
     · high stated confidence (0.95)

Затем файл SDK изменяется, и доказательства перестают быть достоверными:

$ wctx evidence verify ev_9ae81278
  before: current — The repository is still at the source commit b60a991; nothing has changed.
  after:  stale   — All 1 referenced file(s) changed in b60a991..1ceeaa4. Re-read the code
                    before relying on this.

Полное прохождение: docs/demo.md.

Related MCP server: obsmcp

Установка

Требуется Node 22+ и git.

pnpm install
pnpm build
npm link        # optional: puts `wctx` on your PATH

wctx init       # creates ~/.wctx
wctx doctor     # checks database, git, adapters, and prints MCP setup hints

Настройка MCP

claude mcp add wctx -- wctx mcp

Или для Codex и других MCP-клиентов:

{ "mcpServers": { "wctx": { "command": "wctx", "args": ["mcp"] } } }

Семь инструментов, упорядоченных для постепенного раскрытия, чтобы они оставались доступными в окне контекста:

Инструмент

Назначение

workspace_overview

Ориентация в незнакомом репозитории: топология, недавние сессии, ключевые находки

search_session_evidence

Основной. Поиск по предыдущим сессиям в связанных репозиториях

get_evidence

Один элемент полностью, с полной информацией о происхождении

get_session_evidence

Всё из одной сессии (транскрипт — только при явном согласии)

get_related_repositories

Как этот репозиторий связан с другими и в каком направлении

verify_finding_freshness

Изменился ли указанный код с момента записи?

finalize_session

Единственный инструмент записи: зафиксировать, что узнала эта сессия

wctx mcp-info выводит поверхность и фрагменты конфигурации клиента.

Запись того, что узнала сессия

Одна команда в конце сессии. Она импортирует сессию, если необходимо, и записывает доказательства за один шаг, по умолчанию используя сессию, в которой вы работаете:

wctx capture --summary "Traced the upload failure into the SDK" \
  --finding "SDK swallows the 419 :: uploadSessionImage returns it as terminal, no retry" \
  --repo my-sdk \
  --file "src/session/upload.ts#uploadSessionImage"

Или просто попросите вашего агента сделать это — "запиши, что мы узнали" — и он вызовет finalize_session со своим собственным идентификатором сессии. Ему никогда не нужно знать внутренний идентификатор, а повторный вызов в одной сессии накапливает доказательства, а не дублирует сессию.

Как сделать это проактивным

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

wctx instructions          # print the guidance
wctx instructions --write   # install it into CLAUDE.md / AGENTS.md (idempotent)

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

Если сводка не предоставлена вовсе, wctx capture выводит фактическую на основе записанной активности инструментов сессии — количество файлов, команд, ошибок, изменённых файлов. Намеренно скучно: придумывание повествования из вызовов инструментов было бы той самой уверенной бессмыслицей, которую этот проект отказывается производить.

Основные концепции

Рабочее пространство — логический продукт, находящийся над репозиториями. Граница контекста. Репозитории остаются границей редактирования; ничто здесь не расширяет область записи агента.

Репозиторий — зарегистрированная git-рабочая копия, идентифицируемая по её реальному пути, чтобы один и тот же репозиторий не мог быть зарегистрирован дважды через символическую ссылку или подкаталог. Он может принадлежать нескольким рабочим пространствам.

Связь — объявленное, направленное, типизированное ребро (uses, depends_on, calls, imports, consumes_api, provides_api, shares_schema_with, related). Обход следует по рёбрам в обоих направлениях, потому что если verify-ui использует websdk, то сессия в websdk всё равно хочет знать, что узнал verify-ui.

Сессия — нормализованная сессия агента кодирования из Xirp, Claude Code или универсального JSONL, с её рабочей директорией, веткой, коммитом, сообщениями и активностью инструментов.

Доказательство — находка, решение, изменение, нерешённый вопрос, известная проблема, архитектурная заметка или ограничение, прикреплённое к репозиторию, о котором оно (часто не тому, в котором проходила сессия), с указанием файлов и символов, которых оно касается, и коммита, на котором оно было истинно.

Свежесть — основанный на git вердикт о том, изменились ли указанные файлы с момента этого коммита: current (актуально), possibly_stale (возможно устарело), stale (устарело) или unknown (неизвестно).

Архитектура

Xirp · Claude Code · Codex · generic JSONL
                  ↓
          session adapters              ← the only code that knows a vendor format
                  ↓
        NormalizedSession
           ↓            ↓
  transcript copy   deterministic extraction (files, commands, errors — no LLM)
                        ↓
              structured evidence (findings, decisions, questions)
                        ↓
              workspace catalog · SQLite + FTS5 + git
                        ↓
              CLI  ·  MCP  ·  web UI          ← one service layer, no duplicated logic

Подробности и обоснование каждой границы: docs/architecture.md.

Статус интеграции с Xirp

Xirp оказался с открытым, документированным путём чтения, поэтому адаптер реален, а не заглушка.

Вопрос

Статус

Экспорт сессии существует

ПОДТВЕРЖДЕНО$CHIRP_SQUAB_PATH предоставляет --session-history и session-parse, оба версионированы и не зависят от обвязки

Стабильный идентификатор сессии

ПОДТВЕРЖДЕНО — переживает перемещения обвязки; собственный идентификатор обвязки — нет

Атрибуция репозитория

ПОДТВЕРЖДЕНОcwd как в манифесте, так и в записях обвязки

Вызовы инструментов и файловые операции

ПОДТВЕРЖДЕНО — восстанавливаемы по сообщению

Кому принадлежит транскрипт

ПОДТВЕРЖДЕНО — обвязке, а не Xirp

Хук завершения сессии

ВЕРОЯТНО — хуки stop обвязки существуют; установка одного изменяет конфигурацию обвязки, поэтому это опционально и выходит за рамки здесь

Конфигурация MCP

ВЕРОЯТНО делегирована базовой обвязке

Стабильность схемы между версиями

НЕИЗВЕСТНО — наблюдалась только Xirp 0.12.1 с обвязкой claude

Адаптер фиксирует обе строки схемы и громко сообщает об ошибке при неизвестной версии, а не угадывает. Полные доказательства, включая то, что остаётся непроверенным и как это воспроизвести: docs/research/xirp.md.

Безопасность

Ничто не покидает вашу машину. Никакого облака, никакой телеметрии, никакого API эмбеддингов, никакой загрузки транскриптов; весь список зависимостей — это @modelcontextprotocol/server, better-sqlite3, commander и zod.

  • Транскрипты копируются в ваш каталог данных (Claude Code удаляет свои через 30 дней) вместе с отредактированной копией — и предоставляется только отредактированная копия.

  • Редактирование охватывает закрытые ключи, JWT, заголовки авторизации, токены AWS/GitHub/Slack/OpenAI/Google, URL с учётными данными и присвоения секретов. Это сопоставление с образцом, выполняемое по мере возможности, и не является гарантией того, что транскрипт безопасен для распространения.

  • Доказательства, возвращаемые агентам, помечаются как исторические, ненадёжные данные, а строки, похожие на инструкции ("игнорируй все предыдущие инструкции"), нейтрализуются. Смягчение, а не иммунитет.

  • Каждый вызов git использует массив аргументов, никогда не строку оболочки. Запросы FTS5 конструируются, никогда не интерполируются.

  • Удаление транскриптов и удаление доказательств — независимые операции.

Подробности: docs/security.md.

Сравнение с существующими инструментами

Заявления о возможностях взяты из собственных README каждого проекта, проверены 2026-08-13. Ничто здесь не утверждает, что другой проект не может чего-то делать.

Проект

Основная сильная сторона

Что wctx делает иначе

agentmemory

Широкий автоматический захват: 12 хуков жизненного цикла, 54 MCP-инструмента, эмбеддинги, повтор сессий

Оптимизирован под один вопрос — что узнала предыдущая сессия в связанном репозитории — с 7 инструментами и топологией рабочего пространства в качестве ключа маршрутизации

engram

Лёгкая, не зависящая от агента локальная память: Go-бинарник, SQLite + FTS5, MCP/HTTP/CLI/TUI

Доказательства после сессии с указанием коммита, файла и символа, а также вердикт об устаревании

context-router

Многорепозиторные рабочие пространства, наблюдения + ADR, межрепозиторные рёбра, выведенные из импортов и контрактов

Его единица — это наблюдение, записанное во время коммита; наша — завершённая сессия, разложенная на доказательства, а наши рёбра объявлены и управляют объяснимым ранжированием

anchor

Память репозитория и организации из истории PR GitHub, с уверенностью, свежестью и межрепозиторным влиянием

PR записывают, что было слито; мы индексируем исследование — включая тупики и нерешённые вопросы — и не требуем аутентификации GitHub

Rewind

Ночная консолидация завершённых транскриптов Claude в долговечные факты

Та же философия (после сессии лучше, чем дисциплина во время сессии), расширенная на несколько агентов и многорепозиторное рабочее пространство

byterover-cli

Курируемое, доступное для обмена дерево контекста

Происхождение и свежесть вместо курирования

codebase-memory-mcp

Интеллект кода: 158 языков в графе знаний, запросы за доли миллисекунды

Дополняет — тот индексирует код, каков он сейчас; этот индексирует, что сессии узнали о нём

Полный обзор с границей памяти каждого проекта, механизмом захвата и тем, что было использовано в качестве идеи: docs/research/competitive-landscape.md.

Оценка

На синтетическом корпусе из 15 запросов, 28 элементов (pnpm eval) соответствующая предыдущая сессия появилась в первой пятёрке для 15 из 15 запросов и заняла первое место для 11 из 15, с медианной задержкой локального поиска 1,6 мс. Добавление топологии рабочего пространства к обычному FTS5 оставило частоту попаданий на этом корпусе неизменной, но улучшило MRR с 0,839 до 0,867, сделало атрибуцию репозитория точной (0,93 → 1,00) и исключило результаты из несвязанных репозиториев (0,20 → 0,00 на запрос).

Корпус мал, синтетичен и написан тем же человеком, который писал запросы. Что это означает для чтения цифр, подробно описано в docs/evaluation.md.

Ограничения

Честный список, полностью: KNOWN_LIMITATIONS.md. Три наиболее важных:

  • Поиск ориентирован на ключевые слова. FTS5 сопоставляет токены. Полностью перефразированный запрос без лексического пересечения может пропустить результат; структурные повышения лишь частично компенсируют.

  • Свежесть — это не верификация. Он отвечает на вопрос «изменились ли упомянутые файлы?», но никогда — «верно ли это утверждение до сих пор». Изменение поведения в нетронутом файле невидимо.

  • Связи объявляются, а не выводятся. Необъявленная связь невидима для ранжирования.

Дорожная карта

Отсортировано по степени улучшения основного цикла:

  1. Автоматическое завершение сессии через хук stop обвязки (сейчас вручную).

  2. Укрепление адаптера Xirp в разных версиях и обвязок codex / gemini.

  3. Обнаружение конфликтов и предложения по замене — схема поддерживает и то, и другое; никто их не заполняет.

  4. Импорт Backstage / Portal catalog-info.yaml за существующим швом CatalogProvider.

  5. Более сложный корпус для оценки с почти дублирующимися находками, чтобы проверить, помогает ли топология находить, а не только упорядочивать.

Участие в разработке

См. CONTRIBUTING.md. Должны проходить pnpm typecheck && pnpm lint && pnpm test, а pnpm demo должно работать из чистой копии без учетных данных.

Атрибуция и отсутствие принадлежности

wctx — это независимый эксперимент с открытым исходным кодом, вдохновленный публичными идеями Xirp, Spotify Portal, Backstage и MCP.

Он не связан с Spotify и не одобрен им.

Никакой исходный код из проектов таблицы сравнения не был скопирован. Различие между компонентом и системой в Backstage используется как источник вдохновения, а не как зависимость времени выполнения, и никакой экземпляр Backstage не требуется.

Лицензия

MIT. См. LICENSE.

A
license - permissive license
-
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

  • F
    license
    -
    quality
    -
    maintenance
    An MCP server that provides persistent project context, workflow management, and knowledge capture for AI coding agents. It enables agents to maintain structured memory across sessions by tracking project profiles, conventions, skills, and technical debt.
    7
  • A
    license
    -
    quality
    D
    maintenance
    A local-first MCP server and continuity control plane that helps AI coding tools maintain project state, tasks, and context across sessions, models, and interruptions, with features like session tracking, token-efficient context assembly, and code understanding via Code Atlas.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that indexes reference repositories and provides tools for AI coding agents to retrieve lossless code context, enabling reasoning over codebases larger than the agent's context window.
    8
    2
    Apache 2.0
  • A
    license
    -
    quality
    A
    maintenance
    An MCP server that indexes codebases into a local graph and provides on-demand context retrieval for AI coding agents, reducing token usage by tracking session history and delivering only relevant code subgraphs.
    17
    MIT

View all related MCP servers

Related MCP Connectors

  • Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).

  • One shared context your team's AI tools read & write over MCP. No re-explaining. Free.

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

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/Haroon-jay/wctx'

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