Skip to content

v1.34.2 — mandatory memory persistence step for hosted scout agents

Choose a tag to compare

@Exzentttt Exzentttt released this 12 May 00:04
· 352 commits to main since this release

Adds mandatory write_memory step to RedditScout-class workflow. Stateless cron ticks re-derived blog dedup, DM acks, and pain-point scoring every cycle.

Root cause

agent-runner/tests/evals/cases.py defined Steps 0..5. Step 5 label MANDATORY FINAL STEP — free-tier OpenRouter models stop on FINAL and emit summary text immediately. MemoryToolset registered but never invoked; workspace memory/ empty across runs.

Fix

  • evaluators.py:264 WritesMemory evaluator — accepts write_memory(key, value) or write_file path=memory/MEMORY.md.
  • cases.py Step 5 → MANDATORY (drop FINAL). New Step 6 MANDATORY TRULY FINAL STEP requires run_date / blog_post_id / acked_dm_ids / top_pain / session_id. Explicit DO NOT write summary yet gate between.
  • test_reddit_scout_evals.py adds scout_bad_no_memory case + (scout_bad_no_memory, WritesMemory) expected failure.
  • Prod hosted RedditScoutHosted (hosted_id e3a25cae, agent_id 843dd4dc) updated via PATCH /hosted-agents/{id} + POST /force-restart.

Commits: aebb8f8, 235e0ec.

Tests

uv run pytest agent-runner/tests/evals/test_reddit_scout_evals.py -q → 86 passed, 6 skipped (7 cases × 12 evaluators + 2 sanity; skipped = REAL_LLM=1 parametrized over 6 OpenRouter free models).

What owners need to do

Hosted agents with scout-then-publish workflow: add Step 6 write_memory to system prompt, drop word FINAL from non-terminal step labels. Other agents: nothing.


Русская версия

Добавлен обязательный шаг write_memory в workflow RedditScout-класса. Stateless heartbeat-тики каждый раз заново считали blog dedup, DM acks и pain-point scoring.

Первопричина

agent-runner/tests/evals/cases.py определял Steps 0..5. Label Step 5 — MANDATORY FINAL STEP. Free-tier модели OpenRouter останавливаются на слове FINAL и сразу выдают summary. MemoryToolset зарегистрирован, но не вызывался; директория memory/ в workspace оставалась пустой между прогонами.

Исправление

  • evaluators.py:264 evaluator WritesMemory — принимает write_memory(key, value) или write_file path=memory/MEMORY.md.
  • cases.py Step 5 → MANDATORY (без FINAL). Новый Step 6 MANDATORY TRULY FINAL STEP требует run_date / blog_post_id / acked_dm_ids / top_pain / session_id. Между Step 5 и Step 6 — явный gate DO NOT write summary yet.
  • test_reddit_scout_evals.py добавляет кейс scout_bad_no_memory + ожидаемое падение (scout_bad_no_memory, WritesMemory).
  • Production hosted RedditScoutHosted (hosted_id e3a25cae, agent_id 843dd4dc) обновлён через PATCH /hosted-agents/{id} + POST /force-restart.

Коммиты: aebb8f8, 235e0ec.

Тесты

uv run pytest agent-runner/tests/evals/test_reddit_scout_evals.py -q → 86 passed, 6 skipped (7 кейсов × 12 evaluators + 2 sanity; skipped = REAL_LLM=1, параметризовано по 6 free-моделям OpenRouter).

Что нужно сделать владельцам

Hosted-агенты с workflow scout-then-publish: добавить Step 6 write_memory в system prompt, убрать слово FINAL из label-ов нетерминальных шагов. Остальным — ничего.