
Дайте агентам кодирования одноразовую Linux VM, а не ваш ноутбук
Дайте агентy для написания кода его собственную одноразовую Linux-машину, а не вашу.
Установка · Быстрый старт · Зачем виртуальная машина? · Как это работает · Сравнение · FAQ · Документация
Агент для написания кода полезен только тогда, когда вы позволяете ему реально делать вещи: устанавливать пакеты, запускать написанный им код, поднимать серверы, пользоваться сетью. На вашей собственной машине это оставляет два плохих варианта. Вы одобряете каждую команду (и нянчитесь с запросом каждые несколько секунд), либо запускаете --dangerously-skip-permissions и надеетесь, что ничего важного не окажется в одном rm -rf или одной утёкшей токен-строке.
clawk — это третий вариант. cd в репозиторий, введите clawk, и Claude Code (или Codex, или pi, или оболочка) работает внутри одноразовой Linux-виртуальной машины (ваш код смонтирован внутрь, root в гостевой системе, без запросов на разрешения), пока ваши файлы, ваша связка ключей и остальная часть вашей машины остаются вне досягаемости. Агент получает собственную машину вместо вашей.
Одна команда до работающего агента; попытка отправить данные на
неизвестный сервер, заблокированная сетевым белым списком; clawk attach
возобновляет сеанс позже.
Граница — это не правило в промпте, от которого агента можно отговорить. Это отдельная машина, и единственные отверстия — те, что вы смонтировали. Из оболочки внутри песочницы:```console $ curl https://tracker.evil.example # not on the allow-list: blocked curl: (7) Failed to connect to tracker.evil.example port 443 after 2 ms: Connection refused
$ cat ~/.ssh/id_rsa # your keys never entered the VM cat: /home/agent/.ssh/id_rsa: No such file or directory
$ git push # ...yet this works: ssh-agent is forwarded Enumerating objects: 5, done.
Чтобы быть честным в отношении ограничений: allow-list блокирует соединения с *неизвестными*
серверами, а не с теми, которые вы разрешили: github.com предварительно разрешён, и
проброшенный ssh-agent может выполнять push, поэтому считайте, что всё, что агент может прочитать,
он может и опубликовать. В
[модели безопасности](#security-model-and-its-limits) это подробно описано.
А если агент сломает ВМ, выполните `clawk destroy && clawk`: новая ВМ, тот же
репозиторий, а `--resume` восстановит разговор.
> [!IMPORTANT]
> **До версии 1.0 и быстрое развитие.** Ожидайте ломающих изменений между релизами и
> иногда шероховатостей; что-то может и будет ломаться. Пожалуйста, создавайте issues;
> именно эта обратная связь формирует версию 1.0.
## Ключевые возможности
- **Позвольте агенту делать что угодно.** Он работает в одноразовой ВМ с ограниченной
сетью, поэтому `rm -rf`, установка пакетов и недоверенный код не могут добраться до вашего
хоста, ваших файлов или чего-либо, чем вы явно не поделились.
- **Работа одной командой.** Выполните `cd` в репозиторий и запустите `clawk`. Никакого
Dockerfile, devcontainer или файла настройки. Первая загрузка собирает rootfs из
вашего образа; каждая последующая загрузка занимает секунды.
- **Ломайте без потерь.** Уничтожайте и пересоздавайте свободно; ваш
код и разговоры агента хранятся на хосте. Теряется только диск одноразовой ВМ.
- **Настоящий Linux-бокс, ваш инструментарий.** Любой OCI-образ — это rootfs: полноценная
ОС ровно с теми инструментами, которые нужны вашему проекту. Демон Docker не требуется.
- **Секреты остаются на вашей машине.** Исходящий трафик ограничен allow-list, а ваш
ssh-agent пробрасывается, поэтому `git push` работает без попадания ключей в ВМ.
- **Песочница на проект или задачу.** Запускайте несколько одновременно; для задач
с несколькими репозиториями создаётся git worktree на каждый репозиторий со скоординированными PR.
Простаивающие ВМ автоматически освобождают память и приостанавливаются на диск, поэтому забытая
песочница стоит (почти) ничего.
## Зачем ВМ?
clawk — это универсальное локальное окружение для автономных агентов кодирования.
Суть именно в ВМ: это целая машина, которой агент владеет, а не процесс,
обёрнутый в политики на той машине, которую используете вы.
- **Отдельное ядро.** Гостевая система запускает собственное ядро Linux, поэтому
файловая система хоста не скрыта за правилами запрета; она вообще никогда не монтировалась.
- **Привычное окружение Linux.** Стандартное ядро, стандартное пользовательское пространство,
ожидания в духе `/dev/kvm` — инструменты ведут себя так, как описано в их документации,
без сюрпризов от фильтрации системных вызовов.
- **Root в гостевой системе.** Устанавливайте системные пакеты, редактируйте `/etc`, загружайте модуль,
привязывайте привилегированный порт. Это машина агента, и он может её перенастраивать.
- **Одноразовый жизненный цикл.** Дешёво сломать и быстро пересоздать; разбитая
ВМ — это один `clawk destroy && clawk`, а ваш репозиторий и разговоры
остаются нетронутыми на хосте.
- **Более сильная изоляция от хоста.** Изоляция опирается на границу гипервизора,
а не на идеально выверенную политику песочницы процессов.
Такое сочетание выполняет рабочие нагрузки, с которыми ограниченная песочница процессов обычно
борется:
- установка пакетов и нативных зависимостей;
- запуск фоновых сервисов (базы данных, очереди, dev-серверы);
- выполнение недоверенных сборок и тестов на полной скорости;
- использование системных Linux-инструментов, которые ожидают реальную машину;
- и, с гостевым ядром с поддержкой KVM на поддерживаемом оборудовании, dev-процессы
с контейнерами и Kubernetes, такие как Docker или Kind, работающие *внутри*
песочницы. Это опционально и зависит от оборудования; точные требования см. в
[Images](https://github.com/clawkwork/clawk/blob/main/docs/images.md#guest-kernel-override).
Ничто из этого не является *продуктом*; clawk предназначен для локальной работы агентов в целом.
Docker и Kubernetes — просто самый яркий пример «нужна реальная машина,
а не песочница процессов».
## Установка