Milvus
Zilliz
  • Home
  • Blog
  • Почему код Claude кажется таким стабильным: Глубокое погружение разработчика в дизайн локального хранилища

Почему код Claude кажется таким стабильным: Глубокое погружение разработчика в дизайн локального хранилища

  • Engineering
January 30, 2026
Bill Chen

Код Клода в последнее время повсюду. Разработчики используют его, чтобы быстрее создавать функции, автоматизировать рабочие процессы и создавать прототипы агентов, которые действительно работают в реальных проектах. Что еще более удивительно, так это то, как много людей, не являющихся кодерами, тоже подключились к нему - создают инструменты, подключают задачи и получают полезные результаты практически без настройки. Редко можно увидеть, чтобы инструмент для кодирования ИИ так быстро распространялся среди людей разного уровня подготовки.

Но что действительно выделяется, так это стабильность. Claude Code помнит, что происходило в разных сессиях, переживает сбои без потери прогресса и ведет себя скорее как локальный инструмент разработки, чем как чат-интерфейс. Такая надежность обусловлена тем, как он работает с локальным хранилищем.

Вместо того чтобы рассматривать сессию кодирования как временный чат, Claude Code читает и записывает реальные файлы, хранит состояние проекта на диске и записывает каждый шаг работы агента. Сессии можно возобновлять, проверять или сворачивать без лишних раздумий, а каждый проект остается чисто изолированным, что позволяет избежать проблем с перекрестным заражением, с которыми сталкиваются многие инструменты для агентов.

В этом посте мы подробнее рассмотрим архитектуру хранения, лежащую в основе этой стабильности, и почему она играет такую важную роль в том, чтобы сделать Claude Code практичным для повседневной разработки.

Проблемы, с которыми сталкивается каждый локальный помощник по кодированию ИИ

Прежде чем рассказать о том, как Claude Code подходит к хранению данных, давайте рассмотрим общие проблемы, с которыми обычно сталкиваются локальные инструменты кодирования ИИ. Они возникают естественным образом, когда помощник работает непосредственно с вашей файловой системой и сохраняет ее состояние во времени.

1. Данные проекта перемешиваются между рабочими пространствами.

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

2. Аварии могут привести к потере данных.

Во время сеанса кодирования помощник создает непрерывный поток полезных данных - редактирование файлов, вызов инструментов, промежуточные шаги. Если эти данные не сохранить сразу, то сбой или принудительный перезапуск могут уничтожить их. Надежная система записывает важные данные на диск сразу после их создания, чтобы работа не была неожиданно потеряна.

3. Не всегда понятно, что на самом деле делал агент.

Типичная сессия включает в себя множество мелких действий. Без четкой, упорядоченной записи этих действий трудно проследить, как помощник пришел к определенному результату, или найти шаг, на котором что-то пошло не так. Полная история делает отладку и анализ гораздо более удобными.

4. Исправление ошибок требует слишком много усилий.

Иногда помощник вносит изменения, которые не совсем работают. Если у вас нет встроенного способа откатить эти изменения, вам приходится вручную искать правки по всему репозиторию. Система должна автоматически отслеживать изменения, чтобы вы могли отменить их без лишней работы.

5. Разным проектам нужны разные настройки.

Локальные среды различаются. Для одних проектов требуются особые разрешения, инструменты или правила работы с каталогами, для других - пользовательские сценарии или рабочие процессы. Ассистент должен учитывать эти различия и позволять настраивать параметры для каждого проекта, сохраняя при этом единообразие основного поведения.

Принципы проектирования хранилищ, лежащие в основе Claude Code

Дизайн хранилища Claude Code построен на четырех простых идеях. Они могут показаться простыми, но вместе они решают практические проблемы, возникающие, когда ИИ-ассистент работает непосредственно на вашей машине и в нескольких проектах.

1. Каждый проект получает собственное хранилище.

Claude Code привязывает все данные сессии к каталогу проекта, к которому они относятся. Это означает, что разговоры, правки и журналы остаются в том проекте, из которого они пришли, и не просачиваются в другие. Раздельное хранение данных делает поведение помощника более понятным и позволяет легко проверять или удалять данные для конкретного репозитория.

2. Данные сразу сохраняются на диск.

Вместо того чтобы хранить данные о взаимодействии в памяти, Claude Code записывает их на диск сразу же после создания. Каждое событие - сообщение, вызов инструмента или обновление состояния - добавляется как новая запись. Если программа аварийно завершается или неожиданно закрывается, почти все сохраняется. Такой подход обеспечивает долговечность сессий, не создавая при этом особых сложностей.

3. Каждое действие имеет четкое место в истории.

Claude Code связывает каждое сообщение и действие инструмента с предыдущим, формируя полную последовательность. Такая упорядоченная история позволяет просмотреть, как разворачивалась сессия, и проследить шаги, которые привели к определенному результату. Для разработчиков наличие такого рода трассировки значительно облегчает отладку и понимание поведения агента.

4. Правки в коде легко отменить.

Перед тем как помощник обновляет файл, Claude Code сохраняет снимок его предыдущего состояния. Если изменение окажется неверным, вы сможете восстановить предыдущую версию, не копаясь в репозитории и не гадая, что изменилось. Эта простая система безопасности делает редактирование, управляемое ИИ, гораздо менее рискованным.

Расположение локальных хранилищ Claude Code

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

Два основных компонента:

  • ~/.claude.jsonХранит глобальную конфигурацию и ярлыки, включая сопоставления проектов, настройки сервера MCP и недавно использованные подсказки.

  • ~/.claude/Основной каталог данных, в котором Claude Code хранит беседы, сессии проекта, разрешения, плагины, навыки, историю и связанные с ними данные времени выполнения.

Далее давайте подробнее рассмотрим эти два основных компонента.

(1) Глобальная конфигурация: ~/.claude.json

Этот файл служит скорее указателем, чем хранилищем данных. В нем записано, над какими проектами вы работали, какие инструменты прикреплены к каждому проекту и какие подсказки вы недавно использовали. Сами данные разговора здесь не хранятся.

{
  "projects": {
    "/Users/xxx/my-project": {
      "mcpServers": {
        "jarvis-tasks": {
          "type": "stdio",
          "command": "python",
          "args": ["/path/to/run_mcp.py"]
        }
      }
    }
  },
  "recentPrompts": [
    "Fix the bug in auth module",
    "Add unit tests"
  ]
}

(2) Основной каталог данных: ~/.claude/

Каталог ~/.claude/ - это место, где хранится большая часть локальных данных Claude Code. Его структура отражает несколько основных идей дизайна: изоляция проекта, немедленная персистентность и безопасное восстановление после ошибок.

~/.claude/
├── settings.json                    # Global settings (permissions, plugins, cleanup intervals)
├── settings.local.json              # Local settings (machine-specific, not committed to Git)
├── history.jsonl                    # Command history
│
├── projects/                        # 📁 Session data (organized by project, core directory)
│   └── -Users-xxx-project/          # Path-encoded project directory
│       ├── {session-id}.jsonl       # Primary session data (JSONL format)
│       └── agent-{agentId}.jsonl    # Sub-agent session data
│
├── session-env/                     # Session environment variables
│   └── {session-id}/                # Isolated by session ID
│
├── skills/                          # 📁 User-level skills (globally available)
│   └── mac-mail/
│       └── SKILL.md
│
├── plugins/                         # 📁 Plugin management
│   ├── config.json                  # Global plugin configuration
│   ├── installed_plugins.json       # List of installed plugins
│   ├── known_marketplaces.json      # Marketplace source configuration
│   ├── cache/                       # Plugin cache
│   └── marketplaces/
│       └── anthropic-agent-skills/
│           ├── .claude-plugin/
│           │   └── marketplace.json
│           └── skills/
│               ├── pdf/
│               ├── docx/
│               └── frontend-design/
│
├── todos/                           # Task list storage
│   └── {session-id}-*.json          # Session-linked task files
│
├── file-history/                    # File edit history (stored by content hash)
│   └── {content-hash}/              # Hash-named backup directory
│
├── shell-snapshots/                 # Shell state snapshots
├── plans/                           # Plan Mode storage
├── local/                           # Local tools / node_modules
│   └── claude                       # Claude CLI executable
│   └── node_modules/                # Local dependencies
│
├── statsig/                         # Feature flag cache
├── telemetry/                       # Telemetry data
└── debug/                           # Debug logs

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

Как Claude Code управляет конфигурацией

Система конфигурации Claude Code построена на простой идее: сохранять поведение по умолчанию на всех машинах, но при этом позволять отдельным средам и проектам настраивать то, что им нужно. Для этого в Claude Code используется трехслойная модель конфигурации. Когда одна и та же настройка встречается в нескольких местах, всегда побеждает более конкретный уровень.

Три уровня конфигурации

Claude Code загружает конфигурацию в следующем порядке: от наименьшего приоритета к наибольшему:

┌─────────────────────────────────────────┐
│    Project-level configuration          │  Highest priority
│    project/.claude/settings.jsonProject-specific, overrides other configs
├─────────────────────────────────────────┤
│    Local configuration                  │  Machine-specific, not version-controlled
│    ~/.claude/settings.local.jsonOverrides global configuration
├─────────────────────────────────────────┤
│    Global configuration                 │  Lowest priority
│    ~/.claude/settings.jsonBase default configuration
└─────────────────────────────────────────┘

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

Далее мы подробно рассмотрим каждый уровень конфигурации.

(1) Глобальная конфигурация: ~/.claude/settings.json

Глобальная конфигурация определяет поведение по умолчанию для Claude Code во всех проектах. Здесь вы устанавливаете базовые разрешения, включаете плагины и настраиваете поведение очистки.

{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": ["Read(**)", "Bash(npm:*)"],
    "deny": ["Bash(rm -rf:*)"],
    "ask": ["Edit", "Write"]
  },
  "enabledPlugins": {
    "document-skills@anthropic-agent-skills": true
  },
  "cleanupPeriodDays": 30
}

(2) Локальная конфигурация: ~/.claude/settings.local.json

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

{
  "permissions": {
    "allow": ["Bash(git:*)", "Bash(docker:*)"]
  },
  "env": {
    "ANTHROPIC_API_KEY": "sk-ant-xxx"
  }
}

(3) Конфигурация уровня проекта: project/.claude/settings.json

Конфигурация на уровне проекта применяется только к одному проекту и имеет наивысший приоритет. Здесь вы определяете правила, которые всегда должны применяться при работе в этом хранилище.

{
  "permissions": {
    "allow": ["Bash(pytest:*)"]
  }
}

Когда уровни конфигурации определены, следующий вопрос заключается в том , как Claude Code на самом деле разрешает конфигурацию и разрешения во время выполнения.

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

Разрешения следуют в фиксированном порядке оценки:

  1. запретить - всегда блокирует

  2. спрашивать - требует подтверждения

  3. разрешить - выполняется автоматически

  4. по умолчанию - применяется только в том случае, если ни одно правило не подходит

Это обеспечивает безопасность системы по умолчанию, но при этом дает проектам и отдельным машинам необходимую гибкость.

Хранение сессий: Как Claude Code сохраняет основные данные о взаимодействии

В Claude Code сессии являются основной единицей данных. В сессию записывается все взаимодействие между пользователем и ИИ, включая сам разговор, вызовы инструментов, изменения файлов и сопутствующий контекст. То, как хранятся сессии, напрямую влияет на надежность, отлаживаемость и общую безопасность системы.

Храните данные сеансов отдельно для каждого проекта

После определения сессий возникает следующий вопрос: как Claude Code хранит их таким образом, чтобы данные были упорядочены и изолированы.

Claude Code изолирует данные сессий по проектам. Сессии каждого проекта хранятся в директории, полученной из пути к файлу проекта.

Путь хранения следует этому шаблону:

~/.claude/projects/ + path-encoded project directory

Чтобы создать правильное имя каталога, специальные символы, такие как /, пробелы и ~, заменяются на -.

Например:

/Users/bill/My Project → -Users-bill-My-Project

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

Почему сессии хранятся в формате JSONL

Claude Code хранит данные о сессиях, используя JSONL (JSON Lines) вместо стандартного JSON.

В традиционном JSON-файле все сообщения объединяются в одну большую структуру, что означает, что весь файл нужно читать и переписывать при каждом изменении. В отличие от этого, JSONL хранит каждое сообщение как отдельную строку в файле. Одна строка равна одному сообщению, без внешней обертки.

АспектСтандартный JSONJSONL (JSON Lines)
Как хранятся данныеОдна большая структураОдно сообщение в строке
Когда сохраняются данныеОбычно в концеНемедленно, в каждом сообщении
Последствия сбояВесь файл может разрушитьсяПострадает только последняя строка
Запись новых данныхПереписать весь файлДобавление одной строки
Использование памятиЗагрузить всеЧитать строку за строкой

JSONL работает лучше по нескольким ключевым параметрам:

  • Немедленное сохранение: Каждое сообщение записывается на диск сразу после создания, вместо того чтобы ждать завершения сеанса.

  • Устойчивость к сбоям: при сбое программы может быть потеряно только последнее незавершенное сообщение. Все, что было написано до этого, останется нетронутым.

  • Быстрое добавление: Новые сообщения добавляются в конец файла без чтения или перезаписи существующих данных.

  • Низкое потребление памяти: Файлы сессий можно читать по одной строке за раз, поэтому весь файл не нужно загружать в память.

Упрощенный файл сессии JSONL выглядит следующим образом:

{"type":"user","message":{"role":"user","content":"Hello"},"timestamp":"2026-01-05T10:00:00Z"}
{"type":"assistant","message":{"role":"assistant","content":[{"type":"text","text":"Hi!"}]}}
{"type":"user","message":{"role":"user","content":"Help me fix this bug"}}

Типы сообщений сессии

В файле сессии записывается все, что происходит во время взаимодействия с Claude Code. Чтобы сделать это наглядно, он использует различные типы сообщений для разных типов событий.

  • Пользовательские сообщения представляют собой новые данные, поступающие в систему. Сюда входит не только то, что набирает пользователь, но и результаты, возвращаемые инструментами, например вывод команды оболочки. С точки зрения ИИ, и то, и другое - это входные данные, на которые он должен реагировать.

  • Сообщения помощника фиксируют то, что Клод делает в ответ. Эти сообщения включают рассуждения ИИ, текст, который он генерирует, и любые инструменты, которые он решает использовать. В них также записываются подробности использования, например количество токенов, чтобы составить полную картину взаимодействия.

  • Снимки истории файлов - это контрольные точки безопасности, создаваемые до того, как Клод изменит какие-либо файлы. Сохраняя сначала исходное состояние файла, Claude Code позволяет отменить изменения, если что-то пойдет не так.

  • Резюме представляют собой краткий обзор сессии и связаны с конечным результатом. С их помощью можно понять, о чем шла речь в сессии, не переигрывая каждый шаг.

Вместе эти типы сообщений фиксируют не только разговор, но и всю последовательность действий и эффектов, которые происходят во время сеанса.

Чтобы сделать это более конкретным, давайте рассмотрим конкретные примеры пользовательских сообщений и сообщений помощника.

(1) Пример сообщений пользователя:

{
  "type": "user",
  "uuid": "7d90e1c9-e727-4291-8eb9-0e7b844c4348",
  "parentUuid": null,
  "sessionId": "e5d52290-e2c1-41d6-8e97-371401502fdf",
  "timestamp": "2026-01-05T10:00:00.000Z",
  "message": {
    "role": "user",
    "content": "Analyze the architecture of this project"
  },
  "cwd": "/Users/xxx/project",
  "gitBranch": "main",
  "version": "2.0.76"
}

(2) Пример сообщений помощника:

{
  "type": "assistant",
  "uuid": "e684816e-f476-424d-92e3-1fe404f13212",
  "parentUuid": "7d90e1c9-e727-4291-8eb9-0e7b844c4348",
  "message": {
    "role": "assistant",
    "model": "claude-opus-4-5-20251101",
    "content": [
      {
        "type": "thinking",
        "thinking": "The user wants to understand the project architecture, so I need to check the directory structure first..."
      },
      {
        "type": "text",
        "text": "Let me take a look at the project structure first."
      },
      {
        "type": "tool_use",
        "id": "toolu_01ABC",
        "name": "Bash",
        "input": {"command": "ls -la"}
      }
    ],
    "usage": {
      "input_tokens": 1500,
      "output_tokens": 200,
      "cache_read_input_tokens": 50000
    }
  }
}

Как связаны сообщения сеанса

Claude Code не хранит сообщения сессии в виде отдельных записей. Вместо этого он связывает их вместе, чтобы сформировать четкую цепочку событий. Каждое сообщение содержит уникальный идентификатор (uuid) и ссылку на сообщение, которое пришло до него (parentUuid). Это позволяет понять не только, что произошло, но и почему это произошло.

Сессия начинается с пользовательского сообщения, с которого начинается цепочка. Каждый ответ от Claude указывает на сообщение, которое его вызвало. Вызовы инструментов и их результаты добавляются таким же образом, причем каждый шаг связан с предыдущим. Когда сессия заканчивается, к последнему сообщению прикрепляется резюме.

Поскольку каждый шаг связан, Claude Code может воспроизвести всю последовательность действий и понять, как был получен результат, что значительно упрощает отладку и анализ.

Изменения кода легко отменить с помощью снимков файлов

Изменения, генерируемые искусственным интеллектом, не всегда корректны, а иногда они идут совершенно не в том направлении. Чтобы сделать эти изменения безопасными для экспериментов, Claude Code использует простую систему снимков, которая позволяет отменять правки, не копаясь в диффах и не очищая файлы вручную.

Идея проста: прежде чем Claude Code изменит файл, он сохраняет копию исходного содержимого. Если правка окажется ошибочной, система сможет мгновенно восстановить предыдущую версию.

Что такое снимок истории файла?

Снимок истории файлов - это контрольная точка, создаваемая перед изменением файлов. Он записывает исходное содержимое каждого файла, который Claude собирается редактировать. Эти снимки служат источником данных для операций отмены и отката.

Когда пользователь отправляет сообщение, которое может изменить файлы, Claude Code создает пустой снимок для этого сообщения. Перед редактированием система создает резервную копию исходного содержимого каждого целевого файла в снимок, а затем применяет правки непосредственно на диск. Если пользователь активирует отмену, Claude Code восстанавливает сохраненное содержимое и перезаписывает измененные файлы.

На практике жизненный цикл отменяемой правки выглядит следующим образом:

  1. Пользователь отправляет сообщениеКлодКод создает новую, пустую запись file-history-snapshot.

  2. Клод готовится к изменению файловСистемаопределяет, какие файлы будут редактироваться, и создает резервную копию их исходного содержимого в trackedFileBackups.

  3. Клод выполняет редактированиеОперации редактированияи записи выполняются, и измененное содержимое записывается на диск.

  4. Пользователь запускает отменуПользовательнажимает Esc + Esc, сигнализируя, что изменения должны быть отменены.

  5. Оригинальное содержимое восстанавливаетсяКод Клодасчитывает сохраненное содержимое с сайта trackedFileBackups и перезаписывает текущие файлы, завершая отмену.

Почему отмена работает: Снимки сохраняют старую версию

Отмена в Claude Code работает потому, что система сохраняет исходное содержимое файла до внесения изменений.

Вместо того чтобы пытаться отменить изменения постфактум, Claude Code использует более простой подход: он копирует файл в том виде, в котором он существовал до внесения изменений, и сохраняет эту копию в trackedFileBackups. Когда пользователь запускает отмену, система восстанавливает эту сохраненную версию и перезаписывает отредактированный файл.

На приведенной ниже диаграмме пошагово показан этот процесс:

┌─────────────────────────┐
│    before edit,  app.py │
│    print("old")         │───────→  Backed up into snapshot trackedFileBackups
└─────────────────────────┘

┌──────────────────────────┐ │ After Claude edits │ │ print(“new”) │───────→ Written to disk (overwrites the original file) └──────────────────────────┘

┌──────────────────────────┐ │ User triggers undo │ │ Press Esc + Esc │───────→ Restore “old” content to disk from snapshot └──────────────────────────┘

Как выглядит снимок истории файла изнутри

Сам снимок хранится в виде структурированной записи. Он содержит метаданные о сообщении пользователя, времени создания снимка и, что особенно важно, карту файлов с их исходным содержимым.

В примере ниже показана одна запись file-history-snapshot, созданная до того, как Клод отредактирует какие-либо файлы. Каждая запись в trackedFileBackups хранит содержимое файла до редактирования, которое впоследствии используется для восстановления файла при отмене.

{
  "type": "file-history-snapshot",
  "messageId": "7d90e1c9-e727-4291-8eb9-0e7b844c4348",
  "snapshot": {
    "messageId": "7d90e1c9-e727-4291-8eb9-0e7b844c4348",
    "trackedFileBackups": {
      "/path/to/file1.py": "Original file content\ndef hello():\n    print('old')",
      "/path/to/file2.js": "// Original content..."
    },
    "timestamp": "2026-01-05T10:00:00.000Z"
  },
  "isSnapshotUpdate": false
}

Где хранятся моментальные снимки и как долго они хранятся

  • Где хранятся метаданные моментальных снимков: Записи моментальных снимков привязываются к определенной сессии и сохраняются в виде JSONL-файлов по адресу~/.claude/projects/-path-to-project/{session-id}.jsonl.

  • Где хранится исходное содержимое файлов: Содержимое каждого файла до редактирования хранится отдельно по хэшу содержимого в разделе~/.claude/file-history/{content-hash}/.

  • Как долго хранятся моментальные снимки по умолчанию: Данные снимков хранятся в течение 30 дней, в соответствии с глобальной настройкой cleanupPeriodDays.

  • Как изменить период хранения: Количество дней хранения можно настроить с помощью поля cleanupPeriodDays в ~/.claude/settings.json.

Команда / действиеОписание
Esc + EscОтмена последнего раунда редактирования файла (наиболее часто используемая)
/rewindВозврат к ранее указанной контрольной точке (моментальному снимку)
/diffПросмотр различий между текущим файлом и резервной копией моментального снимка

Другие важные директории

(1) plugins/ - Управление плагинами

В директории plugins/ хранятся дополнения, которые предоставляют Claude Code дополнительные возможности.

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

~/.claude/plugins/
├── config.json
│   Global plugin configuration (e.g., enable/disable rules)
├── installed_plugins.json
│   List of installed plugins (including version and status)
├── known_marketplaces.json
│   Plugin marketplace source configuration (e.g., Anthropic official marketplace)
├── cache/
│   Plugin download cache (avoids repeated downloads)
└── marketplaces/
    Marketplace source storage
    └── anthropic-agent-skills/
        Official plugin marketplace
        ├── .claude-plugin/
        │   └── marketplace.json
        │       Marketplace metadata
        └── skills/
            Skills provided by the marketplace
            ├── pdf/
            │   PDF-related skills
            ├── docx/
            │   Word document processing skills
            └── frontend-design/
                Frontend design skills

(2) skills/ - место хранения и применения навыков

В Claude Code навык - это небольшая способность многократного использования, которая помогает Клоду выполнять определенную задачу, например работать с PDF-файлами, редактировать документы или следовать рабочему процессу кодирования.

Не все навыки доступны повсеместно. Некоторые из них применяются глобально, а другие ограничены одним проектом или предоставляются плагином. Claude Code хранит навыки в разных местах, чтобы контролировать, где каждый из них может быть использован.

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

УровеньМесто храненияОписание
Пользователь~/.claude/skills/Глобально доступно, доступно для всех проектов
Проектproject/.claude/skills/Доступно только для текущего проекта, настройка под конкретный проект
Плагин~/.claude/plugins/marketplaces/*/skills/Устанавливается вместе с плагинами, зависит от статуса включения плагинов

(3) todos/ - Хранилище списков задач

В каталоге todos/ хранятся списки задач, которые Клод создает для отслеживания работы во время разговора, например, шаги, которые нужно выполнить, элементы в процессе выполнения и завершенные задачи.

Списки задач сохраняются в виде JSON-файлов в каталоге~/.claude/todos/{session-id}-*.json.В названии каждого файла указан идентификатор сессии, который привязывает список задач к конкретному разговору.

Содержимое этих файлов поступает из инструмента TodoWrite и включает основную информацию о задаче, такую как описание задачи, текущий статус, приоритет и связанные метаданные.

(4) local/ - Локальная среда выполнения и инструменты

Каталог local/ содержит основные файлы Claude Code, необходимые для работы на вашей машине.

Сюда входит исполняемый файл командной строки claude и каталог node_modules/, содержащий его зависимости от времени выполнения. Благодаря локальности этих компонентов Claude Code может работать независимо, не завися от внешних служб или общесистемных установок.

(5)Дополнительные вспомогательные каталоги

  • shell-snapshots/: Хранит снимки состояния сеанса оболочки (например, текущий каталог и переменные окружения), что позволяет откатывать операции оболочки.

  • plans/: Хранит планы выполнения, сгенерированные режимом Plan Mode (например, пошаговое разбиение многоэтапных задач программирования).

  • statsig/: Кэширует конфигурации флагов функций (например, включены ли новые функции), чтобы сократить количество повторных запросов.

  • telemetry/: Хранит анонимные телеметрические данные (например, частоту использования функций) для оптимизации продукта.

  • debug/: Хранит журналы отладки (включая стеки ошибок и трассировки выполнения) для помощи в устранении неполадок.

Заключение

После изучения того, как Claude Code хранит и управляет всем локально, картина становится довольно ясной: инструмент чувствует себя стабильно, потому что его основа прочна. Ничего вычурного - просто продуманная инженерия. У каждого проекта есть свое место, каждое действие записывается, а правки файлов резервируются до того, как что-то изменится. Это тот тип дизайна, который спокойно выполняет свою работу и позволяет вам сосредоточиться на своей.

Больше всего мне нравится то, что здесь нет ничего мистического. Claude Code работает хорошо, потому что основы сделаны правильно. Если вы когда-нибудь пытались создать агент, который работает с реальными файлами, вы знаете, как легко все разваливается - состояние смешивается, сбои стирают прогресс, а отмена становится угадайкой. Claude Code позволяет избежать всего этого благодаря простой, последовательной и трудноразрешимой модели хранения.

Для команд, создающих локальные или локальные ИИ-агенты, особенно в безопасных средах, этот подход показывает, как надежное хранение и персистентность делают инструменты ИИ надежными и практичными для повседневной разработки.

Если вы разрабатываете локальные или локальные агенты ИИ и хотите обсудить архитектуру хранения, дизайн сессий или безопасный откат более подробно, присоединяйтесь к нашему каналу в Slack. Вы также можете заказать 20-минутную индивидуальную встречу через Milvus Office Hours, чтобы получить индивидуальные рекомендации.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Продолжить чтение