mihomo-cli 1.0.0-alpha.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,92 @@
1
+ # Changelog
2
+
3
+ ## [1.0.2] - 2026-04-05
4
+
5
+ ### 修复
6
+
7
+ - **版本号同步**:`index.js` 不再硬编码版本号,改为从 `package.json` 读取
8
+ - 修复 `1.0.1` 发布后 `--version` 仍显示 `1.0.0-alpha.1` 的问题
9
+
10
+ ## [1.0.1] - 2026-04-05
11
+
12
+ ### 新增功能
13
+
14
+ #### 订阅管理增强
15
+ - **订阅信息解析**:自动解析 `subscription-userinfo` 响应头
16
+ - 显示已用流量 / 总流量 / 到期时间
17
+ - 从 `content-disposition` 提取用户名
18
+ - 保存 `profile-update-interval`、`profile-web-page-url`
19
+
20
+ - **数据分离存储**:
21
+ - 静态配置(name, url, updatedAt)→ `settings.json`
22
+ - 动态数据(流量、用户名、页面URL)→ `subs-cache.json`
23
+
24
+ - **自动更新过期订阅**:
25
+ - 默认间隔 12 小时(或订阅服务端指定的 `profile-update-interval`)
26
+ - `start` 命令、`sub list` 命令时自动触发检查
27
+ - 并行更新所有过期订阅,失败时使用本地缓存
28
+
29
+ - **订阅命令增强**:
30
+ - `sub use <name>`:设置默认订阅(支持模糊匹配)
31
+ - `sub web [name]`:打开订阅页面(无参打开默认)
32
+ - `sub update`:无参时更新所有订阅
33
+ - **模糊匹配**:精确匹配 → 前缀匹配 → 包含匹配,多匹配时提示
34
+
35
+ #### 日志管理
36
+ - **日志轮转**:每次启动前自动归档当前日志
37
+ - 命名格式:`mihomo.YYYY-MM-DD_HH-MM-SS.log`
38
+ - **自动清理**:默认保留 7 天日志
39
+ - **新命令**:
40
+ - `logs`:列出当前和归档日志(按时间排序)
41
+ - `logs <编号>`:查看指定归档日志
42
+ - `-n N`:指定显示行数(默认 100)
43
+ - `-o`:用系统默认编辑器打开
44
+ - `log -o`:用系统编辑器打开当前日志
45
+
46
+ #### 内核更新增强
47
+ - **镜像参数支持**:
48
+ - `kernel hk.gh-proxy.org`:使用指定镜像
49
+ - `kernel --mirror <url>`:显式指定镜像
50
+ - `kernel --no-mirror` / `--direct`:直连,不使用镜像
51
+ - **镜像配置持久化**:
52
+ - `getGitHubMirror()` / `setGitHubMirror()`
53
+ - 默认:`https://v6.gh-proxy.org/`
54
+ - 可用镜像列表在命令中列出
55
+ - 空字符串 `""` 或 `false` 表示禁用镜像
56
+
57
+ #### 命令别名
58
+ 新增以下命令别名,任意一个均可调用:
59
+ - `mihomo`
60
+ - `mmc`
61
+ - `mh`
62
+
63
+ #### 启动流程改进
64
+ - `start` 命令现在包含完整的重启/切换逻辑:
65
+ - 先检查并自动更新过期订阅
66
+ - 再完全停止现有进程(即使没进程也清理运行时文件)
67
+ - 最后启动新进程
68
+ - **移除** `restart` 命令(`start` 已包含)
69
+ - **移除** `clean` 命令(`stop` 已包含清理)
70
+
71
+ ### 改进
72
+ - 配置模块 `parseYamlOrJson()`:统一的 YAML/JSON 解析
73
+ - 订阅列表 `sub list` 显示:
74
+ - 默认订阅标记 `[默认]`
75
+ - 更新时间 / 更新间隔
76
+ - 用户名(如有)
77
+ - 流量使用:已用 / 总量 + 百分比
78
+ - 到期时间
79
+ - 订阅页面 URL
80
+ - `rmrf()` 改用原生 `fs.rmSync(recursive: true, force: true)`
81
+ - 启动脚本日志改为追加模式 (`>>`) 而非覆盖
82
+
83
+ ### 移除
84
+ - 移除 `geodata` 相关功能:
85
+ - `GEODATA_REPO`、`GEODATA_FILES` 常量
86
+ - `downloadGeodata()` 函数
87
+ - `downloadFile()` 内联函数
88
+
89
+ ## [1.0.0-alpha.1] - 2026-04-05
90
+
91
+ - 初始版本发布
92
+ - 基础功能:启动/停止、订阅管理、内核更新、Web UI
package/README.md CHANGED
@@ -1,17 +1,19 @@
1
1
  # mihomo-cli
2
2
 
3
- 一个基于命令行的 mihomo (Clash.Meta) 客户端,支持 macOSWindows Linux
3
+ 一个基于命令行的 mihomo (Clash.Meta) 客户端,专为 macOS 设计。Windows / Linux 正在适配中,敬请期待。
4
4
 
5
5
  ## 功能特性
6
6
 
7
- - 🌐 **订阅管理** - 添加和更新订阅链接
8
- - 🚀 **进程管理** - 启动、停止、重启 mihomo 内核
7
+ - 🌐 **订阅管理** - 添加/更新订阅,支持流量统计和到期时间显示
8
+ - 🔄 **自动更新** - 启动时自动检查并更新过期订阅
9
+ - 🔍 **模糊匹配** - `sub use` / `sub web` 支持订阅名称模糊匹配
10
+ - 🚀 **进程管理** - 启动/停止/切换模式,自动清理残留进程
9
11
  - 🔄 **双模式支持** - Mixed 模式和 TUN 透明代理模式
10
12
  - 📊 **状态监控** - 查看运行状态、内存、CPU 占用
11
- - 📝 **日志查看** - 实时查看运行日志
13
+ - 📝 **日志管理** - 实时日志 + 历史日志归档(自动轮转,保留7天)
12
14
  - 🎨 **Web UI** - 一键打开 Web 控制面板 (zash/metacubexd/yacd)
13
- - 🔄 **内核更新** - 自动检查并更新 mihomo 内核
14
- - 💻 **跨平台** - 支持 macOS、Windows、Linux
15
+ - 🔄 **内核更新** - 自动检查更新,支持 GitHub 镜像加速
16
+ - ⌨️ **命令别名** - `mihomo` / `mmc` / `mh` 均可调用
15
17
 
16
18
  ## 安装
17
19
 
@@ -24,49 +26,51 @@ npm install -g mihomo-cli
24
26
  ### 方式二:源码安装
25
27
 
26
28
  ```bash
27
- # 克隆仓库
28
29
  git clone https://github.com/yourname/mihomo-cli.git
29
30
  cd mihomo-cli
30
-
31
- # 安装依赖
32
31
  npm install
33
-
34
- # 全局链接(可选)
35
32
  npm link
36
33
  ```
37
34
 
38
- ### 方式三:使用预编译二进制
39
-
40
- 从 [Releases](https://github.com/yourname/mihomo-cli/releases) 页面下载对应平台的二进制文件。
41
-
42
35
  ## 快速开始
43
36
 
44
37
  ### 1. 下载内核
45
38
 
46
39
  ```bash
47
- mihomo-cli kernel
40
+ # 使用默认镜像
41
+ mihomo kernel
42
+
43
+ # 或指定镜像
44
+ mihomo kernel hk.gh-proxy.org
45
+
46
+ # 或直连(不使用镜像)
47
+ mihomo kernel --no-mirror
48
48
  ```
49
49
 
50
50
  ### 2. 添加订阅
51
51
 
52
52
  ```bash
53
- mihomo-cli sub add "https://your-subscription-url" "my-proxy"
53
+ mihomo sub add "https://your-subscription-url" "my-proxy"
54
54
  ```
55
55
 
56
56
  ### 3. 启动代理
57
57
 
58
58
  ```bash
59
59
  # Mixed 模式(默认)
60
- mihomo-cli start
60
+ mihomo start
61
61
 
62
- # TUN 模式(需要管理员权限)
63
- mihomo-cli start tun
62
+ # 切换到 TUN 模式(透明代理,需要管理员权限)
63
+ mihomo start tun
64
+
65
+ # 再次执行 start = 重启 / 切换模式
64
66
  ```
65
67
 
66
68
  ### 4. 打开 Web UI
67
69
 
68
70
  ```bash
69
- mihomo-cli ui
71
+ mihomo ui # 默认 zash
72
+ mihomo ui dash # metacubexd
73
+ mihomo ui yacd # YACD
70
74
  ```
71
75
 
72
76
  ## 命令参考
@@ -75,30 +79,42 @@ mihomo-cli ui
75
79
 
76
80
  | 命令 | 说明 |
77
81
  |------|------|
78
- | `mihomo-cli start [tun|mixed]` | 启动代理 (默认 mixed) |
79
- | `mihomo-cli stop` | 停止代理 |
80
- | `mihomo-cli restart` | 重启代理 |
81
- | `mihomo-cli status` | 查看运行状态 |
82
- | `mihomo-cli log` | 实时查看日志 |
83
- | `mihomo-cli clean` | 清理残留进程 |
82
+ | `mihomo start [tun\|mixed]` | 启动/重启/切换代理模式 |
83
+ | `mihomo stop` | 停止代理 |
84
+ | `mihomo status` | 查看运行状态 |
85
+ | `mihomo log` | 实时查看日志 (`-o` 用系统编辑器打开) |
86
+ | `mihomo logs` | 列出历史日志归档 |
87
+ | `mihomo logs <编号>` | 查看指定归档日志 (`-n N` 指定行数, `-o` 打开) |
84
88
 
85
89
  ### 订阅管理
86
90
 
87
91
  | 命令 | 说明 |
88
92
  |------|------|
89
- | `mihomo-cli sub list` | 列出所有订阅 |
90
- | `mihomo-cli sub add <url> [name]` | 添加订阅 |
91
- | `mihomo-cli sub update [name]` | 更新订阅 |
93
+ | `mihomo sub list` | 列出所有订阅(含流量、到期时间) |
94
+ | `mihomo sub add <url> [name]` | 添加订阅 |
95
+ | `mihomo sub update` | 更新所有订阅 |
96
+ | `mihomo sub update <name>` | 更新指定订阅(支持模糊匹配) |
97
+ | `mihomo sub use <name>` | 设置默认订阅(支持模糊匹配) |
98
+ | `mihomo sub web [name]` | 打开订阅页面(无参打开默认) |
92
99
 
93
100
  ### 其他命令
94
101
 
95
102
  | 命令 | 说明 |
96
103
  |------|------|
97
- | `mihomo-cli kernel` | 更新内核到最新版本 |
98
- | `mihomo-cli ui [zash|dash|yacd]` | 打开 Web UI |
99
- | `mihomo-cli dirs` | 显示数据目录位置 |
100
- | `mihomo-cli version` | 显示版本信息 |
101
- | `mihomo-cli help` | 显示帮助信息 |
104
+ | `mihomo kernel [镜像\|--no-mirror]` | 更新内核 |
105
+ | `mihomo ui [zash\|dash\|yacd]` | 打开 Web UI |
106
+ | `mihomo dirs` | 显示数据目录位置 |
107
+ | `mihomo reset [--full]` | 重置用户数据 (--full 同时删除内核) |
108
+ | `mihomo version` | 显示版本信息 |
109
+ | `mihomo help` | 显示帮助信息 |
110
+
111
+ ### 命令别名
112
+
113
+ 以下任意命令等效:
114
+ - `mihomo-cli` (原名)
115
+ - `mihomo`
116
+ - `mmc`
117
+ - `mh`
102
118
 
103
119
  ## 模式说明
104
120
 
@@ -111,34 +127,54 @@ mihomo-cli ui
111
127
  ### TUN 模式(透明代理)
112
128
 
113
129
  - 全局自动路由,所有流量自动走代理
114
- - 需要 sudo/管理员权限
130
+ - 需要 sudo / 管理员权限
115
131
  - 首次使用会自动配置 DNS 和路由
116
132
 
117
- ## 数据目录
133
+ ## 内核更新镜像
118
134
 
119
- 用户数据存储位置(与安装位置分离,更新不丢失):
135
+ 国内网络可使用镜像加速 GitHub 下载:
120
136
 
121
- | 平台 | 路径 |
122
- |------|------|
123
- | macOS | `~/Library/Application Support/mihomo-cli/` |
124
- | Windows | `%APPDATA%\mihomo-cli\` |
125
- | Linux | `~/.config/mihomo-cli/` |
137
+ ```bash
138
+ # 使用指定镜像
139
+ mihomo kernel hk.gh-proxy.org
140
+
141
+ # 可用镜像
142
+ v6.gh-proxy.org # (默认)
143
+ gh-proxy.org
144
+ hk.gh-proxy.org
145
+ cdn.gh-proxy.org
146
+ edgeone.gh-proxy.org
147
+
148
+ # 直连不使用镜像
149
+ mihomo kernel --no-mirror
150
+ ```
151
+
152
+ ## 订阅自动更新
153
+
154
+ - 默认更新间隔:12 小时(或订阅服务端指定的 `profile-update-interval`)
155
+ - 触发时机:`start` 命令、`sub list` 命令
156
+ - 更新失败时继续使用本地缓存,不影响使用
126
157
 
127
- 目录结构:
158
+ ## 数据目录
159
+
160
+ 用户数据存储位置(与安装位置分离,更新不丢失):
128
161
 
129
162
  ```
130
- mihomo-cli/
163
+ ~/Library/Application Support/mihomo-cli/
131
164
  ├── config/
132
- │ ├── config.yaml # 当前配置
133
- │ ├── override.yaml # 覆盖配置(TUN/DNS 设置)
134
- │ └── settings.json # 用户设置(订阅列表、内核版本)
135
- ├── data/
136
- │ ├── pid # 进程 PID
137
- ├── cache.db # 缓存数据库
138
- ├── geoip.metadb # GeoIP 数据库
139
- └── geosite.dat # GeoSite 数据库
140
- └── logs/
141
- └── mihomo.log # 运行日志
165
+ │ ├── config.yaml # 当前运行配置
166
+ │ ├── settings.json # 用户设置(订阅列表、内核版本)
167
+ │ └── subs-cache.json # 订阅动态缓存(流量、到期时间等)
168
+ ├── runtime/
169
+ │ ├── pid # 进程 PID
170
+ └── config.yaml # mihomo 运行时配置
171
+ ├── logs/
172
+ ├── mihomo.log # 当前日志
173
+ └── mihomo.YYYY-MM-DD_HH-MM-SS.log # 归档日志
174
+ ├── subs/
175
+ │ └── <name>.yaml # 订阅原始配置
176
+ └── core/
177
+ └── mihomo # mihomo 内核二进制
142
178
  ```
143
179
 
144
180
  ## Web UI
@@ -156,24 +192,20 @@ mihomo-cli/
156
192
  ### 进程无法停止
157
193
 
158
194
  ```bash
159
- # macOS/Linux
160
195
  sudo pkill -9 mihomo
161
-
162
- # Windows (管理员 PowerShell)
163
- taskkill /F /IM mihomo.exe
164
196
  ```
165
197
 
166
198
  ### TUN 模式无法启动
167
199
 
168
- 1. 确保使用 sudo/管理员权限
200
+ 1. 确保使用 sudo / 管理员权限
169
201
  2. 检查是否有其他程序占用 53 端口
170
- 3. 查看日志获取详细错误信息:`mihomo-cli log`
202
+ 3. 查看日志:`mihomo log`
171
203
 
172
204
  ### 订阅更新失败
173
205
 
174
206
  - 检查网络连接
175
207
  - 确认订阅 URL 有效且未过期
176
- - URL 中的 token 等敏感信息会被自动脱敏
208
+ - URL 中的 token 等敏感信息会自动脱敏
177
209
 
178
210
  ### 端口被占用
179
211
 
@@ -183,52 +215,11 @@ taskkill /F /IM mihomo.exe
183
215
 
184
216
  ## 安全特性
185
217
 
186
- - **URL 脱敏**:订阅 URL 中的 token、key、password 等敏感参数在错误信息和日志中自动替换为 `***`
218
+ - **URL 脱敏**:订阅 URL 中的 token、key、password 等敏感参数自动替换为 `***`
187
219
  - **文件权限**:配置文件使用 `0o600` 权限(仅所有者可读可写),目录使用 `0o700` 权限
188
- - **信号处理**:优雅处理 SIGINT/SIGTERM 信号,防止数据损坏
220
+ - **信号处理**:优雅处理 SIGINT/SIGTERM 信号
189
221
  - **异常捕获**:全局 uncaughtException 和 unhandledRejection 处理
190
222
 
191
- ## 发布
192
-
193
- ### npm 发布
194
-
195
- ```bash
196
- # 登录 npm
197
- npm login
198
-
199
- # 发布(需要先更新版本号)
200
- npm publish --access public
201
- ```
202
-
203
- ### 打包二进制
204
-
205
- ```bash
206
- # 使用 pkg 打包
207
- npm run pkg
208
-
209
- # 输出在 dist/ 目录
210
- ```
211
-
212
- ## 开发
213
-
214
- ```bash
215
- # 克隆仓库
216
- git clone https://github.com/yourname/mihomo-cli.git
217
- cd mihomo-cli
218
-
219
- # 安装依赖
220
- npm install
221
-
222
- # 运行
223
- node index.js help
224
-
225
- # 检查代码
226
- npm run lint
227
-
228
- # 打包二进制
229
- npm run pkg
230
- ```
231
-
232
223
  ## 许可证
233
224
 
234
225
  MIT License - 详见 [LICENSE](LICENSE) 文件。