Все есть файл: Философия дизайна от Unix до AI Agent
Все есть файл: Философия дизайна от Unix до AI Agent
Оригинал: Ethan 业成


Эхо, пронесшееся через полвека
Еще в начале 1970-х годов в Bell Labs отцы Unix Кен Томпсон (Ken Thompson) и Деннис Ритчи (Dennis Ritchie) впервые предложили смелый, почти фанатичный принцип проектирования: Everything is a file — Все есть файл.
Более полувека спустя наблюдается взрыв фреймворков AI Agent. Manus, Claude Code, OpenClaw... Они происходят из разных команд, используют разные технологические стеки, преследуют разные коммерческие цели, но все они единогласно сделали один и тот же выбор: использовать файловую систему в качестве когнитивного скелета Agent.
Manus предоставляет Agent виртуальную машину, результаты задачи сохраняются на диск в виде файлов. Claude Code напрямую читает и записывает в локальную файловую систему пользователя, используя файл CLAUDE.md для хранения всех инструкций и контекста. OpenClaw и другие фреймворки с открытым исходным кодом также организуют декомпозицию задач и промежуточные состояния в виде структуры каталогов.
Когда инженеры, разделенные полувеком, сталкиваются с совершенно разными техническими проблемами, но независимо сходятся к одному и тому же решению — это не совпадение, это резонанс философии дизайна.
То самое решение Unix
Чтобы понять значимость этого, нужно сначала вернуться к тому, что сделал Unix.
Дизайн файловой системы Unix общепризнан как один из самых элегантных в истории компьютерных наук. Он решил чрезвычайно сложную задачу: как использовать единый, простой интерфейс для управления разнообразными аппаратными и программными ресурсами.
До 1970-х годов операционные системы работали следующим образом: чтобы прочитать диск, нужно было вызывать интерфейс диска; чтобы прочитать ленту, нужно было вызывать интерфейс ленты; чтобы получить доступ к терминалу, нужно было вызывать интерфейс терминала. Каждое устройство имело свой собственный API, и каждый API имел свою собственную семантику. Если у вас N типов устройств и M типов операций, сложность системы составляет N × M.
Thompson и Ritchie сделали нечто, казалось бы, простое до глупости:
Превратили все в файлы. Используйте четыре глагола: open, read, write, close для работы со всем.
Его основное значение заключается в том, что все ресурсы в операционной системе — документы, каталоги, жесткие диски, модемы, клавиатуры, принтеры и даже сетевые соединения и информация о процессах — могут быть абстрагированы в поток файлов (Stream of Bytes).
Это означает, что вам нужно выучить только один набор API — open(), read(), write(), close() — чтобы работать со всеми ресурсами компьютера.
С тех пор сложность схлопнулась с N × M до 4 × 1. Четыре глагола, один уровень абстракции.
Гениальность этого заключается не в самом слове «файл», а в более глубоком понимании:
Вам не нужно знать, что находится за дескриптором файла. Интерфейс — это контракт.
fd (дескриптор файла) — это непрозрачный дескриптор. Вы делаете read() для него, и поток байтов выходит. Что касается того, откуда эти байты — из сектора жесткого диска, буфера сетевой карты или стандартного вывода другого процесса — вас это не волнует, и вас это не должно волновать.
В этом сила единого интерфейса: он превращает невежество в преимущество.

Та же задача, что и у Agent
Теперь вернемся к положению AI Agent.
Чтобы выполнить сложную задачу, Agent сталкивается с удивительно похожей дилеммой, что и операционная система в 1970-х годах:
- Постоянная память: контекстное окно LLM является непостоянным, цепочка рассуждений исчезает вместе с сеансом. Как и память, которая освобождается после завершения процесса — вам нужно место для сохранения промежуточного состояния, иначе каждый диалог будет начинаться с нуля.
- Постепенный контекст: сложные задачи невозможно выполнить за один шаг. Агенту необходимо постепенно накапливать контекст в ходе многократных рассуждений, подобно тому, как процесс Unix передает состояние между несколькими выполнениями, читая и записывая файлы. Файловая система естественным образом предоставляет такой режим постепенной работы «записать немного, прочитать немного, затем записать еще немного».
- Унифицированное планирование инструментов и навыков: Агенту необходимо вызывать разнородные инструменты (Tools/Skills), такие как поиск, выполнение кода, генерация изображений, подобно тому, как Unix управляет разнородными устройствами, такими как диски, сети, принтеры. Вам нужен единый уровень абстракции, иначе для каждого нового инструмента придется писать новый набор логики интеграции.
- Границы разрешений для использования компьютера: когда Агент обладает возможностью управлять компьютером, вопрос «что он может трогать, а что нет» становится жизненно важным. Система разрешений файлов Unix (rwx) предоставляет готовую модель песочницы — каталог как граница, разрешение как контракт.
Четыре требования. Звучит знакомо?
Это именно те проблемы, с которыми операционные системы столкнулись в 1970-х годах.
Постоянная память — файловая система решает естественным образом, запись означает постоянство. Постепенный контекст — структура каталогов сама по себе строится постепенно, mkdir, touch, append, контекст растет вместе с файлом. Унифицированное планирование инструментов — суть конвейера Unix: stdout одного процесса является stdin другого процесса, промежуточным носителем является поток байтов. То же самое и с цепочкой инструментов Агента: выходной файл предыдущего шага является входным файлом следующего шага. Границы разрешений — разрешения rwx файловой системы, песочница chroot, естественным образом определяют «круг возможностей» для Агента.
Поэтому, когда разработчики фреймворка Agent сталкиваются с вопросом «где хранить рабочее состояние Agent», ответ почти предопределен: в файловой системе. Потому что нет более простого решения, которое могло бы одновременно удовлетворить эти четыре ограничения.
Когда системе необходимо «управлять взаимодействием большого количества разнородных ресурсов», у вас есть два пути:
Путь A: разработать специализированный интерфейс для каждого ресурса. N ресурсов × M операций = NM интерфейсов. Точно, но взрывоопасно.
Путь B: найти достаточно тонкий уровень абстракции, чтобы все ресурсы носили одну и ту же одежду. 4 операции × 1 уровень абстракции. Грубо, но комбинируемо.
Unix выбрал B. Более пятидесяти лет спустя фреймворк Agent снова выбрал B.

Более глубокий уровень: файл как внешнее проявление мышления
Но если мы остановимся только на «сходимости технических решений», мы упустим более существенные вещи.
Вспомните, как люди сами справляются со сложными задачами.
Вы получаете большой проект, и первое, что вы делаете, это не начинаете работать, а: создаете папки. Корневой каталог проекта, каталоги подзадач, каталоги справочных материалов, каталоги вывода. Вы используете структуру каталогов, чтобы разбить хаотичную задачу на управляемые единицы. Вы используете имена файлов, чтобы назвать каждую единицу. Вы используете содержимое файлов для записи процесса мышления и промежуточных продуктов.
Файловая система — это не просто решение для хранения. Это оригинальный инструмент для внешнего проявления мышления человека.
Это понимание объясняет, почему фреймворк Agent сходится к файловой системе: «мышление» LLM необходимо внешне выразить — его контекстное окно ограничено, и долгосрочные рассуждения должны зависеть от внешней памяти. А файловая система — это самый универсальный формат «внешней памяти», который когда-либо изобретал человек.
С этой точки зрения, CLAUDE.md в Claude Code — это не файл конфигурации. Это внешнее когнитивное соглашение — человек записывает намерение в файл, а Агент считывает файл как намерение. Файл становится интерфейсным слоем между человеческим разумом и искусственным интеллектом.
Это удивительно согласуется с философией конвейера Unix:
Пишите программы для обработки текстовых потоков, потому что это универсальный интерфейс.Замена "programs" на "agents", а "text streams" на "files" останется верной и в 2026 году.
Возвращение к первым принципам
Великие абстракции не устаревают, они лишь находят новые примеры в новых областях.
"Унифицированный интерфейс устраняет сложность" - это не изобретение Unix, это вечный закон системного проектирования. Unix случайно реализовал его под названием "файл". AI Agent случайно реализовал его снова в форме "рабочего каталога".
Следующее поколение систем также столкнется с тем же выбором: разрабатывать специализированные интерфейсы для каждой вещи или найти тонкий, общий, компонуемый уровень абстракции?
Если история чему-то и учит, то ответ уже написан рядом с /dev/null:
Keep it simple. Make it compose. Everything is a file. // Делай проще. Делай так, чтобы можно было комбинировать. Все есть файл.





