<p align="center">
  <a href="https://github.com/Enicast/Abulafia">
    <img src="assets/hero.png" alt="Abulafia CLI" width="800" />
  </a>
</p>
<p align="center">AI-агент для исследований с открытым исходным кодом.</p>
<p align="center">
  <a href="INSTALL_AND_RUN.md"><img alt="Документация" src="https://img.shields.io/badge/docs-install_and_run-0d9668?style=flat-square" /></a>
  <a href="https://github.com/Enicast/Abulafia/blob/main/LICENSE"><img alt="Лицензия" src="https://img.shields.io/github/license/Enicast/Abulafia?style=flat-square" /></a>
</p>

---

## Документация

- [Индекс документации](DOCUMENTATION.md) — с какого руководства начать.
- [Руководство пользователя](USER_MANUAL.md) — установка, 302AI, команды, workflows и story-сценарии.
- [Справочник навыков и агентов](SKILLS_REFERENCE.md) — назначение каждого skill и agent.
- [Архитектура](ARCHITECTURE.md) — устройство CLI, Pi runtime, моделей, Journal-Yuga и артефактов.
- [Руководство разработчика](DEVELOPER_GUIDE.md) — добавление skills, workflows, agents, stories и extensions.
- [Установка и запуск](INSTALL_AND_RUN.md) — Windows installer и установка из исходников.

### Установка в два клика на Windows

Полная актуальная инструкция находится в [INSTALL_AND_RUN.md](INSTALL_AND_RUN.md).

1. Скачайте `Abulafia-Setup-<версия>-x64.exe` со страницы
   [Releases](https://github.com/Enicast/Abulafia/releases).
2. Откройте файл двойным щелчком и нажмите `Установить`.
3. Запустите **Abulafia** с рабочего стола или из меню «Пуск».

В установщик уже входят Abulafia, Node.js и все production-зависимости. Git,
Node.js, npm и Bun пользователю устанавливать не нужно. Установщик также
создаёт ярлыки и добавляет команду `abulafia` в пользовательский `PATH`.

```powershell
abulafia --version
abulafia doctor
```

Теперь интерфейс запускается из каталога любого исследовательского проекта:

```powershell
cd C:\work\my-research
abulafia
```

Первичная настройка 302.AI:

```powershell
abulafia model login 302ai
abulafia model set 302ai/gpt-5.4
```

API key сохраняется в пользовательском состоянии Abulafia, поэтому передавать
его при каждом запуске не нужно. Доступные модели:

```powershell
abulafia model list
abulafia model set 302ai/gpt-5.4
abulafia model set 302ai/gpt-5.4-nano
```

Установка из исходников нужна только разработчикам:

```powershell
git clone https://github.com/Enicast/Abulafia.git
cd .\Abulafia
npm install
npm run cli:install
```

### Skills, workflows и story-сценарии

В Abulafia `SKILL.md` обычно не запускается напрямую. Навык либо подключает агенту инструкцию, либо указывает на workflow из `prompts/*.md`. Workflow можно вызвать двумя способами. В интерактивной консоли ведущий `/` необязателен для известных workflow: `deepresearch ...` и `/deepresearch ...` эквивалентны.

Интерактивно:

```powershell
npm run dev
```

Затем внутри REPL:

```text
/deepresearch <topic>
/lit <topic>
/review <artifact>
/draft <task>
/compare <source-a> <source-b>
/story A01 <input>
/story S01 <input> <task>
/evaluate-stories all ./outputs/my-story-run
```

Сразу из консоли:

```powershell
abulafia deepresearch "AI agents in legal education"
abulafia lit "AI governance in universities"
abulafia review .\papers\article.md
abulafia draft "Напиши черновик статьи про AI в юридическом образовании"
abulafia compare .\docs\abulafia.md .\docs\claude-code.md
abulafia story A01 .\articles\article.md
abulafia story S01 .\article.md "Нужно понять, в какие журналы это можно подать и какие доработки нужны"
abulafia evaluate-stories all .\outputs\my-story-run
```

Основное соответствие skills и workflow-команд:

| Skill | Команда |
| --- | --- |
| `skills/deep-research` | `/deepresearch` |
| `skills/literature-review` | `/lit` |
| `skills/peer-review` | `/review` |
| `skills/paper-writing` | `/draft` |
| `skills/source-comparison` | `/compare` |
| `skills/paper-code-audit` | `/audit` |
| `skills/replication` | `/replicate` |
| `skills/autoresearch` | `/autoresearch` |
| `skills/watch` | `/watch` |
| `skills/jobs` | `/jobs` |
| `skills/session-log` | `/log` |
| `skills/story-*` | `/story` |
| `skills/story-evaluation` | `/evaluate-stories` |

### Запуск A01-A10 и S01-S11

Сценарии `A01-A10` и `S01-S11` теперь оформлены как отдельные story-агенты. У каждого story ID есть собственный agent definition в `.abulafia/agents/` и paired skill в `skills/`.

Интерактивная команда `/story` и прямой CLI-вызов `abulafia story` запускают агентный сценарий через модель и доступные инструменты. Локальный детерминированный runner без обращения к модели доступен только под явным именем `story-local`; он нужен для smoke-теста структуры, а не для анализа. `evaluate-stories` валидирует уже созданный артефакт.

Пример: проанализировать статью через `A01 Briefer`:

```powershell
abulafia story A01 .\articles\article.md
```

Пример: быстро проверить S01 локальным runner-ом без расходов 302AI:

```powershell
abulafia story-local S01 .\article.md "Нужно проверить только структуру выходных файлов"
```

Готовая демонстрация Journal-Yuga из консоли лежит в:

```text
demo/journal-yuga-console/
```

Посмотреть команды без запуска модели:

```powershell
.\demo\journal-yuga-console\run-demo.ps1
```

Запустить демонстрацию S01:

```powershell
.\demo\journal-yuga-console\run-demo.ps1 -Run
```

Запустить цепочку исследовательских MegaAgent stories:

```powershell
abulafia story chain A01-A10 .\articles\article.md
```

Запустить цепочку Journal-Yuga stories:

```powershell
abulafia story chain S01-S11 .\articles\article.md
```

Запустить несколько конкретных stories:

```powershell
abulafia story A01,A02,A03 .\articles\article.md
```

Проверить созданный результат по методике:

```powershell
abulafia evaluate-stories A01 .\outputs\<slug>\A01-briefer-brief.md
```

Проверить все 21 story-артефакта из мокового запуска:

```powershell
abulafia evaluate-stories all .\outputs\my-story-run
```

Внутренняя схема запуска:

```text
/story A01 input
-> prompts/story.md
-> direct story contract: .abulafia/agents/story-a01-briefer.md
-> skill contract: skills/story-a01-briefer/SKILL.md
-> outputs/<slug>/A01-briefer-brief.md
-> outputs/<slug>/story-run-report.md
```

Для Journal-Yuga stories (`S01-S11`) добавляется общий слой `journal-yuga-common`:

```text
/story S01 input
-> prompts/story.md
-> direct story contract: .abulafia/agents/story-s01-journal-pool.md
-> skill contracts: skills/journal-yuga-common/SKILL.md + skills/story-s01-journal-pool/SKILL.md
-> outputs/journal-yuga-runs/<slug>/state.yaml
-> outputs/journal-yuga-runs/<slug>/S01-journal-pool.md
-> outputs/journal-yuga-runs/<slug>/story-run-report.md
```

Important runtime detail: `story-*` names are Abulafia story specifications, not guaranteed `subagent` runtime modes. If Pi's `subagent` tool does not explicitly list a `story-*` name, `/story` executes the story contract directly and may use built-in subagents only for narrow supporting work.

### Ход работы вместо `working`

Abulafia подключает расширение `live-status`, которое заменяет стандартное сообщение ожидания на продуктовый статус вида `Ход работы: ...`. В interactive UI он показывает:

- текущий workflow или story;
- активный инструмент и целевой файл/запрос;
- модель;
- последний результат инструмента;
- содержимое live-status файла, если workflow его ведет.

Для длинных workflow агент обновляет:

```text
outputs/.status/abulafia-live-status.md
```

Туда записывается публичный операционный статус: этап, задействованные contracts/skills, источники и досье, рабочая гипотеза, последние предложения и следующий шаг. Это не raw chain-of-thought модели; скрытые рассуждения не выводятся и не подменяются выдуманным текстом.

Journal-Yuga агент сначала собирает критерии приемки. Если данных недостаточно, он пишет состояние запуска и задает только блокирующие вопросы. Чтобы остановить уточнения и заставить агента работать с тем, что есть, используйте ключевую фразу:

```text
хватит вопросов
```

Каждый Journal-Yuga run хранит состояние в:

```text
outputs/journal-yuga-runs/<slug>/
  state.yaml
  intake.md
  acceptance-criteria.md
  decision-log.md
  journal-search-log.md
```

Локальная память по журналам находится здесь:

```text
knowledge/journals/
  index.yaml
  _template.md
  *.md
```

Порядок поиска для Journal-Yuga:

1. основная база `knowledge/journals/journal_yuga_venue_database.md`;
2. досье журналов `knowledge/journals/*.md`;
3. курированный список `knowledge/journals/index.yaml`;
4. web search только если локальных данных недостаточно.

Если агент извлек полезное наблюдение по журналу в ходе задачи, он автоматически дописывает его в соответствующее досье, не удаляя старые наблюдения.

### Только навыки

Если вам нужны только исследовательские навыки без полного терминального приложения:

**macOS / Linux:**

```bash
curl -fsSL https://raw.githubusercontent.com/Enicast/Abulafia/main/scripts/install/install-skills.sh | bash
```

**Windows (PowerShell):**

```powershell
irm https://raw.githubusercontent.com/Enicast/Abulafia/main/scripts/install/install-skills.ps1 | iex
```

Это установит библиотеку навыков в `~/.codex/skills/abulafia`.

Если нужна установка локально в репозиторий:

**macOS / Linux:**

```bash
curl -fsSL https://raw.githubusercontent.com/Enicast/Abulafia/main/scripts/install/install-skills.sh | bash -s -- --repo
```

**Windows (PowerShell):**

```powershell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Enicast/Abulafia/main/scripts/install/install-skills.ps1))) -Scope Repo
```

Это установит навыки в `.agents/skills/abulafia` внутри текущего репозитория.

Эти установщики скачивают встроенные деревья `skills/` и `prompts/`, а также repo-level guidance файлы, на которые ссылаются эти навыки. Они не устанавливают терминал Abulafia, встроенный runtime Node, хранилище авторизации или Pi-пакеты.

---

### Что вы вводите → что происходит

```
$ abulafia "what do we know about scaling laws"
→ Ищет по статьям и вебу, готовит исследовательскую справку с цитатами

$ abulafia deepresearch "mechanistic interpretability"
→ Многоагентное исследование с параллельными исследователями, синтезом и проверкой

$ abulafia lit "RLHF alternatives"
→ Литературный обзор с консенсусом, разногласиями и открытыми вопросами

$ abulafia audit 2401.12345
→ Сравнивает утверждения статьи с публичным кодом

$ abulafia replicate "chain-of-thought improves math"
→ Воспроизводит эксперименты на локальных или облачных GPU
```

---

### Рабочие сценарии

Можно формулировать запросы естественным языком или использовать slash-команды как сокращения.

| Команда | Что делает |
| --- | --- |
| `/deepresearch <topic>` | Многоагентное исследование с упором на источники |
| `/lit <topic>` | Литературный обзор по поиску статей и первичным источникам |
| `/review <artifact>` | Имитация peer review с уровнем серьёзности и планом правок |
| `/audit <item>` | Аудит расхождений между статьёй и кодовой базой |
| `/replicate <paper>` | Воспроизведение экспериментов на локальных или облачных GPU |
| `/compare <topic>` | Матрица сравнения источников |
| `/draft <topic>` | Черновик в академическом стиле на основе результатов исследования |
| `/autoresearch <idea>` | Автономный цикл экспериментов |
| `/watch <topic>` | Регулярный мониторинг темы |
| `/outputs` | Просмотр всех исследовательских артефактов |

---

### Агенты

Четыре встроенных исследовательских агента, которые запускаются автоматически.

- **Researcher** — собирает доказательства из статей, веба, репозиториев и документации
- **Reviewer** — проводит имитацию peer review с градацией серьёзности замечаний
- **Writer** — готовит структурированные черновики на основе исследовательских заметок
- **Verifier** — проверяет встроенные цитаты, URL источников и убирает битые ссылки

---

### Навыки и инструменты

- **[AlphaXiv](https://www.alphaxiv.org/)** — поиск статей, Q&A, чтение кода и аннотации (через CLI `alpha`)
- **Docker** — изолированное выполнение в контейнерах для безопасных экспериментов на вашей машине
- **Web search** — Perplexity, Exa или Gemini при наличии доступа; режим `auto` использует цепочку Brave, DuckDuckGo и Bing как безключевой fallback
- **Session search** — индексированный поиск по предыдущим исследовательским сессиям
- **Preview** — просмотр в браузере и экспорт артефактов в PDF
- **Modal** — serverless GPU-вычисления для всплесковых тренировок и инференса
- **RunPod** — постоянные GPU-поды с SSH-доступом для долгих экспериментов

---

### Как это работает

Система построена на базе [Pi](https://github.com/badlogic/pi-mono) для agent runtime, [alphaXiv](https://www.alphaxiv.org/) для поиска и анализа статей, а также CLI-инструментов для вычислений и исполнения. Возможности поставляются в виде [Pi skills](https://github.com/badlogic/pi-skills) — Markdown-инструкций, которые синхронизируются в `~/.abulafia/agent/skills/` при запуске. Каждый результат привязан к источникам — утверждения сопровождаются прямыми ссылками на статьи, документацию или репозитории.

---

### История звёзд

<a href="https://www.star-history.com/?repos=getcompanion-ai%2Fabulafia&type=date&legend=top-left">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=getcompanion-ai/abulafia&type=date&theme=dark&legend=top-left" />
    <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=getcompanion-ai/abulafia&type=date&legend=top-left" />
    <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=getcompanion-ai/abulafia&type=date&legend=top-left" />
  </picture>
</a>

---

### Участие в разработке

Полное руководство для контрибьюторов смотрите в [CONTRIBUTING.md](CONTRIBUTING.md).

```bash
git clone https://github.com/getcompanion-ai/abulafia.git
cd abulafia
nvm use || nvm install
npm install
npm test
npm run typecheck
npm run build
```

[Документация](DOCUMENTATION.md) · [Примечания к релизам](RELEASES.md) · [Лицензия MIT](LICENSE)
