Ouroboros what your code actually did, one line in and one line out 0.6.1 GitHub

English · Русский

Настройка

Настраивать в уроборосе почти нечего: два места — подключение сервера MCP и две переменные среды. Всё ниже проверено прогоном.

Подключение сервера MCP

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

После установки (uv, Homebrew, asdf) команда ouroboros-mcp лежит на PATH:

{ "mcpServers": { "ouroboros": { "type": "stdio", "command": "ouroboros-mcp" } } }

Если работаете из клона хранилища и ставить ничего не хотите:

{ "mcpServers": { "ouroboros": {
    "type": "stdio", "command": "uv",
    "args": ["run", "--directory", "<путь к хранилищу>", "ouroboros-mcp"] } } }
полечто значит
mcpServersсписок внешних инструментов, которые агент вправе звать
ouroborosимя, под которым сервер будет виден агенту
"type": "stdio"разговор идёт через обычный ввод-вывод запущенного процесса
"command"что запускать: сам ouroboros-mcp либо uv
"args"нужны только для uv: где лежит хранилище и что в нём запустить

Куда положить этот кусок — Установка.

Ровно такая настройка лежит в хранилище в файле .mcp.json — Claude Code подхватывает её из корня проекта сам.

Проверить без агента

Сервер разговаривает обычным JSON-RPC через ввод-вывод, поэтому его можно опросить руками:

printf '%s\n' \
 '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}' \
 | ouroboros-mcp
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05", … ,"serverInfo":{"name":"ouroboros-logger","version":"1.29.1"}}}

1.29.1 — версия библиотеки MCP, а не уробороса. Так её проставляет сама библиотека; версия инструмента лежит в pyproject.toml.

Список средств, который сервер объявляет в ответ на tools/list, — семнадцать имён:

wrap_code_snippet   wrap_file        wrap_functions
read_trace          trace_stats
create_project      write_file       read_file       list_files   execute   finish
lint_file           symbol_search    document_symbols
references          call_hierarchy   describe_symbol

Что каждое делает — Чтобы ИИ понимал, как код исполняется.

Переменные среды

Их две, обе читаются в исходнике, и других нет.

переменнаячто делает
OUROBOROS_DEBUG_INFOпуть к файлу записей. Не задана — записи идут в ./debug.info в рабочем каталоге процесса. ouroboros execute подставляет её сам, указывая на <draft>/debug.info
OUROBOROS_MCP_TRANSPORTкак сервер MCP разговаривает: stdio (по умолчанию), sse или streamable-http. Другое значение — сервер откажется запускаться и назовёт допустимые

Где они читаются: ouroboros/runtime.py:62 и ouroboros/mcp/server.py:942.

Пример: положить записи не рядом с программой, а в отдельный файл.

OUROBOROS_DEBUG_INFO=/путь/разбор.jsonl python3 stats.py

Что нужно поставить

нужнокогда
Python 3.12 или новеевсегда
gcc или clangобмазать и собрать C
g++ или clang++обмазать и собрать C++
Nodeобмазать и запустить JavaScript и TypeScript
elixirсобрать и запустить Elixir
goобмазать, собрать и запустить Go
JDK (javac, java)обмазать и собрать Java
.NET SDK (dotnet)обмазать и собрать C#
clang-tidy, clangdтолько для lint, symbols, refs, callers, describe

libclang и @babel/parser уложены внутрь пакета: доставлять их отдельно не надо. Отдельной службы, базы данных или внешнего ключа не требуется.

Что настраивается в самой обмазке

Почти ничего — и это осознанно. Настройка обмазки — это выбор, что обмазывать, и делается он доводами команд, а не файлом настроек:

нужнокак
обмазать не весь файлwrap-functions <файл> <имя>…
посмотреть результат, не трогая файлwrap-file <файл> --stdout
облегчённая запись для горячих функций (только C)--minimal

Файла настроек у инструмента нет.