From ac8922373988fc1796ec681b6bc1b3b21d7ae3f2 Mon Sep 17 00:00:00 2001
From: lzt404 <2596933790@qq.com>
Date: Tue, 21 Jul 2026 14:53:56 +0800
Subject: [PATCH] docs: add feature screenshots and synchronize multilingual
readmes
---
README.ja.md | 112 +++++++++++++++++++++++++++++++++++++--------
README.md | 113 ++++++++++++++++++++++++++++++++++++++--------
README.zh-CN.md | 108 ++++++++++++++++++++++++++++++++++++--------
docs/images/1.png | Bin 0 -> 106983 bytes
docs/images/2.png | Bin 0 -> 87538 bytes
docs/images/3.png | Bin 0 -> 66466 bytes
docs/images/4.png | Bin 0 -> 108994 bytes
7 files changed, 279 insertions(+), 54 deletions(-)
create mode 100644 docs/images/1.png
create mode 100644 docs/images/2.png
create mode 100644 docs/images/3.png
create mode 100644 docs/images/4.png
diff --git a/README.ja.md b/README.ja.md
index b45111c..c2869d2 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -11,35 +11,111 @@
EasyCLIProxyAPI
- 私たちの目標は、トークンを free(無料ではなく、自由という意味)にすることです。
+ CLIProxyAPI のポータブルデスクトップコンソール。
+ 私たちの目標は、トークンを free(無料ではなく、自由という意味)にすることです。
-
## 概要
-EasyCLIProxyAPI は、[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) をベースにしたポータブルツールです。コア、OAuth アカウント、API 接続、モデルルーティング、認証ファイル、クォータ情報、使用履歴、エージェントクライアント設定をグラフィカルなインターフェースから管理できます。
+EasyCLIProxyAPI は、[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)
+をベースにしたグラフィカルなデスクトップ管理ツールです。コアのライフサイクル管理、OAuth 認証、
+API プロバイダー統合、プロトコル変換、認証情報管理、クォータ確認、使用履歴、モデルエイリアス、
+エージェントクライアント設定を一つの画面にまとめます。
-本アプリケーションは Tauri、React、Rust で構築されています。
+本アプリケーションは Tauri、React、Rust で構築されています。対応する CLIProxyAPI コアの
+アーカイブを同梱できるため、初回セットアップやオフラインインストールも簡単です。
-## 主な機能
+## 機能紹介
-- OAuth アカウントログイン
- - Codex、Claude、Gemini などのアカウントログインに対応
+### コアダッシュボードとバージョン管理
-- API 統合管理
- - OpenAI、Claude、Gemini などのプロトコルを使用した API Key 接続に対応
+
-- API フォーマット変換
- - OpenAI、Claude、Gemini などのプロトコル間でリクエストとレスポンスの形式を相互変換
+コア画面では、ローカルプロキシの状態確認と操作を一か所で行えます。
-- エージェントクライアント設定
- - Claude Code、Claude Desktop、Codex、OpenCode、OpenClaw、Hermes Agent などの主要なエージェントクライアントを自動設定
+- CLIProxyAPI コアの起動、停止、再起動、状態更新。
+- インストール状態、実行状態、プロセス ID、待受ポート、LAN アクセス設定の確認。
+- インストール済み、最新、アプリ同梱のコアバージョンを比較。
+- 最新版のインストール、再インストール、または GitHub に接続できない場合のオフラインインストール。
+- OpenAI、Claude、Gemini 互換の API エンドポイントをそのままコピー。
+- EasyCLIProxyAPI のバージョンとローカル接続状態を同じ画面で確認。
+
+### OAuth アカウント認証
+
+
+
+OAuth 画面では、対応プロバイダーのブラウザー認証をまとめて管理できます。
+
+- Codex OAuth
+- Claude OAuth
+- Antigravity OAuth
+- Kimi OAuth
+- xAI OAuth
+
+EasyCLIProxyAPI はブラウザーで認証ページを開きます。自動リダイレクトが利用できない場合は、
+コールバックを手動で完了することもできます。
+
+### API プロバイダー統合
+
+
+
+API 接続画面では、プロトコルまたはプロバイダーごとに上流 API の認証情報と接続先を管理できます。
+
+- Codex
+- OpenAI 互換プロバイダー
+- DeepSeek
+- Claude
+- Gemini
+
+複数の接続設定を追加し、既存設定の検索やプロバイダー状態の更新を行えます。すべての接続は、
+統一されたローカル CLIProxyAPI エンドポイントから利用できます。リクエストとレスポンスは、
+OpenAI、Claude、Gemini、およびその他の互換形式の間で変換できます。
+
+### エージェントクライアント設定
+
+
+
+エージェント画面は、インストール済みのデスクトップクライアントと CLI クライアントを検出し、
+ローカルプロキシへの接続を支援します。対応クライアントは次のとおりです。
+
+- Claude Code
+- Claude Desktop
+- Codex
+- OpenCode
+- OpenClaw
+- Hermes Agent
+
+対応クライアントでは、利用可能なモデルカタログの同期、デフォルトモデルの選択、管理設定を適用する前の
+元設定のバックアップ、以前の設定への復元、利用可能なデスクトップまたは CLI エントリーポイントの起動ができます。
+
+## その他の機能
+
+- コア設定、API Key、リモート管理用認証情報、プラグイン、ルーティング戦略の管理。
+- クライアント向けモデルエイリアスを作成し、プロバイダーモデルや推論レベルへマッピング。
+- 認証ファイルのアップロード、ダウンロード、確認、管理。
+- プロバイダーのクォータとアカウント利用状態を確認。
+- ローカルの使用履歴とトークン統計を閲覧。
+- macOS メニューバーまたは Windows システムトレイからバックグラウンド動作を継続。
+
+## クイックスタート
+
+1. [GitHub Releases](https://github.com/router-for-me/EasyCLIProxyAPI/releases/latest)
+ から、お使いの OS に対応するパッケージをダウンロードします。
+2. Windows または Linux のアーカイブを展開します。macOS では DMG を開きます。
+3. EasyCLIProxyAPI を起動します。
+4. **コア** 画面を開き、同梱版または最新版の CLIProxyAPI コアをインストールします。
+5. コアを起動し、必要なローカル API エンドポイントをコピーするか、OAuth/API プロバイダーを設定します。
## 対応プラットフォーム
-現在、GitHub Actions では以下のポータブルリリースパッケージを生成しています。
+GitHub Actions では、次のリリースパッケージをビルドします。
-| OS | アーキテクチャ |
-| --- | --- |
-| Windows | amd64、aarch64 |
-| Linux | amd64、aarch64 |
+| OS | アーキテクチャ | 形式 |
+| --- | --- | --- |
+| Windows | amd64、aarch64 | ZIP |
+| macOS | amd64、aarch64 | DMG |
+| Linux | amd64、aarch64 | TAR.GZ |
+
+## 関連プロジェクト
+
+- [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) — 本アプリケーションが管理するプロキシコアです。
diff --git a/README.md b/README.md
index 7083208..534205e 100644
--- a/README.md
+++ b/README.md
@@ -11,35 +11,112 @@
EasyCLIProxyAPI
- Our goal is to make tokens free—as in freedom.
+ A portable desktop console for CLIProxyAPI.
+ Our goal is to make tokens free—as in freedom.
-
## Overview
-EasyCLIProxyAPI is a portable tool built on [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI). It provides a graphical interface for managing the core, OAuth accounts, API providers, model routing, authentication files, quota information, usage records, and agent client configurations.
+EasyCLIProxyAPI is a graphical desktop management tool built on
+[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI). It brings core lifecycle management,
+OAuth authorization, API provider aggregation, protocol conversion, credential management,
+quota inspection, usage records, model aliases, and agent client configuration into one interface.
-The application is built with Tauri, React, and Rust.
+The application is built with Tauri, React, and Rust. It can carry a matching CLIProxyAPI core
+archive, making first-time setup and offline installation easier.
-## Key Features
+## Feature Tour
-- OAuth account sign-in
- - Supports signing in with Codex, Claude, Gemini, and more
+### Core dashboard and version management
-- API aggregation management
- - Supports API Key integrations using OpenAI, Claude, Gemini, and other protocols
+
-- API format conversion
- - Converts request and response formats between OpenAI, Claude, Gemini, and other protocols
+The core dashboard provides a complete view of the local proxy runtime:
-- Agent client configuration
- - Automatically configures popular agent clients including Claude Code, Claude Desktop, Codex, OpenCode, OpenClaw, and Hermes Agent
+- Start, stop, restart, and refresh the CLIProxyAPI core.
+- View installation state, runtime state, process ID, listening port, and LAN access settings.
+- Compare the installed, latest, and bundled core versions.
+- Install the latest core, reinstall it, or use an offline package when GitHub is unavailable.
+- Copy ready-to-use OpenAI, Claude, and Gemini-compatible API endpoints.
+- Check the EasyCLIProxyAPI application version and local connectivity from one page.
+
+### OAuth account authorization
+
+
+
+The OAuth page centralizes browser-based authorization for supported providers:
+
+- Codex OAuth
+- Claude OAuth
+- Antigravity OAuth
+- Kimi OAuth
+- xAI OAuth
+
+EasyCLIProxyAPI opens the authorization page in the browser and supports completing the callback
+flow when an automatic redirect is unavailable.
+
+### API provider aggregation
+
+
+
+The provider workspace manages upstream API credentials and endpoints by protocol or provider:
+
+- Codex
+- OpenAI-compatible providers
+- DeepSeek
+- Claude
+- Gemini
+
+You can add multiple connections, search existing entries, refresh provider state, and use them
+through the unified local CLIProxyAPI endpoint. Requests and responses can be converted between
+supported OpenAI, Claude, Gemini, and compatible formats.
+
+### Agent client configuration
+
+
+
+The agent client page detects installed desktop and CLI clients and helps connect them to the
+local proxy. Supported clients include:
+
+- Claude Code
+- Claude Desktop
+- Codex
+- OpenCode
+- OpenClaw
+- Hermes Agent
+
+For supported clients, the application can synchronize the available model catalog, select a
+default model, back up the original configuration before applying managed settings, restore the
+previous configuration, and launch an available desktop or CLI entry point.
+
+## Additional Capabilities
+
+- Manage core settings, API keys, remote management credentials, plugins, and routing strategy.
+- Create client-visible model aliases and map them to provider models and reasoning levels.
+- Upload, download, inspect, and manage authentication files.
+- Review provider quotas and account availability.
+- Browse local usage records and token statistics.
+- Keep the application available from the macOS menu bar or Windows system tray.
+
+## Quick Start
+
+1. Download the package for your operating system from
+ [GitHub Releases](https://github.com/router-for-me/EasyCLIProxyAPI/releases/latest).
+2. Extract the Windows or Linux archive, or open the macOS DMG.
+3. Launch EasyCLIProxyAPI.
+4. Open the **Core** page and install the bundled or latest CLIProxyAPI core.
+5. Start the core, then copy the required local endpoint or configure an OAuth/API provider.
## Supported Platforms
-GitHub Actions currently produces the following portable release packages:
+GitHub Actions builds the following release packages:
-| Operating System | Architecture |
-| --- | --- |
-| Windows | amd64, aarch64 |
-| Linux | amd64, aarch64 |
+| Operating System | Architecture | Package |
+| --- | --- | --- |
+| Windows | amd64, aarch64 | ZIP |
+| macOS | amd64, aarch64 | DMG |
+| Linux | amd64, aarch64 | TAR.GZ |
+
+## Related Project
+
+- [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) — the proxy core managed by this application.
diff --git a/README.zh-CN.md b/README.zh-CN.md
index b3e6e7e..af10392 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -11,35 +11,107 @@
EasyCLIProxyAPI
- 我们的目标是实现 token free(free 在这里的意思是自由)。
+ CLIProxyAPI 的便携桌面控制台。
+ 我们的目标是实现 token free(free 在这里的意思是自由)。
-
## 项目简介
-EasyCLIProxyAPI 是基于 [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) 的便携工具,提供图形化界面管理内核、OAuth 账号、API 接入、模型路由、认证文件、配额查询、使用记录和智能体客户端配置。
+EasyCLIProxyAPI 是基于 [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)
+构建的图形化桌面管理工具。它将内核生命周期管理、OAuth 授权、API Provider 聚合、协议转换、
+凭证管理、配额查询、使用记录、模型别名和智能体客户端配置集中到一个界面中。
-软件基于 Tauri、React 和 Rust 构建。
+软件基于 Tauri、React 和 Rust 构建,并可携带匹配版本的 CLIProxyAPI 内核压缩包,
+让首次安装和离线安装更加方便。
-## 主要功能
+## 功能导览
-- OAuth 账号登录
- - 支持 Codex、Claude、Gemini 等账号登录
+### 内核控制台与版本管理
-- API 聚合管理
- - 支持 OpenAI、Claude、Gemini 等协议的 API Key 接入
+
-- API 格式互转
- - 支持 OpenAI、Claude、Gemini 等协议的请求和响应格式互转
+内核页面集中展示本地代理服务的运行情况,并提供完整的控制能力:
-- 智能体客户端配置
- - 自动配置 Claude Code、Claude Desktop、Codex、OpenCode、OpenClaw 和 Hermes Agent 等主流智能体客户端
+- 启动、关闭、重启和刷新 CLIProxyAPI 内核状态。
+- 查看安装状态、运行状态、进程 PID、监听端口和局域网访问设置。
+- 对比当前版本、最新版本和软件内置的内核版本。
+- 安装最新版、重新安装,或在无法连接 GitHub 时使用离线安装包。
+- 复制可直接使用的 OpenAI、Claude 和 Gemini 兼容 API 地址。
+- 在同一页面查看 EasyCLIProxyAPI 软件版本和本地连接状态。
+
+### OAuth 账号授权
+
+
+
+OAuth 页面集中管理支持的浏览器授权登录:
+
+- Codex OAuth
+- Claude OAuth
+- Antigravity OAuth
+- Kimi OAuth
+- xAI OAuth
+
+EasyCLIProxyAPI 会自动打开浏览器授权页面;当浏览器无法自动跳转回来时,也支持手动完成回调流程。
+
+### API Provider 聚合管理
+
+
+
+API 接入页面按照协议或 Provider 管理上游 API 凭证和服务地址:
+
+- Codex
+- OpenAI 兼容 Provider
+- DeepSeek
+- Claude
+- Gemini
+
+你可以添加多个接入配置、搜索已有配置、刷新 Provider 状态,并通过统一的本地 CLIProxyAPI
+地址调用它们。请求和响应可以在 OpenAI、Claude、Gemini 及其他兼容协议之间转换。
+
+### 智能体客户端配置
+
+
+
+智能体页面会检测本机已安装的桌面端和命令行客户端,并帮助它们连接本地代理。支持的客户端包括:
+
+- Claude Code
+- Claude Desktop
+- Codex
+- OpenCode
+- OpenClaw
+- Hermes Agent
+
+对于受支持的客户端,软件可以同步可用模型目录、选择默认模型、在应用托管配置前备份原始配置、
+恢复之前的配置,以及启动可用的桌面端或命令行入口。
+
+## 其他功能
+
+- 管理内核配置、API Key、远程管理凭证、插件和路由策略。
+- 创建客户端可见的模型别名,并映射到 Provider 模型和推理等级。
+- 上传、下载、检查和管理认证文件。
+- 查看 Provider 配额和账号可用状态。
+- 浏览本地使用记录和 Token 统计数据。
+- 通过 macOS 菜单栏或 Windows 系统托盘保持软件在后台运行。
+
+## 快速开始
+
+1. 前往 [GitHub Releases](https://github.com/router-for-me/EasyCLIProxyAPI/releases/latest)
+ 下载对应操作系统的发行包。
+2. 解压 Windows 或 Linux 压缩包,macOS 用户打开 DMG。
+3. 启动 EasyCLIProxyAPI。
+4. 打开 **内核** 页面,安装内置版本或最新版本的 CLIProxyAPI 内核。
+5. 启动内核,然后复制所需的本地 API 地址,或配置 OAuth/API Provider。
## 支持的平台
-当前 GitHub Actions 生成以下便携发行包:
+GitHub Actions 会构建以下发行包:
-| 系统 | 架构 |
-| --- | --- |
-| Windows | amd64、aarch64 |
-| Linux | amd64、aarch64 |
+| 操作系统 | 架构 | 格式 |
+| --- | --- | --- |
+| Windows | amd64、aarch64 | ZIP |
+| macOS | amd64、aarch64 | DMG |
+| Linux | amd64、aarch64 | TAR.GZ |
+
+## 相关项目
+
+- [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) — 本软件负责管理的代理内核。
diff --git a/docs/images/1.png b/docs/images/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..27fac004b85b14ea61df8f7a7be33d20e4a7716f
GIT binary patch
literal 106983
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