Написав ряд велосипедов для ИИ-агентов на temporal.io, пришло понимание что надо подняться на уровень выше, и как-то структурировать свои подходы. Набрел на https://github.com/dynamiq-ai/dynamiq, и понял что можно в очередной раз переписать то, что уже и так работает.
Что понравилось
1) Есть возможность работать со своими локальными моделями
2) Есть готовый туллинг (простой, но пока его достаточно)
3) Примитивы готовы к работе, и понятно структурированы (не то что я тоже самое не выделял ранее, но когда мысли совпадают - приятно)
Что понравилось
1) Есть возможность работать со своими локальными моделями
2) Есть готовый туллинг (простой, но пока его достаточно)
3) Примитивы готовы к работе, и понятно структурированы (не то что я тоже самое не выделял ранее, но когда мысли совпадают - приятно)
GitHub
GitHub - dynamiq-ai/dynamiq: Dynamiq is an orchestration framework for agentic AI and LLM applications
Dynamiq is an orchestration framework for agentic AI and LLM applications - dynamiq-ai/dynamiq
Продолжаю развлекаться с temporal.io. Сегодня речь пойдет про его функционал расписаний — https://docs.temporal.io/develop/go/schedules. Основное зачем использую — у меня в проекте есть активность которая по запросу индексирует документы для RAG. Но есть неприятность — люди иногда эти документы обновляют и требуется перестраивать весь RAG раз в какое-то время (от 2 часов до суток). По старинке такое обычнно добавляют в crontab и живут себе припеваючи. Но, в моем случае надо чтобы
1. одинаковые источники не запускались в один момент времени. Тогда городим огород из flock
2. Вторая проблема — этих источников N. Управляем ими из админки, и поэтому, либо надо в расписание добавлять кучу кронов с разными параметрами. Или умный контроллер на входе их запускает параллельно. Но это тоже не выход, расписания у всех разные
На помощь приходит Temporal где уже написанную активность просто ставим через API в нужное нам расписание, и оно запускается на выделенном вокере строго по нему.
Джыпытя мне тут кратко рассказала что еще оно умеет, прошу ознакомиться
Ключевые возможности (Temporal Schedules, Go SDK)
* Гибкий Spec: календарные правила, интервалы, cron-строки, объединение нескольких правил и исключения; поддержка таймзон (по умолчанию UTC), аккуратность с DST, есть jitter.
* Жизненный цикл из коробки:
* Пауза/возобновление:
* Ручной триггер:
* Backfill: дозапуск “пропущенных” окон с выбором политики пересечений.
* Политики пересечений (overlap):
* One-shot отложенный старт:
* Автоудаление: когда расписание “выработано”, сервис удаляет его (момент не гарантируется).
Инструменты
* Доступно в SDK (Go/TS/Python/.NET) и в Temporal CLI для администрирования.
Ссылки
* Schedules — Go SDK: [https://docs.temporal.io/develop/go/schedules](https://docs.temporal.io/develop/go/schedules)
* Temporal CLI, schedule: [https://docs.temporal.io/cli/schedule](https://docs.temporal.io/cli/schedule)
1. одинаковые источники не запускались в один момент времени. Тогда городим огород из flock
# не запускать второй экземпляр, если первый ещё идёт
* * * * * /usr/bin/flock -n /var/lock/myjob.lock -c "/usr/local/bin/job --param A"
2. Вторая проблема — этих источников N. Управляем ими из админки, и поэтому, либо надо в расписание добавлять кучу кронов с разными параметрами. Или умный контроллер на входе их запускает параллельно. Но это тоже не выход, расписания у всех разные
На помощь приходит Temporal где уже написанную активность просто ставим через API в нужное нам расписание, и оно запускается на выделенном вокере строго по нему.
Джыпытя мне тут кратко рассказала что еще оно умеет, прошу ознакомиться
Ключевые возможности (Temporal Schedules, Go SDK)
* Гибкий Spec: календарные правила, интервалы, cron-строки, объединение нескольких правил и исключения; поддержка таймзон (по умолчанию UTC), аккуратность с DST, есть jitter.
* Жизненный цикл из коробки:
Create / Describe / List / Update / Delete через ScheduleClient/Handle.* Пауза/возобновление:
Pause / Unpause для временной остановки будущих запусков.* Ручной триггер:
Trigger() — немедленный запуск по расписанию (с учётом overlap-политики).* Backfill: дозапуск “пропущенных” окон с выбором политики пересечений.
* Политики пересечений (overlap):
Skip, BufferOne, BufferAll, AllowAll, CancelOther, TerminateOther.* One-shot отложенный старт:
StartDelay для единичного запуска в будущем.* Автоудаление: когда расписание “выработано”, сервис удаляет его (момент не гарантируется).
Инструменты
* Доступно в SDK (Go/TS/Python/.NET) и в Temporal CLI для администрирования.
Ссылки
* Schedules — Go SDK: [https://docs.temporal.io/develop/go/schedules](https://docs.temporal.io/develop/go/schedules)
* Temporal CLI, schedule: [https://docs.temporal.io/cli/schedule](https://docs.temporal.io/cli/schedule)
docs.temporal.io
Schedules - Go SDK | Temporal Platform Documentation
Schedule Workflows, start them with delays or as Temporal Cron Jobs using the Go SDK. Master scheduling, backfilling, pausing, deleting, and updating Workflows.
Сегодня поговорим про DevLog. DevLog - то как я его вижу, это записи по мере разработки проекта. До эпохи нейросетей обычно такие вещи мы отражали во внутренней документации проекта. Сегодня можно отдать рутину по саммаризации правок ИИ агентам, и они будут сами выполнять эту важную, но монотонную работу.
Зачем вам он вообще нужен? Ну, во-первых, понять во времени как менялся проект. Вам это позволит совершенствоваться, или вспомнить позже какое-то удачное решение. Во-вторых, он нужен ИИ агентам, чтобы иметь контекст разработки в целом, и навигацию по основным этапам. Так как в конечном счете это все равно текст, он будет успешно обработан и агент будет руководстоваться логикой правок, который был описан в логе.
Ну и правило для Cursor как бонус
Зачем вам он вообще нужен? Ну, во-первых, понять во времени как менялся проект. Вам это позволит совершенствоваться, или вспомнить позже какое-то удачное решение. Во-вторых, он нужен ИИ агентам, чтобы иметь контекст разработки в целом, и навигацию по основным этапам. Так как в конечном счете это все равно текст, он будет успешно обработан и агент будет руководстоваться логикой правок, который был описан в логе.
Ну и правило для Cursor как бонус
---
alwaysApply: true
---
# DevLog Documentation Rule
## Когда создавать DevLog файлы
При завершении работы над задачей, фиксом или значительным изменением в коде, всегда создавай файл с кратким описанием в директории [docs/devlog/](mdc:docs/devlog/).
## Формат названия файла
Название файла должно следовать формату:
XXXX-краткое-описание-изменений.md
Где:
- XXXX - четырёхзначный порядковый номер (0001, 0002, 0003, и т.д.)
- - - дефис-разделитель после номера
- краткое-описание-изменений - описание строчными буквами (lowercase), слова разделены дефисами
- .md - расширение Markdown файла
### Примеры правильных названий:
- ✅ 0001-multi-source-search-implementation.md
- ✅ 0002-fix-authentication-bug.md
- ✅ 0003-add-gitlab-integration.md
- ✅ 0123-optimize-qdrant-queries.md
### Примеры неправильных названий:
- ❌ MULTI_SOURCE_SEARCH_SUMMARY.md (нет индекса, заглавные буквы, подчёркивания)
- ❌ fix-bug.md (нет индекса)
- ❌ 1-Fix-Bug.md (индекс не 4 цифры, заглавные буквы)
## Определение следующего номера
Перед созданием нового файла:
1. Проверь содержимое директории [docs/devlog/](mdc:docs/devlog/)
2. Найди файл с максимальным индексом (например, `0042-...`)
3. Используй следующий номер (`0043`)
4. Если директория пуста, начни с 0001
## Структура DevLog файла
Файл должен содержать:
1. Заголовок - краткое название задачи/фикса
2. Проблема (🎯) - описание проблемы или задачи
3. Решение (✅) - описание реализованного решения
4. Изменённые файлы (📝) - список изменённых файлов с кратким описанием
5. Как протестировать (🚀) - инструкции для проверки изменений
6. Важные детали (⚙️) - дополнительная информация, особенности реализации
7. Итог (🎉) - краткий summary результата
### Пример структуры:
# Краткое описание задачи
## 🎯 Проблема
Описание проблемы...
## ✅ Решение
Описание решения...
## 📝 Изменённые файлы
1. путь/к/файлу.py - что изменено
2. путь/к/другому/файлу.ts - что изменено
## 🚀 Как протестировать
Инструкции для тестирования...
## ⚙️ Важные детали
Дополнительная информация...
## 🎉 Итог
Краткий summary...
## Когда НЕ создавать DevLog
Не создавай DevLog файлы для:
- Мелких опечаток или исправлений форматирования
- Обновления документации без изменений в коде
- Рефакторинга без изменения функциональности (если только это не большой рефакторинг)
## Примеры использования
### Пример 1: Исправление бага
Файл: docs/devlog/0001-fix-search-single-source-bug.md
Содержание: Описание проблемы с поиском только в одном источнике и реализованное решение
### Пример 2: Новая фича
Файл: docs/devlog/0002-add-jira-integration.md
Содержание: Описание интеграции с Jira
### Пример 3: Оптимизация
Файл: docs/devlog/0003-optimize-embedding-performance.md
Содержание: Описание оптимизации производительности embeddings
## Важно
- Всегда проверяй существующие файлы в [docs/devlog/](mdc:docs/devlog/) перед созданием нового
- Используй строчные буквы в названии (lowercase)
- Разделяй слова дефисами, не используй underscores или CamelCase
- Пиши на русском языке в содержимом файла (если это основной язык проекта)
- Используй эмодзи для визуальной структуры (🎯 ✅ 📝 🚀 ⚙️ 🎉)
👍3
Наконец-то появился Plan-Mode в Cursor.
Кто не в курсе, обычный эффективный цикл работы с агентами - создаем MD-план на проект, описываем в директории docs/ все этапы разработки, и идем по чеклисту, скрамливая по файлику за раз агенту, и тот реализует требования. Просто и понятно.
Кто был ленивый - использовал MCP TaskMaster. Но проблема его была в том, что он генерил тонну не нужных реализаций и надо было вычищать.
Посмотрим что можно сделать в реализации от Cursor
https://cursor.com/blog/plan-mode
Кто не в курсе, обычный эффективный цикл работы с агентами - создаем MD-план на проект, описываем в директории docs/ все этапы разработки, и идем по чеклисту, скрамливая по файлику за раз агенту, и тот реализует требования. Просто и понятно.
Кто был ленивый - использовал MCP TaskMaster. Но проблема его была в том, что он генерил тонну не нужных реализаций и надо было вычищать.
Посмотрим что можно сделать в реализации от Cursor
https://cursor.com/blog/plan-mode
Cursor
Introducing Plan Mode · Cursor
Cursor can now create plans, research your codebase, and run agents for significantly longer.
👍1
Неплохая статья подумать о том куда все идет. У самого есть пара идей, выложу на medium.com как допишу и соберу все мысли во едино. https://www.ibm.com/think/insights/artificial-intelligence-future
Ibm
The Future of Artificial Intelligence | IBM
Between now and 2034 AI will become a fixture in many aspects of our personal and business lives. These are some of the advancements in AI we should see in the next ten years.
Накидал статью по мотивам - https://medium.com/@vinogradoff/effective-ai-87325da67a38
Medium
Effective AI
The Future of xLM Computing
В Cursor завезли Debug-режим. Раньше тоже самое можно было сделать через режим планирования, где ты описываешь проблему, и просишь ее исследовать. Теперь флоу упростился - скидываешь логи, контекст и ждешь решения. Работает не с первого раза, много пишет отладочных логов, надо за этим следить. Но в целом направление верное. Давно такого не хватало. https://cursor.com/blog/debug-mode
Cursor
Introducing Debug Mode: Agents with runtime logs · Cursor
Debug Mode helps you reproduce and fix the most tricky bugs.
claude-code-main.zip
10.5 MB
На днях стало известно что в сеть утекла сборка Claude Code. Среди версий которые распространяли были и просто CLI Rust утилиты, но вот тот самый агент - https://gitverse.ru/anarchic/claude-code. Качаем, пока юристы Антропика не добрались. Кто не успел, забираем архив из ТГ
Кто устал от Dify/Langflow/n8n и прочих Apache NiFi узловых интерфейсов, тому предлагаю посмотреть в сторону нормального человеческого кода и затестить Eino AI Framework https://www.cloudwego.io/docs/eino/overview/bytedance_eino_practice/. Попутно предлагаю таки поставить neovim со всеми нужными плагинами, и подетоксится от нейро-кодинга в течение выходных. Я так и сделал.
CloudWeGo
ByteDance LLM Application Go Framework — Eino in Practice
Preface Building LLM-powered applications is like coaching a football team: components are players, orchestration is the strategy, and data is the ball flowing through the team. Eino is ByteDance’s open-source framework for LLM application development — stable…
Cursor прислал рефералку. Скида в 50% первый месяц, а мне всякие бонусы) У кого еще не стоит или кто задумался приобретать платную версию вот вам рефка - https://cursor.com/referral?code=MANDFM4SBMQB
Cursor
Cursor - The best way to code with AI
Built to make you extraordinarily productive, Cursor is the best way to code with AI.
Коллеги подкинули на изучение multica.ai, на выходных ставлю его в свой пет-проект и на следующей неделе скину результаты в канал. Пока смотрим обзор-сравнение. Есть еще в планах это подружить с Hermes, но это надо разобраться с OpenRouter-моделями, пока не до этого. Смотреть тут - https://youtu.be/gh9DAo1uKy4?si=DDe06pDOwEjxuBH6
YouTube
Multica vs Paperclip AI: Which Agent Platform Wins? 🏆 Full Demo & Comparison
Discover which AI agent platform reigns supreme in this in-depth comparison of Multica and Paperclip AI. See a full demo and get first impressions of these powerful tools.
• 🤖 Full demo of Multica and Paperclip AI
• 🔍 In-depth comparison of features and…
• 🤖 Full demo of Multica and Paperclip AI
• 🔍 In-depth comparison of features and…
Поигрался с multica.ai. За день собрал команду агентов, решил вопросы с GitOPS, наткнулся на проблему с тестированием, все удачно порешал. Добавил релиз-инженера, и зашевелилось. К концу дня узнаем работает ли схема "Написал бизнес-тикет - получил готовый релиз"
Готов вердикт по multica.ai - по итогу, 4 дня работы агентов, 400 млн. входящих токенов и 2 млн исходящих, почти полный Cursor Pro+ сжег в минус. Сделал 92 задачи, два регресса, пересобрал два раза пайплан из агентов. И вишенкой на торте - сам сделал stage-релиз и запушил в Gitlab. Однозначно, инструмент хороший. От вас требуется 1) понимание работы агентов 2) понимание процесса разработки 3) настроенные qa-gates и stage 4) понимание что вы делаете и что вы ему делегируете. Ибо он мне в 7 утра, пока я спал, победоносно сделал релиз. Два раза было такое, что я получил по 100 бранчей с фичами и раздолбанный в хлам stage, но внедрив еще релиз-инженера и докрутив qa, все вопросы я решил в автоматическом режиме. После ручной проверки было 1 замечание, последние правки немного разрушили граф выкатки миграций, но починилось через
django orm merge нативненько, и один прогон агентами. Прогресс не остановить, человекам - приготовитьсяРаботая с multica пришел к выводу, что не достаточно настроить процессы, тулинг и окружение. Я упустил одну важную, первостепенную вещь, при работе в распределенной агентной сети - это Память. Мусоля эту идею, накидал несколько подходов для решения задач по параллельной разработке - когда в единицу времени приходят не связанные между собой, но влияющие на конечный результат, требования. Оказалось, что проблема гораздо шире - и это долгосрочная память агентов и когнитивные способности. На практике, чтобы вы могли просто поставить кучу тикетов оркестратору, и потом ждать результата в течение недели, вам надо организовать не просто процесс координации, а инженерную систему памяти, с которой будут работать все агенты, на постоянной основе. Они должны пополнять артефактами эту базу данных. К сожалению, это не простая задача. Вам придется строить некий слой работы с памятью за пределами сессий агентов, и это нечто гораздо более сложное чем RAG - это система доступа и обновления долгосрочной памяти проекта. Наткнулся на статью на medium, которая хорошо описывает данную задачу (доступна только для тех у кого там есть подписка, к сожалению) - https://richmondalake.medium.com/ushering-in-the-era-of-agent-memory-engineering-c03cde2e1962. Из проектов, которые могут помочь разобраться в тематике, наверное стоит посмотреть на MemGPT (https://research.memgpt.ai/). Продолжение следует
Medium
Ushering in the Era of Agent Memory Engineering
The engineering discipline highly concerned with building intelligent systems that act independently and adpat to new information