Глава 12

Сделайте среду воспроизводимой до автономности

Агент не исправит отсутствующий runtime, несуществующую команду и скрытую локальную зависимость. Чем автономнее запуск, тем точнее должны быть setup, lockfile, working directory, env и cleanup. В companion-проекте это начинается с проверенного manifest.

JSON
{
  "name": "coding-agents-automation-2026-project",
  "version": "1.0.0",
  "private": true,
  "type": "module",
  "engines": {
    "node": ">=24.0.0"
  },
  "scripts": {
    "build": "tsc -p tsconfig.json",
    "typecheck": "tsc -p tsconfig.json --noEmit",
    "test": "node --import tsx --test tests/*.test.ts",
    "demo": "node --import tsx src/demo.ts",
    "check": "npm run typecheck && npm test && npm run demo"
  },
  "devDependencies": {
    "@types/node": "26.1.2",
    "tsx": "4.23.1",
    "typescript": "7.0.2"
  }
}

Минимальный environment contract фиксирует шесть вещей, и каждую можно проверить.

Элемент · Зафиксировать · Проверка

  • Runtime - Версию Node, Python, Go или JDK; node --version или эквивалент
  • Dependencies - Lockfile и install command; npm ci, не случайный global package
  • Commands - Focused test, typecheck, build, full check; Exit code и bounded output
  • Environment - Имена необходимых variables без значений; Preflight с безопасным сообщением
  • Services - Как поднять и остановить БД, browser, container; Health check и cleanup
  • Workspace - Root, writable paths и temporary paths; Path containment test

Отдельно стоит развести два механизма, которые часто путают. Git worktree изолирует checkout и branch, но разделяет Git object database - он полезен против конфликтов параллельных edits. Container добавляет отдельные process, filesystem и network boundary - он полезен для воспроизводимой и ограниченной среды. Один механизм не заменяет другой.

Setup - это тоже код. Cursor документирует .cursor/worktrees.json, у Codex собственная поддержка worktrees и environments. Проверяйте setup command на чистом checkout и не копируйте настоящий .env автоматически, если задаче не нужны его секреты.

И правило первого запуска.

Сначала чистый запуск. Перед передачей задачи агенту уберите зависимость от незафиксированных global tools: выполните install по lockfile, focused test и full check в новом checkout или temporary fixture. То, что "работает у меня", не работает у автономного агента.

Среда воспроизводима. Теперь можно вернуться к самой работе - и первый её этап на большой базе - исследование слоями.

Ссылки