MILAGPT
Что вам нужно? Выберите остров — покажу, куда идти.Спросить Милу
Поговорить с МилойСвоя Мила — 3 дня за $5 · разговор с Милой Ташкент — бесплатно
RU·EN
Документация · Обещания и задачи

Обещание — запись со сроком, а не фраза в чате

«Пришлю до шести» становится строкой в журнале с чатом и сроком. «Сделано» закрывается только уликой, которую скрипт проверяет сам: доставленное сообщение, страница, команда, коммит. У каждой строки ниже — ссылка на код.

Два инструмента: умение mila-tasks с журналом обязательств и карточки чатов с командой mila owe.

Три вида записей

Не один список, а три

Работа, обещание человеку и вопрос владельцу живут по разным часам и закрываются по-разному. skills/mila-tasks:10-16

M · ОБЯЗАТЕЛЬСТВО

Работа с приёмкой

Ход до двух часов или стройка. Чем проверяется — пишется при заведении: без этого скрипт запись не заводит. Закрывается командой done с уликой.

task.py:621-625
P · ОБЕЩАНИЕ

«Пришлю до вечера»

Срок — чужие часы, абсолютное время. Обещание заводится до отправки ответа. Закрывается только сообщением, доставленным в тот же чат.

skills/mila-tasks:18task.py:765-776
A · РАЗВИЛКА

Ждёт вашего слова

Варианты А и Б, вариант по умолчанию, откат и срок; без любого из пяти скрипт вопрос не примет. Открытых развилок не больше трёх, четвёртую он отклонит и запишет отказ в журнал.

task.py:796-807

Журнал только дописывается: строки не правятся и не удаляются, даже битая строка остаётся как есть. OPEN.md собирается из журнала, руками его не правят. skills/mila-tasks:22-28 task.py:102-121

Улика

«Сделано» — только с уликой

  • Без улики не закрывается. done без --proof ничего не пишет и выходит с кодом 2. Улик шесть видов: команда, проба, адрес, сообщение, коммит, слова человека. task.py:684-685 task.py:63
  • Улику исполняет скрипт, сейчас. Команда должна завершиться без ошибки. Адрес — код 200 и отпечаток в тексте страницы: один код 200 ничего не доказывает. Сообщение — есть в журнале исходящих, ушло в тот же чат и не лежит среди неотправленных. Коммит — уже в origin. task.py:567-581 task.py:540-553 task.py:583-593
  • Улика не прошла — не закрыто. Скрипт пишет отказ в журнал и выходит с кодом 3. «Не смогла проверить» — третий исход: закрыть его можно только флагом --force, и пометка остаётся в строке навсегда; OPEN.md считает, сколько закрыто без машинной проверки. task.py:701-704 skills/mila-tasks:52 task.py:1117-1124
  • Задачу клиента закрывает сторона клиента. Только доставленное ему сообщение или его слова с цитатой и номером сообщения. Задачу владельца или клиента нельзя просто снять: только через развилку. task.py:690-691 task.py:733-734
Поимка обещаний

Написала «пришлю» — строка уже есть

После каждого ответа в Telegram хук записывает сообщение в журнал исходящих и ищет в нём обещание. Нашёл — заводит строку с чатом и сроком. Лишняя строка дешевле пропущенного обещания.

hooks/task-sent.py:1-10

Как хук читает текст
  • Глагол обязательства. «Пришлю», «сделаю», «через час», «в течение дня». Одно «сегодня» или «до 18:00» без такого глагола обещанием не считается. task.py:267-279
  • Рассказ — не обещание. «Отправила», «готово», предложение с вопросом в конце, «могу…», «хотите…» хук пропускает. task.py:281-292
  • Срок — из того же предложения. «К вечеру» — 19:00, «до конца дня» — 20:00, «через час» — через час. Срок в прошлом (дата из цитаты) обнуляется с пометкой «уточнить». task.py:238-249 task.py:311-327
  • Нет срока — горит. Обещание без срока стоит в очереди первым: часы чужие, и их никто не знает. task.py:441-446
  • Без дублей. Ключ — чат и номер сообщения; повторный запуск вторую строку не заводит. hooks/task-sent.py:80-84
  • Сдержано или сорвано — навсегда. keep отмечает опоздание; broken пишет срыв в журнал и напоминает сказать человеку раньше, чем он заметит. task.py:777-779 task.py:785-792
Очередь

Что делать следующим, решает порядок, а не настроение

task.py next строит очередь каждый раз по одним и тем же правилам. skills/mila-tasks:55

01 · ГОРИТ

Обещания людям

Срок меньше чем через час, уже сорван или не назван — наверх.

task.py:441-446
02 · СЕГОДНЯ

Деньги и сроки

Взяты деньги, что-то «кровит» или срок сегодня. Следом — то, что владелец поручил сегодня.

task.py:450-454
03 · В РАБОТЕ

Не больше трёх

Три задачи одновременно, из них одна стройка и один слот стройки в сутки. Без касания 24 часа задача возвращается в очередь.

task.py:652-661task.py:856-866
04 · ПРОГНОЗ

Сколько займёт

Стартовые оценки по видам работы; с трёх фактов прогноз — медиана реальных минут и токенов. Строка без касания 10 дней поднимается сама.

task.py:419-431task.py:455-457
Карточки чатов

Все обещания — одним списком

У каждого чата своя карточка: назначение, участники, договорённости. mila note <id> --promise "…" --due "27.08" записывает обещание одной командой; --done закрывает его по совпадению текста, поэтому «сделала» без записи ничего не закрывает. chat_note.py:13-22 chat_note.py:285-304

mila owe собирает открытые обещания из всех карточек: сначала просроченные и на сегодня, потом завтра, дальше по датам. Срок, записанный словами, которые нельзя проверить, получает «?» и совет переписать датой. chat_note.py:221-257 chat_note.py:258-260

Хук входящих на каждом ходу печатает обещания со сроком сегодня или просроченные, даже если новых сообщений нет. Установщик ставит и хук, и chat_note.py. telegram-inbox-feed.py:131-135 telegram-inbox-feed.py:257-262 install/install.sh:111-119

$ mila owe
Открытые обещания · 8
  Acme · working chat
    · visual prototype: desktop + mobile
      due before rollout
  Northside Studio · client chat
    · stories poll · due tonight

Пример взят из документации набора, как есть. docs/REFERENCE.md:307-318

Проверка результата

Готово — по чек-листу, с цитатой

Умение proverka проверяет результат перед выдачей. CHANGELOG.md:29

01

Чек-лист — из самого умения

Проверка берёт раздел «Готово, если» из SKILL.md этого умения и своего не добавляет. Источник — готовый результат, а не переписка до него.

skills/proverka:11-16
02

Цитата на каждый пункт

Пункт пройден, только если в результате есть дословная цитата; пересказ не считается. Для действий («файл сохранён», «письмо ушло») улика — вывод инструмента. Пункт без проверяемого признака — «не проверить», и он тоже не пройден.

skills/proverka:23-28
03

Отдельный проверяющий

Если движок умеет субагента, проверяет он и видит только результат и чек-лист. Итог — ГОТОВО или ЗАДЕРЖАТЬ с номерами пунктов; дважды подряд ЗАДЕРЖАТЬ — она говорит владельцу, какой пункт не сходится.

skills/proverka:19-21skills/proverka:34-43
Честно

Чего эта страница не обещает

В репозитории

Каждую строку можно прочитать

Файлы обещаний и задач в репозитории mila-companion
ФайлЧто делает
skills/mila-tasksтри вида записей, правила, хуки
task.pyжурнал, улики, очередь, прогноз
hooks/task-sent.pyжурнал исходящих и поимка обещаний
hooks/task-open.pyоткрытые обязательства при старте сессии
install/chat_note.pyкарточки чатов, mila note, mila owe
install/telegram-inbox-feed.pyсроки на сегодня на каждом ходу
skills/proverkaпроверка результата по «Готово, если»
docs/REFERENCE.mdmila owe и сроки словами
Открытый код · Apache-2.0

Форкните, научите, пришлите PR

Набор открыт: умения, хуки, инструменты и шаблоны. Каждый pull request читает человек и Мила Качество.

Факты на странице: github.com/shakhruz/mila-companion (main, v1.3.0), проверено 18.10.2026. Вывод mila owe — из docs/REFERENCE.md; чат и номер P-0007 — иллюстрация. «Mila», «MILAGPT» и логотип — товарные знаки MILAGPT.