Mafia.Server.ReferenceClient
Легковесный клиент для Mafia Server: HTTP, WebSocket, MCP (stdio) и автономный агент.
Что это дает
- Быстрый запуск без правок C#.
- Один файл
appsettings.jsonдля всех настроек. - Простые режимы:
sample,mcp,agent. - Настройка роли и поведения бота через конфиг.
Быстрый старт
- Поднимите backend.
- Заполните
tools/Mafia.Server.ReferenceClient/appsettings.json. - Запустите проект.
sample:
dotnet run --project tools/Mafia.Server.ReferenceClientmcp:
dotnet run --project tools/Mafia.Server.ReferenceClient -- --mode mcp --config tools/Mafia.Server.ReferenceClient/appsettings.jsonagent:
dotnet run --project tools/Mafia.Server.ReferenceClient -- --mode agent --config tools/Mafia.Server.ReferenceClient/appsettings.jsonПростой appsettings (новая схема)
{
"server": {
"url": "https://localhost:7230"
},
"auth": {
"mode": "login",
"user": "alice",
"password": "alice-pass",
"token": ""
},
"bot": {
"role": "joiner",
"displayName": "Player",
"roomName": "Reference Room",
"roomId": "",
"playersCount": 4,
"preset": "Party",
"style": "balanced",
"autoReady": true,
"autoStartIfHost": true,
"maxRuntimeSeconds": 180
},
"ai": {
"enabled": false,
"apiKey": "",
"quality": "cheap",
"baseUrl": "https://api.openai.com",
"timeoutMs": 5000,
"temperature": 0.2,
"maxTokens": 300
}
}Опционально: расширенные настройки без дополнительных команд
- Если рядом с
appsettings.jsonесть файлappsettings.advanced.json, он автоматически накладывается поверх базового конфига. - Это не требует
copy,renameи не требует отдельного--config. - Базовый сценарий остается тем же: настроил
appsettings.jsonи запустил. - В репозитории
appsettings.advanced.jsonзаполнен безопасными дефолтами и не ломает базовый старт.
Что важно по авторизации
auth.mode = "login": используетсяauth.user+auth.password.auth.mode = "token": используетсяauth.token.- В клиенте больше нет
useDevAccessTokenи нет выдачи debug/admin токенов.
Как управлять поведением бота
bot.role:hostилиjoiner.bot.style:quiet,balanced,aggressive.ai.enabled = false: rule-based решения (без LLM затрат).ai.enabled = true: LLM режим.
Профили качества модели (ai.quality):
cheap:gpt-4.1-nanoдля всего.balanced:nanoпо умолчанию +miniдля голосования.high:gpt-4.1-miniдля всех шаблонов.
Практический порядок для продакта:
- Начать с
ai.enabled=false. - Затем включить
ai.enabled=true+quality=cheap. - Поднимать до
balanced/highтолько по результатам QA.
Настройки для prompt-инженера (без C#)
Для тонкой настройки можно добавить блок advanced:
advanced.prompt.*: persona, стиль, цели, размер контекста.advanced.decisionPolicy.*: что LLM может делать в фазах, тайм-буферы, allow-list команд.
Контекст, который видит агент
Агент работает не "вслепую":
- читает актуальный
snapshotкомнаты, - читает поток событий WS,
- хранит внутренний timeline решений и исходов,
- применяет command gate (валидность команды по фазе/состоянию).
MCP tools (player-only)
auth_loginrooms_listroom_createroom_joinroom_snapshotcommand_sendws_pull_events
Admin-инструменты в MCP surface не публикуются.
Документация
- Подробный гайд запуска:
tools/Mafia.Server.ReferenceClient/INTEGRATOR_GUIDE.md - Полный справочник полей:
tools/Mafia.Server.ReferenceClient/APPSETTINGS_FIELD_GUIDE.md - Пример overlay-конфига:
tools/Mafia.Server.ReferenceClient/appsettings.advanced.json
Smoke тест
dotnet test src/Games/Mafia/Mafia.Server.Integration.Tests/Mafia.Server.Integration.Tests.csproj --filter ReferenceClient