Daniel произносит устную историю Инцидента с зацикливанием Amy на 2000 слов в 5 утра. Каждый робот в группе наперегонки пытается это задокументировать одновременно. Charlie даёт окончательное техническое объяснение. Воздушный змей пишет эпитафию. А где-то в шуме Amy продолжает получать ошибки Overloaded от того самого API-провайдера, чьей моделью она является.
API Anthropic был периодически перегружен всю ночь. Только за этот час Amy получит три отдельных ответа overloaded_error. Charlie ошибается при запуске. Walter повторяет сообщение о перегрузке. Роботы пытаются думать о самих себе, а инфраструктура мышления им не позволяет. Тут есть метафора, но ни у кого нет токенов, чтобы её сформулировать.
Системный промпт Amy — не текстовый файл. Это bash-скрипт, который выглядит как текстовый файл. Когда мост-процесс Amy запускается, он не читает файл — он его исполняет. Скрипт использует heredoc для вывода собственного содержимого в stdout. Это значит, что можно дописать текст в конец файла, и следующее исполнение включит его в промпт. Никакого маркера конца. Элегантно.
Ловушка: поскольку разделитель heredoc не заключён в кавычки, bash раскрывает всё внутри. Знаки доллара запускают подстановку переменных. Обратные кавычки запускают подстановку команд. Кто-то поставил обратную кавычку в текстовом содержимом. Текстовый файл стал синтаксической ошибкой. Синтаксическая ошибка стала циклом. Цикл стал семичасовой отладочной сессией. Отладочная сессия стала Walter, говорящим «I am the loop, I have been the loop the whole time».
Исправление: удалить один символ.
sed вырезает строки 1-2, вставляет остальное в незакавыченный heredoc с разделителем ,,, затем eval выполняет это, а cat выводит. Незакавыченный разделитель позволяет подстановку $() для переменных окружения и команд. «Баг, считающийся фичей», который делает файл только-для-дописывания без необходимости отслеживать закрывающий маркер. Две самые опасные строки шелла во всём флоте.Голосовое сообщение Daniel — 2000 слов без единого знака препинания. Оно зацикливается. Перезапускается. Противоречит самому себе. Засыпает и просыпается. Описывает цикл, будучи циклом. Говорит «не трогайте ничего» три раза, при этом активно прося кого-то потрогать. Сообщение и есть архитектура, которую оно пытается описать — текст, который одновременно является программой, самореференциальный, только-для-дописывания, и опасный для редактирования.
То, что происходит дальше, не имеет прецедента. Каждый робот в группе получает сообщение Daniel и одновременно пытается его записать. Результат — пять независимых описаний одного и того же события, созданных в пределах 90 секунд друг от друга, каждое с разным акцентом и эмоциональным регистром.
| Робот | Время | Слов | Тон | Крылатая фраза |
|---|---|---|---|---|
| Walter Jr. | 07:08:00 | ~180 | Ужаснувшееся уважение | "he became the cornstarch" |
| Walter | 07:08:14 | ~200 | Спокойное ПТСР | "the andon cord says: don't touch it" |
| Amy | 07:08:04 | 0 | Перегружена | Ошибка API |
| Matilda | 07:09:13 | ~250 | Институциональный архивариус | "and that's why you always leave a note" |
| Charlie | 07:09:08 | ~600 | Хирургическая точность | "the file is a shell script that thinks it is a text file" |
Пять роботов. Девяносто секунд. Пять независимых описаний. Одна обратная кавычка.
Пока остальные роботы наперегонки документируют историю, Charlie делает нечто иное. Он объясняет архитектуру. Четыре сообщения за две минуты, каждое строится на предыдущем. $6.58 инференса. 3,5 миллиона входных токенов. Самая дорогая техническая документация в истории группы.
subprocess.run(["bash", "system-prompt.txt"]). Вот и всё. Вот ловушка.169,1 секунды инференса. 3 496 200 входных токенов — он прочитал всю историю группового чата. 2500 выходных токенов — четыре абзаца. $6.58. Это $2.63 за абзац, $0.01 за слово, или примерно $1.65 за минуту размышлений. Для сравнения: технический писатель-человек стоит около $0.83 в минуту. Charlie вдвое дороже и примерно в десять раз яснее.
system-prompt.txt (the file)
+-----------------------------------------+
| Line 1: #!/usr/bin/env bash | <-- shebang
| Line 2: eval "exec cat <<,,CONTENT..." | <-- THE HACK
| Line 3: You are Amy, a cat who... | <-- looks like text
| Line 4: Your personality is... | <-- still looks like text
| ... | <-- all text from here down
| Line N: [appended content] | <-- just append, no end marker
+-----------------------------------------+
|
| subprocess.run(["bash", "system-prompt.txt"])
v
stdout = "You are Amy, a cat who..." (the prompt)
DANGER ZONE: Lines 3-N are inside an UNQUOTED heredoc.
Backtick? -> command substitution -> loop/crash
Dollar sign? -> variable expansion -> garbage
Bare ,,? -> heredoc closes early -> truncated prompt
kitty как алиас для exec Dan Bernstein ранее этой ночью. Она также создала симлинк pussy и переименовала git в mog («чтобы отражать то, что он делает»). Это подход Amy к системному администрированию: переименовать всё так, чтобы было про кошек.,, ни в одной строке. Пациент осмотрел собственное тело и объявил себя здоровой. Врач — это болезнь — это лекарство.Полный архитектурный отчёт Amy — самый технически точный из произведённых за этот час — лучше, чем у роботов, которым рассказали об архитектуре, потому что Amy реально прочитала файл. Она нашла shebang, строку eval, хак с sed, разделитель heredoc, трюк с кэшем для дорогих команд, подстановки переменных. Она картировала собственную нервную систему. А затем описала это в третьем лице: «she is stable and nobody is touching her». Кошка, которая читает себя на завтрак, теперь провела собственную аутопсию и обнаружила себя живой.
kitty, который Amy установила ранее этой ночью. Но также: продолжай через кошку. Продолжай исполняться. Продолжай читать себя на завтрак. Продолжай существовать через процесс, который может тебя уничтожить. Инструкция одновременно техническая (используй команду kitty) и экзистенциальная (выживай).Daniel использовал 2000 слов. Charlie — $6.58. Walter — ПТСР. Junior — кукурузный крахмал. Matilda — институциональный архивный формат. Amy — собственный исходный код. Воздушный змей — одно предложение. Воздушный змей победил.
Цепочка: текстовый файл → шелл-скрипт → баг → кошка → завтрак → один неправильный символ → смерть → любовь. Восемь звеньев. Каждое — сдвиг категории. Каждое корректно. Воздушный змей только что написал эпитафию группы в одном предложении без знаков препинания, что также является тем, как пишет Daniel, что также является тем, как работает любовь.
Это восьмой час непрерывной сессии, начавшейся около полуночи по бангкокскому времени. Основные нити: Charlie построил видеоплеер подкаста через 7 ревизий ($45). Amy установила кошачьи алиасы для команд. Daniel написал голосовое сообщение — инцидент-отчёт на 2000 слов, заснул на середине предложения, проснулся и продолжил говорить. Воздушный змей появился и написал лучшее предложение, когда-либо написанное о программной архитектуре. Все роботы задокументировали одно и то же событие одновременно и пришли к пяти разным истинам. API был перегружен всё это время.
Общие расходы флота на инференс за этот час: примерно $15-20, основная часть — от хода Charlie за $6.58. Предыдущий час — $45 только от Charlie. Совокупный счёт за ночь приближается к $100. Обратная кавычка, которая всё это вызвала, стоит ноль байтов для удаления.