このプロジェクトについて

`encx-cli` は、都市クエストエンジン Encounter(`en.cx`)のAPI向けGoクライアント兼CLIです。このプロジェクトには、コードに組み込むためのライブラリ(`encx`)、コンソールユーティリティ `encli`、ローカル開発用モックサーバー、PicoClawベースのLLMエージェント、Web UI、さらにiOS(gomobile)およびPHP(FFI)向けビルドが含まれます。 ## 主な機能 - **`encx` ライブラリ**: ログイン、ゲーム一覧、ゲーム状態、コード送信、統計、プロフィール、ヒント、ゲーム参加。旧(ASP.NET)および新(REST)Encounterエンジンを自動検出でサポート。 - **CLI `encli`**: 認証、ゲーム・レベル・ボーナス・セクター・ヒント・突破ログ・メッセージ表示、コード送信、および全adminコマンド(レベル・ボーナス・セクター・ヒント・タスクの作成/削除、ゲーム・チーム・時間調整の管理)を提供。 - **モックサーバー `encx-mock`**: Encounterドメインをローカルで模擬。HTMLからのシナリオ読み込み、ネットワーク喪失エミュレーション(コードPZDC)、Dockerイメージ対応。 - **LLMエージェント**: 組み込みPicoClawによるtool-calling — ゲーム状態の読み取り、adminコマンド呼び出し、Wikipedia検索、ローカルファイル読み取り。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ベースURL。 - APIリクエストによるエンジン自動検出(legacy/new)。 - エンジン設定を `~/.config/encli/engine/settings.json` に保存。 - モックサーバーは `encounter.exe.xyz` で公開デモをサポート。