mihomo-cli 1.0.0-alpha.1 → 1.0.1
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/README.md +96 -105
- package/index.js +435 -77
- package/package.json +12 -4
- package/src/config.js +129 -24
- package/src/kernel.js +6 -65
- package/src/process.js +151 -9
- package/src/subscription.js +159 -15
package/README.md
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
# mihomo-cli
|
|
2
2
|
|
|
3
|
-
一个基于命令行的 mihomo (Clash.Meta)
|
|
3
|
+
一个基于命令行的 mihomo (Clash.Meta) 客户端,专为 macOS 设计。Windows / Linux 正在适配中,敬请期待。
|
|
4
4
|
|
|
5
5
|
## 功能特性
|
|
6
6
|
|
|
7
|
-
- 🌐 **订阅管理** -
|
|
8
|
-
-
|
|
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
|
-
- 🔄 **内核更新** -
|
|
14
|
-
-
|
|
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
|
-
|
|
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
|
|
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
|
|
60
|
+
mihomo start
|
|
61
61
|
|
|
62
|
-
# TUN
|
|
63
|
-
mihomo
|
|
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
|
|
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
|
|
79
|
-
| `mihomo
|
|
80
|
-
| `mihomo
|
|
81
|
-
| `mihomo
|
|
82
|
-
| `mihomo
|
|
83
|
-
| `mihomo
|
|
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
|
|
90
|
-
| `mihomo
|
|
91
|
-
| `mihomo
|
|
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
|
|
98
|
-
| `mihomo
|
|
99
|
-
| `mihomo
|
|
100
|
-
| `mihomo
|
|
101
|
-
| `mihomo
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
│ ├──
|
|
134
|
-
│ └──
|
|
135
|
-
├──
|
|
136
|
-
│ ├── pid
|
|
137
|
-
│
|
|
138
|
-
|
|
139
|
-
│
|
|
140
|
-
└──
|
|
141
|
-
|
|
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.
|
|
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) 文件。
|