feat(hands,jobs): журнал прогонов дописывается, шторм новых видов глушится громко

This commit is contained in:
hh committed 2026-09-21 00:09:04 +00:00
1 parent f3e4d51e4e
commit 58338f132a
3 files changed
+391 -45

No files matched your search

+14 -2
View File
@@ -27,7 +27,9 @@ from beaver_agent.hands.komodo_logs import (
brief,
daily,
digest,
note,
read_stack,
record,
)
from beaver_agent.vault import STATE_DIR, ZONE
@@ -39,7 +41,11 @@ if TYPE_CHECKING:
_log = logging.getLogger(__name__)
STATE_FILE = STATE_DIR / "логи-флота.json"
"""Состояние прохода: что уже видели и о чём уже сказали."""
"""Состояние прохода: что уже видели и о чём уже сказали. Перезаписывается."""
JOURNAL_FILE = STATE_DIR / "логи-флота.jsonl"
"""Журнал прогонов, только дописывается: состояние - снимок, истории в нём нет,
а пороги всплеска и глушения взяты из рассуждения и через неделю живой работы
пересматриваются по числам. Читать: `jq` по строкам, поля - см. `record()`."""
PARALLEL = 4
"""Логи тянутся с periphery: четырёх параллельных хватает, больше - грубо."""
@@ -120,9 +126,14 @@ async def logs_watch(run: JobRun) -> None:
):
seen.mark_daily(report)
seen.save()
row = record(report, ZONE) | {"pass_of_day": seen.passes_today}
try:
note(JOURNAL_FILE, row)
except OSError:
_log.exception("логи: строка прогона не дописалась в журнал")
_log.info(
"логи: новое %s, всплеск %s, стихло %s, длится %s (сводка %s), "
"не прочитано %s, стеков %s из %s",
"не прочитано %s, стеков %s из %s, приглушено %s",
len(report.new),
len(report.surge),
len(report.quiet),
@@ -131,4 +142,5 @@ async def logs_watch(run: JobRun) -> None:
len(report.trouble),
len(report.sweep.read),
report.sweep.in_scope,
len(report.muted),
)