프로젝트 소개

`encx-cli`는 도시 퀘스트 엔진 Encounter(`en.cx`)의 API용 Go 클라이언트 및 CLI입니다. 이 프로젝트는 자체 코드에 임베딩하기 위한 라이브러리(`encx`), 콘솔 유틸리티 `encli`, 로컬 개발용 mock 서버, PicoClaw 기반 LLM 에이전트, Web UI, 그리고 iOS(gomobile) 및 PHP(FFI)용 빌드를 포함합니다. ## 주요 기능 - **`encx` 라이브러리**: 로그인, 게임 목록, 게임 상태, 코드 전송, 통계, 프로필, 힌트, 게임 참가를 지원합니다. 자동 감지 기능으로 기존(ASP.NET) 및 신규(REST) Encounter 엔진을 모두 지원합니다. - **CLI `encli`**: 인증, 게임 보기, 레벨, 보너스, 섹터, 힌트, 정답 로그, 메시지, 코드 전송을 위한 명령과 전체 관리자 명령 세트(레벨/보너스/섹터/힌트/과제 생성 및 삭제, 게임/팀/시간 조정 관리)를 제공합니다. - **Mock 서버 `encx-mock`**: 로컬에서 Encounter 도메인을 시뮬레이션하며, HTML에서 시나리오 로드, 네트워크 손실 에뮬레이션(PZDC 코드), Docker 이미지를 지원합니다. - **LLM 에이전트**: 내장된 PicoClaw가 tool-calling을 지원합니다. 게임 상태를 읽고, 관리자 명령을 호출하며, 위키백과를 검색하고, 로컬 파일을 읽습니다. OpenRouter 또는 로컬 llama.cpp 모델(yzma를 통해, cgo 없이)로 작동합니다. - **Web UI**: 에이전트와의 채팅, 다크 테마, LLM 설정을 갖춘 로컬 인터페이스입니다. - **iOS**: gomobile 래퍼 `mobile/encxmobile`, Xcode용 `Encx.xcframework` 빌드. - **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, 약 1GB)를 통해 로컬에서 실행됩니다. ## 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용으로는 Go 소스에서 생성된 FFI 래퍼가 있는 공유 라이브러리가 있습니다. ## 추가 정보 - 클라이언트 옵션: TLS, HTTP, 타임아웃, User-Agent, 언어, 엔진, API base URL. - API 요청을 통한 엔진 자동 감지(legacy/new). - 엔진 설정을 `~/.config/encli/engine/settings.json`에 저장. - Mock 서버는 `encounter.exe.xyz`에서 공개 데모를 지원합니다.