Перейти к основному содержимому

Справочник по конфигурации

В этом документе перечислены все настраиваемые параметры Elftia, сгруппированные по функциональным областям.


Переменные окружения

Frontend (Vite / VITE_*)

Переменные окружения frontend открываются с префиксом VITE_ и доступны в коде React через import.meta.env.

ПеременнаяТипПо умолчаниюОписание
VITE_APP_TITLEstring'Elftia'Название приложения
VITE_DEV_PORTnumber5375Порт Vite Dev Server

Backend (Main Process)

ПеременнаяТипПо умолчаниюОписание
LOG_LEVELstring'info'Уровень логирования (debug / info / warn / error)
NODE_ENVstring'development'Среда выполнения
ELECTRON_IS_DEVstring'1'Запущено ли приложение в режиме разработки

Предпочтения приложения (AppPreferences)

Чтение/запись через window.api.appPreferences. Хранится в базе данных SQLite.

ПолеТипПо умолчаниюОписание
sendByCtrlEnterbooleanfalseОтправлять сообщения с помощью Ctrl+Enter
autoScrollToBottombooleantrueАвтоматически прокручивать вниз при новых сообщениях
showThinkingbooleantrueПоказывать процесс мышления модели
autoExpandToolsbooleanfalseАвтоматически раскрывать детали вызовов инструментов
showRawParametersbooleanfalseПоказывать необработанные параметры вызовов инструментов

Конфигурация темы (Theme)

Чтение/запись через window.api.theme. Полная структура состояния:

Режим

ПолеТипПо умолчаниюОписание
mode'light' | 'dark' | 'system''system'Режим темы

Пользовательская тема (UserTheme)

ПолеТипОписание
colorsRecord<string, string>Переопределения пользовательских цветовых токенов
fonts{ ui?: string; code?: string; display?: string }Пользовательские шрифты

Пользовательский CSS

ПолеТипПо умолчаниюОписание
customCssstring''Пользовательский CSS, внедряемый пользователем

Обои

Все поля, связанные с обоями, находятся в ThemePreferencesSchema (packages/desktop/app/main/services/platform/config/store/configSchema.ts), хранятся в config.theme и частично обновляются через IPC theme:setWallpaperPreferences. Исходное определение см. в packages/desktop/app/shared/contracts/settings-types.ts → ThemePreferences.

Источник обоев (изображение / градиент)

ПолеТипПо умолчаниюОписание
wallpaper{ light?: string; dark?: string }{}Источник изображения для обоев; поддерживает протоколы file://, wallpaper://, data: URLs или разрешенные https:// URLs
wallpaperGradient{ stops: string[1..4]; angle?: number 0..360 }nullЛинейный градиент из 1–4 цветов; имеет приоритет над wallpaper; при включении временно скрывает изображение
disableWallpaperInCompactWindowsbooleanfalseОтключать обои в компактных окнах (Mini/Selection)
wallpaperOverlayEnabledbooleanfalseВключить полупрозрачные поверхности (лучше подходит для режима обоев)

Матовое стекло и наложение

ПолеТипДиапазонПо умолчаниюОписание
wallpaperBlurIntensitynumber0–306Размытие матового стекла в px
wallpaperDimmingnumber0–10070Общая непрозрачность наложения, %
wallpaperDimmingHuenumber0–3600Оттенок HSL наложения (декодируется из hex-пикера цвета)
wallpaperDimmingSaturationnumber0–1000Насыщенность HSL наложения, %
wallpaperDimmingLightnessnumber-1–100-1Светлота HSL наложения, %; -1 = auto (белый в светлом режиме, черный в темном режиме); 0–100 = вручную
wallpaperDimmingGradientWallpaperGradient | nullnullГрадиентное наложение; при включении переопределяет HSL выше, но wallpaperDimming по-прежнему управляет общей непрозрачностью

Оттенок фона элементов (Sidebar / Cards / Tabs и другие полупрозрачные поверхности)

ПолеТипПо умолчаниюОписание
wallpaperElementTintstring (#RRGGBB or '')''Оттенок поверхности элементов; пустая строка = использовать значение темы по умолчанию (теплый кремовый / теплый угольный)
wallpaperElementGradientWallpaperGradient | nullnullГрадиент элементов; переопределяет сплошной оттенок; каждый уровень сохраняет собственную alpha

Пузырьки сообщений (User / Assistant независимо)

ПолеТипПо умолчаниюОписание
wallpaperBubbleOverridebooleanfalseГлавный переключатель: true = пузырьки используют независимые поля ниже; false = пузырьки следуют настройкам фона элементов (цвет + непрозрачность по умолчанию)
wallpaperBubbleTintUserstring (#RRGGBB or '')''Сплошной цвет пузырька User; активен при включенном переопределении
wallpaperBubbleTintAssistantstring (#RRGGBB or '')''Сплошной цвет пузырька Assistant; активен при включенном переопределении
wallpaperBubbleGradientUserWallpaperGradient | nullnullГрадиент пузырька User; переопределяет сплошной цвет на этой стороне
wallpaperBubbleGradientAssistantWallpaperGradient | nullnullГрадиент пузырька Assistant; переопределяет сплошной цвет на этой стороне
wallpaperBubbleOpacitynumber 0–10035Alpha заливки пузырька; активна только при включенном переопределении

Общая непрозрачность элементов

ПолеТипДиапазонПо умолчаниюОписание
wallpaperElementOpacitynumber0–1000Экспериментально: сдвигает полупрозрачный UI в целом в сторону непрозрачности
wallpaperTransparencynumber0–100100Коэффициент интенсивности оттенка поверхности (0 = полностью прозрачная поверхность; 100 = alpha по умолчанию)

Проверка Hex / градиента

  • Hex-поля (wallpaperElementTint / wallpaperBubbleTint*) Zod regex: /^(#[0-9a-fA-F]{6})?$/ (пустая строка или #RRGGBB).
  • WallpaperGradient.stops требует 1–4 строки; backend ThemeService.setWallpaperPreferences также отбрасывает пустые строки stops и обрезает массив до 4 элементов.
  • В IPC payload для полей градиента null = очистить; отсутствие ключа = сохранить текущее значение. Backend различает это через 'wallpaperDimmingGradient' in patch.

Приоритет (порядок переопределения при рендеринге)

wallpaperGradient > wallpaper.{light,dark} // main wallpaper source
wallpaperDimmingGradient > wallpaperDimming{Hue,Saturation,Lightness} // overlay color
wallpaperElementGradient > wallpaperElementTint // element tint
wallpaperBubbleGradient{User,Assistant} > wallpaperBubbleTint{User,Assistant} // bubble color (only when override is on)

Когда wallpaperBubbleOverride=false, нижестоящий атрибут data-wp-bubble-override не записывается в body, а CSS возвращается к правилу «пузырьки наследуют оттенок элементов».


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

Провайдер (ProviderConfig)

Структура конфигурации для каждого провайдера LLM:

ПолеТипОписание
idstringУникальный идентификатор
namestringОтображаемое имя
typestringТип провайдера (openai / anthropic / google / deepseek и т. д.)
apiKeystringAPI-ключ (хранится на backend, не передается через IPC)
baseUrlstring?Пользовательская API-точка доступа
modelsModel[]Список доступных моделей
enabledbooleanВключен ли провайдер

Глобальные параметры модели (GlobalModelParameters)

ПолеТипДиапазонПо умолчаниюОписание
temperaturenumber0 - 2По умолчанию провайдераТемпература генерации
maxTokensnumber1 - лимит моделиПо умолчанию провайдераМаксимальное количество выходных токенов
topPnumber0 - 1По умолчанию провайдераTop-P sampling
topKnumber1 - 100По умолчанию провайдераTop-K sampling (некоторые провайдеры)
frequencyPenaltynumber-2 - 20Штраф за частоту
presencePenaltynumber-2 - 20Штраф за присутствие

Пул API-ключей (ApiKeyEntry)

Конфигурация для каждой записи ключа:

ПолеТипПо умолчаниюОписание
idstringАвтоматически генерируетсяУникальный идентификатор ключа
providerIdstring-ID провайдера-владельца
labelstring?-Метка ключа
apiKeystring-Значение ключа (зашифрованное хранение)
weightnumber1Вес (1–100); влияет на вероятность распределения round-robin
enabledbooleantrueВключен ли ключ

Поведение пула ключей:

  • Использует Weighted Round-Robin для распределения ключей
  • Привязка к сессии: одна и та же сессия предпочтительно использует один и тот же ключ
  • Ответы 429/529 автоматически переключают на следующий ключ
  • Экспоненциальная задержка cooldown: 60s → 2min → 5min → 15min

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

Значения по умолчанию для TinyElf Engine

ПолеТипПо умолчаниюОписание
maxIterationsnumber40Максимальное количество итераций
temperaturenumber0.1Температура генерации
maxTokensnumber8192Максимальное количество выходных токенов
toolResultMaxCharsnumber50000Максимальное количество символов в результатах инструментов

Claude SDK Engine

ПолеТипОписание
permissionModestringРежим разрешений (ask / auto-approve / deny)
maxTurnsnumberМаксимальное количество ходов диалога
systemPromptAppendstring?Содержимое, добавляемое к системному промпту

Конфигурация безопасности

GuardianAgent

ПолеТипОписание
mode'off' | 'monitor' | 'enforce'Режим работы
allowedCommandsstring[]Allowlist команд, которые можно выполнять
blockedPathsstring[]Шаблоны путей, доступ к которым заблокирован

PromptGuardian

ПолеТипОписание
mode'off' | 'warn' | 'block'Режим работы

RateLimiter

ПолеТипПо умолчаниюОписание
maxRequestsPerMinutenumber60Максимальное количество запросов в минуту
maxTokensPerMinutenumber100000Максимальное количество токенов в минуту

Конфигурация MCP (McpServerConfig)

Структура конфигурации для каждого MCP-сервера:

ПолеТипОписание
idstringУникальный идентификатор
namestringОтображаемое имя
transport'stdio' | 'sse' | 'streamable-http'Транспортный протокол
commandstring?Команда запуска (режим stdio)
argsstring[]?Аргументы команды (режим stdio)
envRecord<string, string>?Переменные окружения (режим stdio)
urlstring?URL сервера (режим sse / streamable-http)
enabledbooleanВключен ли сервер
autoConnectbooleanАвтоподключение при запуске приложения

Запланированные задачи Cron

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

ПолеТипОписание
schedulestringCron-выражение (формат из 5/6 полей)
timezonestring?Идентификатор часового пояса (например, Asia/Tokyo)
enabledbooleanВключено ли расписание

Типы действий

ТипОписание
agent-runЗапустить указанный Agent
channel-checkПроверить сообщения Channel
custom-scriptЗапустить пользовательский скрипт

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

Режимы триггера

РежимОписание
mentionОтвечать только при @-упоминании
keywordОтвечать при наличии ключевого слова
allОтвечать на все сообщения

Ограничения длины сообщений платформ

ПлатформаМакс. символов
Discord2000
Telegram4096
Slack40000
Custom WebhookБез ограничений

CSS-переменные (Tailwind-токены)

Определены в packages/renderer/src/app/index.css и сопоставляются с utility-классами через конфигурацию Tailwind.

Цветовые токены

CSS-переменнаяКласс TailwindОписание
--backgroundbg-backgroundОсновной фон страницы
--foregroundtext-foregroundОсновной цвет текста
--surface-0bg-surface-0Фон слоя L0
--surface-1bg-surface-1Фон слоя L1 (карточки/sidebar)
--surface-2bg-surface-2Фон слоя L2 (поля ввода/вторичные контейнеры)
--surface-3bg-surface-3Фон слоя L3 (popovers)
--text-strongtext-foregroundОсновные заголовки, текст body (яркость 93%)
--text-mutedtext-muted-foregroundВторичный текст (яркость 65%)
--text-subtletext-text-subtleВспомогательные подсказки (яркость 50%)
--primarybg-primary / text-primaryЦвет темы
--secondarybg-secondaryВторичный цвет
--destructivetext-destructiveЦвет ошибки/деструктивного действия
--successtext-successЦвет успеха
--warningtext-warningЦвет предупреждения
--borderborder-borderЦвет границы
--ringring-ringЦвет кольца фокуса
--mutedbg-mutedПриглушенный фон
--accentbg-accentАкцентный фон
--popoverbg-popoverФон popover
--cardbg-cardФон карточки

Шрифты

CSS-переменнаяКласс TailwindШрифт
--font-sansfont-sansInter, system-ui
--font-monofont-monoJetBrains Mono, monospace
--font-displayfont-displayNoto Serif, Georgia, serif
--font-uifont-uiПользовательский UI-шрифт
--font-codefont-codeПользовательский шрифт кода

Радиус границы

CSS-переменнаяКласс TailwindЗначение
--radiusrounded-lg0.5rem (8px)
-rounded-md0.375rem (6px)
-rounded-sm0.25rem (4px)
-rounded-xl0.75rem (12px)

Файловая конфигурация (ConfigStore)

Чтение/запись через window.api.config. Хранится в JSON-файле с поддержкой hot-reload.

При изменении конфигурации main process уведомляет frontend через канал config:changed.

Общие ключи конфигурации

КлючТипОписание
magiMagiConfigКонфигурация Magi/Claw Agent
magi.promptVersion'v1' | 'v2' | 'v3' | 'v4'Версия сборки промпта
cronCronConfigКонфигурация запланированных задач Cron
channelChannelConfigКонфигурация сообщений Channel
securitySecurityConfigКонфигурация управления безопасностью
подсказка

Полный путь к файлу конфигурации можно получить через window.api.config.getPath().