Доброго времени, странник, здравствуй!
Первое о чём я хотел бы сказать - вчера я завёл краудфандинг на 4fund.com, и с искренней благодарностью приму любую поддержку в этом моём начинании.
***
12 часов кодинга за спиной, и это была одна из самых выматывающих сессий.
Предисловие.
В игре Disco Elysium есть потрясающая по глубине и ироничности квестовая арка про криптозоологию и охоту на криптозверя. Там даётся следующий пример - криптозверь живёт в лесу и представляет из себя невидимого летающего плоского змея, который наматывается на деревья и сливается с их корой. Просто так его обнаружить нельзя, он же невидимый и намотанный на деревья, но что бы его обнаружить и поймать, надо покрасить деревья белой краской, и тогда когда криптозверь намотается на дерево, он испачкается краской, и потом надо пошуметь, что бы спугнуть его, и тогда можно будет его поймать. Это потрясающая по своей поэтичности метафора ловли багов.
Особенностью Вайбкодинга является то, что как правило ты едва ли имеешь представление о том, как в действительности работает программа, и чем более высокоуровневый язык или фреймворк, тем меньше явного понимания происходящего с программой. А когда разрабатывается не какой то целевой скрипт, а комплексное программное обеспечение реализованное внутри навороченного фреймворка, то фиксить глубокие баги иногда задача со звёздочкой, а то и двумя. Добавьте сверху особенности самого вайбкодинга, несовершенство нейросетей и лишь поверхностную осведомлённость автора, и получите шаманские пляски с бубном вокруг поломки которой по логике вообще не должно быть. А, да, консоли тоже нет, есть только запущенный .exe который в конкретном случае просто зависал насмерть.
Итак, гвоздь сегодняшней программы - динамически создающийся DragTarget.
Идея в блупринте выглядит очень просто - мы берём на панели наш объект который мы хотим перенести на доску, и перетягиваем его, в этот момент ставится флаг о перетаскивании, когда это флаг выставлен - на доске создаётся DragTarget и область подсвечивается определённым цветом. Мы дропаем объект в эту зону, ну а дальше уже идёт сценарий который нас не волнует.
Проблема - после 5-6 дропа подряд приложение зависает насмерть.
После нескольких попыток фиксить всё и сразу, которые не увенчались успехом, я проверил и подтвердил гипотезу - дропать объект не обязательно что бы произошло зависание - достаточно просто подносить его на экран и обратно на панельку, и через 6-7 движений туда и обратно приложение зависает.
Казалось бы всё, баг воспроизведён, остальное дело техники. К тому же я опытный охотник и правил совершенно лютые поломки в Java Android и Python, и там всё куда хардкорней. Дело за малым - прозвонить всю цепочку от начала Drag-n-drop механики, до зависания. Задачка на один промпт, верно? Да, но...
Но это не нативный код Java, это кроссплатформенный фреймворк со своими причудами и одному богу известно какими реализациями.
В общем за предыдущие 7 часов я перелопатил этот конкретный участок кода наверное раз 50 безрезультатно. Отключал, перестраивал, кэшировал, обворачивал, мазал деревья белым и ловил криптозверя, и всё безрезультатно. Нейросети в режиме "думай глубже" по десять минут ищут у меня setState которых нет (предполагая их), а я читаю выкладки их рассуждений, тоже пытаясь хоть за что то зацепиться. Ничто меня не вовлекает в работу так сильно как поломанный код, ну не могу уйти спать не допилив проблему над которой бился столько времени.
В итоге и сначала Дипсик среди прочего заявил что вероятно проблема в комплексной сложности интерфейса поверх которого лежит DragTarget в режиме .fill, а потом подтвердил Клауд - проблема на уровне движка и конфликт происходит при отрисовке виджета DragTarget поверх сложной конструкции из Listener'ов и GestureDetector'ов.
И хотя сам криптозверь пойман не был (это когда есть чёткий фикс), решение оказалось элементарным - убрать вообще DragTarget'ы и просто проверять падает ли объект в контейнер с доской.
Сделано, добавленно и протестировано. Работает без проблем и можно разместить хоть сотню объектов на экране. Прекрасно.
***
Кроме этого за первую половину марафона я внёс капитальные правки в интерфейс, теперь панель с инструментами вертикальная слева вдоль экрана, а правая панель с инструментами является единым объектом и оркестрируется централизованно. Так же я обновил систему хранения Whiteboard объектов, теперь вместо одного цельного объекта доски и хранения всего в JSON каждый объект хранится отдельным файлом (чуть ниже скорость доступа, но намного выше стабильность пре перестроениях), вместо постоянных вызовов whiteboardDB.saveWhiteboard() --> частные вызовы saveItem(obj). Была проблема в том что из разных асинхронных процессов происходит война за доступ к этому файлу доски при изменениях.
В общем примерно так выглядит рутина по оптимизации, стабилизации и отладке. Сейчас почти все функции которые должны быть у доски - уже в какой то степени реализованы, новых инструментов не предвидится, а текущие едва ли будут расширяться. Сейчас задача на ближайшие две недели - держать темп и потихоньку прожёвывать каждый кейс зависания и каждый отдельный инструмент пока не получится то что задумывалось.
***
Благодарю за ваше внимание!)
P.S: сегодня без скриншотов, но мы движемся в этом направлении. Завтра я работаю над стрелками и там будет много вкусных изменений, надеюсь показать обновлённые красивые связи между объектами.
Я зарегистрировал кучу соцсетей и краудфандингов, и по такому поводу мне необходимо регулярно сцеживать свои мысли в тексты что бы поддерживать контентом все площадки.
Сегодня я хочу рассказать про нейросеть. Вернее даже статистический движок.
Я разрабатывал это изначально в качестве абстрактной модели того как по моему мнению функционирует человеческий мозг с точки зрения работы над информацией. Все абстракции подразумевают оптимизированные формулы обработки информации нейронами головного мозга. Эта модель подразумевает способность мыслить, она не просто может, она фактически наделена саморефлексией и личным опытом, у неё есть развитая коммуникация с другими узлами и история взаимодействия с ними, и она непрерывно связывает разнообразные контексты и умеет брать произвольные контексты, то есть например она может построить ассоциативный мост между любыми словами которые ей переданы. Модель экспериментальная по смыслу и по духу, и сейчас лежит в разобранном состоянии и ждёт когда я к ней вернусь.
Он состоит из нескольких базовых классов.
Класс Нейрон. Нейрон это базовая нода. Нейрон содержит в себе ссылки на фрагменты, на другие нейроны, на синапсы, на пакеты, и каждый нейрон обладает собственной обученностью за счёт собственного внутреннего контента. Нейрон создаётся когда пользователь открывает вебстраницу. Весь её контент отправляется в виде текста на вход нейросети и она создаёт локальную карту обученности. У каждого нейрона есть свой персональный синапс, на который он может отправлять пакеты и из которого он получает пакеты. Нейрон в своей базовой конфигурации делает всего три вещи - принимает пакеты из синапса в зависимости от того насколько пакет по ключевым словам пересекается с собственной семантической картой нейрона (его "сообщением", или точнее семантическим пересечением между сигнатурой пакета и сигнатурой самого нейрона). Он может обработать пакет, т.е если пакет принят нейроном то он может обратиться к своей базе связанных с ним нейронов, и запросить оттуда обработку пакета, каждый нейрон-адресат обрабатывает пакет и возвращает нейрону json с коллекцией ответных текстов. В свою очередь каждый нейрон-адресат может запросить в свою локальную базу связанности с другими нейронами, подгрузить оттуда данные и ответить на входящий пакет. Если ответная реакция на пакет отрицательная, то его содержимое индексируется в отрицательный вектор, то есть вектор определяющий то, чем нейрон не является. Этот вектор обладает сравнимой длиной с вектором принадлежности, и накапливает обученность на основе фальсифицированных утверждений (т.е утверждений априори неверных). После того как пакет обработан к нему добавляются в вектор все нейроответы и содержимое конкретных фрагментов как либо релевантных запросу.
Синапс - это транспортная система для пакетов, пакет сначала кладётся на синапс адресата, после чего синапс получает команду активировать нейрон, нейрон вбирает в себя все пакеты синапса и реагирует на каждый согласно своему протоколу, после чего над каждым пакетом совершает либо операцию передачи далее, либо операцию передачи обратно, когда нейрон возвращает обработанные пакеты в синапс то он запускает у него функцию срабатывания, которая заставляет уже синапс передать пакеты на внутреннюю карту других синапсов, которые находятся в разных компьютерных системах. Происходит акт передачи пакетов, но сначала синапс забирает из связанных с ним синапсов их пакеты релевантные его сигнатуре.
Пакет - это контейнер данных, он содержит адрес предыдущего по цепочке узла, шифрованную строчку которую можно открыть только закрытым ключом адресата, и публичный хэш по которому он таргетится в системе. Пакет движется по сети и обогащается, у него есть флаг transit, returning, static <- есть "время жизни", которое убывает по мере накопления ответов, как только время жизни иссякает пакет помечается как returning до тех пор пока не достигнет своего источника запроса и не вернёт ему данные, там он помечается в базе как static и помещается в новый нейрон, который связывается с теми нейронами, которые участвовали в первичном обмене данными.
Слово - это контейнер-вектор, состоит из собственного ID, и вектора word1.rating[word2.id] = context persistance. проще говоря всегда когда слова находятся в одном контексте, у них увеличивается совместный рейтинг, таким образом система обучается и у каждого слова есть длиннющая цепочка связей с другими словами. Благодаря тому что у каждого нейрона своя обученность, то суммарный контекст из активных нейронов образует уникальную нейрокарту под каждый уникальный входящий запрос.
Фрагмент - это какой то кусочек текста взятый в качестве токена - предложение, base64 shard, текст в скобках, высказывание, абзац, страница, глава - всё это разновидности фрагментов, каждый из которых обладает собственной картой обученности относительно контейнера-нейрона к которому фрагмент принадлежит. Эта карта позволяет связывать фрагменты из разных нейронов по принципу сходства и близости сигнатур. Фрагменты являются базовой единицей информации передаваемой в пакете. Фрагментом может служить html код, эссеншл, ссылка на вебстраницу, данные о файле, произвольный текст любого объёма.
Последовательность - это особый объект, суть которого в том что он разбивает последовательность идущих друг за другом слов в качестве отдельных векторов, и высчитывает между ними тренды, состоит из пула взятых единиц контента - нейронов, фрагментов, слов, синапсов и любых объектов, и в той последовательности в которой они даны он проводит векторный анализ и предиктивную функцию для каждого поля вектора, формируя на выходе новый вектор, относительно которого ищутся фрагменты, нейроны, слова, синапсы или пакеты, и они уже возвращаются в качестве ответа. Фактически это механизм компьютерного внимания и генерации.
На базе этих абстракций образуется сетевая архитектура - гиперсвязанных граф знаний, образованный из контента который потребляют пользователи. Он непрерывно обучается на всех вебстраницах, на всех текстах, на всех книгах, на всей музыке, на всех файлах, всё что вы ему даёте он пытается разбирать и обучаться на этом.
Так же к системе прилагается ряд сетевых протоколов, которые обеспечивают p2p транзит данных между множествами узлов. Нейроны могут выполнять базовые логические операции, могут менять своё состояние, уведомляя систему об активности, у них есть специальный контрольный вектор который как ключ задаёт определённый характер экспрессий, сам по себе один нейрон весит от 1 до 20МБ, и каждый нейрон является полностью самостоятельной абстракцией. Он эволюционирует по мере запросов к нему и обучается в зависимости от обратной связи получаемой от других нейронов на базе тех пакетов что он туда присылает. Для каждого нейрона в своей связанности есть нейрокарта взаимодействия с ним - тоже положительный и отрицательный вектор - положительный за счёт того какие данные были отправлены и приняты с высоким одобрением, а какие пакеты были отвергнуты.
И уже поверх этого ставится Языковая модель которая преобразует сначала мои вектора в word2vec, а потом обучает на них локальную ЛЛМ.
Этот алгоритм лежит в основе предиктивной модели всего комплекса модулей Wisor. Он буквально обучен на той информации которая составляла последовательности контекстов переходящих состояний его внутреннего пула обработки. Каждый раз когда он подключает новые нейроны в активности, он индексирует это и собирает снапшоты своего собственного контекста для секвенсора.
Однажды я более подробно изложу этот концепт в документации. Этот проект когда будет готов будет опенсорсным и базовое ядро будет весить 15-20 мегабайт. Запустится даже на умном градуснике.
Благодарю за то что читаете.
> Благодарю за то что читаете.
Такого размера пост - повод для отдельной темы. Комментировать это в общей свалке нам неудобно. А копировать в другое место, чтобы откомментировать там - незаконно (вы же лицензию текста не указали, а разбираться, какие там умолчания у площадки - долго).
https://блоги.опенсорс.рус/aary/entry/wisor-ai-комментарии-к-тексту
Aary
Автор не изложил модель — он перечислил названия классов («Нейрон», «Синапс», «Пакет» и т.д.) и их атрибуты, но не дал ни одного строгого определения. Вместо конкретики — декларативные утверждения («может», «обладает», «позволяет») и ссылки на неопределённые сущности («сигнатура», «вектор», «контекст»).
сигнатура это переменная Map<int, double> где int это целочисленная переменная указатель на id объекта класса word, а double это количество слов встречающееся в контейнере с определённой формулой "внимания". Есть так же переменная SignatureAll которая указывает на суммарный вес сигнатуры (чем больше слов содержит контейнер, тем больше будет сигнатура).
Сигнатура является частным случаем вектора Map<int,double> и у других классов есть собственные варианты таких векторов - вектор связи между нейронами и синапсами.
Объект класса Sequence это вектор состоящий из множества векторов, т.е Map<int,Map<int,double>>.
Контекст это абстрактный класс который содержит набор нейронов и развёрнутую внутри их обученность в виде одного конкретного собственного словаря Map<String,int> - указатель на те самые int которые используются в заданной обученности. Контекст оперирует активными и не активными нейронами, оркестрирует все взаимодействия. Контекст состоит из объектов класса Sequence, которые в свою очередь состоят из снапшотов системы - словарей присутствующих на экране слов в каждый момент времени взятый с разницей в 30 секунд. То есть когда необходимо создать определённый контекст - механизм обращается в базе, находит среди тысяч .json файлов те которые по собственным сигнатурам близки к вектору промпта (косинусальная близость), и извлекает их, подгружает в систему, разворачивает их так же ближайшие контексты, и собирает в общем виде один массив sequenceContext = [Sequence[x],...,Sequence[n]], из которых образуется единый вектор Map<int, double> по сути набор из пар "слово", "рейтинг внутри контекста".
Это не модель, а набор метафор и интенций.
Код будет open source. В данном случае я описал детали и их назначение. Здесь описаны взаимодействия этих сущностей и из них следует модель. Может быть не полностью формально как whitebook, но это и не whitebook а пост на форуме и в девблоге.
Нет ответов на ключевые вопросы.
Можешь задавать любые вопросы, я отвечу и буду благодарен за дискуссию.
> Можешь задавать любые вопросы
Любые не могу. Потому что ты по-умолчанию уважаемый разработчик, и я не могу тебя отвлекать, не разобравшись заранее в вопросе. А разбираться - это надо много времени, своих дел хватает.
Ты бы написал адрес сайта проекта, где всё красиво изложено. Если у тебя его ещё нет, то есть ли он в планах? Будешь ли ты пользоваться инфраструктурой Apache или всё своё?
Я тебе ещё писал вопрос про лицензию на твои тексты на форуме gamedev, но ты повторно сказал, что "всё будет опенсорсом". Я так-то это и с первого раза заметил. А вот по поводу текстов на геймдеве - это же другой вопрос, и ты не ответил.
А сайт нужен затем, чтобы там всё сразу было написано, ну, целевая платформа, стек технологий разработки и всё такое. Будет ли твоя программа работать на моём Loongson? Не окажешься ли ты с твоим p2p оператором услуг связи?
Aary
> Ты бы написал адрес сайта проекта, где всё красиво изложено. Если у тебя его ещё нет, то есть ли он в планах? Будешь ли ты пользоваться инфраструктурой Apache или всё своё?
Сайта пока нет, потому что нет денег на домен и хостинг. Сайт появится незадолго до публикации первого релиза. Если совсем не будет ресурсов сделаю на бесплатном хостинге. Не слишком презентабельно, но на первое время сойдёт. Потом можно будет переехать.
На счёт серверов я пока не задумывался, у меня есть готовые 30к строк кода для Firebase которые я для мобильного приложения писал, там реализовано очень многое, по сути бэкэнд для социальной сети, файлового хостинга, чатов и цифровой валюты, с магазинами и пользовательскими кошельками. Но надо конечно переезжать на собственную архитектуру. p2p я реализовывал там же на базе webRTC, вся цепочка - от поиска пиров, до проброса канала, обмена открытыми ключами, шифрование траффика и стрим данных. Это было нужно для голосовой и видеосвязи которые были там реализованы.
Aary
> Я тебе ещё писал вопрос про лицензию на твои тексты на форуме gamedev
Я за любой диалог и любое какое либо привлечение внимания к тому что я создаю. Я открыт для любой коммуникации.
Aary
> Будет ли твоя программа работать на моём Loongson?
Сейчас тестировалось на Windows 11 и Windows 10
Я пишу на Flutter, это язык .dart, есть модули на c++ - это системные хуки винды, доступ к клипборду и прочим данным операционной системы. Flutter это язык сравнимый по скорости с С++, и одним из главных заявленных его качеств является полная кроссплатформа. Он умеет билдить под Android, iOs, Linux, MacOS, Windows, Web и всё из одного и того же кода. Для каждой отдельной платформы нужна дополнительная адаптация кода, и конечно тестирование. Грубо говоря выход на каждую дополнительную платформу это 2 месяца работы. В перспективе iMeYou будет просто модулем мобильного Wisor, доступная по одной внутренней кнопке. При этом на телефоне будет поверх всех окон сидеть твой персональный AI.
На счёт Loongson я не могу дать ответ, я ничего не знаю об этих процессорах, но если он запускает Винду, то и моё приложение он запустит.
Aary
> Не окажешься ли ты с твоим p2p оператором услуг связи?
Когда я учился в универе, на первом курсе, мы с другими гиками рассуждали о будущем технологий, и суть их в двух явных трендов которые находятся в конфликте между собой. Тренд на централизацию и тренд на децентрализацию. Согласно закону Мура количество транзисторов на кристалле удваивается каждые 18 месяцев, и в этом смысле кривая роста является параболой и в какой то момент разница совместимости между соседними системами будет такова, что компьютеры с разницей в 5-6 лет будут несовместимы, то есть речь примерно о пороге когда следующее поколение оперативной памяти будет по 64ГБ на плашку, а системные требования нового вида софта будут по 20ГБ оперативной памяти - локальные АИ ЛЛМ и прочее, просто поставленные в базу компьютерного устройства.
Так вот, подобный разрыв ведёт к тому что необходима технология, которая позволит слабому устройству использовать ресурсы мощного устройства дистанционно.
В парадигме централизации это означает супер-облако, то есть датацентр который обслуживает сотни устройств в режиме терминала, хранит все их данные, обеспечивает воспроизводство программ и так далее. Это тот путь по которому в какой то момент пойдёт Microsoft и Apple. Подобные разработки давно ведутся и даже есть работающие сервисы. 100МБ\с соединения хватит что бы в реальном времени управлять любыми программами. И вы платите абонентскую плату. Забудьте о пиратстве, забудьте о бесплатном доступе, забудьте о покупке программ, забудьте о приватности, забудьте о любой возможности что либо в этом контролировать. Это будет предпонесено как идеальное решение ваших потребностей и оно в конечном итоге действительно решает проблему пользовательских устройств в условиях эксплозивного роста производительности.
В парадигме децентрализации эта задача решается иначе, вместо того что бы создавать супер-дата-центры, создаётся ядро спроектированное на взаимодействие с подобными ядрами, микро-клиент размером с клиент торрента который реализует определённый протокол с сетью, и предоставляет часть своей персональной мощности сети, и может адресовать свои запросы в распределённую сеть на вычисления ответов, это и есть тот p2p протокол который я реализую. Все что вам будет нужно это установить программу и подключиться к интернету, и оно работая в фоне будет адресовать ваши вопросы в эту сеть узлов которая является по сути VPN на onion-like структуре. Ни один участник сети не знает ни одного другого участника сети, полная анонимность.
Стану ли я при этом провайдером связи? Лично я - нет, но я думаю у проекта будет какой-то менеджмент, который может принять такое решение. Я про это ничего сейчас сказать не могу, у самого подобных планов пока не было.
> «является по сути КВН на onion-like структуре. Ни один участник сети не знает ни одного другого участника сети, полная анонимность.»
Нероскомнадзорно. Запретили I2P, не работает RetroShare.
Вот и вышеприведённый текст не отвечает на вопрос того, как тенденции позволят проекту жить.
> реализовано очень многое, по сути бэкэнд для социальной сети
Звучит как Telegram (пользоваться им, кстати, стало невозможно, не обновляется клиент, не может себя скачать)
Но я бы хотел обсудить механизмы публикации текста. То есть вот, его (текста) редактирование в личном и социальном режимах (то есть, реализацию модерации).
Мне недавно пришла идея более совместного редактирования, чем у википедии, но описать пока не получается.
Чего больше всего боится пользователь? Что его текст сотрут злые модераторы, и он останется без текста. Что больше всего хотят другие пользователи - вставлять свои гиперссылки в чужие тексты. Вот обе эти функции я хочу добавить. Технически возможность есть. Википедия не решает ни первую, ни вторую проблемы.
Я тебе ещё писал вопрос про лицензию на твои тексты на форуме gamedev
Я за любой диалог и любое какое либо привлечение внимания к тому что я создаю. Я открыт для любой коммуникации.
Ты так и не понимаешь суть вопроса. Ответ я, нужный мне, пока не получил. Хочу услышать что-то про share-alike, и про то, что ты разрешаешь использовать каждое из твоих сообщений на геймдеве под лицензией [лицензия]
Aary
> Вот и вышеприведённый текст не отвечает на вопрос того, как тенденции позволят проекту жить.
Честно говоря я плохо себе представляю взаимодействие с регуляторами и какие они назовут условия.
Aary
> Но я бы хотел обсудить механизмы публикации текста. То есть вот, его (текста) редактирование в личном и социальном режимах (то есть, реализацию модерации).
Хм.
Aary
> Хочу услышать что-то про share-alike, и про то, что ты разрешаешь использовать каждое из твоих сообщений на геймдеве под лицензией [лицензия]
Вот здесь у этого могут быть какие то очень далекоидущие последствия которые я не очень понимаю сейчас, никогда не задавался вопросом лицензирования постов в интернете. GPL хотя относится к софту, вроде бы выглядит как подходящий вариант.
Можете объяснить мне в ЛС целеполагание по поводу лицензий? Что вы задумали?
PeeKay
> Что вы задумали?
Я ж наглядный пример привёл, где скопировал ваш текст в свой блог в нарушение законодательства. Я рисковал тем, что вы можете подать на меня в суд (гипотетически). Поскольку мне не нужны лишние риски, я ваши посты в интернете копировать не буду, минимизирую их обсуждение. Очевидно же.
> у этого могут быть какие то очень далекоидущие последствия которые я не очень понимаю сейчас
Я так и написал, что чего-то вы не понимаете. Только на "ты" обратился. Но сейчас вы обращаетесь ко мне как к врагу ("вы задумали"), переобуваюсь в прыжке.
Наиболее очевидные страшные последствия - ваши тексты станут более пригодными для поедания искинами (ИИ).
Ещё их смогут использовать лингвисты в своих коварных целях.
> GPL хотя относится к софту, вроде бы выглядит как подходящий вариант.
share-alike что-то такое по отношению к контенту (текстам, картинкам), там есть разные варианты того, какие действия вы разрешаете.
> я плохо себе представляю взаимодействие с регуляторами и какие они назовут условия.
Они оглашают условия путём публикации законов. В текстах законов всё написано. Налоги там же. Законодательство делится на четыре уровня. В учебнике по юриспруденции всё описано.
Aary
> Я ж наглядный пример привёл
ммм, ну то что вы прислали я думал там ответить, но там странный интерфейс
Aary
> Но сейчас вы обращаетесь ко мне как к врагу ("вы задумали")
Скорее пытаюсь сохранить формальную дистанцию, потому что мне непонятно) Никакой враждебности.
Aary
> Наиболее очевидные страшные последствия - ваши тексты станут более пригодными для поедания искинами (ИИ).
> Ещё их смогут использовать лингвисты в своих коварных целях.
Окей. ничего страшного
Aary
> Они оглашают условия путём публикации законов. В текстах законов всё написано. Налоги там же. Законодательство делится на четыре уровня. В учебнике по юриспруденции всё описано
Окей.
Во всех этих юридических вопросах я Чебурашка, ничего не понимаю и не знаю что от меня надо) Хотите публиковать мои тексты где то в сети - публикуйте. Хотите комментировать - комментируйте. Если вы сделаете на этой основе свой прототип и свою реализацию - вообще офигенно.
Приветствую, странник, здравствуй.
Сегодня 26 03 2026
Статус проекта - в активной фазе разработки, проект компилируется, запускается, обновляется, основные модули готовы и им нужен последний полирующий проход перед запуском, сейчас в активной разработке доска и я пришёл рассказать вам про всего один инструмент который я добавил на доску и который поменял вообще всё.
Сегодня я расскажу про Wisor Node.
Wisor Node - это элемент доски представляющий из себя либо математическую формулу, либо LaTeX формулу, либо код на .dart, это виджет размером с карточку к которому при помощи стрелки можно подсоединять объекты в качестве источников данных. Например картинка может служить источником самих битов изображения, а может быть источником текста описывающего изображение нейроязыком, а может быть источником файла в файловой системе или url ссылки на контент. Так же в качестве источников данных могут быть Essentials, EatenFiles, WebView, TextObject.
Главный смысл - вы добавляете в ноду код, например запрос к нейросети StableDiffusion, на порты передаёте в качестве источника текста List<String> которые по очереди отправляются в StableDiffusion с метапромптом для генерации изображения, всё это делает функция ноды, на выходе возвращая List<String> с путями к локальным файлам изображений которые нейросеть нагенерировала, другой output возвращает сами изображения в виде бит, в принципе порт может отдавать любой .dart совместимый вид данных. Ноды разделяют между собой общий вычислительный контекст, поэтому импорты одной ноды доступны и для другой ноды. Так же как и классы объявленные в одной ноде доступны и для всех остальных нод.
Цифровую экосистему можно экспортировать в отдельный файл и воспроизвести на другой доске.
Суть этого в том что бы сократить пайплайны обработки данных и сделать так что бы однажды созданная структура работала и впредь, достаточно просто подставить другие данные. Например вы можете один раз выстроить следующую схему:
1. На вход первой ноды подаётся EatenFile —> Harry Potter and Methods of Rationality.html и папка с 2000 изображений связанных с фантастикой из книг с аннтоациями и правильным семантическим описанием. На третий порт подаётся мета-промпт который состоит из тэгов для генерации, например мультяшный стиль, или стиль Dark Fantasy, и все промпты high quality, digital art, pro art ->
2. первый цикл работы - картинки загоняются в нейросетевую обработку и OCR, ONNX пайплайны, и на выходе получаются описания каждого изображения около 500 токенов текста, эта нода отдаёт эти данные в другую ноду,
3. Картинки распаковываются вместе с нейроописаниями и загоняются в локальную модель StableDiffusion через локальный api в сочетании контекст+сами изображения. Можно добавить расшифрованные с кадра тексты. Модель обучается на стилизации и контексте, теперь она при правильно заданных тегах будет генерировать изображения схожие с обученностью которую вы предоставили. Вы можете отдать кадры фильмов, мультфильмов, арты из сети, собственные рисунки, в общем что угодно - любой объём файлов с изображениями. Описания сгенерируются нейросетями сами. После обучения нейросети переданный раннее файл книги распаковывается и превращается в набор текстовых предложений, следующая нода берёт тексты, и обрабатывает их согласно своему внутреннему механизму - извлекает строки и по очереди отправляет их в обученную локальную StableDiffusion с выдержанным ssid и набором метатегов. На каждый фрагмент текста генерируются изображения, в среднем по одному изображению на 2 абзаца. Изображения генерируются по очереди, и первое изображение созданное в серию подаётся на вход второго изображения, и так по цепочке нейросеть строит последовательность кадров, выдерживая контекст, на выходе нода отдаёт пакет обработанных текстов и набор изображений, после этого собранная серия из примерно 300 картинок вместе с текстами и метапромптом загоняется парами по очереди в нейросеть SORA или klingai и генерирует на базе переданных изображений и текстов видеоролики, нода на выходе отдаёт List<String> с filepath сгенерированных видео, последняя нода в списке генерирует на базе ключевых моментов текста нейроозвучку через ноду с доступом к SUNO, через API создаётся озвучка текста, и последняя нода в списке собирает весь материал воедино превращая изначальный набор обучающих изображений и текст книги в анимированный видеоролик с прочтением оригинального текста вслух нейросетью.
И этот пайплайн можно создать за 1.5-2 часа, и переиспользовать как угодно, достаточно подставить другую книгу и другую папку с картинками, и на выходе после работы всего процесса (может через 15-20 минут) - вы получаете оригинальный файл уникального нейротворчества.
Вот что такое Wisor Node —> Визуальное программирование на .dart
Что касается других двух типов нод, то они нужны для создания научных пайплайнов обработки математики, о них я расскажу в другой раз.
Публичный репозиторий на гитхабе есть?
Butjok2
сейчас закрытый, потом будет публичный репозиторий с примерами кода, готовыми досками и api
Приветствую, странник.
Вчера была ночь компиляции. Я накатил нейросетью целый пласт изменений после чего исправлял все ошибки компиляции. Статус проекта: в разработке)
Гость сегодняшней программы LaTeX формула.
Это расширенная версия алгебраической ноды которая умеет делать следующее:
1. Рендерит красивые формулы написанные в LaTeX формате
2. На каждую переменную формулы создаётся порт принимающий значения. Если вы поставите программируемую ноду перед передачей данных в порт, вы можете контролировать полностью то что попадёт в формулу.
3. После подачи значений на все порты нода рассчитывает результат и подаёт его на input.
4. Над нодами возможны алгебраические преобразования, например вы можете выразить из формулы любую её переменную в качестве уравнения, это позволяет используя одно единственное неравенство получать инструмент для преобразования и выражения чисел.
5. Для каждой нижеперечисленной ноды написан собственный движок:
1. Химическая нода. В формате LaTeX умеет рендерить химические формулы и рассчитывать результаты реакции. Заложена большая библиотека химических соединений, а если чего-то нет то это можно записать самому. Можно построить цепочку формул передавая результаты одной формулы на входы другой.
2. Физическая нода. Знает несколько сотен уравнений, знает константы, умеет в алгебраичесские преобразования, принимает на порты численные значения и умеет делать финальный результат. Потенциально можно строить длинные цепочки формул передавая результаты одних формул на другие формулы.
3. Булевая нода. Умеет в логические формулы и преобразования на базе булевой алгебры, порты принимают булевые входы, на выходе булевая нода имеет результаты - if , else if , else <— для каждой переменной. Нужна что бы создавать логику ветвлений веток сценариев.
4. Теория множеств. Умеет строить формулы на языке теории множеств, умеет делать на этом языке вычисления и решать задачи. Может быть частью более крупных пайплайнов
5. Теория пределов. Умеет строить формулы на языке теории пределов, умеет производить математические вычисления.
6. Теория вероятностей и комбинаторика. Умеет строить формулы теории вероятностей и производить в них вычисления.
7. Теория систем. Умеет рендерить системные формулы и выводить ответы согласно заданной аксиоматике.
8. Так же я добавил новый объект "Визуализация", он принимает на вход последовательность чисел и есть режимы отрисовки в виде графиков. То есть вы можете например из ноды в реальном времени передавать данные на визуализатор, и по мере работы итератора на нём будут визуально меняться выводимые значения.
9. Добавил формулы, программные ноды и клипборд в правую панель, теперь вы можете прямо из клипборда дропать на доску тексты как есть. Так же есть библиотека готовых формул для каждой упомянутой выше теории, по ним осуществляется поиск, их можно просто дропнуть на доску.
***
Сейчас этот функционал пока экспериментальный, я буквально под утро закончил компиляцию и устранил все артефакты, согласовал все импорты и запустил. И оно запускается и открывается. Сегодня день работы над стабильностью и оптимизацией, ничего не добавляю, только отлаживаю то что есть.
Ты не тем занимаешься. Нам нужны сравнительные анализы. Почему твой протокол хорош, если есть application/activity+json, почему твоя сеть хороша, есть ли у тебя nomadic identity, что у тебя является аналогами DOI и DNS, Чем ты лучше XMPP, Matrix, IRC, Retroshare и тому подобные вопросы, проясняющие, почему твой проект взлетит (а их - не взлетел).
Фокус твоей платформы должен быть на социальных механизмах и их реализации. А не классический "почтовик с формулами".
Вот если я хочу создать какую-то лажу масонскую ложу, то смогу ли я право владения этой организацией передать моим наследникам в твоей программе?
Тебе нужен план поэтапного развёртывания. Как у тебя сначала будет один сервер, как потом их будет становиться больше, как сеть перейдёт в P2P режим. Как работает обнаружимость чего-либо, в чём отличия от сводного поиска в телеграме. И много всего ещё нас интересует.
Будет ли судьба твоего проекта отличаться от социальной сети Мой круг, чем?