temp
Схема проекта — в CLAUDE.md.
Мысли
- 30.09 Конвейер: Скелет → Раздуть → Банки → Под вакансию; сырьё (правлю руками) → агенты раздувают → банк → выжимка под резюме.
- 30.09 Агенту дизайна — вакансию в контекст: архитектура в их стеке и на их языке.
- 30.09 Легенда = мой опыт, душные детали наспех; агент достраивает общепринятую архитектуру, ловит чушь; я валидирую.
- 30.09 Тесты GPT-Live: Playground +
make mic. - 30.09
career-ops— разобрать под шаг «Под вакансию». - 30.09 Раздуть = полный system design проекта: стек, архитектура, команда и кто чем занимался.
- 30.09 Сырьё — единственный источник: всё остальное перегенерируется из него; тесты агентов — тоже на нём.
- 30.09 Сегменты ответвлений — общие для всех проектов плюс шаблон под тип (аномалии, рексис, LLM-бот).
- 30.09 Опросника на старте нет: сырьё даю сам, полно; пустые ячейки добивают агенты.
- 01.10 Без опросника LangGraph не нужен: граф — обычный Python.
- 04.10 Агент зовёт Claude Agent SDK напрямую, без
lm; чистый вызов —setting_sources=[](CLAUDE.md не читается, проверено),tools=[],cwd=/tmp. - 04.10 Узел стека — агент с инструментами: поиск по кейсам в
refs/и веб, несколько ходов. - 01.10 Реализация: raw/ → agent/build.py по ветвям параллельно → build/ в git ради diff → судья raw vs build.
- 01.10 Схема: главная — цепочка шагов, клик → маленькая Mermaid-схема шага; источник — schema.md, растём по TODO.
- 02.10 Банк по Karpathy LLM Wiki: raw/ неизменно, wiki/ пишет LLM, index.md + log.md, triage «новое/обновить», lint.
- 02.10 Каркас — код; LLM решает только развилки enum-ответом. Воркер на проект пишет в wiki/, отдаёт путь+сводку.
- 02.10 Данные — на человека: legends/<имя>/raw и bank; агент один. Другой профиль — просто новый человек.
- 02.10 System Design слоями: паттерн домена → абстрактные компоненты → стек; инструменты — только на последнем слое.
- 02.10 Ресёрч стека — свой, не готовый DR: каналы GitHub API, pypistats/npm, HN, инженерные блоги через поиск с фильтром доменов.
- 02.10 LLM предлагает кандидатов, цифры (звёзды, релизы, загрузки) — только из API; общепринятый = независимые источники + живой репо + скачивают.
- 02.10 open_deep_research архивирован 21.08.2026 — берём паттерн, код-продолжение: langchain-ai/deepagents.
- 04.10 Образец ресёрч-агента — HF open_Deep-Research на smolagents: CodeAgent пишет действия кодом, текстовый браузер.
- 04.10 Слой «High-level design»: «проследи путь данных от источника до результата: где лежат, кто и когда преобразует, где состояние».
- 04.10 Источники кейсов скачаны для разведки, в базу пока не сводим: ml-cases/ (GitHub), llmops-db/ (ZenML, HF).
- 02.10 Идея на потом: подслой «режим инференса» (онлайн / батч) между паттерном и компонентами.
- 02.10 Стек агенты ресёрчат по компоненту: самый популярный инструмент под роль (Feature Store → Feast: Купер, Selectel).
- 02.10 System Design строится из самого проекта, без зоны ответственности человека; роль — отдельным слоем потом.
- 02.10 Запись в банк: Pydantic-схема → md с frontmatter, файл на проект; upsert по id, хэш сырья — пропуск без изменений.
- 02.10 Уточнения — пакетом до брифа; проект пишется одним вызовом; каждое утверждение ссылается на кусок raw/.
- 01.10 Ветви проекта общие для всех профессий; роль из профиля — фокус агента, не отдельный набор.
- 30.09 Ветви и ячейки — из стандартного фреймворка ML system design.
- 30.09 Образцы архитектуры: STORM (план → вопросы по перспективам → статья), open_deep_research, spec-kit.
- 30.09 Агента отлаживаем на публичном кейсе: есть эталон, догадки проверяются объективно.
- 30.09 Тот же агент — любому: надиктовал своё, получил базу; агент поверх базы, не морда.
- 30.09 Стек — Claude Agent SDK: граф шагов в коде, каждый шаг — чистый вызов со своим промптом; плагин cc — потом.
- 04.10 Отчёт агента об инструментах — трейс вызовов из потока SDK в build.py: самоотчёт в промпте не проверить.
- 05.10 Страницу, не взятую WebFetch (403), stack читает через r.jina.ai/
, Chrome — последним: дешевле и без капчи; это способ чтения, не готовое решение. - 05.10 Браузер stack — белый список: вкладки, navigate, get_page_text.
- 05.10 Страница прогонов → VitePress + Vue Flow: данные отдельно (build_view.py → JSON), интерфейс отдельно; план — tools/view/plan-vitepress.md, делаем позже.
- 05.10 Голос: Stop-хук voice.py, только при .claude/voice; новый ответ обрывает старый.
- 05.10 Голос — только на iPhone, Siri: пересказ Gemini 3.8 Flash → пуш Bark → «Команды» iOS 27 «Произнести текст» — надёжно; без радио, VLC, страницы, Discord, Paseo, ntfy, edge-tts и OpenAI.
- 05.10 Озвучка на маке выключена флагом MAC_VOICE: Gemini TTS 3.8 Flash-Lite, Kore, стримом в sox (у 3.8 Flash TTS на Tier 1 лимит 100 запросов/день).
- 05.10 На потом: TTS через OpenRouter /api/v1/audio/speech — те же цены, без лимитов Google и без SOCKS.
- 05.10 Свой голос файлом в iOS 27 нестабилен (автоматизация то не запускается, то опаздывает, то повторяется): edge-tts на dnk → https://tts.devml4dbs.duckdns.org/last.mp3 → «Получить содержимое URL» + «Воспроизвести звук».
- 06.10 На потом: шаблоны промптов узлов (agent/prompts/*.md) — с переменными, не захардкоженные; порядок рассказа и структура выхода тоже подставляются.
- 06.10 Не решение: несколько компаний и проектов → «Раздуть» по каждому проекту отдельно; сверху предобработка одним промптом (скорее промпт, чем скрипт): всё сырьё пачкой → хронология по датам (задачи и возможности по порядку) → дочистка → нарезка на проекты. Как именно — согласовать.
- 06.10 Не решение: канон и стек зависят от дат проекта — canon берёт разборы того же времени (как тогда было принято), stack проверяет, что инструмент тогда существовал; даты оба получают из предобработки; как регулировать — решить потом.
- 06.10 На собесе нужны заготовки под типовые вопросы («расскажи о себе», «про проект», system design); банк — большое полотно по всем проектам, заготовки собираются из него на этапе «Под вакансию».
- 06.10 Источники общего банка вопросов: ShadowHint (shadowhint.com/questions, Data & ML — 1165 вопросов с частотой и компаниями), Easy Offer (сайт, вопросов очень много), GitHub (alexeygrigorev/data-science-interviews, alirezadir/AIMLInterviews, epishchik/ML-Interview, yangshun — behavioral), транскрибации моих собесов (ML — англ., DevOps — рус., Data Science — рус.), поведенческие. Из вопросов оформлять цепочки; главное — пополнять базу вопросов.
- 06.10 Поведенческие: список перегенерируется — ядро + дополнительные цепочки, скорее динамические, расширяются под вакансию; не переупаковка истории, а рассказ в формате, релевантном вакансии.
- 06.10 Скачано: ShadowHint — refs/shadowhint/ (Data & ML 1165, DevOps 152); Easy Offer — refs/easyoffer/ по профессиям, all.json — исходная выгрузка (Data Science 1059: техн. 868, HR 136, финал 49, SD 6; DevOps 3093), выгружено через консоль браузера по моему входу. Отдельного MLOps нет ни там, ни там — вопросы внутри Data Science; ближе — Data Engineer на Easy Offer.
- 06.10 Источники собесов в klali (только чтение): master:NIZOV/ — экспорт курса Низова из Buildin («Булдуин»), «База вопросов с собеседований» 496 файлов по компаниям (техничка ML-NLP 229, финалы 103, HR 54, Python 52, лайвкодинг 51) + банки ответов; мои транскрипты — master:recordings/my/ (7, рус.) и electron-app:app/transcriptions/2026-01-22_DS-Interview; DevOps из ТГ-чата «база собесов» — main:docs/research/interviews/devops/ (51 транскрипт, рус., один кандидат); DS из того же чата — master:recordings/data-science/ (19); grind_vu (ML, 64 en / 28 ru), classic-ml, nlp, avosya, yt — master:recordings/; уже вытащенные вопросы — main:docs/research/interviews/_voprosy.jsonl (2159 из 143 транскриптов) и _voprosy-slito.jsonl (475 групп с частотой).
- 06.10 Своё iOS-приложение ставим через GBox: есть годовой сертификат (ETVS3W.p12 + профиль из Telegram-бота), платный сервис подписи не нужен. Свой источник GBox — dnk ~/apps/source.json, http://devml4dbs.duckdns.org:8768/source.json (python http.server в tmux apps; HTTP подошёл); проверено на Aidoku/LiveContainer/Feather с GitHub: «Переподписать» → «Установить», VPN на телефоне при установке выключить.
- 06.10 Своё iOS-приложение собираем в GitHub Actions (облачный macOS), Xcode локально не ставим: .ipa → источник GBox на dnk.
- 06.10 Ресёрч, не решение — голос с Claude Code как в ChatGPT. Вариант А: своё iOS-приложение (стартер LiveKit agent-starter-swift) + на dev голос GPT-Live-1 ($0.05/мин) с встроенным делегированием задач в Claude Code через Agent SDK. Вариант Б (не проверено, из чужого ресёрча): само приложение ChatGPT + удалённый MCP-коннектор к маку → Claude Code как инструмент: xihuai18/claude-code-mcp, zhendalf/claude-mcp (stdio — нужен HTTP-шлюз), Remote Desktop Commander (терминал мака для ChatGPT, запуск
claude -p). Что именно хотим — ещё не сформулировали. - 06.10 Доделать потом: банк вопросов — шаги 2–3 (нормализация похожих вопросов по эмбеддингам с порогом → граф переходов с частотами), промпт questions/prompts/chains.md проверен на 16 собесах NIZOV.
- 06.10 Desktop Commander Remote поднят на маке (tmux commander, чистое окружение без прокси): ChatGPT с телефона достучался до терминала и файлов мака. Связку ChatGPT → Claude Code делать не через tmux send-keys, а низкоуровнево — через плагин/MCP (claude-code-mcp, claude-code-rc-mcp); пока не делаем.
- 06.10 Граф вопросов — отдельный модуль: сырьё legends/demo/raw/question-graph.md (вопросы из всех материалов → свести одинаковые → ранжировать по частоте или важности → граф «что идёт следом»; ответы — отдельный слой, решил агент); прогнан до high_level_design, stack не запускали.
- 06.10 Связи «что идёт следом» — только из источников с порядком (собесы NIZOV, транскрипты); остальная база даёт вопросы и частоту.
- 06.10 Склеиваем только одно и то же разными словами; вопрос, вытекающий из другого, — ребро графа, не склейка.
- 06.10 Метод общепринятый — dialogue flow discovery (логи чат-ботов и поддержки), на собесах готового нет. Образец кода — github.com/achrefbenammar404/quasi-patterned-conversations-analysis (эмбеддинги → кластеры → подпись LLM → матрица переходов → отсев редких); логику переносим к себе, не ставим как есть. Ещё: idiap/dialog2flow, pm4py (AGPL — граф по размеченным типам).
- 06.10 Разметка собесов NIZOV по классу системы (как core_idea): 225 из 383 про проект, лидируют RAG (151) и LLM-агенты (70); лежит во временной папке прошлой сессии, в refs/ не сохранена.
- 06.10 Страницы агенту — свой инструмент read_page в build.py (напрямую → Jina), WebFetch не даём: его проверка домена отказывает.
- 06.10 Банк вопросов — только из NIZOV: нравится, есть порядок; наши _voprosy*.jsonl не нравятся; остальную базу пока не трогаем — замучаемся.
- 07.10 Скриптов ShadowHint и Easy Offer (обновление,
make easyoffer) нет; выгрузки в refs/ остались. - 08.10 Дедуп вопросов готов (
twins.py): 12 997 → 10 032 (косинус 0.90) → 7 554 записи; судья — Opus effort medium, два голоса, merge только если оба; Haiku и Sonnet склеивают лишнее. - 08.10 Группы — звёздами (центр + прямые соседи), 0 токенов: union-find через общие вопросы («расскажи про опыт») слепляет 471 группу в одну, а проверка моделью целиком стоит 7% сессии и не сходится на гигантах.
- 08.10 Расход: 250 пар ≈ 0.4% сессии Max; 25.6k пар целиком ≈ 14%.
- 08.10 Критерий дубля — кандидат ответил бы одним ответом (как в промпте судьи): «о себе» = «про опыт», LoRA/QLoRA = «чем отличаются» — склеивать нормально; поэтому склейки merge.py ≥ 0.90 моделью не проверяем.
- 08.10 Порог по эмбеддингам дубли не отделяет (AUC 0.66; CSLS — 0.71): эмбеддинги — только отбор кандидатов (blocking), решает модель; лучше — cross-encoder, проверить при новых источниках.
- 08.10 Темы банка (
segments.py): k-means 200 → подписи Opus → темы Opus; по векторам естественного числа тем нет (силуэт ≈ 0.1), k-means по центроидам хуже модели (ARI 0.41). Для человека — 25 тем. - 08.10 В банке реплики интервьюера из NIZOV (переспросы, подсказки на лайвкодинге): extract.py брал все строки-вопросы интервьюера; ~1000 записей в кластерах-репликах — кандидаты на выброс.
- 08.10 Сегменты — для навигации и плана подготовки; суфлёр в реальном времени ищет сразу по записям.
- 09.10 Голосовые модели сравниваем на https://voice.devml4dbs.duckdns.org (dnk, шаблон google-gemini/gemini-live-api-examples + свои маршруты OpenAI): Gemini 3.8 Live, GPT Realtime 2.1, GPT-Live-1, переключение в настройках.
- 09.10 GPT-Live-1 суфлёру не подходит: язык и модель расшифровки не задаются, контекст только дописывается (и без делегирования append отвергается), текст не подсунуть; Gemini 3.8 Live расшифровывает плохо.
- 09.10 Склоняемся к каскаду: потоковая расшифровка со словарём терминов банка и русским → сильная модель текстом → поиск по банку → проверка подсказки; контекст держим сами. Решение пока не принято.
- 09.10 Думаем в сторону system design из банка: этап SD есть в 32 собесах NIZOV (почти все NLP/LLM SD — VK, Сбер, Яндекс, Okko); кейсы и цепочки углубления оттуда — сырьё для тренировки, проверять агентом-интервьюером, а не карточками. Как именно — не решено.
- 09.10 Канон подсказчиков (Cresta, Wayfair, Airbnb): готовые ответы на частое — первыми, генерация — для хвоста; знания готовятся офлайн; состояние разговора (что сказано и показано) хранится отдельно и подаётся на каждом шаге; сначала дешёвые проверки по черновой расшифровке. Разбор — legends/demo/work/answer-prep/.
- 09.10 Канон подстройки под человека и встречу (DoorDash, LinkedIn, Microsoft MSX): тяжёлое — офлайн-генерация из профиля и корпуса, под конкретный разговор — лёгкий отбор и переранжирование; частоту подавать как признак ранжирования. Цепочек «что спросят следом» и проверки на непротиворечивость ни у кого нет — это наше. Разбор — legends/demo/work/answer-tailoring/.
Критерии проверки легенды
Найдены вручную при разборе; агент, который раздувает легенду, сверяет с ними спецификацию.
- 09.10 Каждое техническое решение легенды сверять с каноничными реализациями (разборы компаний, «Раздуть» до canon): модное, но не каноничное — не писать. Пример: LLM-ранкер продуктов в резюме Алекса Чена — в каноне банков бустинг, uplift или факторизация, LLM нет ни у кого (notes/product-ranking.md).
- 09.10 Каждое решение — с обоснованием: почему так, с чем сравнивали, цена, задержка, что не вышло; неудобные вопросы о нём берутся из банка, нет ответа — пробел.
- 09.10 Нестандартный выбор защищается только сравнением с базовым вариантом в A/B со случайным контролем, а не словами.
- 09.10 Инфраструктура по масштабу: не добавлять компонент «для резюме» (векторная БД на десятке тысяч векторов не нужна — перебор в памяти за миллисекунды).
- 09.10 Цифры — с происхождением (как story-provenance-check в career-ops): каждая метрика прослеживается до сырья легенды; непроверенная в ответы не идёт.
- 09.10 Цифры согласованы между собой и с масштабом (команда, нагрузка, сроки, экономия не противоречат друг другу).
- 09.10 Самопрезентация — отдельный нарратив на 60–90 с, а не STAR-история; истории о проектах — STAR+R.