Eleven это приложение для реверс-инжиниринга, построенное вокруг агентов. Загрузите приложение, бинарный файл, шейдер или модель и спросите, что они делают. Любой агент, говорящий на [Agent Client Protocol](https://agentclientprotocol.com), может читать код, переходить по ссылкам, переименовывать функции, оставлять заметки и предлагать патчи, а вы наблюдаете за этим и подтверждаете изменения в том же окне.
Анализ выполняется в [Ghidra](https://ghidra-sre.org) через [REA](https://github.com/morluto/rea). Интерфейс это React, отрисовываемый нативно на GPUI с помощью [GPUIX](https://www.npmjs.com/package/@gpuix/react).
## Возможности
- **Свой агент.** Aster, Claude, Codex, Gemini, Cursor, Copilot, OpenCode и любой другой ACP-агент. Запускайте несколько на одном проекте, каждый в своём чате.
- **Агенты управляют окном.** Eleven предоставляет собственные инструменты MCP, так что агент может открыть функцию, переключить представление, переименовать, добавить заметку и предложить патч.
- **Контроль остаётся за вами.** Каждое изменение, ваше или агента, записывается вместе с автором и может быть отменено. Байтовые патчи от агентов приходят как предложения, которые вы принимаете или отклоняете.
- **Mach-O, ELF и PE.** Функции, псевдокод, ассемблер, граф потока управления, перекрёстные ссылки, строки, сегменты и hex.
- **Проекты.** Проект это одно приложение или один бинарный файл. Его чаты, переименования, закладки, заметки и патчи сохраняются при повторном открытии.
- **Патчинг.** Редактируйте байты по адресу и записывайте пропатченную копию. Оригинал никогда не изменяется.
- **Сравнение сборок.** Сравнивайте две сборки по функциям и смотрите, что изменилось в псевдокоде.
- **Отладка.** Запускайте программу под LLDB, ставьте точку останова на функции, которую изучаете, выполняйте шаги и читайте локальные переменные.
- **Шейдеры, модели и профили GPU.** Шейдеры Metal и файлы ML-моделей открываются в рабочей среде и связаны с кодом, который их загружает. Профилируйте с помощью Instruments.
- **Плейбуки.** Встроенные навыки, такие как первый осмотр, именование функций, трассировка функции и карта сети, работают с любым агентом.
- **Экспорт.** Псевдокод, ассемблер и списки классов Objective-C.
## Установка
Eleven работает на macOS 14 или новее на Apple Silicon.
```sh
curl -fsSL https://raw.githubusercontent.com/Zfinix/eleven/main/install.sh | sh
```
Эта команда устанавливает `Eleven.app` в `/Applications`. Сборки пока не нотаризованы, поэтому установщик сам снимает карантин загрузки.
Eleven также требует:
- **Ghidra 12.x.** Скачайте с [ghidra-sre.org](https://ghidra-sre.org) и распакуйте в `~/.local/share` или `~/Applications`, либо задайте `GHIDRA_INSTALL_DIR`.
- **JDK 21 или новее.** Подойдёт `brew install openjdk@21`. Eleven находит его сам.
- **Агент.** Выберите одного при первом запуске. Eleven сам установит адаптеры ACP, когда они понадобятся.
## Сборка из исходников
Понадобятся [Bun](https://bun.sh), Node 20 или новее, Ghidra и JDK как выше, а также копия REA 6.x рядом с этим репозиторием (`../rea`) или `ELEVEN_REA`, указывающая на неё.
```sh
git clone https://github.com/Zfinix/eleven
git clone https://github.com/Zfinix/rea
cd eleven/app
bun install
bun run dev
```
| Команда | Что делает |
| --- | --- |
| `bun run dev [file]` | Запускает приложение с горячей перезагрузкой, при необходимости открывая файл |
| `bunx tsc --noEmit --noUnusedLocals` | Проверяет типы в приложении, тестах и скриптах |
| `./script/test` | Запускает набор тестов по одному файлу за раз |
| `./script/bundle-macos` | Собирает `build/Eleven.app` |
| `./script/package` | Собирает, подписывает и упаковывает релиз в zip |
## Переменные окружения
Все они необязательны. Eleven сам находит обычные места установки.
| Переменная | Назначение |
| --- | --- |
| `GHIDRA_INSTALL_DIR` | Установка Ghidra, которую нужно использовать |
| `JAVA_HOME` | JDK для запуска Ghidra |
| `ELEVEN_REA` | REA вместо встроенной версии |
| `ELEVEN_LLDB_DAP` | `lldb-dap` для отладчика |
| `ELEVEN_SUPPORT` | Где Eleven хранит проекты и настройки |
| `ELEVEN_SIGN_IDENTITY` | Идентификатор подписи кода для `./script/package` |
## Документация
- [Инструменты MCP](docs/mcp-tools.md): все инструменты, доступные агентам в Eleven, что каждый принимает и возвращает, разрешения и приватность.
- [Навыки](docs/skills.md): встроенные сценарии и как написать свои.
## Структура репозитория
- `app/` это приложение: React и TypeScript на GPUIX.
- `crates/` это более ранний прототип на Rust, оставленный для справки. Приложение его не использует.
- `launch/` это видео о запуске, сделанное в Remotion.
- `install.sh` это установщик.
О том, как устроен код и каким правилам он следует, читайте в [AGENTS.md](AGENTS.md).
## Лицензия
Eleven распространяется по [Apache License 2.0](LICENSE). Сторонний код в составе пакета перечислен в [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). Логотипы агентов принадлежат их владельцам и приведены только для указания на соответствующих агентов.