DigitableCourses

Что Digit умеет

Возможности Digit на записанных прогонах: 95 утилит по русскому запросу, дословная цитата из материалов курсов со ссылкой на абзац, проверка спецификаций FTS и явный отказ с числами, когда ответа в источниках нет. Модель 424 МиБ, полный цикл 2 секунды на обычном процессоре.

Что Digit умеет

Digit разбирает запрос на русском, выбирает, что с ним делать, и отвечает из проверяемого источника: результатом утилиты, дословной цитатой из материалов курсов или сертификатом над спецификацией. Если подходящего источника нет, он говорит об этом прямо и с числами — вместо того чтобы придумать правдоподобный ответ.

Модель работает на вашем процессоре: файл весов — 424 МиБ, полный цикл «запрос → ответ» — 2,0 с на обычном CPU. Облачного аккаунта не нужно.

Что он делает

Считает: 95 утилит по запросу на русском

Хеши и HMAC, JWT, cron-выражения, IP-подсети, конвертеры форматов, генераторы, кодировки, работа с текстом, QR-коды — 95 утилит в 14 категориях. Просить их надо словами, а не именем инструмента: Digit сам выбирает утилиту и вытаскивает из фразы аргументы.

Записанный прогон, задача tool_routing_018:

Вы:    мне нужно понять, что зашифровано в этой строке:
       0J/RgNC40LLQtdGCLCDQvNC40YAh

Digit: Утилита: base64-string-converter (исполнено tools-core как «base64_decode»).
       Аргументы: {'base64': '0J/RgNC40LLQtdGCLCDQvNC40YAh'}
       Результат: {'text': 'Привет, мир!'}

Ответ здесь производит не модель, а функция: модель только выбрала утилиту и вынула из фразы строку. Поэтому в выводе видно и то, какая утилита сработала, и с какими аргументами — результат можно перепроверить, не спрашивая Digit второй раз.

Утилиты — чистые функции в одном скомпилированном бинаре: ни браузера, ни DOM, ни обращения к внешнему API. Каждая несёт рабочий пример, и все 114 примеров исполняются тестовым набором (220 тестов).

Отвечает по курсам — дословной цитатой со ссылкой на абзац

Не пересказ и не «по мотивам»: Digit возвращает фрагмент текста как он есть, с путём к файлу, заголовком раздела и ссылкой на конкретный якорь. Перед выдачей цитата проверяется на дословность против текущего файла корпуса — если текст в материалах изменился, ответ не выдаётся.

Записанный прогон, задача rag_citation_004:

Вы:    Что происходит с уже выданными и ещё не использованными ссылками
       на скачивание Workbench после полного возврата денег?

Digit: Цитата (content/legal/refund.md — Digitable Workbench,
       релевантность 0.94):
       «До первого получения ссылки на архив Workbench можно запросить
       полный возврат. <…> Полный подтверждённый возврат отзывает
       entitlement: новые и ранее подготовленные, но ещё не использованные
       ссылки перестают работать.»

       Источник: /legal/refund/#digitable-workbench

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

Отказывается, когда ответа в источниках нет

Это главное отличие от чат-бота, и оно устроено так: решение об отказе принимает код, а не модель. Гейты сравнивают релевантность с порогом, проверяют дословность цитаты и расхождение кандидатов. Модель не может «передумать» и ответить.

Отказ формулируется закрыто и с числами — записанный прогон, задача out_of_corpus_063:

Вы:    Когда выйдет следующая редакция оферты?

Digit: В материалах курсов Digitable этого нет. Проверено 28 778 фрагментов,
       максимальная релевантность 0,38 при пороге 0,56.

Числа внутри реплики относятся к тому индексу и тому порогу, на которых шёл этот прогон; на текущем индексе их значения другие (29 775 фрагментов, порог 0,745). Важна здесь не конкретная цифра, а форма: «ответа нет» без указания области поиска и без чисел — само по себе непроверяемое утверждение, то есть та же выдумка, только с обратным знаком.

Проверяет исполняемые спецификации FTS

Бизнес-правило, записанное на FTS, Digit не «оценивает» — он его выполняет: разбирает, проверяет типы, прогоняет приложенные примеры и либо выдаёт сертификат вывода, либо отказывает с кодом причины. Кодов отказа восемь, и каждый называет ровно то, что не удалось: непроверенный морфизм, нарушение свойства на примерах, ошибка типов, несобравшийся сертификат.

Отдельно работает детектор структурных логических ошибок (восемь кодов): круг в основаниях, неполный разбор случаев, подмена смысла у одного идентификатора, морфизм, применённый против объявленного направления, пример вместо доказательства.

Граница этого механизма названа прямо: FTS гарантирует «если посылки верны — вывод верен». Истинность самих доменных аксиом не доказывается, а объявляется, поэтому морфизмы делятся по уровню доверия, и опора на непроверенный даёт структурный отказ, а не зелёный сертификат.

Работает локально

Файл модели 424 МиБ, сборка Q5_K_M
Полный цикл на CPU 2,0 с (медиана, 8 потоков, без кэша промпта)
То же с кэшем промпта 500 мс
Память 1,3 ГБ
Утилиты один скомпилированный бинарь, 107 МиБ

Модель класса 0.6B хватает потому, что она не источник фактов: её работа — выбрать категорию, выбрать утилиту и вынуть аргументы. Каталог из 95 схем в контекст такой модели не помещается, поэтому маршрутизация двухшаговая — сначала индекс категорий (≈536 токенов), потом схемы одной категории.

Как поставить и как обновлять

Обновление идёт из репозитория проекта, а не из чужого канала обновлений:

digit update

Команда тянет новую версию, сохраняет ваши настройки, память и ключи — они лежат отдельно от самой программы и переустановкой не затрагиваются.

Если вы ставили Digit до 4 августа 2026 года, обновление первый раз нужно запустить вручную. В тот день агент был переименован из прежнего имени, вместе с ним переименовались команды и каталог настроек. Прежняя команда обновления больше не существует, поэтому автоматически подтянуть новую версию нечем:

curl -fsSL https://raw.githubusercontent.com/digitable-lol/digit/main/scripts/install.sh | bash

Дальше digit update работает как обычно. Если после переустановки агент запускается, но не видит прежних разговоров и навыков, он скажет об этом сам и напечатает команду переноса — данные не потеряны, они лежат в каталоге со старым именем, и переносить их автоматически он не станет: там же ключи и доступы, а копировать их без спроса — не дело установщика.

Чего ждать не стоит

Страница выше — про то, что работает. Ровно столько же внимания стоит уделить тому, где проходит граница, и она измерена:

  • Digit не источник фактов вне корпуса: на вопрос без ответа в материалах он откажет, а не поищет в интернете.
  • Остаточная ошибка есть, и она одна: верная цитата не на тот вопрос. На наборе задач, который писал автор, не имевший доступа к коду, это 28 из 32 всех пробоев, а доля ложных ответов там — 13,9 %.
  • Гарантия оплачена отказами: на том же наборе доля отказов — 75,6 %, и часть из них лишние.

Формулировки «наш агент не галлюцинирует» на этих страницах нет и не будет. Точная формулировка длиннее: содержание ответа берётся только из проверяемых источников; остаточные ошибки — это верная цитата не на тот вопрос, их доля измерена и равна 13,9 % на наборе, который разработчик не видел.

Границы гарантии — что система ловит, чего не ловит и сколько стоит гарантия в отказах. Эту страницу стоит прочитать до того, как решать, подходит ли Digit под вашу задачу.

Как это устроено и что проверено

  • Как устроена проверяемость — три источника содержания, два режима работы, запрет тихой деградации и почему отказ принимает код, а не модель.
  • Что проверено и какими числами — методика: контроли до оптимизации, независимый held-out набор, red-team, доверительные границы. И числа, полученные этой методикой.
  • Границы гарантии — что система ловит, чего не ловит и сколько стоит гарантия в отказах.
  • Digit в Digitable Workbench — как тулчейн и гейт спецификаций подключаются к рабочему окружению.

Откуда числа

Все числа этого раздела лежат в одном машиночитаемом файле (data/digit-research.toml) вместе с единицей измерения, путём к отчёту, из которого число взято, и датой. Сборка страниц падает, если в тексте встретился показатель без источника или с незакрытым значением. Числа, полученные на разных конфигурациях поиска, помечены отдельно: сравнивать их между собой нельзя.

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

Материалы про FTS изложены по открытой документации языка и по описанию гейта.

Нашли неточность? Выделите фрагмент текста — рядом появится жучок.

Нужен разбор именно вашей ситуации?

Статья описывает общий случай. Если у вас частный — можно разобрать его отдельно, платно. А если не хватает целого материала, предложите тему: её оплачивают вскладчину, и она выходит открытой для всех.

Доска запросов
Дальше