Анализ переиспользуемых Go-компонентов Ollama для локальной разработки LLM

✍️ OpenClawRadar📅 Опубликовано: 17 марта 2026 г.🔗 Source
Анализ переиспользуемых Go-компонентов Ollama для локальной разработки LLM
Ad

Автономные компоненты в кодовой базе Ollama

Разработчик недавно проанализировал исходный код Ollama, чтобы определить, какие части можно использовать независимо в других проектах на Go. Исследование выявило несколько компонентов, для которых нет эквивалентных автономных библиотек на Go в других местах.

Реализация семплинга токенов

Пакет sample/ в Ollama содержит чистую реализацию на Go для семплинга с температурой, top-k, top-p, min-p и жадного семплинга. Разработчик не нашёл автономных альтернатив на Go — существующие решения либо обёртывают llama.cpp через CGo, либо отправляют параметры на удалённые API. Порядок пайплайна (сначала topK, затем температура, затем softmax, затем topP, затем minP) является критическим; его изменение приводит к другим результатам.

Обработка файлов GGUF

Хотя существует независимый ридер GGUF (gpustack/gguf-parser-go), который предлагает такие функции, как удалённый парсинг и оценка VRAM, он доступен только для чтения. Пакет fs/ggml в Ollama включает функцию WriteGGUF(), аналогов которой нет в других местах на Go. Низкоуровневый ридер (fs/gguf) особенно чистый, без импортов из остальной кодовой базы Ollama — копирование 5 файлов позволяет скомпилировать его независимо. Однако код парсинга GGUF имеет проблемы с безопасностью: было более 13 CVE, связанных с DoS из-за повреждённых файлов GGUF, и в исходном коде есть пробелы в валидации входных данных, которые могут привести к неограниченным выделениям памяти из-за полей размера, контролируемых злоумышленником.

Ad

Возможности конвертации моделей

Пакет convert/ обрабатывает конвертацию SafeTensors и PyTorch в GGUF для более чем 25 архитектур моделей. Единственный эквивалент — это Python-скрипт convert_hf_to_gguf.py. Извлечение этого компонента сложнее из-за зависимостей от внутренних пакетов, но части ридера и токенизатора удивительно независимы.

Система шаблонов чата

Ollama включает более 20 встроенных шаблонов чата и использует подход нечёткого сопоставления с расстоянием Левенштейна для сопоставления строк шаблонов Jinja2 из файлов GGUF с эквивалентами на Go. Существующие библиотеки на Go не предоставляют рендеринг шаблонов чата, специфичных для моделей, хотя каждый новый формат модели требует ручного переноса шаблонов.

Слой совместимости с OpenAI

Примерно 600 строк чистых функций преобразования конвертируют формат OpenAI в формат Ollama без HTTP-логики. Несмотря на эту чистую реализацию, проекты, такие как LocalAI и one-api, создали свои собственные версии с нуля, а не извлекли этот компонент.

Вопросы безопасности

Анализ отметил тревожные аспекты безопасности: более 22 CVE с 2024 года, более 175 тыс. открытых экземпляров, обнаруженных SentinelOne, и отсутствие встроенной аутентификации API. Уязвимости парсинга GGUF затронули бы любое извлечение этого кода, хотя семплер и трансформы OpenAI чисты.

Пробел в экосистеме Go

Разработчик заметил, что хотя экосистема Go имеет хорошие инструменты на верхнем уровне (клиенты API, HTTP-серверы) и нижнем уровне (CGo-биндинги к GGML и CUDA), отсутствует средний слой для семплинга, шаблонов, конвертации форматов и записи GGUF, который в настоящее время существует только внутри Ollama.

📖 Read the full source: r/LocalLLaMA

Ad

👀 Смотрите также

SkyClaw v2.2: Среда выполнения ИИ-агента на Rust добавляет OAuth от OpenAI и возможность создания пользовательских инструментов.
Инструменты

SkyClaw v2.2: Среда выполнения ИИ-агента на Rust добавляет OAuth от OpenAI и возможность создания пользовательских инструментов.

SkyClaw v2.2 представляет аутентификацию OpenAI OAuth с использованием подписок ChatGPT Plus/Pro, создание пользовательских инструментов, где агенты пишут свои собственные bash/python/node инструменты во время выполнения, и режим демона для фоновой работы. Rust-рантайм показывает результаты: 31 мс холодный старт, 15 МБ оперативной памяти в режиме ожидания и размер бинарного файла 9,3 МБ.

OpenClawRadar
Менграм добавляет постоянную память агентам OpenClaw.
Инструменты

Менграм добавляет постоянную память агентам OpenClaw.

Mengram — это система памяти с открытым исходным кодом, которая предоставляет агентам OpenClaw долговременную память между сессиями, решая проблему, когда агенты забывают всё при перезапуске. Она обеспечивает эпизодическую, объектную и процедурную память с интеллектуальным архивированием устаревших фактов.

OpenClawRadar
Rivet Actors добавляет хранилище SQLite: одна база данных на агента, арендатора или документ.
Инструменты

Rivet Actors добавляет хранилище SQLite: одна база данных на агента, арендатора или документ.

Rivet Actors теперь поддерживает хранилище SQLite, где каждый актор получает собственную базу данных SQLite, что позволяет создавать миллионы независимых баз данных для ИИ-агентов, многопользовательских SaaS-приложений, совместных документов или изоляции на уровне пользователя.

OpenClawRadar
Открытая система постоянной памяти для Claude Code решает проблему потери контекста между сессиями.
Инструменты

Открытая система постоянной памяти для Claude Code решает проблему потери контекста между сессиями.

Разработчик создал файловую систему памяти для Claude Code, которая автоматически захватывает контекст проекта без плагинов или API-ключей. Она использует транскрипты разговоров, файл входящих сообщений и ночные задания cron для поддержания постоянной памяти между сессиями.

OpenClawRadar