neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Редактор запросов 1С на Next.js и Monaco: подсветка, форматирование, структура пакета, ИИ-помощник
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Веб-редактор текста запросов 1С:Предприятия 8 на Next.js и Monaco Editor. Откройте http://localhost:3000. Образ (standalone-сборка Next.js, Dockerfile) собирает GitHub Actions при каждом пуше в master и публикует в ghcr.io/musabiii/queryeditormonaco — на сервере сборки нет, нужна только загрузка. Контейнер queryeditor подключается к внешней сети nginx-net, порт наружу не публикуется — к нему обращается nginx из своего контейнера:README 전문 보기 ↗
Веб-редактор текста запросов 1С:Предприятия 8 на Next.js и Monaco Editor.
Таблица, набранная в списке полей, сразу присоединяется левым соединением с подобранным условием:
Псевдоним, изменённый после «КАК», меняется во всём запросе:
npm install
npm run dev
Откройте http://localhost:3000.
Образ (standalone-сборка Next.js, Dockerfile) собирает GitHub Actions при каждом пуше в master
и публикует в ghcr.io/musabiii/queryeditormonaco — на сервере сборки нет, нужна только загрузка.
Контейнер queryeditor подключается к внешней сети nginx-net, порт наружу не публикуется —
к нему обращается nginx из своего контейнера:
docker network create nginx-net # если сети ещё нет
docker compose pull && docker compose up -d
Кнопка «Поделиться» сохраняет запрос и даёт ссылку https://сайт/<id> — как pastebin: запрос
хранится 30 дней файлом в томе queryeditor-data (SHARE_DIR=/app/data/shares) и переживает
обновления образа; не больше 200 КБ на запрос и 30 ссылок в час с одного адреса. На Vercel
ссылки недоступны — там файлы между запросами не сохраняются.
Аналитика на своём сервере — Яндекс Метрика: номер счётчика задаётся переменной
YANDEX_METRIKA_ID (например, в файле .env рядом с docker-compose.yml), пересобирать образ
не нужно — после изменения docker compose up -d. Вебвизор выключен: он записывал бы тексты
запросов из редактора. На Vercel работает Vercel Analytics.
Вместо Метрики или вместе с ней — Umami на своём сервере: переменные
UMAMI_URL (адрес Umami, например https://umami.musabii.dev), UMAMI_WEBSITE_ID (идентификатор
сайта из настроек Umami) и необязательная UMAMI_DOMAINS (query.musabii.dev — не считать
запуски на localhost). Кроме посещений отправляются события (src/lib/analytics.ts): «Поделиться»,
«Форматирование», «Текст для кода 1С», «Убрать оформление кода 1С», «Очистить», «ИИ-помощник»,
«Проверка синтаксиса», «Цветовая схема», «Конфигурация» (название типовой или «своя»), «Загрузка
своей конфигурации». Тексты запросов не отправляются.
Пакет в GitHub Container Registry по умолчанию приватный: либо сделайте его публичным
(страница пакета → Package settings → Change visibility), либо войдите на сервере
docker login ghcr.io с токеном, у которого есть право read:packages.
location / {
proxy_pass http://queryeditor:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
Ответы ИИ-помощника идут потоком; маршрут /api/ai/chat отдаёт X-Accel-Buffering: no, поэтому
nginx не копит их целиком. Запросы к провайдерам ИИ делает сервер — с сервера в РФ API OpenAI,
Anthropic и Google, скорее всего, недоступны.
Monaco без CDN. Скрипт scripts/copy-monaco.mjs копирует сборку monaco-editor/min/vs
в public/monaco (запускается на postinstall, predev, prebuild; папка в .gitignore).
Интерфейс редактора — на русском (src/lib/monaco-loader.ts).
Язык sdbl (src/lib/query-language/):
vocabulary.ts — ключевые слова, функции, типы, объекты метаданных, виртуальные таблицы
в русском и английском написании;grammar.ts — токенизатор Monarch и настройки языка (комментарии //, скобки, автозакрытие);themes.ts — темы Monaco, построенные из цветовых схем src/lib/color-schemes.ts;lexer.ts — лексер для разбора текста вне Monaco;batch.ts — разбор пакета на запросы для панели «Структура запроса»;formatter.ts — форматирование в стиле конструктора запросов (Shift+Alt+F).Цветовые схемы (src/lib/color-schemes.ts): 1С (классическая), VS Code Light/Dark (по умолчанию — по теме системы),
GitHub Light/Dark, Solarized Light/Dark, Dracula, One Dark, Monokai, Nord, Tokyo Night.
Схема задаёт цвета подсветки, редактора и интерфейса; новая схема — одна запись в этом файле.
Метаданные конфигурации (src/lib/metadata/): кнопка «Конфигурации» загружает выгрузку
конфигурации в XML (Конфигуратор → «Выгрузить конфигурацию в файлы»). Из выгрузки читаются только
Configuration.xml, описания объектов верхнего уровня (Catalogs/Имя.xml и т.п.) и предопределённые
элементы справочников и планов (Catalogs/Имя/Ext/Predefined.xml), разбор идёт
в Web Worker собственным разборщиком XML (xml.ts), модель сохраняется в IndexedDB браузера —
файлы никуда не отправляются. Выгрузка ЗУП 3.1 (≈2300 файлов, 65 МБ) разбирается за ~3 с
в модель 5,2 МБ.
Встроенные типовые конфигурации (public/configurations/): готовые сжатые модели, которые
всегда доступны в списке «Конфигурации» и скачиваются при первом выборе. Сейчас это
«Зарплата и управление персоналом» 3.1.20.97, «Медицина. Больница» 2.0.16.1,
«1С:Университет ПРОФ» 2.2.15.20 и «Управление торговлей» 11.5.27.95.
Добавить или обновить (выгрузки лежат в confexample/, папка исключена из git, ESLint, tsc и образа Docker):
Подсветка учитывает контекст: после точки идёт имя поля (Док.Ссылка, Т.Количество),
после КАК — псевдоним или тип, функции выделяются только перед скобкой (СУММА(...)),
ССЫЛКА считается оператором, только если справа путь к метаданным.
| и удвоенные кавычкиnpm run configuration:build -- confexample/<папка выгрузки> --slug zup
Скрипт сохраняет <slug>-<версия>.json.gz и обновляет manifest.json; прежняя версия с тем же
slug заменяется. Пересобранную модель браузер скачает заново: кэш сверяется с датой сборки в манифесте.
Проверка синтаксиса (syntax-check.ts, syntax.worker.ts, src/components/syntax-markers.ts): по
грамматике SDBL из 1c-syntax/bsl-parser (grammar/sdbl,
LGPL-3.0-or-later; разборщик генерирует ANTLR — npm run grammar:build). Через 0,6 с после паузы в наборе
текст разбирается в фоновом потоке, ошибки подчёркиваются красным, а их текст виден в конце строки
красным курсивом, как комментарий // … (в сам запрос не попадает); по одной на запрос пакета,
повторно разбираются только изменённые запросы. В строке состояния — «Ошибок: N» (клик и F8 — к следующей),
на панели команд — переключатель проверки (запоминается). С ошибкой форматирование не выполняется.
npm run syntax:corpus -- <выгрузка> прогоняет проверку по запросам из модулей конфигурации: на ~21 тыс.
полных запросов трёх типовых ложных ошибок нет, остаются только шаблоны, которые код дособирает.
Автодополнение (src/lib/query-language/completion/): объекты после Справочник., виртуальные
таблицы и табличные части, поля по псевдониму с переходом по ссылкам, поля временных таблиц
и вложенных запросов, значения перечислений и предопределённые элементы (ЗНАЧЕНИЕ(Справочник.Вид.);
без точки — псевдонимы, ключевые слова, функции. Реквизит, выбранный из списка в новом поле ВЫБРАТЬ,
вставляется сразу с именем: С.Наименование КАК Наименование (ГоловнаяОрганизацияНаименование для
С.ГоловнаяОрганизация.Наименование, Наименование1 при повторе), как у конструктора. В условии ГДЕ (после ГДЕ,
И, ИЛИ, НЕ) выбранный реквизит вставляется как Т.Поле = и сразу открывается список значений. После ВЫБРАТЬ и СГРУППИРОВАТЬ ПО (и запятой в их списках),
ГДЕ, ИМЕЮЩИЕ, ПО соединения, И/ИЛИ/НЕ в этих условиях (кроме МЕЖДУ … И), КОГДА, ТОГДА, ИНАЧЕ,
а также после скобки функций вроде СУММА(, ЕСТЬNULL(, ГОД( — с пробелом, Enter или Tab сразу открывается
список псевдонимов таблиц запроса (в порядке ИЗ); выбранный дополняется точкой и списком полей. После Т.Поле = (или <>, <, >, <=, >=) и пробела — сразу
список: параметр &ИмяПоля (в условии ПО соединения вместо него — псевдонимы таблиц), для булевых — ИСТИНА и ЛОЖЬ, для ссылочных — ЗНАЧЕНИЕ(...) перечисления, предопределённые
элементы и ПустаяСсылка.
Заготовка запроса по таблице (new-query.ts, new-query-preview.ts): в блоке без запроса (или только
с ВЫБРАТЬ) набран путь Справочник.МедицинскиеКарты или имя временной таблицы пакета — под строкой серым показывается готовый запрос
ВЫБРАТЬ МедицинскиеКарты. ИЗ Справочник.МедицинскиеКарты КАК МедицинскиеКарты, курсор встаёт после
МедицинскиеКарты. и сразу открывается список реквизитов. Таблица, выбранная из списка подсказок, подставляется
сразу; набранная руками — серой заготовкой по Tab. В запросе с ИЗ набранная
в списке ВЫБРАТЬ таблица (РегистрСведений.АдресПациента) показывается серым как ЛЕВОЕ СОЕДИНЕНИЕ
с подобранным условием; Tab присоединяет её и заменяет путь псевдонимом с точкой (выбранная из списка —
присоединяется сразу). Нужна загруженная конфигурация.
Следующий запрос пакета: в конце пакета набрано /// — серым показывается разделитель на всю ширину
и ВЫБРАТЬ; Tab ставит ; после последнего запроса (если её нет), дописывает разделитель и ВЫБРАТЬ,
курсор — строкой ниже.
Связанная правка псевдонима (linked-aliases.ts): курсор на псевдониме после КАК в ИЗ — правка
сразу меняет его во всём запросе, во всех путях ФЛ.… (правка ФЛ в самом ФЛ.Поле — обычная); другие запросы пакета,
подзапросы со своими таблицами, поля вида Т.ФЛ и комментарии не затрагиваются.
Так же правится имя временной таблицы после ПОМЕСТИТЬ: оно меняется в следующих запросах пакета
(источники, УНИЧТОЖИТЬ, пути ВТ.Поле, псевдоним в ИЗ ВТ КАК ВТ) — до УНИЧТОЖИТЬ или повторного
создания таблицы с тем же именем; псевдоним другой таблицы КАК ВТ не меняется.
Подсказка группировки (group-by.ts): если в выборке есть агрегатные функции и поля вне них,
а СГРУППИРОВАТЬ ПО нет, серым текстом предлагается раздел с этими полями — когда курсор
на пустой строке в конце запроса, в начале строки с ; или следующим разделом, или в конце
последней строки ИЗ/ГДЕ. Tab вставляет, Esc или продолжение набора — отклоняет. После применения
агрегатной функции из дерева к полю та же заготовка сразу показывается серым на своём месте
в конце запроса (group-by-preview.ts), курсор остаётся на поле.
Дерево конфигурации (src/components/metadata/ConfigurationTree.tsx, smart-insert.ts):
перетаскивание вставляет имя (реквизит — с псевдонимом своей таблицы, если она уже есть в запросе
в месте вставки: Сотр.Код); двойной клик добавляет в запрос под курсором — реквизит в список
ВЫБРАТЬ, его таблицу (если её ещё нет) и таблицу целиком — ЛЕВОЕ СОЕДИНЕНИЕ с условием
по типам реквизитов (иначе ИСТИНА, выделено); без ИЗ таблица становится первым источником,
вне запроса создаётся новый. У ссылочных объектов первой идёт «Ссылка», в группе «Предопределенные» —
предопределённые элементы (вставляются как ЗНАЧЕНИЕ(...), наименование — во всплывающей подсказке).
Кнопка-воронка в заголовке оставляет только объекты, которые уже есть в тексте запроса
(used-objects.ts: источники, ЗНАЧЕНИЕ(...), ССЫЛКА, ВЫРАЗИТЬ; комментарии и строки не в счёт).
В конце дерева, как в конструкторе 1С, — «Временные таблицы» из текста (ПОМЕСТИТЬ) с их полями;
двойной клик соединяет их с таблицами запроса по общим полям ссылочного типа.
ИИ-помощник (src/lib/ai/, src/components/ai/, src/app/api/ai/): чат справа от редактора
с быстрыми действиями и вставкой ответа в редактор. Провайдеры: Anthropic (Claude) — через
@anthropic-ai/sdk; OpenAI, Google Gemini, DeepSeek, OpenRouter, Ollama и LM Studio — через
OpenAI-совместимый API (openai). Запросы идут через маршруты /api/ai/chat и /api/ai/models:
ключ хранится только в браузере (localStorage) и передаётся серверу вместе с запросом.
Галка «Реквизиты таблиц» добавляет к сообщению поля и типы таблиц конфигурации, которые есть
в запросе (table-structure.ts), — модель не придумывает имена реквизитов; повторно описание
уходит, только если изменилось.
Адреса облачных провайдеров зафиксированы на сервере; свой адрес можно указать только для
Ollama и LM Studio. Если выкладываете редактор в общий доступ, учтите: сервер будет обращаться
к указанным адресам локальных моделей от своего имени.