berimor 0.18.2 → 0.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -62
- package/checksums.json +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,40 +1,81 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<img src="docs/assets/logo.png" alt="Berimor" width="640">
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Модель думает. Код решает.**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**[Русский](README.md)** · [English](README.en.md) · [Deutsch](README.de.md) · [Français](README.fr.md) · [Español](README.es.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
</div>
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Универсальный агент для LLM с детерминированным ядром: маршрутизацию задач, ветвление процесса, отбор контекста и допуск к выполнению решает код — модель исполняет узкие, проверяемые шаги. Работает с локальными и облачными моделями, слабыми и сильными.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
[](https://github.com/devpilgrin/berimor/releases/latest)
|
|
14
|
+
[](https://www.npmjs.com/package/berimor)
|
|
15
|
+
[](https://github.com/devpilgrin/berimor/actions/workflows/ci.yml)
|
|
16
|
+
[](LICENSE)
|
|
17
|
+
[](#инфраструктура-проекта)
|
|
14
18
|
|
|
15
|
-
-
|
|
19
|
+

|
|
20
|
+

|
|
21
|
+

|
|
22
|
+

|
|
23
|
+

|
|
24
|
+

|
|
25
|
+

|
|
26
|
+

|
|
27
|
+

|
|
16
28
|
|
|
17
|
-
|
|
29
|
+
---
|
|
18
30
|
|
|
19
|
-
|
|
31
|
+
## Зачем это нужно
|
|
20
32
|
|
|
21
|
-
|
|
33
|
+
Большинство «ИИ-агентов» устроены одинаково: модели дают набор инструментов и просят её саму решить, что делать. Для демо — удобно. В работе — ненадёжно: модель забывает шаги, выдумывает факты, сворачивает не туда, а опасная команда уходит в терминал по нажатию «y» на автомате.
|
|
22
34
|
|
|
23
|
-
|
|
35
|
+
Berimor построен на противоположном допущении: **модели нельзя доверять оркестровку — ей можно доверить исполнение.** Задача раскладывается на шаги заранее или руководится детерминированным циклом; всё, что выдаёт модель, проходит строгую проверку прежде, чем на это можно положиться; всё, что может навредить, проходит через гейт, который не отменяется нажатием Enter.
|
|
24
36
|
|
|
25
|
-
|
|
37
|
+
| | Типичный агентный CLI | Berimor |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| Кто решает, что делать дальше | Модель (надежда на здравомыслие) | Код (граф процесса, детерминированный цикл) |
|
|
40
|
+
| Сбой посреди задачи | «Перезапустите и помолитесь» | Журнал событий: продолжение ровно с места обрыва |
|
|
41
|
+
| Опасное действие | Подтверждение, которое усталость превращает в YOLO | Deny-статика: запрещённое не спрашивается вообще |
|
|
42
|
+
| Слабая/локальная модель | «Купите модель подороже» | Медиация: ретрай с объяснением ошибки → эскалация человеку |
|
|
43
|
+
| Расширения | Плагин получает всё | Субагент/плагин получает подмножество прав родителя — кодом |
|
|
44
|
+
| Воспроизводимость | Нет | Полная: журнал → replay → состояние на любой момент |
|
|
45
|
+
|
|
46
|
+
## Чем отличается
|
|
47
|
+
|
|
48
|
+
**1. Решения — детерминированный код, не текст в промпте.**
|
|
49
|
+
Ветвление, циклы, таймауты, параллельные ветви с join-барьером, миграция версий работающего процесса — всё это Process Engine, а не надежда на то, что модель помнит инструкции. Слабым моделям нельзя доверять отбор контекста и маршрутизацию — значит, этим занимается код.
|
|
50
|
+
|
|
51
|
+
**2. Безопасность — структура, а не дисциплина пользователя.**
|
|
52
|
+
Deny-таблица деструктивных операций не переизбирается подтверждением. Файловый jail не выходит за рабочую папку. Сетевой гейт не пускает в закрытые диапазоны (включая NAT64/6to4/Teredo-маскировки и обходы через редиректы и userinfo в URL). Секреты маскируются на всех точках утечки — но гейт допуска видит настоящие значения: маскировка не ослепляет проверку.
|
|
53
|
+
|
|
54
|
+
**3. Свободный цикл — под надзором.**
|
|
55
|
+
Режим «рассуждение → действие → наблюдение» для задач, которые не разложить по шагам заранее. Каждое действие внутри проходит тот же capability-гейт, что и шаг процесса — свобода рассуждения не значит свобода от правил. Опционально: самокритика и стратегия «предложи — выполни — проверь».
|
|
56
|
+
|
|
57
|
+
**4. Код модели исполняется в настоящей песочнице.**
|
|
58
|
+
Для «смержи 12 таблиц и найди аномалии» модель пишет JavaScript-программу. Она проходит статический анализ реальным парсером (белый список идентификаторов — `eval`/`Function`/`Math.random` отклоняются до исполнения), а исполняется QuickJS внутри WebAssembly (Wasmtime) с топливом, лимитом памяти и потолком вызовов инструментов. WASI — с пустым набором прав: ни файлов, ни сети даже потенциально. Единственная host-функция идёт через тот же гейт.
|
|
59
|
+
|
|
60
|
+
**5. Память — как инженерная система, а не как буфер.**
|
|
61
|
+
Рабочая память сворачивается при переполнении бюджета. Эпизодическая — полнотекстовый поиск (FTS5). Семантическая — дедупликация фактов, конфликты не перезаписываются молча, сбой хранилища неотличим от «фактов нет» и не порождает ложных дублей. Граф сущностей — связи между фактами, персистентный. Навыки — переиспользуемые рецепты решения похожих задач, читаемые файлы.
|
|
62
|
+
|
|
63
|
+
**6. Экосистема расширений с потолком прав.**
|
|
64
|
+
- **Скилы** (SKILL.md) — экспертные роли для чата: триггер — кодом (не моделью), потолок инструментов — фильтром диспетча.
|
|
65
|
+
- **Субагенты** (agent.yaml) — вложенный агентный цикл с собственным бюджетом и журналом; права ребёнка = пересечение с правами родителя, расшириться нельзя. Вложенное порождение — только с явным `allow_spawn: true`, глубина ограничена кодом.
|
|
66
|
+
- **Плагины** — изолированные процессы с ACL-манифестом и keyless-подписью sigstore: установка из доверенного списка с TOFU-подтверждением, как SSH.
|
|
26
67
|
|
|
27
|
-
|
|
68
|
+
Всё это устанавливается одной командой — из каталога или **любого git-репозитория**: `berimor skill install code-review-ru --from https://github.com/...`.
|
|
28
69
|
|
|
29
|
-
|
|
70
|
+
## Инфраструктура проекта
|
|
30
71
|
|
|
31
|
-
-
|
|
72
|
+
**Rust-workspace по крейту на компонент** — Process Engine, Mediation, Executors, Memory, Capability, Model Pool, Actors, Tool Runtime, Context Engine, Eval, Storage. Гостевой WASM-модуль (`codeact-guest/`) живёт отдельным crate и закоммичен как готовый артефакт — обычная сборка не замедляется.
|
|
32
73
|
|
|
33
|
-
|
|
74
|
+
**Дисциплина проверок.** Каждый релиз: `cargo fmt` + `clippy -D warnings` + `cargo test --workspace` (719 тестов: юнит, интеграционные, e2e через настоящий бинарник, золотые фикстуры процессов и вредоносных вводов). Критические компоненты проходят обязательное независимое ревью. Полный самостоятельный аудит (`docs/audit-2026-07-31.md`) — **все находки закрыты или осознанно задокументированы**.
|
|
34
75
|
|
|
35
|
-
|
|
76
|
+
**Supply chain как у взрослых.** Кросс-платформенные релизы (Linux x64/arm64, macOS arm64, Windows x64) с keyless-подписью cosign/sigstore — приватного ключа не существует нигде. Проверка: `berimor verify <архив>`. npm-публикация с provenance, SBOM (CycloneDX) в пайплайне, самообновление (`berimor self-update`) реализовано на примитивах Process Engine — тот же журнал и восстановление после сбоя, что у обычных процессов, а не ad hoc скрипт.
|
|
36
77
|
|
|
37
|
-
|
|
78
|
+
**Архитектура задокументирована до кода.** `docs/arch/` — самодостаточная спецификация, реализуемая на любом стеке; `docs/ADR/` — журнал решений с отклонёнными альтернативами; `docs/ROADMAP.md` — очередь задач с классом модели-исполнителя на каждую.
|
|
38
79
|
|
|
39
80
|
## Установка
|
|
40
81
|
|
|
@@ -49,12 +90,12 @@ berimor --version
|
|
|
49
90
|
|
|
50
91
|
### Способ 2: готовый бинарник с GitHub
|
|
51
92
|
|
|
52
|
-
Актуальные версии — на странице [релизов](https://github.com/devpilgrin/berimor/releases/latest). Ниже — команды для скачивания конкретной версии (замените `v0.
|
|
93
|
+
Актуальные версии — на странице [релизов](https://github.com/devpilgrin/berimor/releases/latest). Ниже — команды для скачивания конкретной версии (замените `v0.19.0` на нужную, если вышла более новая).
|
|
53
94
|
|
|
54
95
|
**Linux** (x64 или arm64):
|
|
55
96
|
|
|
56
97
|
```sh
|
|
57
|
-
VERSION=v0.
|
|
98
|
+
VERSION=v0.19.0
|
|
58
99
|
ARCH=x64 # или arm64
|
|
59
100
|
curl -LO "https://github.com/devpilgrin/berimor/releases/download/${VERSION}/berimor-${VERSION}-linux-${ARCH}.tar.gz"
|
|
60
101
|
tar -xzf "berimor-${VERSION}-linux-${ARCH}.tar.gz"
|
|
@@ -63,10 +104,10 @@ sudo mv berimor /usr/local/bin/
|
|
|
63
104
|
berimor --version
|
|
64
105
|
```
|
|
65
106
|
|
|
66
|
-
**macOS** (только Apple Silicon — M1/M2/M3 и новее; сборки под Intel пока не публикуются, для Intel-Mac — способ
|
|
107
|
+
**macOS** (только Apple Silicon — M1/M2/M3 и новее; сборки под Intel пока не публикуются, для Intel-Mac — способ 3 ниже):
|
|
67
108
|
|
|
68
109
|
```sh
|
|
69
|
-
VERSION=v0.
|
|
110
|
+
VERSION=v0.19.0
|
|
70
111
|
curl -LO "https://github.com/devpilgrin/berimor/releases/download/${VERSION}/berimor-${VERSION}-darwin-arm64.tar.gz"
|
|
71
112
|
tar -xzf "berimor-${VERSION}-darwin-arm64.tar.gz"
|
|
72
113
|
xattr -d com.apple.quarantine berimor # бинарник пока не подписан Apple — иначе Gatekeeper откажется его запускать
|
|
@@ -78,7 +119,7 @@ berimor --version
|
|
|
78
119
|
**Windows** (x64), PowerShell:
|
|
79
120
|
|
|
80
121
|
```powershell
|
|
81
|
-
$Version = "v0.
|
|
122
|
+
$Version = "v0.19.0"
|
|
82
123
|
Invoke-WebRequest -Uri "https://github.com/devpilgrin/berimor/releases/download/$Version/berimor-$Version-win32-x64.zip" -OutFile berimor.zip
|
|
83
124
|
Expand-Archive -Path berimor.zip -DestinationPath .
|
|
84
125
|
.\berimor.exe --version
|
|
@@ -86,7 +127,7 @@ Expand-Archive -Path berimor.zip -DestinationPath .
|
|
|
86
127
|
|
|
87
128
|
Бинарник пока не подписан — Windows SmartScreen может показать предупреждение «Windows защитила ваш компьютер»: «Дополнительные сведения» → «Выполнить в любом случае». Чтобы вызывать `berimor` из любой папки, переложите `berimor.exe` в каталог, который уже есть в `PATH`, или добавьте текущую папку в `PATH` самостоятельно.
|
|
88
129
|
|
|
89
|
-
Каждый архив сопровождается файлом `<архив>.sigstore.json` — keyless-подпись cosign/sigstore, привязанная к идентичности CI-workflow, которым собран релиз (
|
|
130
|
+
Каждый архив сопровождается файлом `<архив>.sigstore.json` — keyless-подпись cosign/sigstore, привязанная к идентичности CI-workflow, которым собран релиз (ADR-0026). Проверить: `berimor verify <архив>` — сама команда уже в скачанном бинарнике (устанавливает свежий доверенный корень sigstore по сети при первом вызове). Это независимая от Apple/Microsoft подпись — предупреждения Gatekeeper/SmartScreen выше она не снимает, они про отдельный, ещё не сделанный шаг.
|
|
90
131
|
|
|
91
132
|
### Способ 3: собрать из исходников (любая ОС)
|
|
92
133
|
|
|
@@ -109,58 +150,36 @@ berimor # = berimor chat: интерактивный диалог с а
|
|
|
109
150
|
|
|
110
151
|
При первом запуске мастер предложит подключить модели из пресетов (Kimi, DeepSeek, OpenAI, Claude через OpenRouter, локальные через Ollama/llama.cpp/LM Studio) — выберите номера или имена, вставьте ключ API (он попадёт в `~/.config/berimor/secrets.env` с правами «только владелец», не в конфиг). Позже то же самое — `berimor setup` или прямо в чате командой `/models add`.
|
|
111
152
|
|
|
112
|
-
Полезные команды чата: `/help`, `/models`, `/config`, `/exit`.
|
|
153
|
+
Полезные команды чата: `/help`, `/models`, `/skills`, `/config`, `/exit`.
|
|
113
154
|
|
|
114
155
|
Детерминированные процессы (декларативный YAML-план со строгими контрактами — основной «боевой» режим): `berimor run <process.yaml>`. Примеры процессов и конфигураций — в [`fixtures/golden/processes/`](fixtures/golden/processes/) и [`CONTRIBUTING.md`](CONTRIBUTING.md).
|
|
115
156
|
|
|
157
|
+
Расширения одной командой:
|
|
158
|
+
|
|
159
|
+
```sh
|
|
160
|
+
berimor skill install code-review-ru # из каталога
|
|
161
|
+
berimor skill install my-skill --from https://github.com/user/repo # из любого git
|
|
162
|
+
berimor agent install researcher
|
|
163
|
+
berimor plugin install devpilgrin/berimor-plugin-hello # подписанный плагин
|
|
164
|
+
berimor plugin install-local ./my-plugin --allow-unsigned # локальный, осознанно
|
|
165
|
+
```
|
|
166
|
+
|
|
116
167
|
## Как устроен проект
|
|
117
168
|
|
|
118
169
|
| Слой | Директория | Содержимое |
|
|
119
170
|
|---|---|---|
|
|
120
|
-
| Ядро агента | `crates/` | Rust-workspace — по одному крейту на компонент: Process Engine, Mediation, Executors, Memory, Capability, Model Pool, Actors, Tool Runtime |
|
|
171
|
+
| Ядро агента | `crates/` | Rust-workspace — по одному крейту на компонент: Process Engine, Mediation, Executors, Memory, Capability, Model Pool, Actors, Tool Runtime, Context Engine, Eval, Storage |
|
|
172
|
+
| Песочница CodeAct | `codeact-guest/` | QuickJS-гость под wasm32-wasip1 — отдельный crate, закоммичен как готовый артефакт |
|
|
121
173
|
| Bootstrap | `bootstrap/` | npm-пакет установщика/обновления (TypeScript), см. «Установка» выше |
|
|
122
174
|
| Архитектура | `docs/arch/` | самодостаточная спецификация — принципы, компоненты, диаграммы (`docs/arch/views/`). См. `docs/arch/README.md` |
|
|
123
175
|
| Решения | `docs/ADR/` | журнал архитектурных решений: контекст, альтернативы, последствия. См. `docs/ADR/README.md` |
|
|
124
176
|
| План разработки | `docs/ROADMAP.md` | очередь задач по фазам, декомпозиция на подзадачи, сложность, класс модели-исполнителя |
|
|
177
|
+
| Аудит | `docs/audit-2026-07-31.md` | независимый аудит безопасности — все находки закрыты или осознанно задокументированы |
|
|
125
178
|
| Тестовые данные | `fixtures/golden/` | золотые наборы: примеры процессов, контрактов, вредоносных вводов |
|
|
126
|
-
| Исследования | `docs/rnd/` | вспомогательный слой: источники и анализ существующих агентных
|
|
179
|
+
| Исследования | `docs/rnd/` | вспомогательный слой: источники и анализ существующих агентных фреймворков. См. `docs/rnd/README.md` |
|
|
127
180
|
|
|
128
181
|
`crates/` и `bootstrap/` — сам агент, код, написанный по очереди из `docs/ROADMAP.md`. `docs/arch/` — слой чистых решений позади него: не упоминает конкретные проекты и продукты (кроме `docs/arch/deployment.md` и `docs/arch/stack.md`, где это осознанное исключение), излагает архитектуру так, чтобы её можно было реализовать на любом стеке. `docs/ADR/` фиксирует, почему принято каждое решение, включая отклонённые альтернативы. `docs/rnd/` — вспомогательный слой источников, на который опиралось проектирование, не часть агента.
|
|
129
182
|
|
|
130
|
-
## Статус реализации
|
|
131
|
-
|
|
132
|
-
Архитектурная стадия завершена (принципы, диаграммы, решения, план). Реализация: **Milestone 0** (`docs/ROADMAP.md` §3) и **Milestone 1** (§18) закрыты — `berimor run <process.yaml>` реально исполняет декларативный процесс от начала до конца: Process Engine (парсер, граф control-flow, атомарное состояние, восстановление из журнала после сбоя), Mediation целиком (parse → schema → policy → commit → retry/эскалация → телеметрия), Capability (deny-статика, jail файловой системы, сетевой гейт, режимы подтверждений), Model Pool с HTTP-клиентом удалённых провайдеров, минимальный Context Engine и исполнители `ToolOnly`/`StructuredLLM` — всё связано в CLI, включая `--resume` и обработку `human_gate` в терминале. Подтверждено e2e-тестом через настоящий бинарник на golden-фикстуре, зелёным CI на Linux/macOS/Windows.
|
|
133
|
-
|
|
134
|
-
**Фаза 6 (Memory)** также закрыта — рабочая память со сворачиванием при переполнении бюджета, эпизодическая память с полнотекстовым поиском (FTS5), семантическая память с дедупликацией фактов и конфликт-событиями, гибридный векторно-текстовый поиск (`sqlite-vec`), процедурная память (формат файла навыка), граф сущностей (entity resolution, типизированные контракты — прошёл обязательное независимое ревью) и изоляция профилей/арендаторов.
|
|
135
|
-
|
|
136
|
-
**Фаза 7 (Actors & Scheduler)** закрыта целиком — модель актора (задача tokio + почтовый ящик, персистентная доставка), подпись конвертов (HMAC-SHA256, ключ выдаёт хост) и проверка ACL топика на шине событий (переиспользует манифест плагина из Capability), диспетчер с назначением по правилам и эскалацией после N неудач, лимит очереди `human_gate` на диспетчере и статус `throttled` для расписаний, персистентный планировщик с защитой от двойного тика, аварийная заморозка всех акторов.
|
|
137
|
-
|
|
138
|
-
**Фаза 8 (Tool Runtime & Protocol)** закрыта целиком — MCP-клиент (`rmcp`, официальный SDK: подключение к внешним серверам инструментов по stdio или произвольному транспорту), MCP-сервер (динамическая отдача набора инструментов, заданного вызывающим кодом во время выполнения), плагин как изолированный процесс с применением ACL-манифеста (переиспользует манифест из Capability).
|
|
139
|
-
|
|
140
|
-
**Фаза 9 (Eval & Observability)** закрыта целиком — трассировка/replay журнала событий (человекочитаемый вид + восстановление состояния на любой момент, не только последний), стенд офлайн-оценки на золотых наборах (доля веток, доля отказов Mediation), контур здоровья навыков (рост отказов + неиспользование → событие ревью, никогда молчаливая правка), пайплайн онлайн-метрик (доля успеха задач, скорость подтверждений).
|
|
141
|
-
|
|
142
|
-
**Фаза 1 (Process Engine)** закрыта целиком — сверх Milestone 1 добавлены конкурентность (parallel-шаги пишут в изолированные неймспейсы `state.parallel.<fork>.<branch>`, join-барьер по состоянию, единый писатель на инстанс; XL-задача, прошла обязательное независимое ревью), полный набор детерминированных прерывателей (`max_steps`/`timeout` в движке, `latency_budget` — SLA отбора провайдера) и `migrate_version` — явный перевод работающего инстанса на новую версию графа с подтверждением человека.
|
|
143
|
-
|
|
144
|
-
**Интеграция в `berimor run`** — Memory (Context Engine наполняет слои Skills/Session из `berimor-memory`), Tool Runtime (`tool`-шаги могут исполняться настоящими MCP-серверами из конфига, не только статическими заглушками) и Eval (команды `berimor trace`/`berimor eval` поверх журнала прогонов) подключены; прошли обязательное независимое ревью. Facts (нет провайдера эмбеддингов) и Personality/Project (нет понятия профиля в конфиге) — слои памяти, оставшиеся неподключёнными сознательно, задокументированный пробел. `skill_health`/`online_metrics` (O3/O4) — тоже: нет источника агрегированных данных в CLI.
|
|
145
|
-
|
|
146
|
-
Actors/Scheduler (Фаза 7) в `berimor run` не подключены — синхронная модель исполнения текущего CLI не совпадает с моделью акторов/диспетчера/планировщика, интеграция требует отдельного execution-режима, ещё не спроектированного.
|
|
147
|
-
|
|
148
|
-
**Фаза 10 (Deployment & Distribution)** закрыта целиком — кросс-платформенная сборка (`release.yml`) и keyless-подпись cosign/sigstore (`berimor verify`); bootstrap-установщик (TypeScript) со сверкой SHA-256 перед распаковкой; само-обновление агента (`berimor self-update`) реализовано на примитивах Process Engine — тот же журнал/восстановление после сбоя, что и у обычных процессов, а не отдельный ad hoc скрипт; доверенный список репозиториев (`berimor trust {add,remove,list}`) и установка плагина (`berimor plugin install`) поверх него, с TOFU-подтверждением для новых репозиториев; провенанс (`npm publish --provenance`) и SBOM (CycloneDX) в релизном пайплайне; тесты внедрения сбоев (прерванная загрузка, неверная подпись, downgrade, откат после неудачного smoke-теста). D5–D8 прошли одно обязательное независимое ревью на весь блок — найдена и исправлена directory traversal через имя плагина из манифеста (PoC подтверждён) плюс два major.
|
|
149
|
-
|
|
150
|
-
**Секреты не покидают систему открытым текстом (S5, `docs/arch/mediation.md` §4.3)** — реестр секретов текущего запуска (`berimor-secrets::Masker`) маскирует значения на всех точках, где они могли бы утечь: в аргументах и выводе инструментов (сам гейт допуска при этом видит настоящие значения — маскировка не ослепляет проверку опасных действий), в текстах, которые видит человек при подтверждении, при записи в память и в детекторе утечек Mediation-конвейера. Прошло обязательное независимое ревью.
|
|
151
|
-
|
|
152
|
-
**Граф сущностей (MEM7) теперь персистентен** — узлы и рёбра сохраняются в том же встроенном хранилище SQLite, что и остальная память (`berimor-storage::EntityGraphStore`), тем же паттерном, что семантическая память (MEM3→MEM4); сама логика entity resolution по-прежнему работает над срезом в памяти и ничего не знает про SQL.
|
|
153
|
-
|
|
154
|
-
**`AgentStep` (E9)** — исполнитель свободного цикла «рассуждение → действие → наблюдение» — реализован и подключён к `berimor run`/`berimor eval`: ход — фиксированный внутренний контракт Mediation, `Tool`-действие идёт через тот же capability-гейт/подтверждение, что и обычный `tool`-шаг (не обходится), опциональные стратегии самокритики и «предложи-выполни-проверь» — из `docs/arch/executors.md` §5. Прошёл обязательное независимое ревью.
|
|
155
|
-
|
|
156
|
-
**CodeAct (E6–E8)** — полностью реализован и подключён к `berimor run`. Хост Wasmtime (`berimor-executors::codeact::WasmHost`) компилирует и исполняет гостевой WASM-модуль — реальный JS-движок QuickJS (`rquickjs`), собранный отдельным crate (`codeact-guest/`, вне основного workspace — не замедляет обычную сборку) и закоммиченный как готовый артефакт (`crates/berimor-executors/assets/codeact-guest.wasm`, `codeact-guest/README.md` — как пересобрать при необходимости). Перед исполнением текст программы проходит статический анализ (`static_analysis::analyze`) — белый список идентификаторов через реальный JS-парсер (`oxc_parser`), не регулярные выражения: `eval`/`Function`/сетевые объекты отклоняются просто потому, что их нет в списке. В песочнице — три независимых лимита (топливо Wasmtime, потолок памяти, число вызовов инструмента), единственная host-функция `call_tool` идёт через тот же capability-гейт, что `ToolOnly`/`AgentStep`; WASI подключён с пустым набором прав (нет доступа к файлам/сети даже потенциально). `CodeActExecutor` связывает всё в цикл: подсказка модели → JS-текст → анализ → песочница → проверка результата по контракту шага, с повтором новым текстом программы при отказе любого барьера.
|
|
157
|
-
|
|
158
|
-
Не единственная линия обороны у статического анализа — обфускации вроде `globalThis['eval']` не гарантированно ловятся, настоящая гарантия структурная (изоляция WASM). Допуск по классам моделей реализован частично: лимиты сокращаются для более слабых моделей, но явного разрешения на использование CodeAct слабой моделью в конфиге процесса пока нет.
|
|
159
|
-
|
|
160
|
-
**Agentic CLI (§20.10–20.13)** — berimor теперь полноценный консольный агент, не только движок процессов: встроенные инструменты первого класса (`files.read/write/list`, `terminal.exec` с таймаутом и капами вывода, `http.fetch` через сетевой гейт — без MCP и заглушек), интерактивный `berimor chat` поверх свободного агентного цикла (команда по умолчанию — просто `berimor`), слоистая конфигурация (глобальная XDG ← проектная), мастер первого запуска с пресетами провайдеров (Kimi/DeepSeek/OpenAI/Claude-via-OpenRouter/Ollama/llama.cpp/LM Studio), slash-команды чата (`/models add` пересобирает рантайм без рестарта), консольный интерфейс с баннером, спиннером, живым выводом вызовов инструментов и рендером markdown. Локальный инференс llama.cpp встроен в процесс (фича `local-inference`, сборка из исходников), файловый jail — действующий барьер на пути каждого инструмента, граф сущностей читается в реальном прогоне. Публикация в npm с provenance; релиз — одной командой `scripts/release.sh X.Y.Z`.
|
|
161
|
-
|
|
162
|
-
Остаточные задачи и их приоритет: `docs/ROADMAP.md` §20.
|
|
163
|
-
|
|
164
183
|
## Лицензия
|
|
165
184
|
|
|
166
185
|
Apache License 2.0 — см. [`LICENSE`](LICENSE).
|
package/checksums.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"berimor-v0.
|
|
3
|
-
"berimor-v0.
|
|
4
|
-
"berimor-v0.
|
|
5
|
-
"berimor-v0.
|
|
2
|
+
"berimor-v0.19.1-darwin-arm64.tar.gz": "59aa628f624645886a6f8dd0bba99629030e02316574edd6c35bd32faaa3b0ba",
|
|
3
|
+
"berimor-v0.19.1-linux-arm64.tar.gz": "6c5b8b37dc788808bfbe354a3b872b9990fb859130d7ffbbcce4d3065c142c62",
|
|
4
|
+
"berimor-v0.19.1-linux-x64.tar.gz": "bb95797c09cc8bb131f748df75143370af5ad48072f5104b77e01f457c1b84dd",
|
|
5
|
+
"berimor-v0.19.1-win32-x64.zip": "17390f7cb90348ad82a96042e5f1315d7ed17d3f2e392eb94787ae310cc13bc2"
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "berimor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.1",
|
|
4
4
|
"description": "Berimor — агентный CLI для LLM: интерактивный чат с инструментами (файлы, терминал, HTTP), детерминированные процессы, аудит и replay. Этот пакет — установщик платформенного бинарника.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|