Кто на стажировку в команду Claude Cowork к Борису Черни?
Только не в Claude Cowork, а в LocalDesk.
И не к Борису, а к Валере @neuraldeep
Если вдруг кто пропустил, Валера Ковальский и куча народа уже 10 дней пилят свой Cowork, который работает на вашем компе на любых моделях.
https://github.com/vakovalskii/LocalDesk
https://t.me/neuraldeep/1858
https://t.me/neuraldeep/1874
Как задрот агентских циклов, давно хотел закопаться, как все устроено, только сегодня с утра дошли руки:
- в каждый запрос к LLM передаётся 15-45 tool definitions в зависимости от настроек - модель видит все доступные инструменты сразу (удачи слабым моделькам на 45 тулах ☕️)
- цикл работает до тех пор, пока в ответе есть tool_calls - если массив пустой, выводим финальный ответ и завершаемся
- ответ читаем в режиме стриминга: текст пушим в UI сразу, но tool_calls накапливаем - аргументы приходят чанками, JSON парсим только после полного ответа
- модель может вернуть несколько tool calls в одном ответе (parallel_tool_calls: true), но выполняем их строго последовательно через for await - параллелизация не реализована 💡
- после выполнения каждого tool результат добавляется в массив messages как { role: 'tool', content: output }, на следующей итерации модель видит полный контекст
- контекст растёт монотонно: system prompt + все user messages + все assistant messages + все tool results, truncation и summarization отсутствуют 💡
- tool results не обрезаются - если read_file вернул 5000 строк, все 5000 строк попадают в контекст 💡
- loop detection: sliding window из 5 последних вызовов, если 5 подряд одинаковых tool names - инжектим hint "Попробуй другой подход", даём 5 retry, потом принудительный стоп
- batch tool calls (2+ инструмента в одном ответе) сбрасывают счётчик loop detection - считаются намеренным поведением модели
- не можем отправить новое сообщение, чтобы дать подсказку агенту в середине цикла, должны отменить выполнение или дожидаться конца 💡
Очень круто! Но самое крутое впереди. Многие спрашивают, как вкатиться в разработку агентов, с чего начать. Можно начать с простых примеров на коленке, которые были в этом посте. Но это ни разу не похоже на продакшен, просто мини проектики, пощупать самую основу.
А LocalDesk - похоже.
Смотрите, в тех местах, где стоят 💡 можно придти и сделать лучше - оптимизировать расход токенов, увеличить скорость за счет параллельности, сделать компакшен контекста.
Хотите более серьезных приключений - можно сделать субагентов, поддержать MCP, прикрутить донаты в конце концов!
Кстати, именно так и выглядит реальная разработка агентов в проде, на само ядро не тратится много времени, а на управление памятью, оптимизации контекста, детализацию в логах, трассировки - полно. А потом еще начинаются корзинки и evals, и совсем потрачено…
Так что если кто-то хотел "поизучать агентов пару часиков на выхах", вот самый лучший способ.
Еще раз ссылка на GitHub
И чатик, где идет движуха: @neuraldeepchat
———
Пойду тоже запилю что-то, а то Валера здороваться перестанет...
Post #11621
78
Forwarded from Остриков пилит агентов