simbiot-harness/harness
Simbiot Harness 1b8c27b292 fix(worker): null_callback_handler — BrokenPipe убивал тики с 04:11
Симптом: DigestWritten min с пустым text при живом агенте (15 tool-вызовов,
BudgetSpent писались). Корень: PrintingCallbackHandler стримит в stdout
воркера; scheduler читает capture_output=True; длинный вывод (reasoning +
Tool #N на каждый вызов) переполнял pipe → BrokenPipeError внутри
stream_async → ok=False, текст тика потерян. Воркер перезапускался каждый
тик — падения шли серией, мин-дайджесты пустые.

Результат тика живёт в JSON-файле (result_path) — печать не нужна вовсе:
create_harness(callback_handler=null_callback_handler).

E2E: воркер с 2 shell-вызовами, stdout 0 байт, ok=True, текст на месте.
2026-09-30 04:19:04 +00:00
..
__init__.py Simbiot Harness v0.1: тактовая лестница на Strands + CQRS/ES-спина 2026-09-29 15:28:50 +00:00
_fw_asr_worker.py feat(voice): транскрипция голосовых TG в рантайме — полный путь file_id→download→ASR→MessageTranscribed (t-260929171234-cad7af) 2026-09-30 00:02:30 +00:00
_llm_worker.py fix(worker): null_callback_handler — BrokenPipe убивал тики с 04:11 2026-09-30 04:19:04 +00:00
commands.py feat(delivery): автодоставка готовых артефактов в TG + orphan-requeue сирот рестартов (t-260929205927-8c20ea) 2026-09-30 01:31:03 +00:00
dashboard.html feat(dashboard): веб-дашборд задач харнеса — все задачи/статусы/размеры/уровни, лестница, эскалации, дайджесты; автообновление 5с (t-260929164722-60dae2) 2026-09-29 18:04:38 +00:00
dashboard.py feat(dashboard): веб-дашборд задач харнеса — все задачи/статусы/размеры/уровни, лестница, эскалации, дайджесты; автообновление 5с (t-260929164722-60dae2) 2026-09-29 18:04:38 +00:00
es.py feat(delivery): автодоставка готовых артефактов в TG + orphan-requeue сирот рестартов (t-260929205927-8c20ea) 2026-09-30 01:31:03 +00:00
events.db feat(tg-cmd): без-LLM команды бота /лестница /статус /задачи /помощь — мгновенные ответы сек-рефлексом + setMyCommands (t-260929210755-9bf6a6) 2026-09-30 02:30:27 +00:00
isolated_runner.py fix(spend): BudgetSpent пишется воркером инкрементально + живой usage из 9router (t-260929170544-adebea) 2026-09-29 20:20:15 +00:00
levels.py feat(rag)+fix(timeout): RAG-инструмент в тиках + хард-кап шагов воркера 2026-09-30 04:16:46 +00:00
rag_lookup.py feat(rag)+fix(timeout): RAG-инструмент в тиках + хард-кап шагов воркера 2026-09-30 04:16:46 +00:00
runtime.py fix(spend): BudgetSpent пишется воркером инкрементально + живой usage из 9router (t-260929170544-adebea) 2026-09-29 20:20:15 +00:00
scheduler.py feat(tg-cmd): без-LLM команды бота /лестница /статус /задачи /помощь — мгновенные ответы сек-рефлексом + setMyCommands (t-260929210755-9bf6a6) 2026-09-30 02:30:27 +00:00
tg_commands.py feat(tg-cmd): без-LLM команды бота /лестница /статус /задачи /помощь — мгновенные ответы сек-рефлексом + setMyCommands (t-260929210755-9bf6a6) 2026-09-30 02:30:27 +00:00
tg_inbox.db feat(tg-cmd): без-LLM команды бота /лестница /статус /задачи /помощь — мгновенные ответы сек-рефлексом + setMyCommands (t-260929210755-9bf6a6) 2026-09-30 02:30:27 +00:00
tg_inbox.py fix(tg): send_reply грузит .env до sendChatAction (свежий процесс терял индикатор); safe-restart: пост-рестарт верификация сек-тика на команде; tests/test_tg_commands.py (41 проверка) 2026-09-30 02:42:09 +00:00
voice.py feat(voice): транскрипция голосовых TG в рантайме — полный путь file_id→download→ASR→MessageTranscribed (t-260929171234-cad7af) 2026-09-30 00:02:30 +00:00