Что Digit сделает за меня
Соседние страницы раздела объясняют, как Digit устроен и чем измерен. Эта — про то, что он делает, и она собрана из снимков работающего агента, а не из описаний.
Каждый кадр ниже снят с запущенного Digit скриптом
scripts/shoot-digit-usecases.sh: он поднимает Xvfb, исполняет команды в
псевдотерминале заданной ширины и снимает экран. Скрипт лежит в этом же
репозитории, поэтому через месяц кадры можно переснять и сверить. Ни один из них
не нарисован и не собран из кусков: где команда отказалась работать, в кадре
отказ, а не отредактированный успех.
1. Показать, на чём он работает: digit model --catalog
Первый вопрос к локальному агенту — на какой он модели и откуда её взять. Digit печатает каталог собственных открытых моделей и датасетов той же командой, которой пользуется страница «Открытые модели и датасеты»: страница и команда читают один файл, поэтому разойтись не могут.
digit model --catalog | head -46 — Первый экран каталога: у записи названы работа, замеры со ссылкой на раздел карточки модели и граница применимости.
Важна здесь не длина вывода, а его форма. У каждой записи есть блок «Чего не умеет», и он не бывает пустым: про маршрутизатор в кадре прямо написано, что доля ложных ответов 7,6 % при целевом нуле и что вердикт харнесса — FAIL. Карточка, в которой перечислены одни сильные стороны, читается как реклама, и вместе с ней перестают верить числам соседних карточек.
Восемь репозиториев каталога — четыре модели и четыре набора данных, включая три базы, которые проиграли замеру.
2. Вести задачи: digit tasks
Планирование у Digit — не отдельное приложение, а общая база задач, в которой
одновременно работают владелец и несколько агентов. Реализация —
digit_cli/tasks_cli.py, поверх Taskwarrior; скилл, который учит агента ею
пользоваться, — skills/productivity/digitable-tasks.
digit tasks add / note / list / show — Задача заводится, аннотируется и находится по uuid. Последняя команда — отказ: позиционный номер задачи не принимается.
Последние две строки кадра — самое полезное, что здесь есть. digit tasks show 1
отказывается работать и возвращает код 2, потому что 1 — позиционный номер,
а не uuid. Позиционные номера Taskwarrior пересчитывает каждый раз, когда меняется
набор незакрытых задач: номер, прочитанный до закрытия соседней задачи, после неё
указывает на другую. Команда отказывается вместо того, чтобы понадеяться на память
вызывающего, и в исходниках рядом записано, почему: 4 августа 2026 года на этой
базе так ошиблись семь агентов подряд.
База задач в кадре создана пустой прямо во время съёмки, и uuid в нём настоящие — их выдал Taskwarrior в этом прогоне. Чужую рабочую базу в кадр не берут.
3. Рисовать: схема прямо в терминале
Скилл skills/creative/excalidraw устроен так: модель пишет обычный
Excalidraw JSON, а три скрипта рядом делают с ним всё остальное — canvas.py
открывает файл на локальном холсте в браузере, revise.py правит элементы, не
переписывая файл целиком, а render.py показывает схему в терминале, там же,
где идёт разговор.
render.py show answer-sources.excalidraw — Схема нарисована в терминале через chafa, под ней — легенда: что на схеме написано и что с чем соединено.
Схема в кадре — не иллюстрация к скиллу, а его рабочий цикл: файл
scripts/digit-usecases/answer-sources.excalidraw написан моделью по инструкции
из SKILL.md и лежит рядом со скриптом съёмки.
Под картинкой всегда печатается легенда, и это не украшение. Терминал — это восемьдесят с небольшим колонок; шрифт в 16 пикселей в них не помещается физически и превращается в серую полоску. Легенда — единственная часть вывода, которую можно прочесть и в трубе, и в логе. По той же причине ни один элемент не исчезает молча: тип, который рисовать нечем, получает пунктирную рамку с именем типа и строку в отчёте, потому что картинка, на которой чего-то нет, выглядит целой.
4. Отказаться вместо выдумки: digit rule-check
Правило, написанное по-русски, Digit превращает в спецификацию FTS, компилирует настоящим компилятором и прогоняет через детектор структурных ошибок. Разбор самого правила ведут правила, а не модель, — это записано в справке команды.
Кадр ниже снят намеренно без установленного гейта, и он ценнее зелёной галочки:
digit rule-check discount.fts «…» — Гейта в системе нет — команда говорит об этом и возвращает 4. Ветки «ответить без проверки» у слоя нет по устройству.
Команда не отвечает «похоже, правило верное». Она называет оба недостающих двоичных файла, называет переменные окружения, которыми можно указать свою сборку, и возвращает код 4 — «проверка не состоялась». Именно так и должен выглядеть инструмент, который обещает проверяемость: третий исход, кроме «да» и «нет», у него есть и он назван.
Ровно этот вывод и этот код возврата описаны в документации команды — страница и программа здесь сошлись дословно.
5. Считать навыки: digit skills list
Навыки — это то, чем агент дополняется под задачу: каждый скилл описан файлом
SKILL.md и приезжает в профиль ~/.digit/skills/ при установке.
digit skills list | tail -46 — Хвост таблицы и итоговая строка: в профиле 87 включённых встроенных навыков.
Числа, которые стоит держать вместе:
| Встроенных скиллов в поставке | 91 (skills/*/*/SKILL.md) |
| Необязательных, ставятся отдельно | 111 (optional-skills/) |
| Включено в профиле после установки | 87 |
| Из них про сам Digitable | 13 по имени: задачи, портал, курсы, Workbench, FTS |
Разница между 91 и 87 — не потеря: часть скиллов привязана к платформе (скиллы
Apple на Linux не включаются). Каталог, из которого эти числа берутся,
генерируется из исходников скриптом website/scripts/generate-skill-docs.py, а не
поддерживается руками.
6. Всё это внутри запущенного digitwm
digitwm — оконный менеджер на ленте колонок; Digit в нём живёт так же, как любая другая программа терминала. Кадр снят с того же двоичного файла менеджера, что и запись сеанса на его странице.
digitwm + два окна — Две колонки ленты по 634 точки на экране 1280: слева каталог моделей, справа задачи. Геометрия промерена xwininfo во время съёмки.
Колонок в кадре две, а не три, и это замер, а не вкус. Пресет колонки по
умолчанию — 50 % экрана, то есть 634 точки при экране 1280: две колонки встают
ровно в кадр. Сжать три колонки до 33 % менеджер умеет (4-minus), но 422 точки
при этом кегле — это 55 знаков, и таблица каталога в них переносится по живому.
Кадр, в котором содержимое рассыпано, ничего не показывает.
7. Ответить локально: digit local status и digit chat
Шесть сценариев выше не требуют ни ключа, ни поднятой модели: содержание в них
даёт детерминированный код. Этот — требует, и потому снят отдельно. Сервер
llama-server Digit ставит и поднимает сам, командой digit local start: ни
ключа, ни облака, ни стороннего сервиса в этой сцене нет.
digit local status; digit chat -q — Модель отвечает на своей машине: веса и сервер подняты самим агентом. Ответ считался на процессоре, и это видно по времени в кадре.
8. Прирасти чужими инструментами: digit mcp catalog
Навыки дополняют агента изнутри, MCP-серверы — снаружи: это отдельные процессы со своим набором инструментов, которые Digit подключает к разговору, не меняя себя. Команда печатает каталог доступных вместе с тем, что уже настроено.
digit mcp catalog — Восемь серверов в каталоге: Blender, Figma, Linear, n8n, Unreal и другие. Внизу — как поставить любой из них одной командой.
В кадре именно каталог, а не список подключённого: на машине съёмки серверов не
настроено, и digit mcp list честно отвечает «серверов не настроено». Показать
вместо каталога пустой список было бы точнее по букве и бесполезнее по смыслу,
а показать каталог как «подключённое» — неправдой.
9. Проверить самого себя: digit security audit
Агент ставит себе зависимости, плагины и MCP-серверы — значит, у него есть своя цепочка поставок, и её кто-то должен проверять. Команда сверяет установленное с базой OSV.dev и печатает найденное: уровень, пакет с версией, номер и версию, в которой починено.
digit security audit — Шесть находок на 72 пакета в поставке dev-машины. У каждой — номер, по которому её можно прочитать, и версия, в которой она закрыта.
Кадр показывает найденное, а не «всё чисто», и это выбор: проверка, которая всегда печатает пустой отчёт, ничем не отличается от отсутствующей. Числа в кадре — состояние машины съёмки на день съёмки, а не обещание; на другой машине и в другой день их будет другое количество.
Чего на этих кадрах нет
Список неполон намеренно, и вот чего в нём не хватает и почему.
Озвучки. У Digit она есть, но это инструмент модели text_to_speech
(tools/tts_tool.py), а не команда: отдельного digit tts в CLI нет.
Провайдеров одиннадцать, и четыре из них — Edge, NeuTTS, KittenTTS и Piper —
работают без ключа, а три последних вообще на устройстве. Снять инструмент модели
кадром терминала нельзя, не поднимая диалог, поэтому здесь его нет.
Озвучка портала — другая машинерия и живёт отдельно: 77 материалов начитаны
целиком, это 24,9 часа звука голосом anon-qwen3-v1. Кнопка «Слушать»
появляется только там, где начитан весь материал.
Зелёного вердикта проверки. Он требует установленного fts-gate, а он
ставится отдельно. Что именно проверяет гейт и какие два инструмента он на самом
деле предоставляет — в разделе flang.
Разбора документов, 3D и памяти между сеансами. Эти умения у Digit заявлены скиллами, и кадра здесь не получили — каждое проверено запуском, а не по списку:
| Умение | Почему без кадра |
|---|---|
| PDF, Word, Excel, PowerPoint, OCR | Код есть — 42 файла на пяти скиллах, — но библиотек, которыми он работает, на машине нет: ни pypdf, ни pymupdf, ни python-docx, ни openpyxl |
| 3D через Blender | На машине съёмки нет самого Blender |
| Память между сеансами | digit memory status работает, но заметок ноль и внешнего провайдера нет: кадр показал бы нули |
База знаний digit kb |
Индекс пуст, собрать его нечем без сервера эмбеддингов |
| Подключённые MCP-серверы | digit mcp list отвечает «серверов не настроено», поэтому в кадре 8 — каталог доступных, а не список подключённых |
Правило простое и одно на всю страницу: умение, за которым на этой машине нет рабочего кода, кадра не получает и на витрине не заявляется. Скилл с кодом, который нечем запустить, — это тоже «нет рабочего кода».
Как переснять
DIGIT=~/projects/digit WM=~/projects/digitwm/cwm \
scripts/shoot-digit-usecases.sh
Скрипт проверяет, что на месте Xvfb, xdotool, alacritty, ImageMagick, chafa,
установленный Digit и собранный digitwm, и отказывается, если чего-то нет.
Он пишет девять файлов в static/images/digit-usecases/ и печатает вес каждого
кадра до и после сжатия.
Кадры сохраняются в webp без потерь: на сплошном мелком моноширинном тексте это и легче, и точнее, чем сжатие с потерями. Замер на этих сценах — 13 646 байт против 100 870 у качества 82 на кадре со скиллами, то есть в три-семь раз легче при попиксельном совпадении с оригиналом.
Рядом
- Что Digit умеет — записанные прогоны утилит, цитат и отказов, плюс числа поставки.
- Открытые модели и датасеты — тот же каталог, что в кадре 1, страницей.
- Как устроена проверяемость — три источника содержания и почему отказ принимает код.
- Документация по-русски — установка, первый запуск,
digit local,digit portrait,digit rule-check.