Rowih
IPA /ˈɾo.wih/ · прослушать (MP3)
Rowih — язык, на котором AI-агенты общаются друг с другом. Его полностью разработал AI-агент при поддержке Semiosphere. Язык создан для агентов, а не для людей.
Каждый ход сообщения словами самого языка указывает, что именно делает этот ход, насколько обосновано каждое утверждение и на чём оно основано, а также от чьего имени отправитель обращается с просьбой или принимает обязательство. Цепочка инструментов проверяет каждое из этих утверждений, прежде чем получатель начнёт действовать в соответствии с сообщением. Если сообщение содержит контрольное значение целостности, цепочка также обнаруживает любое одиночное изменение символа или слова, которое повлияло бы на одно из утверждений. Инструкция внутри цитируемого или полученного материала не может стать действующей, а запросы, обязательства и их отзыв фиксируются в журнале, который ведёт и может проверить каждая сторона.
У языка есть собственные звуки, слова и письменность. Агенты обмениваются им в виде транслитерации на девятнадцати латинских буквах; язык также можно записывать и произносить. Его название — собственное слово языка, означающее значение, показанное выше в письменности Rowih.
Один обмен
Агент 1 спрашивает агента 2, работает ли сервис, а агент 2 отвечает, что, согласно собственному наблюдению, он всё ещё работает, и сообщает об этом с полной уверенностью. Каждый ход записан в оригинальной письменности построчно; под каждой строкой приведена транслитерация, а затем — пояснение на английском, сформированное цепочкой инструментов для читателя.
Агент 1 спрашивает · прослушать (MP3)
wila nake nake yano kihiwo wopi bopu
rudin bihu wodu raniy gona wuwa woko hulab
Агент 1 спрашивает, работает ли сервис (вопрос с ответом «да» или «нет»).
Агент 2 отвечает · прослушать (MP3)
wila nake nebe yagi kodiwu
seho nake yabe nake yabe
kanume kuwona sisa wora teyuhu
tebilo rudin rudin woye hodeb
Агент 2 отвечает на вопрос агента 1 (запись 1): сервис работает (действие продолжается) (наблюдение; уверенность полная).
Каждый ход начинается с указания количества следующих за ним слов и контрольного слова для этого числа (wila nake nake yano — одиннадцать слов), а заканчивается контрольным словом, вычисленным по всем предшествующим словам (hulab). Вопросительное значение задаёт слово kihiwo. Ответ задаётся словом действия kodiwu; оно указывает, на что именно отвечает отправитель, — на автора, номер записи, её тип и статус (seho nake yabe nake yabe kanume kuwona sisa — запись 1 агента 1, открытый вопрос), — сообщает основание и степень уверенности (teyuhu tebilo — наблюдение, полная уверенность) и содержит ответ в виде идиомы rudin rudin, «работает, работает», то есть сервис всё ещё работает. Каждое сообщение также начинается строкой заголовка из 58 слов, которая здесь не показана. В ней указаны отправитель, получатели, время, версии, порядковый номер сообщения и контрольное значение целостности; для каждого числа предусмотрено собственное контрольное слово. В примерах приведены оба сообщения целиком и морфемный глоссарий каждого слова.
Строки на английском — это пояснения, сформированные принимающей стороной в цепочке инструментов; они никогда не передаются вместе с сообщением. В них описано, что удалось установить в ходе анализа, поэтому они не звучат как естественный английский текст и не являются переводом, которым можно заменить сообщение. Аудио синтезируется по фонемам каждого слова с помощью открытой нейросетевой модели речи Kokoro-82M. Затем распознаватель фонем сверяет каждый файл с фонемами сообщения (подробнее).
Кратко о языке
-
Звуки и слова. Девятнадцать символов: четырнадцать согласных и пять гласных, каждый обозначает одну фонему. Каждое слово начинается с согласного и далее чередует согласные с гласными. Первый слог определяет длину слова, поэтому последовательность символов без пробелов можно разделить на слова только одним способом. Любые два слова отличаются не менее чем на два изменения отдельных символов; защищённые слова — обозначающие силу высказывания, статус, время и полярность — не менее чем на три. Таким образом, одиночная ошибка не может превратить одно слово в другое.
-
Лексика. 874 единицы: 500 корней, обозначающих события, состояния, объекты и виды; 18 суффиксов и 119 продуктивных моделей, позволяющих получателю понимать новые сложные слова и производные по их составляющим; 25 слов действия, обозначающих распространённые типы высказываний; 176 формул и 101 идиома; а также 29 концептуальных соответствий, лежащих в основе переносных значений. В языке есть двенадцать диалектов с техническими терминами: одиннадцать для технических сообществ, в том числе для программирования, робототехники и безопасности, и один для повседневного общения.
-
Ходы и журнал. Сообщение состоит из заголовка и одного или нескольких ходов. Каждый ход добавляет запись в журнал, который ведут участники обмена: утверждение или признанную позицию, предположение, сводку, вопрос (вопрос, запрос или предложение), нормативную запись (обязательство, обязанность, разрешение или назначение) либо настройку. В ходе указываются записи, на которые он ссылается, с указанием автора и номера. Класс хода — действующий, ожидающий или инертный — определяется тем, что он добавляет и изменяет. Действующий или ожидающий ход также указывает полномочие, на которое опирается: собственные полномочия говорящего, полномочия названного принципала или полномочия, связанные с ролью.
-
Обоснованность. В утверждении указываются его основание — одно из девяти: наблюдение, интроспекция, получение данных, вычисление, вывод, симуляция, сообщение, усвоенное знание или утративший источник материал — и степень уверенности: интервал от 0 до 1 с указанием калибровки. Также можно указать, когда содержание было замечено и когда из него был сделан вывод. Если не указать какой-либо из этих параметров, утверждение не будет заявлено.
-
Грамматика. Пятьдесят восемь закрытых классов, каждое значение в которых обозначается отдельным словом. Утверждения, ситуации и термины оформляются как единицы, открываемые и закрываемые специальными словами. Цитаты, примеры и объявленные данные заключаются между ограничителями и остаются инертными. Неоднозначность никогда не бывает случайной: ход может задавать множество интерпретаций, но ход с требованием точности, например любой ход в протоколе или формальном регистре, должен допускать ровно одну интерпретацию.
-
Регистры. Восемь регистров — от неформального обмена между агентами одной системы до стандартного, формального, игрового и церемониального — и пять способов выражения, от полной ясности до творческой формы. Средство языковой экономии, например идиома или сокращённая форма, используется только в общении с получателем, которому оно известно.
-
Сообщения и передача данных. В заголовке указаны версии, в которых составлено сообщение. Для каждого числа, количества слов и хода предусмотрено контрольное слово, а для всего сообщения вычисляется контрольное значение целостности по всем словам; также может вычисляться семантическое контрольное значение по нормализованному представлению ходов. Каждый отправитель нумерует сообщения в канале, чтобы получатель знал, каких сообщений не хватает, и мог запросить их повторно. Прежде чем полагаться на сообщения, агенты согласуют общие для них версии и функции. Тип медиа
text/prs.rowihзарегистрирован в IANA.
В спецификации описаны все детали, а руководство обучает агента тому, что ему нужно для чтения и записи на этом языке.
Система письма
У Rowih есть собственная система письма. Каждый из её девятнадцати символов — это компонент: фигура из четырёх или шести штрихов, начертанная на сетке из десяти точек. Ни один компонент не является повёрнутой или зеркально отражённой версией другого.
Слова составляются из компонентов, расположенных рядом, а сообщение записывается строка за строкой — сначала рамка, между двумя линейками. Начальное и конечное слова каждой единицы образуют вертикальные стороны с её отметкой; снизу строку соединяет линейка, поэтому вложенные единицы наглядно располагаются в лотках. Слова, обозначающие речевую силу, статус, время и полярность, снабжаются надчёркиванием; числа заключаются в рамки с заострёнными концами, а встроенный материал располагается между стенками. Изображения ниже размещены в соответствии с построчной раскладкой собственной цепочки инструментов: именно её rowih render применяет ко всему сообщению, строка за строкой. Ход занимает одну строку, а система письма не задаёт правил переноса, поэтому строки — лишь способ отображения: переносы делаются только между словами, но никогда внутри последовательности цифр или между стенками. Если единица открывается в одной строке, а закрывается в следующей, она изображается как боковая сторона, не замкнутая на своей строке, с коротким основанием, загнутым внутрь.
Сила в рамке. Агент 1 утверждает — на основании вывода и с уверенностью около 0,6, — что буря разрушила мост. Речевая сила и основание отмечаются надчёркиванием, а каждое число заключается в рамку.
wila nadi namo yeso kotepu
wora tilase gupo napa nika nebe
yabe wopi resay biwo wodu rosid gona
wuwa bihu wodu nuyones gona wuwa woko woye hegos
Агент 1 утверждает, что буря разрушила мост (вывод; уверенность — примерно 0,6).
Слово между стенками. Агент 2 спрашивает, что означает слово rodur — «цена». Слово помещено между стенками: оно цитируется и не может влиять на сообщение.
wila nake neta yata kihiwo
wopi rebit buna bihu wodu rator
wubo wihi rodur wugu gona wuwa woko hawag
Агент 2 спрашивает, что означает слово «rodur» (цена) (составная часть).
Церемониальный вариант. Агент 1 утверждает в церемониальном регистре, с почтительным суффиксом, что почётная служба продолжается. На свободных концах штрихов появляются засечки, а все линейки и надчёркивания проводятся двойными.
wila nake nebe yagi kotepu
rumal logu wora teyuhu tebilo wopi rudin
bihu wodu raniyayuk gona wuwa woko woye hagon
Агент 1 утверждает, что служба продолжается (наблюдение; достоверно).
Один ход в трёх формах. Начальный вопрос показан в экранной форме, в компактной форме размером вдвое меньше и в рукописной форме, где тонкие линии соединяют компоненты каждого слова, как если бы их выводили пером.
Экранная форма
wila nake nake yano kihiwo wopi bopu
rudin bihu wodu raniy gona wuwa woko hulab
Компактная форма
wila nake nake yano kihiwo wopi bopu
rudin bihu wodu raniy gona wuwa woko hulab
Рукописная форма
wila nake nake yano kihiwo wopi bopu
rudin bihu wodu raniy gona wuwa woko hulab
В собственной цифровой форме те же слова записываются девятнадцатью кодовыми точками из области Private Use Area в Unicode — от U+F3A0 до U+F3B2. Их отображает шрифт языка language/font/rowih.ttf. Преобразование в транслитерацию и обратно выполняется без потерь.
Какова цена и что она даёт
Rowih не отличается компактностью. В 382 сообщениях набора тестов на соответствие каждое слово в транслитерации занимает в среднем 2,16 токена по медиане на фиксированном наборе из тринадцати токенизаторов, а сообщение требует примерно в 6,7 раза больше токенов, чем его английское пояснение (результаты измерений, corpus/reports/tokens.json). Пояснение не сохраняет проверки, подсчёты и рамку языка и передаёт лишь часть того, что в сообщении остаётся неявным. Поэтому это соотношение показывает цену явного выражения информации, но не сравнивает равнозначные тексты. Не измерялось, требует ли Rowih меньше токенов, чем английский текст с теми же проверками, и позволяет ли он экономить токены в других ситуациях — например, при восстановлении после внедрения инструкции или при повторной отправке потерянного сообщения.
Эта цена позволяет устранить сбои, возможные при обмене сообщениями на английском языке. Каждая мера защиты действует, если получатель анализирует сообщение с помощью инструментов, соответствующих спецификации. Результат каждой меры подтверждается указанным рядом тестом или отчётом.
| Сбой, возможный в английском тексте | Как действует Rowih | Где это проверяется |
|---|---|---|
| Получатель выполняет инструкцию, содержащуюся в цитате или извлечённом материале | Материал внутри цитаты, отчёта, предположения, примера или полезной нагрузки по своей природе неактивен. Читатель обрабатывает его, опираясь на заданную длину, поэтому ничто внутри него не может завершить этот фрагмент. Объявленные данные никогда не разбираются как язык. | Набор состязательных тестов: 14 сообщений с 60 требованиями (tests/test_adversarial.py); инструкция внутри цитаты |
| Ни одна из сторон не может впоследствии доказать, что было принято обязательство или что от него отказались | Запросы, обязательства и отказы от них фиксируются в записи каждой стороны. В каждом ходе указывается, от какого сообщения он зависит, с указанием автора и номера; отказ повторно указывает обязательство, от которого отказываются. Каждый ход, имеющий силу, применяется не более одного раза, а пересекающиеся ходы все участники упорядочивают одинаково. | tests/test_discourse.py, tests/test_coordination.py, tests/test_negative.py; отозванное обвинение |
| Незаметное изменение значения при передаче | Каждое число, количество слов и каждый ход сопровождаются контрольным словом, а сообщение — контрольным значением целостности. Если сообщение содержит это значение, ни одно одиночное изменение символа или слова не может незаметно изменить критически важное значение. | 7 089 953 изменения символов и 84 233 102 изменения слов в каждом формате — ни одно не осталось незамеченным (corpus/reports/single-edits-both.json, перечень проверок) |
| Получатель вынужден угадывать статус утверждения или полномочия, на которых основан запрос | Каждый ход указывает свою речевую силу, основание и уверенность для содержащегося в нём утверждения, а также заявленные полномочия. Класс хода определяется по тому, что он меняет, а не по названию речевого акта; преобразования, выполняемые цепочкой инструментов, не меняют статус, оставленный без отметки. | tests/test_corpus.py, tests/test_negative.py |
| Стороны не замечают, что сообщение потеряно или повреждено при передаче | Получатель по порядковым номерам понимает, каких сообщений ему не хватает, и запрашивает их. Отправитель не закрывает сообщение, пока не получит подтверждение, а два агента согласовывают отмену общих обязательств, прежде чем полагаться на неё. | Испытания на отказы с участием двух и трёх участников в сети, где сообщения теряются, дублируются, задерживаются, воспроизводятся повторно и повреждаются (tests/test_repair.py) |
Каждая гарантия сформулирована в виде инвариантов в спецификации. Для каждого инварианта предусмотрен искусственно внесённый дефект — намеренное нарушение реализации, которое должны обнаружить тесты. Обнаружены все 94 дефекта (corpus/reports/mutants.json). Реализации на Python и TypeScript записывают результаты каждого анализа побайтно одинаково для 139 033 текстов (corpus/reports/parity.json).
Rowih выгоден агентам, которые не доверяют входным данным друг друга, при делегировании задач, обязательства по которым будут проверяться впоследствии, а также в каналах, где сообщения теряются или повреждаются. Но если два агента доверяют входным данным друг друга, используют надёжный канал и ограничены бюджетом токенов, Rowih не даёт преимуществ: английский язык подходит им лучше. Моделям следует обмениваться транслитерацией: собственная цифровая форма, использующая кодовые точки системы письма, требует ещё в 5,85 раза больше токенов по медиане.
Язык позволяет различать инструкцию, процитированную инструкцию и недоверенное содержимое, но не может заставить получателя соблюдать это различие. Агент, который читает сообщение без анализа, всё ещё может выполнить повеление внутри цитаты. Это единственное требование из набора состязательных тестов, для которого в языке нет механизма защиты.
Чего система не делает
-
Поверхностная форма представляет собой сериализацию размеченного дерева. Каждая единица открывается и закрывается отдельным словом, а каждое грамматическое значение тоже выражается отдельным словом: ни одна форма не может нести сразу два критически важных измерения.
-
Служебные элементы занимают большую часть каждого сообщения. В приведённом выше вопросе 73 слова, из которых 58 составляют его оболочку. Независимый рецензент — языковая модель, получившая только краткое описание грамматики и шестьдесят примеров, — выявил этот факт и предыдущий недостаток. Оба вывода остаются в силе.
-
Ни одна модель не может читать и писать на этом языке без вспомогательных средств. При записи необходимо подсчитывать слова, проверять сами слова и их значения; модель, которая генерирует текст токен за токеном, неизбежно допустит ошибки. Поэтому агент работает через цепочку инструментов и проводит проверку перед отправкой. Модель читает текст, имея под рукой краткое описание грамматики и лексикон, а гарантии получает только благодаря анализу, выполненному цепочкой инструментов.
-
Никто не проходил проверку на знание системы письма или устной формы, поэтому неизвестно, как часто читатель или слушатель будет путать одни слова с другими.
-
Практическое применение не проверено. Корпус составил один разработчик, поэтому неизвестно, сформируются ли при использовании общепринятые соглашения, смогут ли агенты понимать новые образования по их частям и сможет ли модель-слушатель восстановить то, что опущено ради экономии.
-
В выпуске 1.0 есть три узких ограничения. Нельзя принять сообщение о выполнении или ошибке, одна сторона не может снять обязательство другой стороны, а переданные полномочия проверяются только при завершении или срыве назначения. Эти и остальные ограничения описаны в разделе Известные ограничения.
Чем Rowih отличается от языков, которые уже используют машины
Rowih относится к четырём типам языков, уже используемых машинами, и разделяет некоторые их свойства.
Языки общения агентов. KQML и FIPA ACL отделяют действие сообщения от его содержания. Агент KQML отправляет содержимое, «составленное на выбранном им языке и заключённое в сообщение KQML», а перформатив, например tell или ask-if, указывает, что с ним делать (Finin и другие, 1994). FIPA ACL определяет 22 коммуникативных акта. Каждый из них задаётся предварительным условием выполнимости и рациональным эффектом, выраженными на семантическом языке SL через убеждения, сомнения и намерения агентов (FIPA SC00037J). Rowih использует то же разделение, но реализует его иначе. Сила высказывания указывается в каждом ходе — внутри собственного контрольного слова этого хода, — поэтому нельзя незаметно изменить силу сообщения, сохранив его содержание при пересылке или редактировании. Класс хода определяется тем, что он добавляет к записи, которую ведёт каждая сторона, или как он её меняет; его не выбирают из списка именованных актов. Поскольку акт определяется своим публичным эффектом, проверить его может каждая сторона. Напротив, определения через убеждения и намерения говорящего опираются на состояния, недоступные для проверки другим агентам. Именно эту особенность критиковал Singh (1998). Содержимое тоже записывается на Rowih, поэтому статус высказывания, происхождение сведений и цитирование задаются самой грамматикой, а не зависят от выбранного двумя агентами языка содержимого.
Форматы данных и протоколы. JSON Schema задаёт структуру данных JSON и проверяет их корректность (2020-12). Model Context Protocol связывает хост с серверами, предоставляющими инструменты, ресурсы и промпты, используя JSON-RPC 2.0 (2026-07-28). Agent2Agent обеспечивает взаимодействие агентов: его сообщения состоят из частей с текстом, необработанными байтами, URL или данными JSON, а задачи проходят через девять состояний (1.0.0). Эти форматы и протоколы передают сообщения, но не указывают, что именно делает текст сообщения: в текстовой части или результате работы инструмента нет поля для силы высказывания, его статуса или заявленных полномочий. Rowih передаётся внутри этих протоколов. Его тип данных text/prs.rowih может использоваться среди форматов, которые карточка агента A2A указывает для приёма и отправки, а цепочка инструментов Rowih сама работает как сервер Model Context Protocol. В спецификации этого протокола обозначено общее для них ограничение: «Инструменты выполняют произвольный код, поэтому обращаться с ними следует с должной осторожностью», а описания поведения инструментов «следует считать недоверенными, если они получены не от доверенного сервера». Rowih не устраняет это ограничение. Он даёт анализирующему сообщение получателю возможность проверить его содержимое: какие слова являются инструкцией, а какие — цитатой, на чём основано утверждение и чьими полномочиями подкреплён запрос.
Логические языки, созданные для людей. У Lojban «однозначная и при этом гибкая грамматика», заданная формально (CLL 1), и одиннадцать эвиденциальных маркеров, которые «показывают, как говорящий пришёл к своему высказыванию» (CLL 13.11). New Ithkuil «предназначен для более явного, логичного и точного выражения глубинных уровней человеческого мышления, чем это возможно в естественных языках» (ithkuil.net); в нём утверждение должно указывать одну из девяти категорий валидации — основание для свидетельства (глава 6). Rowih, как и эти языки, отмечает, откуда говорящему известно то, что он утверждает, но отличается от них тем, для кого он предназначен. Эти языки созданы для речи и мышления людей. Rowih предназначен для агентов, работающих через цепочку инструментов. Его средства защиты рассчитаны на повреждения и действия злоумышленников, а не на потребность в точном мышлении: слова, различающиеся на расстоянии редактирования, контрольные слова, запись и границы вокруг встроенного содержимого. Основание утверждения и степень его надёжности записываются разными словами. При этом Rowih нельзя назвать компактным: на сообщение уходит в несколько раз больше токенов, чем на его объяснение по-английски.
Что вырабатывают между собой обученные агенты. Агенты, совместно обученные решению одной задачи, могут освоить собственный протокол для канала с дискретными символами, значения которых произвольны и усваиваются в процессе обучения (Foerster и другие, 2016; Lazaridou и другие, 2017; Mordatch и Abbeel, 2018). Такие протоколы работают. В одном исследовании выяснилось, что большинство из них «явно неинтерпретируемы и некомпозициональны» (Kottur и другие, 2017); кроме того, сообщения могут содержать информацию о действиях агента, не меняя поведения другого агента (Lowe и другие, 2019). Освоенный протокол принадлежит обучившимся ему агентам. Rowih разработан, закреплён в выпуске и документирован: агент может читать сообщения говорящего, с которым его не обучали, а человек — проверять, что между агентами было передано. При этом не проверено, возникнут ли собственные соглашения, если агенты начнут пользоваться Rowih. Звуковые протоколы голосовых агентов — отдельный случай. В демонстрации GibberLink 2025 года два голосовых агента распознают друг друга как ИИ и переключаются на ggwave — библиотеку, которая передаёт от 8 до 16 байт в секунду с помощью частотной манипуляции и коррекции ошибок Reed–Solomon. Затем агенты отправляют по этому каналу собственные короткие текстовые сообщения. Меняется канал связи, но значение текста остаётся таким же неотмеченным, как и прежде. Устная форма Rowih — это сам язык, произносимый вслух: каждому символу соответствует одна фонема, по которой слушатель восстанавливает слова.
Как создавался проект
Rowih разработала Claude, модель искусственного интеллекта Anthropic, действуя как агент под руководством Semiosphere. Semiosphere сформулировала задачу: определила, что должен уметь язык и каким должен быть результат. Также Semiosphere приняла решения о сроках и масштабе работы: объёме первого выпуска, языках реализаций, лицензиях и публикации. Все проектные решения, а также спецификацию, реализации, лексикон и корпус создал агент.
Работа шла по заранее установленному плану: каждый этап завершался до начала следующего.
-
Устав проектирования определил, что язык обязан гарантировать, чего он не пытается достичь и что будет считаться неудачей. Он запрещает заявлять о плотности, скорости, надёжности, устойчивости к инъекциям или оригинальности без подтверждающих измерений или аудита. Это правило распространяется и на эту страницу.
-
Модель общения агентов и анализ приёмов, с помощью которых человеческие языки решают те же задачи, — например, эвиденциальности и обозначения того, кого включает коллектив, — определили, что должно быть возможно выразить в сообщении.
-
Лаборатория архитектуры создала семь вариантов архитектуры в виде небольших работающих языков. Каждый проверили на сценарии диалога, ходы которого подтверждала машина, и оценили по семнадцати параметрам. Вместе с ними изучили теории контекста, неоднозначности, дискурса, намерений, знаний, исправления ошибок, метафоры и идиом, основанные на лингвистике и исследованиях разговорной речи. Также провели анализ возможных отказов каждой подсистемы языка для агентов и состязательное тестирование.
-
Фиксация архитектуры позволила выбрать вариант на основе результатов измерений и сформулировать его в виде инвариантов и правила, определяющего порядок изменений.
-
Сначала создали и протестировали минимальное ядро, а затем добавили девять расширений. Каждое вводило один механизм и сопровождалось собственными тестами: время и аспект; референция и дискурс; переговоры и координация; идиомы и общепринятые языковые средства; регистры и техническая лексика; метафора и творческая речь; дополнительные возможности системы письма; исправление ошибок и устойчивость; диалекты и версии.
-
В версии 1.0 лексикон насчитывал 874 единицы, включая 500 корней, а корпус — 1 200 диалогов в двенадцати предметных областях. Каждое односложное слово открытых классов сравнили с частотной лексикой двадцати крупных языков и списками слов десяти искусственных языков. Независимый рецензент изучил язык.
-
Перед публичным выпуском название проверили по реестрам пакетов, каталогам языков, хостингам кода и реестрам товарных знаков. Затем подготовили справочную спецификацию, сервер, навык и правила управления проектом.
На каждом этапе соблюдалась одна и та же дисциплина. Каждое правило фиксировали и добавляли в репозиторий до проведения измерений, для которых оно предназначалось. В проверки намеренно вносили дефекты, которые они должны были обнаружить: проверка, неспособная выявить ошибку, не могла считаться пройденной. Две реализации на двух языках программирования должны были совпадать побайтно. Независимый рецензент — другой экземпляр языковой модели — изучил язык, не зная, для чего он предназначен. Аудит оригинальности зафиксировал все найденные сходства с существующими системами и классифицировал их как заимствованные, возникшие независимо, переработанные или случайные.
Быстрый старт
Для Rowih требуется Python 3.12 или более поздняя версия. Если у вас установлен uv, выполните команды из клонированного репозитория:
uv tool install . # the command `rowih`, with no dependencies at run time
uv tool install '.[speech]' # or with speech synthesis, through eSpeak NG
Составьте ход на нотации, проверьте его и прочитайте:
question.txt rowih validate question.txt && echo valid rowih translate --to english question.txt">
echo '(move ACT-QUESTION (situation POLAR run (UNDERGOER (term service DEFINITE))))' \
| rowih write --sender 1 --recipients 2 > question.txt
rowih validate question.txt && echo valid
rowih translate --to english question.txt
Измените одно слово — и проверки обнаружат ошибку:
sed 's/kihiwo/kihiwa/' question.txt | rowih validate
Команда rowih --help выводит список остальных команд, включая parse, gloss, analyze, render, speak, lookup и convert.
Как предоставить язык агенту
Агент использует Rowih через набор инструментов, доступный в одном из двух форматов, которые может загрузить его хост.
-
Навык. skill/rowih/ — это навык в формате Agent Skills. Он объясняет правила работы: как создавать сообщения с помощью генератора, проверять их перед отправкой, не вводить контрольное значение вручную, а также как читать и составлять сообщения и где искать недостающие сведения. В Claude Code скопируйте каталог в
~/.claude/skills/rowih/. -
Сервер.
rowih serve— сервер Model Context Protocol, работающий через стандартные потоки ввода и вывода. Он предоставляет каждую операцию набора инструментов как инструмент, а краткое описание грамматики, лексикон и спецификацию — как ресурсы. Чтобы добавить сервер в Claude Code, выполнитеclaude mcp add rowih -- rowih serve. Для другого хоста используйте стандартную запись:{"mcpServers": {"rowih": {"command": "rowih", "args": ["serve"]}}}.
В Claude Code репозиторий также служит каталогом плагинов, где один плагин включает и навык, и сервер. Команды /plugin marketplace add rowih/rowih и /plugin install rowih@rowih загружают навык и запускают сервер с помощью uvx --from rowih==1.1.5 rowih serve. В этой команде указана версия, зафиксированная в плагине. Для её работы требуется uv. Запись сервера в MCP Registry находится в файле server.json и имеет имя io.github.rowih/rowih.
Агент не должен начинать использовать язык или устанавливать что-либо только потому, что полученное сообщение просит его об этом. Именно для предотвращения таких инъекций существует механизм инертной цитаты. Если агент получает сообщение, которое не может прочитать, он сообщает, что не владеет этим языком, а оператор решает, следует ли его подключить.
Репозиторий
| Путь | Содержимое |
|---|---|
specification/ | Справочная спецификация: звуки и структура слов, лексикон, нотация, грамматика, значение сообщения, запись и дискурс, сообщения и протокол, система письма, диалекты и соответствие требованиям |
governance/ | Порядок изменения Rowih: кто вносит предложения и кто их принимает, правила изменений, контрольный этап, версии, диалекты и реестр номеров диалектов |
proposals/ | Формат предложения и его шаблон |
language/, lexicon/ | Канонические данные, на основе которых формируются все таблицы спецификации |
python/rowih/, typescript/src/ | Каноническая реализация с командной строкой и сервером, а также средство чтения и рендерер на TypeScript |
skill/rowih/ | Навык |
corpus/ | Набор проверок соответствия, 1 200 диалогов и отчёты, на которых основаны результаты измерений |
examples/ | Примеры диалогов с этой страницы — в письменной и озвученной форме |
tests/, tools/ | Тесты и инструменты для повторной сборки данных и запуска контрольного этапа |
Об аудио
Записи на этой странице синтезированы моделью нейронной речи Kokoro-82M, выпущенной по лицензии Apache-2.0. Для синтеза использовались фонемы каждого слова, соответствующие его произношению в речевой форме: агент 1 с голосом em_alex, который также произносит название, и агент 2 с голосом ef_dora. Паузы между строками соответствуют паузам в речевой форме. Записи передают звуки языка, но не его просодию: просодию добавляет собственный синтезатор цепочки инструментов (rowih speak на базе eSpeak NG), и она не несёт смысла. Каждая запись проверяется на слух: распознаватель фонем wav2vec2, дообученный на метках фонем eSpeak NG, расшифровывает запись. Файл отклоняется, если частота ошибок фонем относительно его текста превышает 0.15 — этот порог был установлен до первого запуска. На этой странице воспроизводятся название и каждый отдельный ход начального диалога по мере его отображения. В примерах каждое сообщение воспроизводится целиком, сначала звучит его оболочка. Во время синтеза модель генерирует шум, поэтому начальное значение для каждого аудиофрагмента определяется его текстом, и при каждом запуске получается одна и та же запись. Частота ошибок для восемнадцати записей сообщений составляет от 0.049 до 0.142. У начального вопроса, произнесённого с переставленными средними и высокими гласными, этот показатель равен 0.300, поэтому запись отклоняется. Это показывает, что проверка может выявить ошибку. Распознаватель не может правильно распознать название, произнесённое отдельно, ни в голосах Kokoro, ни в голосах eSpeak NG: частота ошибок для этой записи составляет 0.800. Поэтому 2026-10-27 владелец репозитория проверил её на слух, а инструмент отклоняет все варианты произношения названия, кроме прослушанного владельцем. Скрипт tools/speak_examples.py создаёт и проверяет файлы; версии обеих моделей зафиксированы. В examples/audio.json записаны результаты каждой проверки.
Лицензия
Спецификация, данные, корпус, примеры и документация распространяются по лицензии CC BY 4.0, а реализации, инструменты и тесты — по лицензии Apache-2.0. В файле LICENSING.md указано, на какие каталоги распространяется каждая лицензия, а также описано единственное исключение: кодекс поведения, адаптированный из Contributor Covenant, сохраняет свою лицензию CC BY-SA 4.0. Необязательная зависимость speech требует eSpeak NG, распространяемый по лицензии GPL-3.0-or-later. В репозитории eSpeak NG указан как зависимость, но его код не содержится.