Skip to main content
Glama

wtx

Менеджер Git worktree со встроенным MCP-сервером. Создавайте, просматривайте и очищайте изолированные рабочие пространства из терминала — или позвольте вашим ИИ-агентам кодинга делать это самостоятельно.

CI npm license


Параллельные ИИ-агенты кодинга сделали жонглирование git stash устаревшим — но сырые команды вида git worktree add ../foo -b foo && cd ../foo && cp ../.env . — это рутина, которую никто не хочет повторять пять раз в день. wtx превращает работу с worktree в рабочую команду из одного слова и для людей, и для агентов:

$ wtx new fix-login
✔ created worktree fix-login
  path:   ~/code/myapp/.worktrees/fix-login
  branch: wt/fix-login (new)
  copied: .env, .env.local

Ваш агент получает те же возможности через MCP:

{ "name": "create_worktree", "arguments": { "name": "fix-login", "setup": "npm install" } }

Зачем wtx

  • Один инструмент, два интерфейса. Быстрый CLI для вас и MCP-сервер (wtx mcp) для Claude Code, Cursor, Codex или любого агента с поддержкой MCP.

  • Ноль зависимостей. Один бинарник Node.js, который только обращается к git. Нечего аудировать — и нечему ломаться.

  • Следит за гигиеной. Каждый worktree показывает занимаемый объём на диске и время последней активности. Верните гигабайты устаревших клонов node_modules с помощью wtx clean --dry-run.

  • Безопасно по умолчанию. Отказывается удалять «грязные» worktree'ы, никогда не трогает основную копию, удаляет ветки только после полного слияния и прячет .worktrees/ через .git/info/exclude (без загрязнения .gitignore).

  • Всё включено. Копирует env-файлы в новые worktree'ы и автоматически запускает setup-хук вашего проекта.

Related MCP server: worktree-tools-mcp

Установка

npm install -g wtx        # or: brew install wtx (planned)

Требуется Node.js ≥ 18 и любой современный git.

Быстрый старт

$ cd myapp
$ wtx new feat-search          # isolated workspace at .worktrees/feat-search on branch wt/feat-search
$ cd $(wtx path feat-search)   # jump in
$ wtx ls                       # see every workspace, its state and size
NAME       BRANCH         STATUS       AGE      SIZE     PATH
myapp*     main           ✓ clean      2d ago   412 MB   ~/code/myapp
feat-api   wt/feat-api    ● dirty (1)  3h ago   38 MB    ~/code/myapp/.worktrees/feat-api
$ wtx clean --dry-run          # preview reclaimable space
· feat-api (branch merged, 38 MB)
would free: 38 MB · kept 0 worktree(s)

Команды

Команда

Описание

wtx new <name>

Создаёт .worktrees/<name> в ветке wt/<name>, копирует env-файлы, запускает setup-хук

wtx ls

Таблица worktree: ветка, опережение/отставание, состояние «грязности», давность последнего коммита, объём на диске

wtx rm <name> [--force]

Удаляет worktree; отказывается, если есть локальные изменения; удаляет слитые ветки

wtx clean [--dry-run] [--stale-days <n>]

Удаляет worktree'ы, ветки которых полностью слиты и/или неактивны

wtx open [name]

Запускает $SHELL внутри worktree (--print — просто вывести путь)

wtx path [name]

Выводит абсолютный путь к worktree (удобно для shell-скриптов)

wtx mcp

Запускается как MCP-сервер через stdio

Глобальные флаги: --json (машиночитаемый вывод), --base <ref>, --setup <cmd>, --no-copy, --no-setup.

Использование из ИИ-агентов (MCP)

Добавьте в конфиг вашего MCP-клиента:

// e.g. claude_desktop_config.json / opencode.json / .mcp.json
{
  "mcpServers": {
    "wtx": { "command": "npx", "args": ["-y", "wtx", "mcp"] }
  }
}

Сервер предоставляет четыре инструмента: list_worktrees, create_worktree, remove_worktree, clean_worktrees. Все они принимают необязательный параметр repo_path; в противном случае используется рабочая директория сервера. Ответы приходят в JSON, так что агенты могут выстраивать их цепочки: создать → работать → удалить — не переключая ветки в вашей основной копии.

Пример промпта для агента: «Настрой workspace с названием oauth-fix на основе develop, выполни в нём pnpm install и скажи мне его путь».

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

Положите wtx.config.json (или .wtxrc) в корень репозитория:

{
  "dir": ".worktrees",
  "copyFiles": [".env", ".env.local"],
  "setup": "pnpm install",
  "branchPrefix": "wt/"
}

Ключ

По умолчанию

Значение

dir

.worktrees

Где живут worktree'ы, относительно корня репозитория (автоматически добавляется в .git/info/exclude)

copyFiles

[".env", ".env.local"]

Файлы, копируемые из основной копии в каждый новый worktree

setup

(нет)

Shell-команда, выполняемая внутри нового worktree после создания

branchPrefix

wt/

Префикс для веток, создаваемых командой wtx new

Модель безопасности

  • Основной worktree никогда не удаляется командами rm и clean.

  • «Грязные» worktree'ы всегда сохраняются командой clean, а для rm требуется --force --force.

  • Ветки удаляются только когда полностью слиты в ветку по умолчанию (origin/HEAD → main → master как запасной вариант).

  • Каталоги worktree'ов находятся в .worktrees/ и исключаются через .git/info/exclude, так что ваш .gitignore остаётся нетронутым.

  • Имена санируются; путь вроде ../evil отклоняется.

Сравнение

raw git worktree

TUI-менеджеры

wtx

Создание одной командой + копия env + setup-хук

✗

частично

✓

Объём на диске и степень устарелости для работыручевых каталогов

✗

редко

✓

Машиночитаемый --json везде

✗

✗

✓

MCP-сервер для агентов кодинга

✗

✗

✓

Ноль runtime-зависимости

н/д

✗ (обычно тяжёлые)

✓

Разработка

git clone https://github.com/willkhinz/wtx && cd wtx
npm install
npm test        # build + 32 integration/unit tests
node dist/src/cli.js help

Архитектура: src/core.ts (ядро), src/cli.ts (интерфейс для человека), src/mcp.ts (интерфейс для агента). Реализация MCP — это до-свободный JSON-RPC 2.0, раздельный по строкам — без рамок для Extension.

Планы

  • wtx exec <name> -- <cmd> — выполнять команды во всех worktree'ах

  • tmux/iTerm сессии для каждого worktree

  • Homebrew-формула

  • GitHub Action: комментировать PR с превью каждого worktree

Лицензия

MIT

Related MCP Connectors

Related MCP Servers