tm2027 · борд автоматизации · приёмы на модели подписей, 2026-09-03

Та же модель у руля

Подпись тайла уже работает: тридцать последних строк пана уходят модели, когда экран изменился и прошла минута, ответ ложится в таблицу за revision, рельс и телефон читают таблицу. Провайдеров три: Gemma 3 1B внутри деки, Gemini flash-lite, свой сервер с Qwen 27B. Здесь пятнадцать приёмов, которые ходят по тому же проводу с другим вопросом и другим форматом ответа, плюс три приёма на уровне самой модели, которые делают всё это дешёвым. Каждый в трёх формах, с ценой и фальсификатором. Клик — выбор, строка внизу. Шестнадцатая секция — с чего начать.

Тот же провод tail_of → hash → due/reserve → ask → таблица. Ни один приём не заводит второго канала к модели: новый вопрос — это новый system и новый формат ответа на существующей трубе.
Дека держит факт Ответ модели — строка в таблице, UI читает таблицу. Модель никогда не второй источник состояния, и ни одна карточка не рисуется «по свежему ответу» мимо revision.
Дешёвое перед дорогим 1B отвечает часто и одной меткой. 27B и Gemini отвечают редко, на событии, текстом или JSON. Дорогой запрос идёт раз в событие, а не раз в минуту.
Ни одной клавиши без правила Единственный приём, где модель жмёт клавишу (12), выключен, пока владелец не написал правило словами. Каждый автоответ отменяется и виден в логе.
Труба подписи сегодня и куда встаёт каждый приём
ШагЧто делает сейчасКто сюда встаёт
tail_of30 последних инк-строк пана7 берёт выделение вместо хвоста, 4/6 берут лог подписей, 10 склеивает хвосты нескольких панов
hash_of · due · reserveтолько если хвост изменился и прошёл шаг; не больше двух в полёте15 добавляет второй ярус со своим шагом; 5 срабатывает один раз на pane.exited
ask → caption / essaysystem + примеры + хвост, одна фраза1/2/3 меняют system и формат ответа; 13 добавляет грамматику; 14 кеширует префикс
clean_lineснимает точку, кавычки, второе предложение13A делает шаг лишним для меток и JSON
таблица · revisionCaption на пан, messenger читает revisionвсе приёмы кладут ответ сюда же: label, question, note, summary — новые поля одной строки
bridge_sendпечать в пан, будит спящий табтолько 2A (кнопка рукой) и 12 (по правилу) — больше никто
Сегодня: шаг 30 с – 10 м, MAX_ROWS 30, Endpoint с thinking_off и бюджетом 768, Local ≈ секунда на подпись на Gemma 1B.
I Читает, ничего не трогая шесть секций про то, что модель может понять из хвоста
1

Метка состояния вместо regex-сторожей

Сторожа сейчас — иглы по фразам харнеса: rate_limit_error, 429, 529. Проза агента про «rate limit» уже давала ложную тревогу. Модель, которая и так читает хвост раз в минуту, может ответить одним словом из семи: WORKING, WAITING_YESNO, WAITING_TEXT, ERROR, RATE_LIMIT, DONE, STUCK.

Уже есть: WATCH_WORDS и WATCH_STATUS_WORDS в ui.rs, число только в рамке статуса, бейджи от herdr, фильтр «модель говорит сама с собой» (#443). Фальсификатор: за две недели метка не поймала ничего, чего не поймала игла, или ложных больше 10%.
1A

Метка подтверждает иглу

Игла срабатывает как раньше, но карточка встаёт только если модель на тот же хвост ответила RATE_LIMIT. Ответ по грамматике — ровно одно слово из списка, clean_line не нужен. Игла остаётся триггером, модель — вторым мнением.

цена 1 PR · грамматика в llama-cpp-2, enum в json_schema у Gemini и Endpoint
1B

Метка вместо иглы

Иглы выкидываем, модель одна решает, что с паном. Чище, но 1B-модель на прозе агента про лимиты путается так же, как игла, и проверить это нечем без корпуса хвостов.

цена 2 PR · нужен корпус хвостов для теста меток
1C

Ничего: иглы и рамка

Оставить как есть. Ложные тревоги лечатся новыми иглами по мере встречи, число берётся только из рамки статуса.

цена 0
2

Вопрос внутри карточки NEEDS YOU

Карточка говорит «claude ждёт», а чего именно — видно только внутри пана. Подпись уже почти это: «Ждёт ответа: применить ли правку src/ui.rs». Шаг дальше — вытащить вопрос и варианты ответа структурой, чтобы ответить не открывая пан.

Уже есть: карточки NEEDS YOU с агентом и возрастом, подпись у ждущего, список панов на телефоне с живыми подписями (#453). Фальсификатор: за две недели меньше десяти ответов кнопкой с карточки или телефона.
2A

JSON: вопрос и варианты

На событии WAITING модель отдаёт {question, options[]} по грамматике. Карточка несёт вопрос и кнопки Yes · No · Open, телефон те же кнопки. Клик — bridge_send нужной цифры, рукой.

цена 2 PR + APK · протокол телефона +1 поле · пан будится как при печати (#441)
2B

Только текст вопроса

Вторая строка карточки — подпись ждущего пана, как сейчас в списке телефона. Без кнопок, без структуры, без нового формата. Открывать пан всё равно придётся.

цена 1 PR · подпись уже приходит
2C

Вопросы тостом при возврате

Стекло и полка не меняются. Когда окно получает фокус после паузы, тост со списком «кто что спросил», клик по строке ведёт в пан.

цена 1 PR
3

Приоритет карточек

Три ждущих пана: один спрашивает про удаление ветки, другой про запуск тестов, третий про цвет кнопки. Полка отдаёт их по порядку появления. Опасный вопрос должен всплывать первым.

Уже есть: полка в порядке появления, число полоски = длина очереди, Ctrl+Shift+N ходит по очереди. Фальсификатор: метка risky за месяц ни разу не совпала с тем, что ты сам назвал бы опасным.
3A

Метка risky от модели

Вместе с вопросом (2A) модель ставит trivial / normal / risky. Risky вверх полки с красной кромкой, тот же цвет на телефоне. Одно поле в том же JSON.

цена 1 PR поверх 2A
3B

Словарь без модели

risky = вопрос содержит rm, force, drop, delete, reset, push. Дёшево и предсказуемо, промахивается на перефразе и на русском тексте вопроса.

цена 1 PR · список слов в SIGNALS
3C

По возрасту, как сейчас

Старший вопрос первым. Опасность читать глазами внутри пана.

цена 0
4

Детектор зацикливания

Агент гоняет тесты пятый раз, правит одну строку туда-сюда. Бейдж говорит WORKING, и так час. Признак живёт не в хвосте, а в истории подписей: одна и та же фраза раз за разом.

Уже есть: таблица подписей держит только текущую фразу на пан; счётчика повторов нет. Фальсификатор: STUCK за две недели сработал меньше трёх раз или чаще был неправ, чем прав.
4A

Хэш подписей

Кольцевой лог из десяти подписей на пан. Три одинаковых хэша за 15 минут — STUCK на полку NEEDS YOU. Ни одного нового запроса к модели: лог и так пишется.

цена 1 PR · лог подписей нужен и секции 6
4B

Модель по истории

Раз в пять минут модель читает лог подписей и отвечает SAME / MOVING. Ловит «одно и то же другими словами», но это ещё один запрос на пан.

цена 1 PR поверх 4A · +1 запрос на пан в 5 минут
4C

Повтор команды из хвоста

Без модели: одинаковая строка «$ cargo test» три раза подряд в хвосте. Точно для шеллов, слепо для агентов, у которых команда спрятана в ● Bash.

цена 1 PR
5

Заметка на смерть пана

Пан умер, на полке death-карточка с именем. Что он успел, что бросил, знает только тот, кто читал экран. В момент выхода последние тридцать строк ещё в руках деки.

Уже есть: DiedPane с агентом, лейблом и Space на полке; pane.exited без exit-кода. Фальсификатор: за месяц ни одна заметка не пригодилась.
5A

Две строки от модели

На pane.exited хвост уходит модели с вопросом «что сделано, что осталось». Ответ в карточку и в лог. Один запрос на всю жизнь пана.

цена 1 PR · essay уже есть
5B

Три последних строки

Без модели: карточка несёт последние три непустые строки экрана. Правда, но сырая — часто это рамка ввода и пустой промпт.

цена 1 PR
5C

Ничего

Экран ушёл, карточка — только имя и Space.

цена 0
6

Сводка «пока тебя не было»

Вернулся через час: пятнадцать панов, у каждого что-то было. Лог подписей за час — это уже история флота, и дорогая модель пишет из неё абзац.

Уже есть: заголовок окна несёт число ждущих; телефон видит только текущие подписи. Фальсификатор: сводку перестали читать через неделю.
6A

Капсула при возврате

Окно получило фокус после двадцати минут без ввода — essay по логу подписей — капсула на стекле, Esc убирает. Один запрос на возврат.

цена 1 PR поверх 4A · 27B или Gemini, не 1B
6B

Сверху списка на телефоне

Та же сводка первой строкой списка панов, обновляется по тяге вниз. Телефон — место, где сводка нужнее всего.

цена 1 PR + APK
6C

Строка в заголовке окна

Без essay: «3 ждут · 2 закончили · 1 упал» из меток секции 1. Видно в таскбаре и в Alt+Tab.

цена 1 PR поверх 1A
II Подсказывает, а решает рука пять секций про ответ по просьбе
7

Объяснить ошибку из лупы

Traceback на сорок строк, error[E0502], CONFLICT (content). Выделил — и хочется один абзац «что это и что сделать», не уходя из деки и не тратя окно агента.

Уже есть: лупа выделения «Строка-линза» (#313), клик по пути открывает файл, Ctrl+Shift+F. Фальсификатор: меньше пяти обращений в неделю после первой.
7A

Капсула у выделения

В меню лупы WHAT IS THIS. Выделение и десять строк выше уходят модели, ответ в 200 токенов капсулой у курсора, Esc убирает.

цена 1 PR · essay уже есть
7B

Правая панель

Ответ в правой панели, как у SUBS, с COPY и ASK AGAIN. Видно дольше, можно спросить второй раз, стекло уже.

цена 1 PR
7C

Промпт в буфер

Без модели в деке: выделение оборачивается в «объясни:» и ложится в буфер, чтобы вставить агенту в соседний пан.

цена ½ PR
8

Голос в команду

VOICE-режим уха кладёт распознанный текст в пан как есть. «Покажи последние коммиты в этой ветке» в шелле бессмысленно, git log --oneline -10 имеет смысл. Между ухом и паном может встать модель.

Уже есть: EAR с TOGGLE / PUSH / VOICE (#442), Whisper и gpt-transcribe, languages[] (#449). Фальсификатор: команду из голоса правят руками чаще, чем в половине случаев.
8A

Команда в поле ввода

Русская фраза плюс видимый промпт шелла и cwd — shell-команда. Печатается в пан, Enter остаётся хозяину. Только для панов-шеллов, агенты получают текст как сейчас.

цена 1 PR · 27B или Gemini; 1B не годится
8B

Промпт агенту начисто

Для панов-агентов модель чистит диктовку: пунктуация, имена файлов из хвоста латиницей, термины. Отправка по-прежнему рукой.

цена 1 PR
8C

Не делать

VOICE уже печатает. Хватит.

цена 0
9

Имя пана от модели

Пять панов «claude», три «shell». Имя берётся из OSC-титула или worktree, а «чинит рельс» или «сборка APK» видно только по хвосту через минуту после старта.

Уже есть: лейбл из worktree и ветки, OSC-титул агента, записка на пане (#448). Фальсификатор: предложения принимают реже, чем в трети случаев.
9A

Предложение с ✓ и ✕

Через минуту после старта модель предлагает два слова. Курсивом в шапке тайла, ✓ принимает, ✕ прячет навсегда для этого пана.

цена 1 PR
9B

Автоматом, курсивом до клика

Имя ставится сразу, курсив означает «от модели». Клик по имени делает его своим. Меньше кликов, больше сюрпризов на рельсе.

цена 1 PR
9C

Только безымянные шеллы

Агентов не трогаем, у них титул. Шелл получает имя по первой команде: cargo build, ssh ollaa. Без модели.

цена ½ PR
10

Секретарь для телефона

С телефона видно список и подписи. Вопрос «что там с gateway» требует открыть три пана и читать. Хвосты всех панов лежат у деки, модель может ответить из них.

Уже есть: список панов с подписями, roster раз в 5 с (#453), капсула внутри пана. Фальсификатор: меньше трёх вопросов в неделю.
10A

Вопрос в композере списка

Строка «?» в композере списка: вопрос уходит деке, дека ищет паны по словам вопроса, склеивает их хвосты, essay — ответ карточкой над списком со ссылками на паны.

цена 2 PR + APK · протокол +1 верб
10B

Ctrl+Shift+F в режиме «спросить»

На деке: в окне поиска префикс «?» переключает поиск в вопрос. Тот же движок, без телефона.

цена 1 PR
10C

Не делать

Подписи в списке уже отвечают на «что там». Открыть пан — один тап.

цена 0
11

Поиск по смыслу

Ctrl+Shift+F ищет подстроку. «Где обсуждали TLS гейтвея» подстрокой не найти. Смысловой поиск — это вектор на каждый хвост и вектор на запрос, сравнение косинусом.

Уже есть: Ctrl+Shift+F по всем панам, поиск по экрану внутри пана. Фальсификатор: за две недели смысловой поиск не нашёл ничего, чего не нашла подстрока.
11A

Embedding-модель рядом

Второй GGUF на тридцать мегабайт (bge-small или nomic) через тот же llama-cpp-2. Вектор на хвост раз в минуту вместе с подписью, запрос сравнивается косинусом по всем панам.

цена 2 PR · второй файл в models, ручка в STORE
11B

Переформулировщик

Модель превращает вопрос в три-пять ключевых слов, дальше обычная подстрока. Без векторов, без нового файла, но синонимы ловятся только те, что модель угадала.

цена 1 PR
11C

Ничего

Подстрока и глаза.

цена 0
III Действует само одна секция, где модель жмёт клавишу
12

Политика владельца

«На вопрос про запуск тестов всегда да. Про удаление никогда сам». Правило на русском, модель читает вопрос и правило, отвечает yes / no / abstain, abstain по умолчанию. Единственный приём борда, где модель нажимает клавишу.

Уже есть: bridge_send в пан, печать будит спящий таб (#441), записка на пане (#448); правило деки: не гонять живые клики, пока пользователь работает. Фальсификатор: хоть один автоответ, который ты дал бы иначе, или abstain чаще 80%.
12A

Правило в записке пана

Записка со строкой «policy:» включает автоответ для этого пана. Только y/n-промпты харнеса, только цифра. Каждый ответ — капсула UNDO на десять секунд и строка в логе.

цена 2 PR · 27B или Gemini; на 1B запрещено кодом
12B

Пресеты в SIGNALS

Страница с правилами: «тесты — да», «правки — да», «git push — спросить». Действует на все паны с включённым тумблером AUTOPILOT в меню пана.

цена 2 PR
12C

Ничего: только кнопки

Модель вытаскивает вопрос (2A), палец жмёт. Автопилота нет.

цена 0
IV Приёмы на уровне модели три секции про то, что делает всё выше дешёвым
13

Формат ответа

Подпись сейчас — свободный текст через clean_line. Для меток и JSON свободный текст на 1B ненадёжен: модель дописывает точку, кавычки, второе предложение, придумывает восьмую метку.

Уже есть: clean_line в captions.rs, thinking_off для Endpoint, бюджет 768 токенов (#445). Фальсификатор: грамматика не убрала ни одного отказа clean_line за две недели.
13A

GBNF и json_schema

llama-cpp-2 умеет грамматику: ответ физически не может быть вне списка. У Gemini и Endpoint то же через response_format с json_schema и enum. Основа для секций 1, 2, 3.

цена 1 PR · LlamaGrammar в sampler, одна грамматика на вопрос
13B

clean_line, как сейчас

Просить «только слово», чистить регуляркой, переспрашивать при промахе. Работает для фразы, трещит на JSON.

цена 0
13C

Logit-bias на метки

Поднять вероятность первых токенов меток, остальное как есть. Есть у llama.cpp и Endpoint, нет у Gemini, и JSON так не соберёшь.

цена 1 PR
14

Кеш префикса

System и примеры одни на все запросы, меняется только хвост. llama.cpp пересчитывает всё каждый раз. Держать KV-кеш префикса и считать только хвост — подпись в разы быстрее, GPU тише.

Уже есть: одна модель в памяти, выгрузка с GPU, tok/s по истории прогонов (#433/#435). Фальсификатор: время подписи упало меньше чем на треть.
14A

KV-кеш system и примеров

Префикс токенизируется один раз, перед каждым запросом kv_cache_seq_rm до его длины, дальше только хвост. Шаг 30 с перестаёт греть.

цена 1 PR · только Local; серверы кешируют сами
14B

Ничего

Секунда на подпись на 1B и так терпима. Не трогать.

цена 0
14C

Батч панов в одном промпте

Пять хвостов в одном запросе, пять подписей в ответе. Меньше запросов, но 1B путает паны между собой.

цена 1 PR · только 27B и Gemini
15

Двухъярусная схема

Метка нужна часто и дёшево, вопрос и объяснение редко и хорошо. Один провайдер на всё делает либо дорого, либо плохо.

Уже есть: три провайдера, один выбранный на CAPTIONS, Speed и TEST по каждому. Фальсификатор: дорогой ярус за неделю звался чаще десяти раз в час.
15A

1B каждые 30 с, 27B на событии

Local отвечает меткой (1A). Только на WAITING / ERROR / STUCK зовётся Endpoint или Gemini за вопросом (2A), приоритетом (3A), объяснением. Вторая строка провайдера на CAPTIONS.

цена 2 PR
15B

Один провайдер

Как сейчас: кто выбран, тот и отвечает на всё.

цена 0
15C

27B на всё, шаг две минуты

Одна умная модель, реже. Проще, но две минуты до карточки и GPU ollaa занят подписями.

цена ½ PR
V Порядок
16

С чего начать

Три порядка первых PR. У всех одни ворота: две недели по фальсификатору, прежде чем брать следующую тройку.

16A

Метка, вопрос, кнопки

13A грамматика, 1A метка, 2A вопрос с кнопками на карточке и телефоне, 15A ярусы. Четыре PR, закрывают «агент ждёт, а я не знаю чего». Моя рекомендация.

16B

Дешёвое без модели вперёд

4A хэш подписей, 5B три строки, 3B словарь, 6C строка в заголовке. Четыре PR без единого нового запроса, потом смотреть, что прижилось.

16C

Сначала техника

13A и 14A: грамматика и кеш. Подпись становится быстрой и надёжной, и только потом фичи на неё.

ПриёмУспехВыкинуть, еслиМодельСрок
1 Меткапоймала ≥1 случай мимо игл, ложных <10%ничего сверх игл1B2 нед
2 Вопрос в карточке≥10 ответов кнопкойменьше27B / Gemini2 нед
3 Приоритетrisky совпал с твоим ≥3 разни разу27B / Gemini4 нед
4 STUCK≥3 верных срабатыванияложных больше верныхбез модели2 нед
5 Заметка на смерть≥1 пригодиласьни одна1B4 нед
6 Сводкачитается после неделиперестали27B / Gemini2 нед
7 Объяснить≥5 обращений/недменьше27B / Gemini2 нед
8 Голос в командуправок руками <50%больше27B / Gemini2 нед
9 Имя панапринимают ≥⅓реже1B2 нед
10 Секретарь≥3 вопроса/недменьше27B / Gemini4 нед
11 Поиск по смыслунашёл то, что не нашла подстрокани разуembedding2 нед
12 Политика0 неверных автоответов, abstain <80%хоть один неверный27B / Gemini4 нед
13 Грамматикаотказов clean_line 0не убавилосьвсе2 нед
14 Кеш префиксаподпись −⅓ временименьше1B1 нед
15 Ярусыдорогой ярус <10/часчащеоба2 нед
выбрано 0 из 16