Наткнулся на свежую статью из University of Science and Technology of China, и она меня зацепила. Не потому что там какой-то прорыв в архитектуре нейросетей — как раз наоборот. Решение настолько простое, что удивляешься: почему раньше так не делали?
Проблема, которую они решают, знакома каждому, кто пытался использовать ChatGPT или Claude для серьёзного ресёрча. Вы просите модель изучить тему, она начинает искать, читать страницы, накапливать информацию... и в какой-то момент контекстное окно заполняется. Новые факты начинают вытеснять старые. Отчёт получается поверхностным, потому что модель буквально забывает, что нашла в начале.
Авторы предлагают решение, которое я бы назвал "дай агенту блокнот". Серьёзно, вся идея сводится к тому, что агент пишет структурированные заметки в файловую систему, а потом использует их при написании отчёта. Контекстное окно больше не бутылочное горлышко — вся информация лежит в файлах, агент подгружает только то, что нужно прямо сейчас.
Система состоит из двух агентов. Первый — Context Builder — работает как библиотекарь. Он серфит интернет, находит релевантные страницы, и вместо того чтобы держать их в контексте, сохраняет сырые страницы в папку sources/ и пишет структурированные заметки в knowledge_base/.
Второй агент — Report Writer — вообще не имеет доступа к интернету. Он работает только с тем, что насобирал первый агент. Открывает нужные файлы, читает заметки, пишет отчёт секция за секцией.
Мне понравилось, как они организовали базу знаний. Для запроса про топ-10 страховых компаний агент построил структуру с 98 заметками, 59 архивированными источниками. Это намного больше, чем влезет в любое контекстное окно.
Инструменты у агентов минималистичные. Для работы с файлами: ls, grep, read_file, insert, delete, replace. Для веба: search_web (Google SERP API) и read_webpage (Jina AI для парсинга).
Важный момент — и read_file, и read_webpage поддерживают пагинацию. Агент может читать длинный документ по частям, не забивая контекст целиком. Казалось бы, мелочь, но именно такие детали отличают рабочую систему от прототипа.
Помимо результатов работы, в workspace живут служебные файлы. Это то, что позволяет агенту не терять контекст между сессиями и проводить self-check.
Файл todos.md:
- [COMPLETE] Собрать топ-10 страховых компаний по активам - [IN-PROGRESS] Сравнить 5-летний рост - [PENDING] Оценить потенциал на китайском рынке
Файл logs.md:
# Round 1 Self-check: Tasks Complete? NO Missing: UNECE/NHTSA primary sources Decision for next round: fetch alternative endpoints # Round 2 Workspace status: Added international/UNECE evidence Self-check: Tasks Complete? YES
Агент в начале каждой сессии читает эти файлы, понимает, что уже сделано, и продолжает с нужного места. В конце — проверяет себя по чеклисту. Если что-то не так, помечает задачу как IN-PROGRESS и продолжает в следующем раунде.
На бенчмарке DeepResearch Bench (100 PhD-уровневых задач) FS-Researcher с Claude-Sonnet-4.5 показал 53.94 RACE против 50.92 у лучшего конкурента. Разница в 3 пункта может показаться небольшой, но посмотрите на breakdown по метрикам:
Comprehensiveness: +3.74 к лучшему конкуренту
Insight: +4.40
Instruction Following: +0.75
Readability: +0.93
Рост именно по Insight и Comprehensiveness — это то, что страдает при сжатии контекста. Модель не забывает ранние находки, может строить более глубокие связи.
Красивый результат из статьи: чем больше раундов Context Builder, тем лучше отчёт.
3 раунда: 21.6 источников, 17.1 заметок, RACE 51.18
5 раундов: 33.3 источников, 18.0 заметок, RACE 52.37
10 раундов: 38.8 источников, 20.5 заметок, RACE 53.05
Видна diminishing returns — прирост от 3 до 5 раундов больше, чем от 5 до 10. База знаний постепенно насыщается, новые раунды добавляют всё меньше полезной информации.
Забавное наблюдение: Readability слегка падает при 10 раундах (51.93 → 51.66). Больше информации — более технический и плотный текст. Логично.
Авторы проверили, какие компоненты критичны. Убрали Persistent Workspace — RACE упал на 4.07. Убрали разделение на два агента — упал на 10.35. Убрали посекционное написание — упал на 5.13.
Главный инсайт: разделение на два агента критично. Когда один агент и ищет, и пишет, он начинает синтезировать слишком рано, не собрав достаточно информации. Я это замечал и на своём опыте с Claude Code — если сразу просить и исследовать, и делать, результат хуже, чем если разбить на два этапа.
Логика ReAct-цикла, которую используют агенты, выглядит примерно так:
def react_loop(model, prompt, tools, max_steps=100): history = [] for i in range(max_steps): thought, action = model.generate( history=history, prompt=prompt ) if action.tool in tools: observation = tools[action.tool].execute(action.args) else: observation = "Unknown tool" history.append({ 'thought': thought, 'action': action, 'observation': observation }) if action.tool == 'finish': break return history
Чеклист для Context Builder, который агент использует для self-check:
1. Tasks Complete: Are all items in index.md marked [COMPLETE]? 2. Hierarchy Match: Does directory structure mirror Target Hierarchy? 3. No Placeholders: No non-descriptive filenames (source_1, notes.md)? 4. Full Traceability: Every note has citations to sources/? 5. Exhaustive Coverage: Can I raise a question not answered by KB? 6. Information Density: Random .md has specific data, not vague summaries?
Авторы честно пишут, что система требует сильных моделей. На GPT-5-mini или чём-то слабее агенты чаще делают ошибки в файловых операциях и останавливаются раньше времени. Это понятно — работа с файловой системой требует хорошего reasoning и function calling.
Ещё момент: веб-контент может содержать ошибки, которые просочатся в отчёт. Система сохраняет провенанс (откуда что взялось), но факт-чекинг остаётся на пользователе.
Если вы работаете с Claude Code, Cursor или Clawdbot — вы уже используете похожую парадигму. Файловая система как внешняя память — это не rocket science. Но статья показывает, как делать это систематически:
Разделяйте сбор информации и синтез. Не пытайтесь делать всё в одном проходе — это главный урок из ablation studies.
Структурируйте промежуточные результаты. Иерархия папок помогает и агенту, и вам ориентироваться в собранном материале.
Сохраняйте провенанс. Каждый факт должен ссылаться на источник. В статье это реализовано через citations в заметках.
Используйте control files. TODO-листы, чеклисты, логи — это то, что позволяет итерировать без потери контекста.
Итерируйте. Несколько раундов улучшения дают лучший результат, чем один длинный проход.
По сути, FS-Researcher — это формализация того, как работает хороший исследователь-человек. Мы не держим всё в голове, мы делаем заметки, организуем их в систему и обращаемся к ним при написании текста. Оказывается, если научить этому ИИ — он тоже начинает работать лучше.
Ссылка на оригинал свежей статьи в токены на ветер — иногда пишу про такое, а иногда о том, как LLM думают, или просто притворяются.
Источник


