This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

JavaScript 84.4%
CSS 14.8%
Python 0.6%
HTML 0.2%
2 1 0

Clone this repository

https://tangled.org/olfrenn.tngl.sh/odre https://tangled.org/did:plc:brdibvsg2m3iz4zgzyn6dv44
git@tangled.org:olfrenn.tngl.sh/odre git@tangled.org:did:plc:brdibvsg2m3iz4zgzyn6dv44

For self-hosted knots, clone URLs may differ based on your setup.


README.md

Odre#

Локальная библиотека для обучения с агентом: статьи с диаграммами и источниками, чтение PDF, сохранённые выделения и независимые чаты. Интерфейс на английском. Forge не нужен для работы Odre и не изменяется этим приложением.

Запуск#

Нужен Node.js 22.13 или новее. Из каталога репозитория:

npm ci
npm run build
npm start

Откройте http://127.0.0.1:4318. Сервер слушает только локальную машину. После первого запуска появится пример урока о виртуальной памяти. Для следующих запусков достаточно npm start; после обновления исходников повторите сборку. npm run dev запускает сервер и интерфейс с автоматическим обновлением на http://127.0.0.1:5178.

Можно изменить порт через ODRE_PORT и каталог данных через ODRE_DATA_DIR. По умолчанию данные находятся в data/ внутри репозитория. Приложение следует запускать из корня репозитория.

Первое использование#

Откройте Settings. Для AI Tunnel RU уже заполнен адрес https://api.aitunnel.ru/v1. Вставьте ключ, добавьте точные идентификаторы моделей — по одному на строку — и нажмите Save provider. Test connection & load models проверяет доступ через /models и позволяет выбрать модели из списка; генерация ответа при проверке не вызывается. Название модели должно совпадать с идентификатором провайдера, а не с рекламным названием. Можно создать несколько провайдеров.

Выбирайте провайдера и модель рядом с каждым вопросом. По умолчанию используются около 6 000 токенов справочного материала и не более 4 096 токенов ответа. История ограничивается отдельно; оценка токенов приблизительная и не является стоимостью запроса. Если модель имеет небольшое окно или провайдер требует другие ограничения, измените их в Context and generation.

Переключатель Articles / Books разделяет библиотеки. Обе боковые панели скрываются независимо и открываются кнопками в верхней полосе; их ширину можно менять за разделитель. Сочетания ⌘B / Ctrl+B и ⌘J / Ctrl+J переключают панели. На узком экране панели открываются поверх чтения по одной.

Уроки от Codex#

Попросите агента подготовить урок по AGENT_GUIDE.md. Codex работает по вашей подписке отдельно от API-чата Odre. Он создаёт каталог с lesson.json, content.md и изображениями. В уроках поддерживаются Markdown, формулы KaTeX, редактируемые диаграммы Mermaid и упражнения с раскрывающимися подсказками и решениями.

Для импорта агент может выполнить:

npm run import -- /absolute/path/to/lesson-folder

Odre должен быть запущен. Если выбран другой порт, задайте ODRE_URL, например http://127.0.0.1:4321. Агент не получает ваш API-ключ. В браузере Add article также принимает ZIP урока, Markdown или JSON с полем content, либо позволяет вставить Markdown вручную. Изображения лучше включать в ZIP: внешние картинки загружаются с сайта-источника и могут со временем исчезнуть. Необработанный HTML не выполняется.

Источники доступны в раскрываемой панели Sources. Ссылки и сохранённые выдержки попадают в контекст в пределах бюджета; приложение не скачивает автоматически полный текст каждого сайта. Поэтому агенту важно сохранить достаточные выдержки или собственные точные конспекты источников при подготовке урока.

Выделите текст и выберите Highlight, чтобы сохранить его, или Ask, чтобы приложить к следующему вопросу. В Saved highlights можно добавить заметки и экспортировать выделения в Markdown. Каждый урок имеет несколько независимых чатов; новый чат не получает историю соседних чатов. Кнопка Stop response прекращает запрос и сохраняет уже полученную часть ответа. Retry повторяет последний вопрос без дублирования его в истории.

Книги#

Add book импортирует PDF до 256 MB. Текст извлекается и индексируется по страницам один раз на этом устройстве, без API-запросов и оплаты индексации. Индекс хранится в SQLite FTS5: это полнотекстовый поиск по словам, не платные embeddings и не семантический поиск. Он используется всеми чатами книги.

Для ответа отправляются выбранная фраза, текущая и соседние страницы, найденные отрывки и ограниченная история текущего чата — не вся книга. Выделение помогает поиску, особенно если язык вопроса отличается от языка книги. Search this book показывает результаты со страницами. Ссылки [p. 12] в ответах переходят к странице. Сохранённые выделения остаются на месте при изменении масштаба. Оглавление берётся из закладок самого PDF, если они есть.

Для сканов без текстового слоя требуется модель с поддержкой изображений. Включите Allow page images with vision-capable models у провайдера, затем Include page image около вопроса: отправляется только снимок текущей страницы. Автоматического OCR всей книги пока нет. PDF с паролем нужно сначала экспортировать в разблокированную копию. Индексация поддерживает до 5 000 страниц; чтение доступно и во время её выполнения.

Данные, безопасность и резервные копии#

Статьи, PDF, изображения, чаты, выделения и позиции чтения сохраняются локально. API-запросы идут через локальный сервер; ключ не возвращается в браузер и зашифрован в базе AES-256-GCM. Файл data/.credential-key нужен для расшифровки. Это защита от случайного раскрытия, а не от пользователя или программы, уже имеющей доступ ко всему каталогу данных.

Вопрос, выбранный контекст, недавняя история и, при явном включении, снимок страницы передаются выбранному API-провайдеру. Политика хранения данных провайдера действует отдельно. Индексация и обычное чтение остаются локальными. Источники и внешние изображения открываются на соответствующих сайтах.

Settings → Download backup сохраняет библиотеку, файлы, конфигурации провайдеров и переписку. Restore backup добавляет копии материалов с новыми идентификаторами и не перезаписывает имеющиеся. API-ключи не включаются в архив; после восстановления их нужно ввести заново. Архив импорта должен укладываться в ограничения загрузки и распаковки. Для большой библиотеки надёжнее периодически копировать весь data/ при остановленном сервере, включая .credential-key и SQLite-файлы. Такой каталог содержит секреты — не добавляйте его в Git и не отправляйте посторонним.

Удаление материала удаляет его чаты, выделения и файлы. Перед удалением скачайте экспорт или резервную копию. Экспорт отдельной статьи содержит её текст, источники и изображения, но не переписку; полный архив сохраняет и переписку. Упражнения и выделения можно экспортировать в Markdown для последующего переноса в Forge. Прямое подключение к Forge в эту версию не входит.

Разработка и проверка#

npm test
npm run build
npm audit

npm run check запускает тесты и сборку. Тесты используют временные базы и подставной провайдер; реальные ключи и оплачиваемые запросы не нужны. tests/manual-fixture.mjs запускает отдельную проверочную библиотеку на порту 4319 с подставными ответами, не затрагивая data/. Это только тестовая среда, не режим обычного обучения.

Сервер: server/; интерфейс: web/src/; контракт уроков: AGENT_GUIDE.md; пример: examples/virtual-memory/. На текущем этапе приложение предназначено для одного пользователя на локальной машине. Не открывайте его через публичный прокси: аутентификации для такого режима нет.

Нельзя гарантировать отсутствие любых будущих ошибок или правильность каждого ответа модели. Проверки подтверждают перечисленные сценарии на текущей версии; ответы агента нужно сверять с цитируемыми источниками.