ultrasharp-tools-mcp

faxenoff/ultrasharp-tools-mcp

3.3

If you are the rightful owner of ultrasharp-tools-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

UltrasharpTools MCP Server is a powerful AI-driven assistant designed to enhance C# code management and development efficiency.

Tools
3
Resources
0
Prompts
0
        ██  ██
        ██  ██  ██    ██████ █████▄  ▄████▄
        ██  ██  ██      ██   ██▄▄██▄ ██▄▄██
        ██  ██  ██      ██   ██   ██ ██  ██
        ██  ██  ██████  ██   ██   ██ ██  ██
        ▀████▀           ▄▄▄▄ ▄▄ ▄▄  ▄▄▄  ▄▄▄▄  ▄▄▄▄
                        ███▄▄ ██▄██ ██▀██ ██▄█▄ ██▄█▀
                        ▄▄██▀ ██ ██ ██▀██ ██ ██ ██
     ╔═════════════════════════════════════════════════════╗
     ║            ULTRASHARP-TOOLS MCP SERVER              ║
     ╚═════════════════════════════════════════════════════╝

.NET 10 License: MIT Roslyn

Умный инструмент работы с C# кодом для вас и вашего ИИ

Если вы активно используете ИИ для написания кода, то наверняка сталкивались с проблемами: ИИ тратит много времени и токенов на полнотекстовый поиск. Для массовых изменений пишет одноразовые скрипты, которые работают после десятой правки — и хорошо, если ничего не ломают.

Ultrasharp Tools решает эти проблемы.

Как это работает

Умный парсинг:

  • Весь код парсится в связанную структуру. Все инструменты работают с ней, а не с текстом.
  • Скорость: 500К строк за 10 сек, 6М строк за 50 сек. Повторный доступ — 0.02 сек из кеша.

Кеширование:

  • Структура кешируется и инкрементно обновляется.
  • Для каждой git-ветки — свой слой. Переключил ветку — всё сразу готово.
  • Аналогично работает векторная база для embed-моделей (Ollama/TEI).

Точечная работа:

  • Поиск, анализ, модификация — сразу на нужных участках кода. Без перебора файлов.
  • После изменений автоматически запускается линтинг и форматирование. Результат приходит сразу.

Естественные команды:

  • "Добавь метод в этот класс"
  • "Найди где используется этот сервис"
  • "Покажи что сломается если изменить интерфейс"

Семантическая модель сама разберёт запрос и запустит нужные инструменты.

Умные замены:

  • semantic_replace меняет код с пониманием контекста.
  • Можно за секунды обновить 500+ точек логирования на новый формат.
  • Если модель не уверена — честно скажет, а не выдумает.

Статическая трассировка:

  • Задаёте точку старта и конца — получаете последовательность выполнения.
  • Или наоборот: есть точка падения — инструмент "отмотает назад" и покажет причины.

Умный merge:

  • semantic_merge разбирается со сложными конфликтами на трёх уровнях автоматически.

Архитектура

Три процесса с lazy-запуском:

  • Comm — лёгкий Named Pipe bridge (~700 KB, один бинарник для всех ОС), запускается у каждого агента
  • Droid — основной Roslyn-сервер (singleton, multi-client через Named Pipe)
  • VectorDB — семантический движок (lazy start, shared между всеми)
Claude₁ ←stdio→ Comm₁ ──┐
Claude₂ ←stdio→ Comm₂ ──┼── Named Pipe ──→ Droid (singleton) ──→ VectorDB
Claude₃ ←stdio→ Comm₃ ──┘

Сколько бы агентов ни работало — Droid и VectorDB всегда одни. Экономия до 10 GB RAM.


Данный проект работает только с C#. Для проектов с JS/TS/Python - используйте аналогичный ultrascript-tools-mcp


📦 Установка

  1. Скачайте релиз на GitHub Releases и распакуйте.
  2. Настройте ИИ (Claude Code / Claude Desktop) - .claude.json:

Windows:

{
  "mcpServers": {
    "ultrasharp-tools": {
      "command": "C:\\Tools\\UltrasharpTools\\UltraSharp-tools.com"
    }
  }
}

macOS/Linux:

{
  "mcpServers": {
    "ultrasharp-tools": {
      "command": "/path/to/ultrasharp-tools"
    }
  }
}

Примечание: Запускается UltraSharp-tools.com (Windows) или ultrasharp-tools wrapper (macOS/Linux). Первый Comm автоматически запустит Droid в daemon-режиме. Последующие Comm подключатся к существующему Droid.

⚠️ macOS: Используйте ultrasharp-tools wrapper, а не .com напрямую (решает ENOEXEC). Альтернатива: обновите zsh до 5.9+ (brew install zsh) — тогда .com работает напрямую.

  1. Добавить в CLAUDE.md описание работы с инструментами
  2. Настройте семантический поиск - запустите мастер настройки и следуйте его инструкциям:

Windows:

C:\Tools\UltrasharpTools\Scripts\setup-semantic-embedding.cmd

Linux/macOS:

PATH/Tools/UltrasharpTools/Scripts/setup-semantic-embedding.sh

В зависимости от опредёленного GPU - будет предложено выбрать систему Ollama/TEI-в-docker. Потом выбрать наиболее подходящую вам embedding модель.

Специально для GTX50xx (Blackwood) используется неофициальная TEI, которая поддерживает такую архитектуру.


💡 Что это даёт вам?

Работайте с C# кодом как человек-разработчик

Вместо простых текстовых операций, AI получает те же инструменты что и вы:

Примеры команд:

  • "Добавь метод ValidateEmail в класс UserService"
  • "Покажи все места где используется PaymentProcessor"
  • "Переименуй метод GetUser → FetchUserAsync и обнови все вызовы"
  • "Что сломается если я изменю интерфейс IAuthService?"
  • "Найди дубликаты этого метода в проекте"

Результат: точные изменения + автоформатирование + проверка ошибок + git commit.

Экономьте время на рутине

ЗадачаОбычный AI (текст)С UltrasharpTools (Roslyn)
Добавить метод в классЧасто ломает синтаксис, не видит using'иТочное добавление в нужное место с корректными using'ами
Переименовать символНаходит только текст, пропускает вызовы100% замена всех ссылок в solution через SymbolFinder
Найти использованиеgrep по коду, много false positivesSemantic Find References - только реальные вызовы
Проверить на ошибки"Запусти dotnet build"Мгновенная компиляция в памяти после каждого изменения

Умный анализ через Roslyn, а не текст

Текстовые операции AI:

AI: "Добавляю метод в конец файла..."
Результат: ❌ Метод внутри другого метода
           ❌ Отсутствуют using'и
           ❌ Не скомпилируется

UltrasharpTools с Roslyn:

AI использует add_member:
✅ Метод добавлен в правильное место класса
✅ Автоматически добавлены нужные using System.Linq
✅ Код отформатирован через CSharpier
✅ 0 ошибок компиляции
✅ Git commit создан автоматически

Потому что понимает структуру кода, а не просто текст.


🚀 Реальные примеры использования

1. Добавление нового функционала

Проблема: Нужно добавить валидацию email во все user-сервисы.

Решение:

Вы: "Добавь метод ValidateEmail в класс UserService с проверкой на regex"

UltrasharpTools:
✅ Метод добавлен в Services/UserService.cs
✅ Автоматически добавлен using System.Text.RegularExpressions
✅ Код отформатирован через CSharpier
✅ Компиляция успешна (0 ошибок)
✅ Git commit: "feat: Add email validation to UserService"

Время: 2 секунды вместо 5 минут ручного редактирования

2. Масштабный рефакторинг

Проблема: Нужно переименовать IUserRepository → IUserDataAccess во всём solution (120 файлов).

Решение:

Вы: "Переименуй IUserRepository в IUserDataAccess везде в solution"

UltrasharpTools:
✅ Найдено 347 использований в 23 файлах
✅ Обновлены:
  - Определение интерфейса
  - Все реализации (UserRepository, TestUserRepository)
  - Все DI регистрации
  - Все параметры конструкторов
  - Все XML документации
✅ Компиляция успешна
✅ Git commit: "refactor: Rename IUserRepository to IUserDataAccess"

Без ошибок, без пропущенных мест. Время: 8 секунд.

3. Анализ влияния изменений

Проблема: Нужно изменить сигнатуру метода ProcessPayment, но не понятно что сломается.

Решение:

Вы: "Покажи где используется PaymentService.ProcessPayment"

UltrasharpTools:
✅ Найдены все вызовы:
  1. OrderController.Checkout() - прямой вызов
     File: Controllers/OrderController.cs:45
     Code: await _paymentService.ProcessPayment(order.Total)

  2. SubscriptionService.RenewSubscription() - через DI
     File: Services/SubscriptionService.cs:78

  3. PaymentQueueWorker.ProcessAsync() - background job
     File: Workers/PaymentQueueWorker.cs:112

Затронуто: 3 компонента, 3 файла
Рекомендация: добавить перегрузку метода для обратной совместимости

Насколько это быстро?

Производительность на реальных проектах:

ОперацияРезультатДетали
Индексация 500К символов10 секундCold start с Type Dictionary Cache
Индексация с кешем< 9 секундCache hit (5.4x быстрее)
Поиск символа< 100 миллисекундBloom filter + FastSymbolIndex
Переключение Git ветки< 20 мсLayered index (base + deltas)
Компиляция solutionВ памятиМгновенная проверка ошибок

Ожидаемое время загрузки по размеру проекта

Размер проектаПроектовВремя загрузкиПримечание
~100K LOC10-205 секТипичный микросервис
~500K LOC50-10010 секСредний enterprise проект
~1M LOC100-20020 секКрупный монолит
~2-3M LOC400-60040 секASP.NET Core (1504 проекта*)
~4-5M LOC250-40060 секRoslyn compiler (663 проекта*)

🎯 Главные возможности

Точные модификации через Roslyn

"Добавь метод Calculate в класс MathService" → добавляется в правильное место с using'ами

Semantic Find & Replace

Находит все реальные использования символа через SymbolFinder, не просто текст

Автоматический Git workflow

Каждое изменение → автоматический commit с описанием изменений

Quality Tools из коробки

CSharpier форматирование + Roslyn analyzers + автофиксы прямо в процессе

Advanced Tracing (статическая отладка)

  • TraceExecution: путь выполнения через Control Flow Graph
  • TraceBackwards: обратная трассировка от точки краша
  • SymbolicExecution: Z3 SMT solver для проверки path feasibility

Semantic Merge (умное слияние)

3-way merge с пониманием структуры кода, обнаружением движения и переименований

Поддержка любых .NET проектов

.NET Framework, Core, 5+, legacy csproj, SDK-style, respects .editorconfig


🔌 Режимы работы

UltrasharpTools предоставляет два режима работы под разные сценарии.

📍 Droid - Локальный режим (stdio)

Основной режим для разработчиков

Архитектура (три процесса):

┌─────────────────────────────────────────────────────────────────────────┐
│  Claude Desktop    Claude Code    Cursor    VS Code + Continue.dev     │
│       ↓                ↓            ↓                ↓                  │
│  UltraSharp-tools.com  .com        .com           .com                  │
│  (stdio bridge)   (stdio bridge)   ...            ...                  │
└────────┬───────────────┬────────────┬──────────────┬────────────────────┘
         │               │            │              │
         └───────────────┴─────┬──────┴──────────────┘
                               │ Named Pipes (IPC)
                               ↓
┌─────────────────────────────────────────────────────────────┐
│  UltrasharpTools.Droid.exe  (singleton, auto-start)         │
│  ├─ MCP Server (многоклиентный)                             │
│  ├─ Roslyn Workspace (анализ и модификация кода)            │
│  ├─ Git Integration (автокоммиты)                           │
│  └─ VectorDB Client ──────┐                                 │
└───────────────────────────│─────────────────────────────────┘
                            │ Named Pipes (IPC)
                            ↓
┌─────────────────────────────────────────────────────────────┐
│  UltrasharpTools.VectorDB.exe  (singleton, lazy start)      │
│  ├─ Semantic Index (sqlite-vec / vectorlite)                │
│  ├─ Embedding Generator (TEI/Ollama)                        │
│  └─ Power Management (Efficiency Mode в idle)               │
└─────────────────────────────────────────────────────────────┘
    ↓
Ваши C# проекты на диске

Почему три процесса?

ПроцессРольLifecycle
CommУниверсальный stdio-bridge (~700 KB)Один на каждый AI-агент/редактор
DroidRoslyn workspace, Git, MCP toolsSingleton — один на все Comm
VectorDBSemantic index, embeddingsSingleton — lazy start по требованию
ПреимуществоОписание
Общие ресурсы5 редакторов используют ОДИН Droid+VectorDB вместо 5 копий (экономия 2-3 GB RAM на процесс)
Общий кешRoslyn compilation cache, symbol index — загружаются один раз
Изоляция памятиVectorDB 500MB+ не влияет на Droid, Comm минималистичен
Независимый перезапускVectorDB перезапускается без потери Droid сессии
ЭнергосбережениеVectorDB → Efficiency Mode после 3 минут простоя
Ленивый запускVectorDB стартует только при первом semantic запросе

Конфигурация (~/.claude.json):

Windows:

{
  "mcpServers": {
    "ultrasharp-tools": {
      "command": "D:\\path\\to\\UltraSharp-tools.com"
    }
  }
}

macOS/Linux:

{
  "mcpServers": {
    "ultrasharp-tools": {
      "command": "/path/to/ultrasharp-tools"
    }
  }
}

⚠️ macOS/Linux: Используйте ultrasharp-tools wrapper (решает ENOEXEC). Или обновите zsh до 5.9+.

Возможности:

  • Много агентов — один сервер — Claude Desktop + Claude Code + Cursor одновременно
  • Общий Roslyn workspace — все редакторы видят одни и те же изменения
  • Локальный Git — автоматические коммиты в sharptools/* ветки
  • Максимальная скорость — нет сетевых задержек
  • NuGet packages из локального кэша (~/.nuget/packages/)
  • Локальная семантика — semantic search через Ollama/TEI (VectorDB)
  • Auto-recovery — Droid и VectorDB перезапускаются при сбоях

Use case: Индивидуальная разработка с несколькими AI-агентами/редакторами одновременно


🌐 Overlord - Semantic Hub для команды (в тестировании)

⚠️ Статус: В активном тестировании. API может меняться.

Централизованный сервер для semantic обработки кода

Архитектура:

Droid (на машине разработчика)
    ↓ работает с локальными файлами
    ↓ создаёт code embeddings
    ↓ отправляет векторы через HTTP
        ↓
    Overlord (Docker/Kubernetes)
        ↓ принимает векторы от всех Droid клиентов
        ↓ хранит в едином MultiProjectVectorStore
        ↓ использует мощную embedding модель (Ollama/TEI)
        ↓ выполняет cross-project semantic search
        ↓ возвращает результаты с рекомендациями

Ключевая особенность: Overlord НЕ работает с файлами напрямую! Каждый Droid работает со своими локальными проектами, а Overlord:

  • Агрегирует векторы от всех разработчиков
  • Предоставляет единую точку доступа к мощной embedding модели
  • Выполняет поиск по всем проектам команды одновременно

Deployment через Docker:

docker run -d \
  --name ultrasharp-overlord \
  -p 3001:3001 \
  -v ultrasharp-vectors:/app/data \
  -e EMBEDDING_URL=http://ollama:11434 \
  -e EMBEDDING_MODEL=granite-embedding \
  ghcr.io/faxenoff/ultrasharp-tools-overlord:latest

Подключение Droid к Overlord:

# Ваш Droid работает с локальными файлами
# + использует Overlord для semantic операций
UltrasharpTools.Droid.exe \
  --overlord-url http://overlord:3001 \
  --load-solution D:/MyProject/MyApp.sln

Что получаете:

  • 🧠 Shared semantic brain - единая база знаний о коде всей команды
  • 🔍 Cross-project search - "найди дубликаты во ВСЕХ проектах команды"
  • 💪 Powerful embedding - дорогая модель на GPU доступна всем
  • 📊 Smart recommendations - "в проекте TeamA уже есть такая реализация!"
  • No local GPU needed - embedding выполняется на сервере
  • 🔄 Auto-enrichment - все инструменты автоматически обогащаются semantic данными

Use case:

  • Команды разработчиков с несколькими проектами
  • Поиск дубликатов кода между микросервисами
  • Централизованный доступ к мощной embedding модели
  • Knowledge sharing через semantic recommendations

📖 Подробнее: |


🎨 Полный список инструментов (52 tools)

🔷 Solution Management (2)

ИнструментЧто делает
load_solutionЗагружает .sln и инициализирует Roslyn workspace
load_projectДетальный обзор структуры проекта (namespaces, types)

🔍 Analysis Tools (15)

ИнструментЧто делаетSemantic
get_membersСписок членов типа с сигнатурами и XML docs-
view_definitionПоказывает source code символа с контекстом-
list_implementationsНаходит реализации интерфейса/производные классы-
find_referencesВсе использования символа в solution-
search_definitionsRegex поиск по декларациям в коде и assemblies-
view_call_graphIncoming/outgoing вызовы метода-
view_inheritance_chainЦепочка наследования типа-
get_all_subtypesРекурсивный список вложенных членов-
manage_usingsЧтение/запись using директив-
manage_attributesЧтение/запись атрибутов на декларациях-
analyze_complexityМетрики сложности (cyclomatic, cognitive, coupling)-
pattern_search4 режима поиска: entity, content, semantic, hybrid*
find_duplicatesСемантический поиск похожего кода
detect_technology_stackОпределяет frameworks, languages, dependencies-
list_file_entitiesСписок types и members в файле-

* pattern_search работает без semantic в режимах entity и content

✏️ Modification Tools (8)

ИнструментЧто делает
add_memberДобавляет member (method/property/field/class) в тип
modify_codeЗаменяет или удаляет member definition
rename_symbolПереименовывает символ + все references в solution
replace_all_referencesЗаменяет все ссылки на символ указанным кодом
replace_references_by_patternBatch переименование по паттерну (wildcards/regex)
find_and_replaceRegex find & replace в коде/файлах
move_memberПеремещает member между типами/namespaces
undoОткатывает последнее изменение через Git

✨ Quality Tools (4)

ИнструментЧто делает
format_codeФорматирование через CSharpier (.cs, .csproj, .xml)
analyze_code_styleАнализ через Roslyn analyzers (presets, filters, 5-min cache)
apply_code_fixesАвтоприменение code fixes (unused usings и др.)
cleanup_usingsУдаляет usings дублирующие GlobalUsings.cs

✅ Validation Tools (3)

ИнструментЧто делает
validate_fileВалидация C# файла с Roslyn analyzers
validate_directoryBatch валидация директории (параллельно)
compare_validationСравнение результатов до/после изменений

🐛 Debugging & Tracing (5)

ИнструментЧто делает
trace_executionСтатическая трассировка через Control Flow Graph
trace_backwardsОбратная трассировка от точки краша (с кешем 5-10x)
analyze_path_feasibilitySymbolic execution с Z3 solver (null checks, div by zero)
export_call_graphЭкспорт графа (DOT/Mermaid/GraphML)
analyze_logsАнализ логов (ECS/JSON, PlainText, Logcat, XML)

📄 Document Tools (3)

ИнструментЧто делает
read_fileЧитает файл (без indentation для экономии токенов)
create_fileСоздаёт новый файл с контентом
overwrite_fileПерезаписывает существующий файл

📁 File Operations (2)

ИнструментЧто делает
split_fileРазбивает файл по top-level типам (класс → файл)
synthesize_filesОбъединяет несколько файлов в один

🧠 Semantic Tools (8) — требуют Semantic Mode

ИнструментЧто делает
semantic_searchПоиск кода по смыслу (natural language)
semantic_diffСравнение semantic изменений (поведение vs текст)
detect_code_clonesОбнаружение дубликатов через ML
semantic_replaceBatch find & replace с контекстом (preview + apply)
get_semantic_replace_infoСправка по возможностям semantic_replace
reindex_changed_filesИнкрементальная переиндексация
semantic_merge3-way merge с пониманием структуры кода
get_semantic_merge_infoСправка по возможностям semantic_merge

💾 Snapshot Tools (4)

ИнструментЧто делает
create_snapshotСоздаёт точку восстановления (backup)
list_snapshotsСписок доступных снимков
rollback_snapshotОткат к предыдущему состоянию ⚠️
cleanup_snapshotsУдаление старых снимков ⚠️

📦 Package & Misc (2)

ИнструментЧто делает
add_packageДобавляет/обновляет NuGet пакет в проект
request_new_toolЗапрос новых инструментов (логируется для review)

⚙️ System (1)

ИнструментЧто делает
get_capabilitiesПроверка возможностей сервера (semantic mode, версия, features)

📊 Semantic vs Instrumental

Работают всегда (без Semantic Mode):

  • Все Solution, Modification, Quality, Validation, Tracing, Document, File Ops, Snapshot, Package, System инструменты
  • pattern_search в режимах entity и content

Требуют Semantic Mode (проверка через get_capabilities()):

  • semantic_search, semantic_diff, detect_code_clones
  • semantic_replace, get_semantic_replace_info
  • find_duplicates, reindex_changed_files
  • semantic_merge, get_semantic_merge_info
  • pattern_search в режимах semantic и hybrid

📖 Подробная документация: - примеры, best practices, workflows для каждого инструмента.


🔧 Дополнительные возможности

Semantic Code Search

Для поиска похожего кода по смыслу (не по тексту) можно включить векторные embeddings.

Что получите:

  • ✅ Поиск дубликатов даже с разными названиями переменных
  • ✅ "Найди код похожий на этот метод" → семантический поиск
  • ✅ Автоматическая группировка похожих методов/классов

Два варианта setup:

1. Локальная семантика (Droid)

Быстрая настройка через setup-semantic-embedding.cmd:

# Windows
Dev.Scripts\setup-semantic-embedding.cmd

# Linux/Mac
pwsh Dev.Scripts/setup-semantic-embedding.ps1

Выберите embedding provider:

  • Ollama - простая установка, работает на CPU/GPU
  • TEI - максимальная производительность, требует Docker + NVIDIA GPU
  • Memory - для тестирования без внешних зависимостей

Ollama quick start:

# 1. Установите Ollama (https://ollama.ai)
ollama pull granite-embedding

# 2. Запустите setup
setup-semantic-embedding.cmd
# Выберите "Ollama"

# 3. Готово! Droid автоматически использует Ollama

2. Централизованная семантика (Overlord)

Для командной работы - shared semantic index на Overlord сервере. Все разработчики используют единую базу векторов и embedding service.

Адаптивные векторные бэкенды (автоматическое переключение):

  • SqliteVec (< 10K символов): Brute-force SIMD, 100% accuracy, fast indexing
  • Vectorlite HNSW (> 10K символов): 3-100x быстрее поиск, 99.9%+ recall, масштабируется до 100K+ векторов
  • Auto-switching: автоматический выбор оптимального backend по размеру базы

📖 Подробнее:

Layered Indexing для Git workflow (включено по умолчанию)

Автоматическое управление индексами при работе с Git ветками:

Что происходит автоматически:

  • ✅ При git checkout feature → индекс переключается на feature
  • ✅ При изменении файла → обновляется Working Delta (< 1ms)
  • ✅ При git commit → Working Delta → Branch Delta
  • ✅ Cleanup orphaned branches автоматически

Производительность:

  • Переключение ветки: 16.6ms вместо полной переиндексации
  • Background compaction: 2.2s для 112 веток
  • SQLite persistence: 5.4x быстрее холодного старта

Подробнее:


Конфигурация

Command line options:

# Droid (stdio)
--log-level <level>              # Trace|Debug|Information|Warning|Error|Critical
--load-solution <path>           # Автозагрузка .sln при старте
--build-configuration <config>   # Debug|Release
--disable-git                    # Отключить Git integration
--symbol-cache                   # Включить persistent cache (по умолчанию: true)
--symbol-cache-clear             # Очистить cache при старте
--low-memory                     # Режим экономии памяти (SQLite для reflection types)

# Overlord (HTTP/SSE)
--port <number>                  # HTTP порт (по умолчанию: 3001)
# + все опции Droid

Layered Indexing (настраивается в DI):

services.WithLayeredIndexing(
    maxBranchDeltas: 50,              // Max веток в кеше (LRU eviction)
    enablePersistence: true,          // SQLite persistence
    deltaCompactionThreshold: 500     // Порог для compaction
);

Symbol Cache (10x faster startup):

services.WithUltrasharpToolsServices(
    symbolCacheOptions: new SymbolCacheOptions {
        Enabled = true,               // Включить persistent cache
        ClearOnStartup = false,       // Очистка при старте
        CacheDirectory = null         // null = %TEMP%/UltrasharpTools/SymbolCache
    }
);

Low Memory Mode (экономия ~50-100MB):

services.WithUltrasharpToolsServices(
    lowMemoryMode: true  // Использует SQLite для reflection types вместо FrozenDictionary
);

Или через CLI:

UltrasharpTools.Droid.exe --low-memory

Оптимизации в режиме --low-memory:

  • SQLite FTS5 для reflection type search вместо in-memory FrozenDictionary
  • LRU cache (500 типов) для горячих данных
  • Lazy loading Type объектов через MetadataLoadContext
  • Уменьшенные лимиты MemoryCache (150MB + 250MB вместо 500MB + 1GB)

🛠️ Для разработчиков

Инструкции по сборке из исходников, запуску тестов и разработке см.


📄 License

MIT License - см.

Основан на: sharp-tools by tluyben. ()

Links: GitHubMCP Protocol