Записывает, как код на самом деле исполнялся: вызовы, доводы, результаты, исключения, длительности
Показывает, как код исполнялся на самом деле: какие функции звались, с какими доводами, что вернули и что бросили.
Инструмент дописывает в исходник запись о вызовах. Программа запускается как обычно, и каждый вызов оставляет две строки JSON — на входе и на выходе.
Языки: Python, JavaScript/TypeScript, C, C++, Elixir, Go, Java, C#. Схема записи у всех одна.
Поставить:
uv tool install git+https://github.com/digitable-lol/ouroboros
Дописать запись о вызовах:
ouroboros wrap-file stats.py
{"ok": true, "path": "stats.py", "language": "python", "functions_wrapped": 3, "runtime_header": "ouroboros_runtime.py"}
Запустить как обычно:
python3 stats.py
Прочитать:
ouroboros trace debug.info --outcome raised
{
"index": 5,
"started": "2026-08-28T23:39:45.166",
"call_id": "ef71eb89-6727-4cdf-a3b7-2ea54cff81e3",
"name": "average",
"args": "[]",
"kwargs": "",
"outcome_kind": "raised",
"outcome": "ZeroDivisionError: division by zero",
"duration": 3e-06,
"cpu": null,
"thread": "2864987.129949101195776"
}
args: "[]" — вот чего нет в отслеживании стека. Стек говорит, где
сломалось; запись говорит, с чем позвали.
Полностью, с исходником и выводом каждого шага, — в README хранилища.
debug.infoТолько дописываемый файл, по одному объекту JSON в строке. Две строки на вызов,
связанные общим id:
{"p":"in","t":"2026-08-28T23:39:45.166","id":"e668ee33-…","ci":-1,"th":"2864987.129949101195776","fn":"average","a":"[12, 30, 18]","k":""}
{"p":"out","id":"e668ee33-…","fn":"average","r":"20.0","d":2e-06}
Отсюда самый дешёвый ответ на вопрос «где висит»: строка входа без парной строки выхода — вызов вошёл и не вернулся. Полный разбор ключей.
| страница | о чём |
|---|---|
| Установка | uv, Homebrew, asdf, из исходников, подключение сервера MCP |
| Начало работы | все команды, порядок работы, на чём спотыкаются |
| Прологировать чужой код | по шагам: что делать, что видишь, как читать |
| Чтобы ИИ понимал, как код исполняется | сервер MCP и его 17 инструментов |
| Обычная разработка | молчащая программа, регрессия, чего не стоит делать |
| Языки | восемь языков, чем они отличаются в записи |
| Замеры | что каждый язык записывает, чего это стоит, как повторить |
| Границы | чего инструмент не делает — самая важная страница |
| В чём смысл | зачем нужен и какую работу снимает |
| Как это выглядит | записи, сводка, настройка — целиком |
Читайте Границы.
Записи фиксируют, как код себя вёл, а не как он должен себя вести.
Программа с ошибкой даёт записи, в которых ошибка выглядит нормой. Инструмент не скажет, что код неправильный, — он скажет, что код делает.
В хранилище лежит рабочий инструмент, а не только его описание: пакет
ouroboros-logger 0.5.0, командная строка на 17 команд, сервер MCP на 17
средств, 999 проверок. Всё, что показано на
страницах, — вывод настоящих прогонов на обычной машине с Linux; выводы всех
восьми языков сняты по отдельности, и их можно снять заново одной командой —
Замеры.
Установка проверена целиком, а не «по виду правильно»: uv tool install,
brew install digitable-lol/tap/ouroboros вместе с brew test,
asdf plugin add вместе с asdf install — и после каждой поставленный
инструмент обмазывал файл, запускал его и читал записи.
Что известно сломанным: обмазка — правка исходника, а не наблюдение со стороны, и она умеет менять поведение программы, а не только время её работы. Проверенные случаи, то, что уже починено, и то, что остаётся как есть осознанно, собраны в Границах. Числа к ним — в Замерах.
Хранилище целиком: digitable-lol/ouroboros.
BSD 2-Clause, текст. Copyright (c) 2026, Digitable (Marat Zimnurov).