работа над пет-проектом позволяет увидеть то, чего я не получаю от агентов на работе, так как задачи разные.
Архитектура примерно такая -
⏰ cron or a command in a messenger 💬 "drop"
|
🤖 agent (local, 24/7)
|
🧹 dedup (reads 🧠, LLM reasoning)
|
🔍 search (≤3 days, multi-domain)
|
🎙️ voice (tone, length — from YAML)
|
✍️ write (self-check: 1 event per post)
|
📄 output + 🧠 memory (JSONL, monthly)
|
📬 deliver (messenger)
dual trigger: cron + manual. cron закрывает ежедневную привычку. команда в мессенджере обрабатывает запрос «хочу дроп прямо сейчас». один
и тот же pipeline, оба пути. минимум трения в обоих случаях.
voice как config file. стиль письма — тон, структура, длина — живет в YAML-файле, отдельно от логики pipeline. я могу протестировать «dry blunt» голос против «casual texting», просто поменяв одну строку в конфиге. никакого рерайта, никакого ре-промптинга. модульность — это ключ: меняешь voice, не трогая search, dedup или delivery.
voice.yaml example:
name: Drop
tone: casual, direct, slightly irreverent
style: lowercase everything. short sentences.
language:
- write like you're texting a smart friend
- all lowercase unless proper noun or acronym
- no formal connectors ("furthermore", "moreover")
- prefer "so", "basically", "turns out"
- short words over long ones
- accessible to non-native english speakers
structure:
- bold title, then body
- lead with the news, end with the signal
- one drop = one event. never combine stories.
rules:
- no preamble
- state facts, then one non-obvious observation
- keep the last line sharp. that's where the voice lives.
state management через плоский файл. для dedup используются ежемесячные JSONL-логи. агент читает их и сам решает: «та же это история или нет?», используя свой reasoning. никакой vector database, никаких embeddings-сервисов, никакой инфраструктуры. просто append-only текстовые файлы в качестве памяти. работает лучше, чем ожидаешь, потому что semantic similarity — это буквально то, что LLMs и так умеют делать.
Example history log
{"date":"2026-05-09","slug":"warm-chatbots-accuracy","summary":"Oxford study shows friendlier chatbots make 10-30% more errors","entities":["Oxford","Nature"],"embedding_anchor":"Oxford researchers find warm chatbot fine-tuning reduces accuracy by up to 30 percent"}
{"date":"2026-05-09","slug":"peak-martech","summary":"Martech landscape hits plateau at 15,505 products","entities" ["ChiefMartec"],"embedding_anchor":"Marketing technology landscape stops growing after fifteen years of expansion"}
почему работает в этом случае (с агентами) хорошо:
- Append-only — просто echo >> file, ничего парсить не нужнл
- Readable — лего читать и проверять
- Greppable — grep "2026-05" history.jsonl дает всю историю за мая
- No schema migration — гибкая схема - можно добавлять новые поля по желанию
главный инсайт: делай generic.
я всё еще формирую свой "вкус" в проектировании agentic workflows, и вещь, к которой я постоянно возвращаюсь: не привязывайся к конкретному вендорскому agent framework.
мои skills, voice configs и файлы истории — это просто markdown и YAML. они заведутся на kiro-cli, claude code, open-claw или на чем угодно, что выйдет в следующем месяце. ландшафт agentic tooling меняется слишком быстро, чтобы ставить на один runtime.
слой creative direction — та часть, которая действительно твоя, — должен быть портативным.