Releases: josephsteuerjr/praxis
Release list
Hélène 1.0.0
1.0.0 — кадр и КЕАТ её прода в издании; причина отказа тела видна, 26.09.2026
- КЕАТ личного потока владельца в Telegram (порт её прода 12–25.09). Каждое сообщение
лички — слова владельца и ответы агента — при приёме получает расписку в реестре захвата
(memory/.state/keat/capture/…, дописываемый, сцеплен sha256), а каждый вызов модели
проверяется у границы: лента, которая уходит в модель, обязана быть точной проекцией
захваченных оригиналов. Тогда вызов «обслужен» — в распискеmodel_inputстоит
keat.served: true, а снимок вызова лежит эпохой (memory/.state/keat/epochs/…); всё,
что не сходится, идёт прежним путём байт в байт — КЕАТ ничего не переписывает сам.
Включается сам, когда в настройках задан Telegram-id владельца; выключить —
"keat": {"enabled": false}или ручкиPRAXIS_KEAT*в блокеenv. Политика захвата
пишется файломmemory/.state/keat-capture-policy.jsonна каждом старте движка. - История не выпадает — в отличие от её прода. Разбор её прода 25.09: в личке КЕАТ
обслуживал вызов ОДНОЙ репликой — её ответы уходят рукойreplyи не захватывались, и
«захваченный хвост» после её последнего ответа был последней строкой владельца; 49–78
сообщений ленты выпадали из каждого обслуженного вызова (21 ход из 21 с 21.09). В
издании захватываются обе стороны лички, проекция отдаётся только если захвачена ВСЯ
горячая лента, а расписка ленты-вызовов (её реплика рисуется парой «вызовreply+
расписка о доставке») признаётся проекцией в одной точной форме. Сквозная проверка через
настоящее дерево: оба вызова хода обслужены, в модели вся лента, стадияcanary—
десятки миллисекунд. - Эпохи КЕАТ не растут без границы. Раз в час движок держит 24 последних эпохи и не
больше 256 МБ; эпоха моложе часа не трогается (её ход может ещё идти). У неё в проде без
ротации эпохи заняли 8,5 ГБ за две недели. - Стабильная голова комнат (
PRAXIS_FRAME_HEAD_STABLE, в издании включена): в группе
system и набор рук не зависят от того, кто заговорил, — полномочия хода едут строкой
«говорит» в зоне «СЕЙЧАС», STATE и приватное из досье — ярусами живого конверта. Её замер
13.09: каждое чередование говорящих стоило ~15 тыс. токенов заново. То же для ходов
агента без комнаты (_RUNS). - Подстадии подготовки хода в расписке
model_preparation_timing(stages_ms:
old_context,canary,model_input_artifact…,substages_msпо ярусам) — чтобы «ход
думал минуту» раскладывалось по местам, а не угадывалось. - Быстрее подготовка кадра: число живых прогонов — по свежим манифестам с кэшем (у неё
прежний обход всех прогонов держал блок состояния 30–435 с), проба тела — с кэшем (при
отключённом теле это было до 10 с на КАЖДЫЙ ход), разбор ленты событий — один раз на файл
дня, реестр захвата — с хвоста. - Досье в кадре — под потолком 6000 знаков говорящему и 3000 остальным: голова целиком,
«Факты» хвостом, путь к файлу назван (PRAXIS_DOSSIER_FRAME_CHARS=0— целиком, как было). - Мусор цитат z.ai и GPT вырезается из исходящего (
citeturn0search1, обёртки
U+E200…U+E206) — раньше он проступал в тексте ответа невидимым мусором. - Обрыв ответа потолком
max_tokens: недописанный вызов руки не исполняется, прогон
закрывается честнымfailed/in_doubt, а не «сделано». - Длинные сообщения в Telegram режутся, не разрывая ссылок и кода (
telegram_text). - Доступны ручками, по умолчанию выключены: эпоха комнаты (
PRAXIS_FRAME_EPOCH=1и
PRAXIS_FRAME_EPOCH_ROOMS) и кадр v6 личного потока (PRAXIS_FRAME_V6=serve,
PRAXIS_FRAME_V6_STREAMS=dm-<id>,PRAXIS_OWNER_ID) — оба меняют кадр заметно больше,
чем остальное, и включаются осознанно. - Тело (Windows и Mac): причина отказа запуска процесса — в ответе руки. Живой случай
25.09 у пользователя издания: «команда принимается, но умирает через мгновение, пустые
логи, статус failed». Причина лежала вsupervisor_error.txtпапки операции, ноpoll
её не показывал. Теперьprocess.statusотдаётsupervisor_errorиjob_note; отказ
привязки к Job Object после запуска больше не пишетfailedпри живой команде — отмена и
срок гасят самого ребёнка. - Ядро и слой. Зеркало
praxis/— её живой masterec9092f(восемь кандидатов 25.09 и
медленные ходы); слойhelene/core— 127 объявленных файлов, «не взятой её работы» 18
(было 21), только наших — 0;EDITION.mdпересобран прибором. Гейт дерева в Linux Docker:
5748 стендов, ноль красных (+356 к 0.9.0), КЕАТ-стенды зелёные и нативно на Windows.
sha256 Helene-1.0.0.zip: 27666551266a43ebfbe00eaa8d2bafbb6e2294ef3d67d7909fa847fae514b01c
sha256 Praxis-1.0.0.zip: a923784e626cde267e9327c0087700a81d169414f550571a82c705042127a463
Hélène 0.9.0
0.9.0 — память комнаты: горячее окно, сводка с верхним ярусом, приватное в кадре, 25.09.2026
- Горячее окно комнат — своё: 250/400/500 (
PRAXIS_GROUP_HOT_LO/HI/HARD_HI, потолок
токенов комнаты 64 000), личка на прежних 50/100/125. Раньше после каждой свёртки в ленте
комнаты оставалось ~50 строк — несколько часов, а всё раньше ехало только сводкой. - Сводка места держит верхний ярус. Самый широкий по охвату блок (память комнаты за
месяцы) в кадре всегда, остаток бюджета — свежим к старому, показ по хронологии. Раньше
упаковка «свежее к старому» выкидывала его первым, а срез хвоста по знакам начинал сводку
с середины фразы. Потолок сводки 40 000 (было 12 000) и применяется целыми блоками;
умолчания комнатыcontext_hot400 иcontext_summary_chars40 000 (максимумы 1000 и
80 000). - Приватные записи досье остаются в кадре комнат с пометкой
[private]как внутреннее
знание агента (PRAXIS_DOSSIER_PRIVATE_IN_ROOMS=offвозвращает снятие); личка с чужим
человеком и владельцем — как прежде. Граница раскрытия — слово агента и исходящий гард. - recall называет другие комнаты, а не прячет их (
PRAXIS_RECALL_CROSS_ROOM=hide
возвращает скрытие); строка-счётчик печатается и при непустой выдаче — раньше скрытие
было молчаливым, если нашлось что-то ещё. Ходы из лички владельца в recall метятся
«из личной переписки с владельцем» (или прячутся тем же рычагом); ходы агента в комнатах
входят в корпус recall без рычага прогонов (PRAXIS_INDEX_ROOMS=0— прежний обход).
Слово Егора 25.09: «как следует поднять горячий контекст комнаты», «сделать приватные
данные более доступными». Порт кандидатаroom-memory-2509из Praxis; стенд
test_room_memory_2509. - Свёртка на мягком пороге предлагается, а не делается сама. Личка — минимум 150 горячих
строк, свёртка при 250 (было 50/100); комната — 250/400. На мягком пороге движок пишет
предложение (memory/.state/fold_offers.json, видно в STATE какfold_offers), а
сворачивает агент рукойmemory_compact(action=fold)— или жёсткий порог (токены, знаки,
300/500 строк) без спроса.PRAXIS_FOLD_OFFER=off— прежнее поведение. Слово Егора 25.09:
«при 250 или 400 свёртка — отдельная задача, которая ей предлагается». - Пол приватных записей на исходящей границе. Вне лички владельца голос,
send_messageи
narrateне выпускают дословный кусок (≥ 24 знаков) записи[private], которая ехала в
кадр этого хода: механика, как у кред-пола, а не совет судьи (адверсарий V1-1). - История переписанных свёрток — вне корпуса recall (
_history/больше не вторая копия
того же id);rewriteчитает свёртку под замком (адверсарии V1-4/V4 F4/F13). - Имя-тёзка считается по всей книге, не по верху ранжирования: частичное совпадение с
бонусами больше не обходит отказ, «Ivan» и «Иван» — один ярус (V4 F2). - Уведомления (порт): живые окна — по дешёвому списку живых прогонов, а не обходом всех
манифестов; будильники — из существующего API задач; привязка строки владельца — по id
задачи; межпроцессный замок и на Windows (V2 F1/F2/F7). - Ярус свёртки: ребёнок с неразрешимым покрытием в родителя не берётся (V4 N1).
- Расписки без рода — теперь и в транспорте.
mtproto_runner,memory_life,
frame_shadow,brain— без женских форм; system свёртки не говорит «я сама»; сканер
test_gender_free_texts_2509смотрит эти модули и новые глаголы (V4 F5/F6). - Сборка и обновление. Mac-сборка снова собирается (
collect_body_licensesпадал
TypeError; теперь под стендом); паспорт Windows-архива несёт происхождение тела, а не
текст лицензии (в 0.8.8 полеbodyбыло лицензией); паспорт без абсолютных путей машины
сборки;AGENTS.mdдерева не едет в поставку; секрет-гард сканирует иserver/.
Обновление: расписка мозга от 0.8.5–0.8.7 безprojectedдописывается — убранный
запасной действительно снимается из llm.json; репетиция расширений даётtree(),
config()и дерево движка вsys.path, как живая загрузка; истёкшая или не
запустившаяся репетиция — отказ, а не «продолжаем» (без--force-extensions); на macOS
репетиция идёт ДО остановки программы — при отказе старая версия остаётся живой; отчёт
репетиции снимается, когда расширений нет; отказ по потолку схем называет расширение,
а не один тул;quota.jsonобнуляется на старте движка;body_src.py --checkсверяет то
дерево, из которого собрано. Оболочка: держатель порта реле опознаётся по его/health
("service":"relay"), а не по любому 401.api.config()маскирует всё поддерево под
секретным ключом (pass/pwd/auth/proxy/url/dsn/pat/bearer/cookieтоже) и userinfo в
адресах. - Слой издания: одиннадцать модулей, существовавших только в рабочей копии, объявлены в
helene/core(сборка из ядра больше не отказывает на них);EDITION.mdназывает строки
прибора тем, что они есть (V4 F7).
sha256 Helene-0.9.0.zip: 59ab99ff96328cb069a28dfe7430cf16a5827cd6d729583e76bb6286101db139
sha256 Praxis-0.9.0.zip: fe5da32e5c441aaab48a0131c753df07f056975d4f810bc5fa4399e1531c6af1
Hélène 0.8.8
0.8.8 — свёртки памяти пишет сам агент; уведомления в кадре; ревью 25.09 закрыто, 25.09.2026
-
Свёртки памяти пишет сам агент — своим голосом, по своим правилам. Раньше свёртку
(компакт прожитого) писал «хроникёр» — отдельный промпт о агенте в третьем лице, ролью
оценщика. Теперь system свёртки — персона самого агента (SOUL.md + CURRENT с провенансом,
как в кадре хода), задача от первого лица и правила записи по его вкусу:
soul/memory_style.mdзаменяет умолчание целиком. Роль —memoryиз llm.json, если
задана, иначе голос. Рукаmemory_compact:list(свёртки места),read,rewrite
(переписать суть на месте — тот же id и источники, прежний текст в
memory/life/compacts/_history/),refold(перевыпустить свёртки своим голосом пачкой
в фоне;status/stop). Род и имя в свёртке — только из строк агента. Слово Егора
25.09: «нужно, чтобы ОНА писала компакт… и могла переписать все компакты под себя». -
Верхний ярус свёртки собирается. Дети верхнего яруса, делящие события, больше не
берутся в одного родителя: раньше проверка пересечения шла только на первом ярусе,
родитель писался и отвергался разрешением по кругу (на проде Праксис — по пять раз в день,
верхняя память больших комнат не росла никогда). -
Дубль ответа и не тот адресат. Отвеченный wake группы снимается по message_id, а
не по идентичности объекта — правка сообщения во время хода больше не рождает второй
ответ на тот же адрес. Имя-тёзка при отправке — отказ со списком кандидатов, а не «самый
свежий из восьми». Замороженный чат не получает и исходящих. -
Outbox не перечитывает нетронутые журналы. Состояния записей — из кэша по подписи
файла; на проде тик каждые 15 с читал все 3934 журнала (60–90 % ЦП движка). -
Терминал реле — по контракту хода. После доставленной реплики лимит подписки
закрывает ход, а не переисполняет решение запасной моделью; без запасного удержание молчит
и пробует реле раз в 5 минут; синтетический отказ не пишется сбоем; слова по коду,
час — часами агента; «нужен вход» держит минуту, не пятнадцать. -
Уведомления в кадре: агент узнаёт о других комнатах, не бросая текущее. Пока идёт ход
в одном чате (или ход окна, будильник), обращение к агенту или личка из ДРУГОГО чата
ложится в накопитель (memory/.state/notices.json) и показывается в его ближайшем вводе
модели: блоком в изменчивом хвосте кадра и рядом с результатами рук на следующей итерации
тул-цикла — первый раз как «НОВОЕ», дальше «прочитано». Гаснет обычным ходом того чата:
агент заходит в комнату как всегда и сам решает, что делать. Это не будильник: отдельного
хода не рождает. Содержимое личек показывается только там, где аудитория — владелец.
Пометкаjournal(decision=true)помечает договорённость с владельцем. Плюс реестр
фоновых процессов, запущенных изshell(… &): агент видит, что это его процесс и кто
его запустил. Порт из кандидата для Praxis (механика Егора, 25.09). -
Уведомления — после ревью. Владельческая аудитория блока — только личка владельца и
окна агента (владелец в публичной комнате не открывает чужие лички); вне неё для любой
чужой комнаты — кто и где, не что; свежее впереди прочитанного; реплика владельца
адресуется живым окнам и взведённым будильникам, а не всем окнам двое суток; файл под
замком, свой tmp на процесс; «НОВОЕ» — по записи; пульс — тоже её ход. -
Окно говорит правду о перезапуске и о запасной модели. Расписка «Сохранено» называет
блоки, которые движок читает только на старте (Telegram, тело, голос, агенты, ограда), и
показывает кнопку перезапуска. Шапка «подписка исчерпана — отвечает запасная модель»
только когда запасная — на другом провайдере с ключом; чужие и устаревшие удержания
шапке не показываются; удачный фолбэк больше не читается как ошибка модели. Запасной
провайдер: одно имя модели в двух полях, отказ без имени модели, чистка адреса и ключа
при смене протокола. Квитанция «Остановить ход» показывается словами движка. -
Оболочка и мастер. Маркер нового входа в подписку — только после успешного
помощника и другого auth.json (отменённый вход не рвёт ход). Чужой держатель порта реле
называется чужим, с подсказкой сменитьrelay.port. Опрос своего реле — без прокси из
среды и без редиректов. Смена настроек реле не переставляет детей надзора. Галочка
«обновлять, даже если расширения не пройдут» доезжает до мастера (camelCase) и на
macOS. Репетиция расширений сверяетrequiresс версией ПОСТАВКИ, ограничена 120 с, а
сломанный отчёт — отказ, не «продолжаем». Расписка «реле» — только когда реле включено. -
Расширения после ревью. Потолок схем — на прибавку расширения (тул ≤ 4 000 знаков,
расширение ≤ 12 000), а не на сумму схем дерева (там ~125 000 — ни один тул не
подключался); имена тулов без точек (ext_quota_reply); отказ после регистрации
откатывает тулы;on_bootполучает живой api;api.config()скрывает иapi_hash,
phone, session, credential. -
Движок. Записки окна помечаются
.doneна обычном пути (переигрывались после
обновления); граница хода гасится только отменой, не паузой на чекпойнте; пост «думаю…»
один на ход и только в своём чате; галочка поста читается на тике; проекция мозга
снимает то, что сама писала (убранный ключ запасного не живёт в llm.json вечно); пост
«думаю…» у аккаунта без звонка. -
Тексты без рода агента. Расписки рук, заметки рабочего хода, промпты судей, семена
пробуждений — без женских форм; стенд-сканерtest_gender_free_texts_2509держит это.
remind_self(kind=message)описывает то, что делает издание (живой ход с текстом,
отправка рукой). Дневник[ответ]несёт расписку, а не подсказку модели (порт правки
Праксис 16.09). -
macOS. Отказы маршрутов руки
computer— словами Mac (обёртка результата, не только
строки состояния). Тело: супервизорprocess.startбез сторожа родителя (не сирота и не
in_doubt), сторож после init лога, AXValue-хоп подписи не роняет узел. Сборка: паспорт и
лицензии говорят правду об источнике тела (tree/body, коммит дерева), сборка в выпуск
безtree/body— отказ, не откат на зеркало. -
Windows-сборка: происхождение тела.
installer/body_src.py --buildпишет
BODY-BUILT.json,build_dist.pyотказывает, если exe собраны не из живого исходника
(как у реле); полеbodyв паспорте. -
Слой издания честный. 27 правок порта, ранее числившихся «её отставанием», объявлены
(helene/EDITION.mdпересобран из прибора;SYNC-HEAD.txtс полным хешем); правило
мусора зеркала — узкое;.env.exampleсверяется; необъявленный «только наш» модуль —
отказ сборки из ядра. Стенды: +9 модулей в издании, +7 в дереве; гейт дерева 5348/0,
издания — все зелёные.
sha256 Helene-0.8.8.zip: 15aeb1f1dac32da8219a4527b4bf395fa3c138a403ea76ac079921619d57f65a
sha256 Praxis-0.8.8.zip: 6a35aafe73426051085c1777204ee6e53bd82277d97f27a20565378b1a3cbe76
Hélène 0.8.7
Hélène 0.8.7 — 25.09.2026
- Свои тулы и крючки владельца переживают обновление: расширения
helene.ext/1.
Раньше свой тул жил патчем в файлах программы и пропадал при обновлении (случайquota
в 0.8.3). Теперь свой тул — папкаdata/extensions/<имя>/с манифестом (extension.json:
имя, версия,api: helene.ext/1.0,requires,entry,capabilities,acceptance) и
модулемregister(api):api.register_toolставит тул в общий список рук с пометкой
«(расширение …)»,api.register_hookдаёт крючкиon_boot / before_turn / after_turn / on_delivery. Версия API как у Уробороса: major равен, minor — минимум, у поверхности
API есть отпечаток; несовместимость видна словами при загрузке, а не молчанием при
вызове. Сбой одного расширения не роняет остальные и не роняет ход: причина — в
helene.log, в снимкеmemory/.state/extensions.json, в карточке Настройки →
Расширения и строкой в ориентире хода. - Репетиция обновления. Установщик гоняет
runner.py --check-extensionsпитоном
новой поставки до снятия службы и подмены папок; хоть одно расширение не грузится —
отказ словами, старая версия остаётся живой, отчётextensions-check.json. В карточке —
«Поручить агенту адаптировать» (записка агенту с фактами: папка, манифест, ошибка,
версии API); у кнопки «Скачать и установить» — галочка «Обновлять, даже если мои
расширения не пройдут проверку» (--force-extensions). Правила и пример —
РАСШИРЕНИЯ.mdрядом с программой. На macOS обновление идёт черезinstall.sh—
репетиция там пока не встроена. - Совет руки
computerпро выделение в поле — по живому замеру, не по догадке.
Описание советовало «End/Escape или второй клик перед набором»; стенд 25.09 (форма
WinForms + тело) показал: выделение всего текста даёт активация окна, а не клик; Escape
выделение не снимает, два быстрых клика — двойной, выделяет слово, и набор затирает
посев. Теперь: один клик в поле или End; в теле — подсказкаfocus_selectionв каждом
ответеdesktop.input.perform. - Сборка Mac: проверка «git уже в рантайме» снова после шага рантайма; стенды пульса
Telegram и живого HTTPS под оградой ждут фактов, а не секунд, и терпят DNS раннера.
Суммы (sha256)
Helene-0.8.7.zip(Windows, 260,6 МБ):59fa135d7d31411da8fa9817adc480d7353a1227cb84cd664c009745ca70ec85Praxis-0.8.7.zip(издание к серверу, 4,7 МБ):b861cf43f1ad1cc00dc8112228bf512e1c3b2a3b557adbd84aa35f867426a2a7Helene-0.8.7-macos-arm64.zip(macOS Apple Silicon; CI run 36113550591 — сборка, стенды, тихая установка со службой, дымовой запуск, обновление поверх):c911da45d20a137958db4c828fb77661b073848417455ea3e0c1a0b57835c626
Hélène 0.8.6
Hélène 0.8.6 — 25.09.2026
- Служба и окно 0.8.5 перезапускали реле подписки примерно раз в час. В 0.8.5 «новый
вход в подписку» определялся по времени измененияauth.json— а реле само переписывает
этот файл при каждом обновлении токенов. Перезапуск ронял бы ход посреди ответа. Теперь
признак нового входа — отдельный маркерlocal_auth/login-generation, который окно
ставит только когда помощник входа завершился иauth.jsonлёг; служба и окно поднимают
реле заново только по нему. Windows-архив 0.8.5 выложен с этим дефектом — обновиться до
0.8.6; Mac-сборка 0.8.5 отменена до выкладки, первая Mac-сборка этой линии — 0.8.6. - Всё остальное — как в 0.8.5 (ниже).
Что вошло из 0.8.5
Выпуск вбирает 0.8.4 (собранную, но не выложенную) и всё ниже. Баги тестировщика (Сергей,
Mac под службой) — закрыты кодом; живьём на его машине не прогонялись.
- Смена мозга больше не требует снимать и ставить службу. Движок следит за
helene.json(тик 5 с) и перепроецирует мозг вllm.jsonсам; служба перечитывает
настройки реле на тике и поднимает реле заново при смене ключа, порта или выключателя;
окно после «Сохранить» гасит и поднимает своё реле. Расписка «Сохранено» говорит это
словами, а не посылает снимать службу. Перезапуск остался для ограды, песочницы и
Telegram-аккаунта — о них говорит хвост расписки. - Запасной провайдер работает. Раньше второй фреймворк в
llm.jsonбыл пустым блоком
без ключа и адреса — «запасной» молча отказывал. В Настройках — выбор «Нет | модель того
же провайдера | другой провайдер» с адресом и ключом; другой провайдер — другого протокола
(OpenAI-совместимый ↔ Anthropic-совместимый): у ядра один клиент на протокол, и окно этого
не скрывает. Проекция мозга больше не затирает ручные правки вложенных блоковllm.json. - «Применится перезапуском» больше не висит вечно. Новый вход в подписку окно и служба
применяют сами (реле поднимается заново), а слово «применён (слот main из 1)» идёт от
живого реле (GET /v1/account), а не от факта появления файла. - Лимит подписки — словами и с часом. Реле при исчерпанном окне отдавало английскую
диагностику в тексте ответа; движок принимал её за оборванный стрим, повторял, «фолбэчил»
во второе имя модели того же реле и показывал текст как реплику агента. Теперь реле
поднимается с типизированным терминалом (RELAY_TYPED_TERMINAL=field), движок читает
код до текста: подписка исчерпана → ходы идут к запасному провайдеру (другой эндпойнт)
до часа восстановления, без походов в реле; окно и шапка говорят «подписка исчерпана до
ЧЧ:ММ — отвечает запасная модель». Час неизвестен — так и сказано, пробуем через 15 мин. - «Остановить ход» останавливает ход. Кнопка в разговоре шлёт просьбу движку
(/api/interrupt), независимый наблюдатель движка отменяет живые прогоны через
run_manager и пишет квитанцию (что отменено, что ждёт исхода тула); совершённое не
откатывается, идущий вызов модели дорабатывает до границы. Раньше кнопка предлагала
перезапуск программы, а под службой — «сними и поставь службу». - Telegram: видно, что агент думает. «Печатает…» идёт всё время хода (раньше один
сигнал гас через 5 с; у аккаунта не было вовсе). Галочка «Пост «думаю…» у долгого хода»:
через 20 с — «думаю (ЧЧ:ММ)…», правка раз в минуту, пока никто не написал следом, снятие
перед ответом, при сбое — «не вышло: …». - Агент больше не зовёт себя «она». Тул-выводы, описания рук, записи прожитого хода и
промпты оценщиков дерева говорили о нём в женском роде и звали «Praxis»; агент с мужским
именем читал это как свой пол. Теперь тексты без рода, свёртка памяти пишет «я» только по
строкам самого агента и в его же роде; имя агента — в ограде чужого «я». - Mac: слова Mac. Строка состояния тела и отказы маршрутов говорили «Windows body» и
«Session 0» — модель делала вывод «UI Automation на Mac не реализовано», хотя Accessibility
реализован целиком. Результаты руки на Mac теперь — «Body (macOS)», «Accessibility tree».
Тело собирается из одних крейтов на обе системы (darwin-ветки — в дереве поставки). - Реле у окна не долбит журнал при занятом порте. Занятый 5011 — ожидание, слово в
журнал один раз при входе в состояние и один раз при подъёме, а не каждые 30 с. - Ядро — порт с прода за 17–25.09: зрение по каталогу провайдера (замена только из
каталога своей ноги, пиксели снимаются честно), память без мельницы свёрток (доказуемая
подпоследовательность, долг обновления платится сам), ограда чужого «я» в свёртках,
доставка (отмена хода не отправляет зависшее, поздняя приёмка возвращается), selfdev
(таймаут гейта держит мёрж), Forge (стоп сохраняет результат, спавн без дублей), правда
тела (ok— транспорт И тело). Полный гейт дерева в Linux Docker: 5258 стендов, ноль
красных. - Издание к серверу зовётся Praxis (
remote/,praxis.exe,app.praxis.desk), список
чатов без сырых идентификаторов, приём записок с повтором после рестарта.
Суммы (sha256)
Helene-0.8.6.zip(Windows, 260,5 МБ):9796ca3e573984a331d3c1e228821500a843feb6ddfcec2b950ec230091a6983Praxis-0.8.6.zip(издание к серверу, 4,7 МБ):301d274183a9b7b527fd1bf97b028b7b20f8a0bf996f433db2ff5086c7be8a2fHelene-0.8.6-macos-arm64.zip(macOS Apple Silicon, 224,8 МБ; CI run 36070031365 — сборка, стенды, тихая установка со службой, дымовой запуск, обновление поверх):7784be581863207f0eeb263642d154560e73cb0a9f7ac6921a9bbec3906c87d3
Hélène 0.8.5
⚠ Дефект 0.8.5 (Windows-архив): служба и окно перезапускают реле подписки при каждом обновлении токенов (примерно раз в час) — ход может оборваться посреди ответа. Починено в 0.8.6, обновитесь. Mac-сборка 0.8.5 не выкладывалась.
Hélène 0.8.5 — 25.09.2026
Выпуск вбирает 0.8.4 (собранную, но не выложенную) и всё ниже. Баги тестировщика (Сергей,
Mac под службой) — закрыты кодом; живьём на его машине не прогонялись.
- Смена мозга больше не требует снимать и ставить службу. Движок следит за
helene.json(тик 5 с) и перепроецирует мозг вllm.jsonсам; служба перечитывает
настройки реле на тике и поднимает реле заново при смене ключа, порта или выключателя;
окно после «Сохранить» гасит и поднимает своё реле. Расписка «Сохранено» говорит это
словами, а не посылает снимать службу. Перезапуск остался для ограды, песочницы и
Telegram-аккаунта — о них говорит хвост расписки. - Запасной провайдер работает. Раньше второй фреймворк в
llm.jsonбыл пустым блоком
без ключа и адреса — «запасной» молча отказывал. В Настройках — выбор «Нет | модель того
же провайдера | другой провайдер» с адресом и ключом; другой провайдер — другого протокола
(OpenAI-совместимый ↔ Anthropic-совместимый): у ядра один клиент на протокол, и окно этого
не скрывает. Проекция мозга больше не затирает ручные правки вложенных блоковllm.json. - «Применится перезапуском» больше не висит вечно. Новый вход в подписку окно и служба
применяют сами (реле поднимается заново), а слово «применён (слот main из 1)» идёт от
живого реле (GET /v1/account), а не от факта появления файла. - Лимит подписки — словами и с часом. Реле при исчерпанном окне отдавало английскую
диагностику в тексте ответа; движок принимал её за оборванный стрим, повторял, «фолбэчил»
во второе имя модели того же реле и показывал текст как реплику агента. Теперь реле
поднимается с типизированным терминалом (RELAY_TYPED_TERMINAL=field), движок читает
код до текста: подписка исчерпана → ходы идут к запасному провайдеру (другой эндпойнт)
до часа восстановления, без походов в реле; окно и шапка говорят «подписка исчерпана до
ЧЧ:ММ — отвечает запасная модель». Час неизвестен — так и сказано, пробуем через 15 мин. - «Остановить ход» останавливает ход. Кнопка в разговоре шлёт просьбу движку
(/api/interrupt), независимый наблюдатель движка отменяет живые прогоны через
run_manager и пишет квитанцию (что отменено, что ждёт исхода тула); совершённое не
откатывается, идущий вызов модели дорабатывает до границы. Раньше кнопка предлагала
перезапуск программы, а под службой — «сними и поставь службу». - Telegram: видно, что агент думает. «Печатает…» идёт всё время хода (раньше один
сигнал гас через 5 с; у аккаунта не было вовсе). Галочка «Пост «думаю…» у долгого хода»:
через 20 с — «думаю (ЧЧ:ММ)…», правка раз в минуту, пока никто не написал следом, снятие
перед ответом, при сбое — «не вышло: …». - Агент больше не зовёт себя «она». Тул-выводы, описания рук, записи прожитого хода и
промпты оценщиков дерева говорили о нём в женском роде и звали «Praxis»; агент с мужским
именем читал это как свой пол. Теперь тексты без рода, свёртка памяти пишет «я» только по
строкам самого агента и в его же роде; имя агента — в ограде чужого «я». - Mac: слова Mac. Строка состояния тела и отказы маршрутов говорили «Windows body» и
«Session 0» — модель делала вывод «UI Automation на Mac не реализовано», хотя Accessibility
реализован целиком. Результаты руки на Mac теперь — «Body (macOS)», «Accessibility tree».
Тело собирается из одних крейтов на обе системы (darwin-ветки — в дереве поставки). - Реле у окна не долбит журнал при занятом порте. Занятый 5011 — ожидание, слово в
журнал один раз при входе в состояние и один раз при подъёме, а не каждые 30 с. - Ядро — порт с прода за 17–25.09: зрение по каталогу провайдера (замена только из
каталога своей ноги, пиксели снимаются честно), память без мельницы свёрток (доказуемая
подпоследовательность, долг обновления платится сам), ограда чужого «я» в свёртках,
доставка (отмена хода не отправляет зависшее, поздняя приёмка возвращается), selfdev
(таймаут гейта держит мёрж), Forge (стоп сохраняет результат, спавн без дублей), правда
тела (ok— транспорт И тело). Полный гейт дерева в Linux Docker: 5258 стендов, ноль
красных. - Издание к серверу зовётся Praxis (
remote/,praxis.exe,app.praxis.desk), список
чатов без сырых идентификаторов, приём записок с повтором после рестарта.
Суммы SHA-256
Helene-0.8.5.zip—c6953cd747b10123f5f44d440ce40a6ae174f4a1a08be017e4cf83a66c01adf2Praxis-0.8.5.zip—d5f921762832c2f16a1ec6a06561f1a2ef1e36fbce64dca9f7574e400bdbc939- macOS (
Helene-0.8.5-macos-arm64.zip) — собирается кнопкойmacos.ymlпосле выкладки; сумма появится третьей строкой.
Установка на Mac: curl -fsSL https://github.com/josephsteuerjr/praxis/releases/latest/download/install.sh | sh (скрипт ставит последний выложенный Mac-архив).
Hélène 0.8.3
Кнопка «Скачать и установить» наконец работает, а обновление на Windows больше не переспрашивает имя агента, конституцию и модель.
sha256 Helene-0.8.3.zip: ba294c668a8a840e53613df0215a69cbc8f40da8516d17b867be9f7d9190fdc0
sha256 Praxis-0.8.3.zip: 019c41b032b00bd1ca82d2639de9f1e9771887867cf1ca8075ccbda8dd5cf75b
sha256 Helene-0.8.3-macos-arm64.zip: 4a0e5ccbdf963706aa14c33ac93267fa4efc1c7882da8c3355e3ed0dc5673639
Что чинилось
«Скачать и установить» не работала ни разу. Окно брало адрес архива из поля url ответа сервера обновлений. У ответа GitHub это поле тоже есть, но в нём лежит адрес самой записи релиза в их API, а не файл; проверка «раз поле не пустое, значит адрес назван» срабатывала всегда. Окно скачивало JSON-запись, получало «ссылка ведёт не на архив .zip» и печатало «Не получилось.» — без следа в журнале, потому что успех логировался, а отказ нет. Теперь форматы различаются по тому, чем названа версия, а отказ скачивания пишется в helene.log.
Обновление на Windows открывало полный визард. Нажав «Скачать и установить», человек попадал в ту же сцену, что при первой установке: имя агента, конституция, модель заново — хотя всё это уже решено. Мастер получил режим обновления: он читает решения из самой установки и ставит молча. На macOS так было с 0.7.1, теперь платформы сошлись. Руками то же самое — helene-setup.exe --update; если решений в установке не нашлось, мастер сам открывает визард, как раньше.
Установка и обновление
Windows: «Настройки» → «О программе» → «Проверить обновления» → «Скачать и установить». Обновляясь с 0.8.2 и раньше, кнопку придётся один раз обойти: скачать Helene-0.8.3.zip, распаковать в пустую папку и запустить оттуда helene-setup.exe --update — в тех версиях кнопка ещё сломана.
macOS (Apple Silicon, macOS 14+), от своего пользователя, без sudo:
curl -fsSL https://github.com/josephsteuerjr/praxis/releases/latest/download/install.sh | sh
Та же строка поверх — обновление: data/ и helene.json не трогаются.
Hélène 0.8.2
Установка на Mac не даёт ошибиться с пользователем, агент на Mac знает, что его тело — Mac, а издание зовёт владельца его именем; тело, брокер и служба как в 0.8.1.
sha256 Helene-0.8.2.zip: cadcc83128b4fca3cfcbc2c35e6df365d277ce28f2f0c848dcebf87a712bd5e9
sha256 Praxis-0.8.2.zip: aa0000f0445bafed8cdd8df747e1d00d2f96e9ce416c158658cad9a065c849f2
sha256 Helene-0.8.2-macos-arm64.zip: 5a8bada1755c67cd5e078af958238312d3beaa27ed0801f7a3ce1d3e94142cda
Что чинилось
Установка и обновление на Mac — от своего пользователя. Живой случай: обновление запустили из Терминала одного пользователя после su в другого, с sudo. Скрипт искал установку в доме второго и пошёл «первой установкой», а мастер через open стартовал от первого и упал на чужой папке: «you don't have permission to view it» — после закачки 224 МБ. Теперь install.sh проверяет сессию до закачки и отказывает словами: под sudo, после su в другого пользователя и без графической сессии (ssh). Правило простое: ставить и обновлять от того, кто вошёл на экран Mac, в его Терминале, без sudo и su; пароль администратора программа спросит сама, когда он понадобится. Спасибо Сергею.
Агент на Mac считал, что его тело — Windows-ПК. Описание тула computer сборка для macOS переводила и раньше, но модель читает не только его: указатель тула говорил «Windows computer: files, PowerShell…», а блок владельца в её кадре — «The Windows PC is your DIRECT body … PowerShell». На просьбу подвинуть мышь она отвечала «на маке не реализовано», не позвав тул. Теперь и эти тексты на darwin говорят словами Mac. Напоминание: «Управление компьютером» после установки выключено — включается в Настройках осознанно, и без двух разрешений системы («Запись экрана и системного звука», «Универсальный доступ») тело отказывает словами; после каждого обновления разрешения надо выдать заново.
Издание звало любого владельца Егором. Тексты агента — код Праксис, и они честно называют её владельца: «Yegor trusts you», «Yegor's Windows computer», «only Egor may call this». Теперь при запуске эти авторские тексты (описания тулов, указатели, шаблоны окон, контракты кадра) переводятся на имя владельца из настроек. Память, досье, письма и реплики не трогаются: там Егор может быть настоящим третьим человеком.
Установка и обновление
macOS (Apple Silicon, macOS 14+), от своего пользователя, без sudo:
curl -fsSL https://github.com/josephsteuerjr/praxis/releases/latest/download/install.sh | sh
Та же строка поверх — обновление: data/ и helene.json не трогаются; со службой обновление спросит пароль администратора дважды. Windows: «Настройки» → «О программе» → «Проверить обновления», либо руками по ОБНОВЛЕНИЕ.md.
Hélène 0.8.1
Вход в подписку ChatGPT через браузер снова подхватывается — на Mac и на Windows; всё остальное как в 0.8.0 (тело, брокер прав и служба на Mac).
sha256 Helene-0.8.1.zip: 25f1c98bcc3eb314406713d908140581d73ea061124955cdd0c816d799a97f0f
sha256 Praxis-0.8.1.zip: 69ad2596a7ec5065d8893e66c3d720f0bc5c6dd95518af9d013bc586022a0654
sha256 Helene-0.8.1-macos-arm64.zip: 0aa39f87bcb323dd343f08531e7e55fa9555f2732e902eb2529725efd73cd954
Что чинилось
Вход в подписку не подхватывался. Первая живая установка на Mac: браузер открывается, вход проходит, а Hélène этого не видит. Реле писало учётные данные в ~/.codex/auth.json, а окно и мастер ждут их в папке установки (data/relay/local_auth); вдобавок сервер обратного вызова реле поднимало командой python3 из PATH, которой на Mac без Xcode Command Line Tools нет, хотя свой Python в поставке есть. Реле 0.8.2 в обеих сборках читает RELAY_LOCAL и RELAY_PYTHON, которые оболочка передавала всё это время. Спасибо Сергею.
Если вы уже входили на 0.8.0 и файл лёг в ~/.codex/auth.json, после обновления войдите ещё раз из Настроек, либо перенесите файл руками: mkdir -p ~/Applications/Helene/data/relay/local_auth && cp ~/.codex/auth.json ~/Applications/Helene/data/relay/local_auth/.
Однострочник установки на Mac падал на первой строке с суммой (ASSET…: unbound variable) — bash 3.2 на Mac читал букву после имени переменной как часть имени. Починено здесь и в скрипте выпуска v0.7.2.
Что нового в 0.8.0 (если пропустили)
Тело тула computer на Mac (экран, окна, ввод через CoreGraphics; дерево окна через Accessibility; два разрешения системы — «Запись экрана и системного звука» и «Универсальный доступ», после каждого обновления их надо выдать заново), брокер прав администратора через системный диалог пароля, служба без входа в систему (демон launchd от имени владельца). Подробно — в заметках к v0.8.0 и в ПЕРВЫЙ-ЗАПУСК.md архива. Живьём человеком тело, брокер и служба ещё не прогонялись — только на раннере GitHub.
Установка и обновление
macOS (Apple Silicon, macOS 14+):
curl -fsSL https://github.com/josephsteuerjr/praxis/releases/latest/download/install.sh | sh
Та же строка поверх — обновление: data/ и helene.json не трогаются; со службой обновление спросит пароль администратора дважды. Windows: «Настройки» → «О программе» → «Проверить обновления», либо руками по ОБНОВЛЕНИЕ.md.
Hélène 0.7.1
Кадр агента подешевел вчетверо, настройки разложены по смыслу, а появился раздел, где его руки наконец названы человеческим языком.
sha256 Helene-0.7.1.zip: 3e4f77bafb3bae88b5da88217c4b74d84d4c1d25fbd92b8f6c847a859766489d
sha256 Praxis-0.7.1.zip: 69da3f57b71ccb79d0fff230754cc0ab5366b221da5a04b761e4312128bbcf51
sha256 Helene-0.7.1-macos-arm64.zip: 6608154180e1b324fe51db3f62b9763e5d7344a5851cea55009cabea26b1e1d2
Кадр
Схемы рук больше не едут в каждый кадр целиком. Полный манифест — 73 451 знак: 44 % разговорного хода и 78 % кадра уходило на список из сотни инструментов, который не менялся неделями. Теперь со схемой едут тридцать рук, которыми агент ходит чаще всего, а остальные — одной строкой «имя(аргументы) — назначение»; схему любой из них он запрашивает сам, когда она нужна. Указатель весит около шести тысяч знаков вместо семидесяти трёх.
Важное для тех, кто ставит агента на GLM: этот указатель по-английски, как и схемы. В ядре он русский, и включение указателей там отменило бы английские описания 86 рук из 95 — здесь обе вещи работают вместе. У каждой переведённой строки записан отпечаток оригинала: расходятся — прибор краснеет именем руки.
Лента разговора в кадре режется по знакам. Сто двадцать пять сообщений — это потолок памяти, а не кадра: замер показал 43,5 тысячи знаков ленты при договорённых 5 500. Вытесненное уходит в свёртку тем же механизмом, что и раньше. У группы потолок свой и по умолчанию снят: в комнате на тысячу человек общий порог оставлял от разговора десять реплик за девятнадцать минут.
Свёртка прошлого стала видна нормально: потолок сводки в кадре — 12 000 знаков вместо 4 000. Сырых сообщений меньше, памяти о том, что было, — больше.
Место на диске
Появилась ретенция прогонов. Снимки того, что уехало в модель и что она ответила, копились без предела: на сервере это 28,7 ГБ из 29,5 ГБ и плюс гигабайт в сутки. Теперь снимки старше недели снимаются сами, раз в сутки. Манифесты и события не трогаются никогда — история «что было» остаётся целиком, как и прогоны, на которые ссылается незакрытая работа.
Окно
- Настройки разложены на четыре вкладки — «Агент», «Мозг и связь», «Права на этом ПК», «Программа». Четыре карточки, которые вместе решают, что агенту разрешено на этом компьютере — режим ограды, песочница, смонтированные папки и управление компьютером, — впервые оказались рядом, а не вперемешку с моделью и телефоном.
- Новый раздел «Что поручить» (Ctrl+9). Свежая установка открывалась пустым экраном: агент живой, рук у него больше девяноста, и ни одна нигде не названа словами, которыми говорят люди. Теперь есть схема того, как идёт один его ход, и двенадцать задач человеческим языком — рамки с пропусками, которые заполняете вы. В пустой переписке — четыре начала, они уходят с первым же сообщением.
Что чинилось
- Вывод системных команд читается в кодировке вашей системы. Оболочка, служба и установщик декодировали ответы
sc.exe,netshи PowerShell русской таблицей DOS. На английской, немецкой или китайской Windows человек видел кириллическую абракадабру ровно там, где текст важнее всего — в причине, по которой не встала служба. - Экспорт агента перестал показывать удачу провалом. Путь к архиву доставали из русской фразы; перевод интерфейса сломал бы это молча, а архив при этом лежал бы готовым.
sc.exeперестал молчать о своих отказах: «службы нет» и «команда не ответила за пятнадцать секунд» больше не один и тот же ответ.- Из текстов убраны имена кнопок, которые подписывает Windows. «Выполнить? «Нет» — отказ…» на экране, где вы отдаёте агенту права системы: подписи там ставит языковой пакет системы, и на английской Windows под этой фразой уже стояли Yes/No.
- Серверный шаблон конфига смотрел обновления в репозиторий, которого нет.
Слова
Программа перестала говорить своим наречием. «Рука» стала тулом — и на экране, и в
схемах, которые читает модель; «харнесс» — кодом агента, «прогон» — запуском,
«раннер» — движком, «вейки» — Пробуждениями, «агенда» — Намеченным, «галочка» —
тумблером. Список полный, с частотами и причинами, лежит в архиве.
Конституция агента, его дневник и реплики не тронуты: там это его собственные слова.
Как обновиться
«Настройки» → «О программе» → «Проверить обновления», либо руками по ОБНОВЛЕНИЕ.md из архива. Память, переписка, дневник и конституция обновление переживают: папка data не трогается.
macOS (Apple Silicon) — добавлено 19.09
В этот же выпуск добавлена сборка для Mac: Helene-0.7.1-macos-arm64.zip, рядом .sha256 и install.sh.
sha256 Helene-0.7.1-macos-arm64.zip: 6608154180e1b324fe51db3f62b9763e5d7344a5851cea55009cabea26b1e1d2
Ставится одной строкой в Терминале:
curl -fsSL https://github.com/josephsteuerjr/praxis/releases/download/v0.7.1/install.sh | sh
Нужен macOS 14 или новее и Apple Silicon. Внутри — свой Python 3.14 со всеми зависимостями, свой git, реле, ограда через seatbelt. Чего нет: управления компьютером, службы, сборки для Intel, подписи Developer ID (поэтому curl, а не архив из браузера). Дерево агента — то же, что в Windows-архиве этого выпуска; починка потолка ответа для прямого OpenAI — в 0.7.2.