Об этом проекте
`encx-cli` — это Go-клиент и CLI для API движка городских квестов Encounter (`en.cx`). Проект включает библиотеку для встраивания в свой код (`encx`), консольную утилиту `encli`, mock-сервер для локальной разработки, LLM-агента на базе PicoClaw, Web UI, а также сборки для iOS (gomobile) и PHP (FFI).
## Основные возможности
- **Библиотека `encx`**: логин, список игр, состояние игры, отправка кодов, статистика, профиль, подсказки, вступление в игру. Поддерживает старый (ASP.NET) и новый (REST) движки Encounter с автоматическим определением.
- **CLI `encli`**: команды для авторизации, просмотра игр, уровней, бонусов, секторов, подсказок, лога пробитий, сообщений, отправки кодов, а также полный набор admin-команд (создание/удаление уровней, бонусов, секторов, подсказок, заданий, управление играми, командами, корректировками времени).
- **Mock-сервер `encx-mock`**: имитирует домен Encounter локально, поддерживает загрузку сценария из HTML, эмуляцию потери сети (код PZDC), Docker-образ.
- **LLM-агент**: встроенный PicoClaw с tool-calling — читает состояние игры, вызывает admin-команды, ищет в Википедии, читает локальные файлы. Работает через OpenRouter или локальную модель llama.cpp (через yzma, без cgo).
- **Web UI**: локальный интерфейс с чатом с агентом, тёмной темой, настройкой LLM.
- **iOS**: gomobile-обёртка `mobile/encxmobile`, сборка `Encx.xcframework` для Xcode.
- **PHP**: разделяемая библиотека через FFI, клиент живёт на стороне Go.
## Установка
Готовые бинарники для macOS, Linux, Windows доступны на странице Releases. Также можно установить через `go install`:
```sh
go install github.com/skrashevich/encx-cli/cmd/encli@latest
go install github.com/skrashevich/encx-cli/cmd/encx-mock@latest
```
Или через Docker:
```sh
docker run --rm ghcr.io/skrashevich/encx-cli -v
docker run --rm ghcr.io/skrashevich/encx-cli games -domain tech.en.cx
```
## Пример использования библиотеки
```go
client := encx.New("tech.en.cx", encx.WithInsecureTLS())
resp, err := client.Login(ctx, "user", "password")
list, _ := client.GetGameList(ctx)
model, _ := client.GetGameModel(ctx, 12345)
result, _ := client.SendCode(ctx, 12345, model.Level.LevelId, model.Level.Number, "КОД123")
```
## CLI: типичный поток
```sh
encli login -domain tech.en.cx -insecure
encli games
encli status -game-id 12345
encli level -game-id 12345
encli send-code -game-id 12345 "КОД123"
```
## LLM-агент
```sh
export LLM_API_KEY=sk-or-v1-...
export LLM_MODEL=anthropic/claude-sonnet-4
encli -game-id 12345 --llm "создай 3 уровня с бонусами и подсказками"
encli -readonly -game-id 12345 --llm "покажи содержимое всех уровней"
```
Если не настроен облачный провайдер, агент запускается локально через llama.cpp (модель Qwen3-VL-2B-Instruct, ~1 ГБ).
## MCP
Пакет `agentmcp` отдаёт каталог инструментов движка наружу по MCP:
```sh
encli mcp -domain tech.en.cx # только чтение
encli mcp -domain tech.en.cx -security approve # мутации подтверждаются клиентом
```
## iOS и PHP
Для iOS есть gomobile-обёртка и сборка `Encx.xcframework` (скрипт `./mobile/bind-ios.sh`). Для PHP — разделяемая библиотека с FFI-обёртками, генерируемыми из Go-исходника.
## Дополнительно
- Опции клиента: TLS, HTTP, таймаут, User-Agent, язык, движок, API base URL.
- Автоматическое определение движка (legacy/new) через запрос к API.
- Сохранение настроек движка в `~/.config/encli/engine/settings.json`.
- Mock-сервер поддерживает публичный demo на `encounter.exe.xyz`.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.