@morndream/mihomo-tui 0.5.0-rc.0 → 0.5.0-rc.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 +10 -0
- package/README.md +138 -392
- package/dist/cli.js +16 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/kernel.js +229 -0
- package/dist/commands/kernel.js.map +1 -0
- package/dist/commands/output.js +53 -1
- package/dist/commands/output.js.map +1 -1
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
- 无内核报错引导升级为 `--help` 式完整参数教程:快速安装命令、proxy init 一行集成、`--port` / `--mirror` 示例与安装后指引;已部署与已装未启动两个排障分支保持单行。
|
|
9
|
+
|
|
10
|
+
## [0.5.0-rc.1] - 2026-09-28
|
|
11
|
+
|
|
12
|
+
- 新增 `mihomo-tui kernel ls / install` 命令:CLI 侧下载安装内核(官方→镜像自动回退、sha256 与版本标记校验、`--port` 自定义控制口端口、`--mirror` 单源锁定、`--alpha`),`config.yaml` 缺失时生成最小引导配置,实现无内核新机器的自助闭环。
|
|
13
|
+
- 内核不可达报错按部署场景三态引导(systemd 单元 / 已装未启动 / 全新机器提示 `kernel install`);首次运行提示补充内核安装指引。
|
|
14
|
+
- 修复分发渠道在国内网络的可用性:Release notes 自动附加各产物的 gh-proxy 镜像下载链接,README 安装节补充镜像前缀用法并将校验命令改为按平台 `grep | sha256sum -c` 写法。
|
|
15
|
+
- 首次生成配置时向交互终端输出一行引导(proxy init 集成用法):新版 npm 安装期不再执行被安装包的 postinstall,提示改在首次运行的确定性时机给出;stdout 纯净契约不受影响。
|
|
16
|
+
- README「第一次使用」恢复可直接复制的 proxy init 一行式安装命令。
|
|
17
|
+
|
|
8
18
|
## [0.5.0-rc.0] - 2026-09-27
|
|
9
19
|
|
|
10
20
|
- 新增规则页 `e` 配置编辑弹窗,支持常用表单、单条原文、连续增改删和 `J/K` 调序,`Ctrl+S` 统一保存;保护订阅直连前缀并检查末尾 `MATCH`。
|
package/README.md
CHANGED
|
@@ -1,462 +1,208 @@
|
|
|
1
1
|
# mihomo-tui
|
|
2
2
|
|
|
3
|
-
[
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[](LICENSE)
|
|
7
|
-
[](https://github.com/MrChen-hero/mihomo-tui/actions/workflows/ci.yml)
|
|
3
|
+
[mihomo](https://wiki.metacubex.one/)(Clash.Meta)内核的 CLI + TUI 管理工具。切节点、
|
|
4
|
+
管订阅、编辑规则、看实时日志与连接,全部通过本机 External Controller 的 REST API 完成,
|
|
5
|
+
订阅更新不覆盖你手写的 `config.yaml`。
|
|
8
6
|
|
|
9
|
-
[
|
|
10
|
-
切节点、更新订阅、看实时日志、管连接,全部通过本机 External Controller 的
|
|
11
|
-
REST API 完成 —— **运行时代码绝不写 `config.yaml`**。
|
|
7
|
+
[安装](#安装) · [第一次使用](#第一次使用) · [CLI 速查](#cli-速查) · [反馈问题](https://github.com/MrChen-hero/mihomo-tui/issues)
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
│ [1]节点 [2]订阅 [3]规则 [4]日志 [5]连接 [6]设置 │
|
|
16
|
-
├─────────────────────────────────────────────────┤
|
|
17
|
-
│ PROXY → AUTO │
|
|
18
|
-
│ AUTO → [A]日本1 166ms │
|
|
19
|
-
│ 日本 → [B]高速02 213ms │
|
|
20
|
-
│ 机场-alpha → 新加坡2 ---(未测试) │
|
|
21
|
-
└─────────────────────────────────────────────────┘
|
|
22
|
-
```
|
|
9
|
+

|
|
10
|
+

|
|
23
11
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- [特性](#特性)
|
|
27
|
-
- [环境要求](#环境要求)
|
|
28
|
-
- [安装](#安装)
|
|
29
|
-
- [快速开始](#快速开始)
|
|
30
|
-
- [TUI 使用](#tui-使用)
|
|
31
|
-
- [CLI 使用](#cli-使用)
|
|
32
|
-
- [配置](#配置)
|
|
33
|
-
- [配置架构:骨架 + Provider](#配置架构骨架--provider)
|
|
34
|
-
- [迁移脚本](#迁移脚本)
|
|
35
|
-
- [常见问题与已知限制](#常见问题与已知限制)
|
|
36
|
-
- [开发](#开发)
|
|
37
|
-
- [路线图](#路线图)
|
|
38
|
-
- [贡献](#贡献)
|
|
39
|
-
- [许可证](#许可证)
|
|
40
|
-
|
|
41
|
-
## 特性
|
|
42
|
-
|
|
43
|
-
- **双入口**:TUI 适合日常操作,CLI 适合脚本化与管道场景(全命令支持 `--json`)
|
|
44
|
-
- **节点管理**:双栏选择代理组与节点,延迟五状态显示(正常 / 一般 / 缓慢 / 未测试 / 超时),
|
|
45
|
-
严格区分「未测试」与「不可用」;单节点与整组并发测速;url-test 组钉选与解除
|
|
46
|
-
- **订阅管理**:在 TUI 内直接增删改订阅(自动备份、校验、原子写入、失败回滚、
|
|
47
|
-
自动重启内核),查看节点数 / 流量 / 到期时间,一键更新单个或全部订阅,
|
|
48
|
-
健康检查,更新失败完整展示错误(订阅域名失效、被 403 都是常态)
|
|
49
|
-
- **规则管理**:查看生效规则与 rule-providers,按类型/关键字筛选,保守测试域名/IP,支持运行时禁用;不支持禁用的内核降级为本地标记。
|
|
50
|
-
- **实时监控**:WebSocket 日志流(级别切换、关键字过滤、环形缓冲 1000 行)、
|
|
51
|
-
连接流(排序、关闭)、底部状态栏常驻显示内核版本 / 模式 / 速率 / 流量 / 内存
|
|
52
|
-
- **模式切换**:规则 / 全局 / 直连循环切换,热重载配置无需重启内核
|
|
53
|
-
- **安全边界**:写 `config.yaml` 的代码路径只有一条,且被封装在
|
|
54
|
-
`ConfigManager` 里强制走「备份 → `mihomo -t` 校验 → 原子写 → 写后复验 →
|
|
55
|
-
失败自动回滚」流程;配置备份保留 7 天;订阅 URL 的 token 在所有展示与
|
|
56
|
-
日志中一律脱敏
|
|
57
|
-
|
|
58
|
-
### 它解决什么问题
|
|
59
|
-
|
|
60
|
-
传统「整份订阅覆盖 config.yaml」的用法有几个痛点,本项目通过
|
|
61
|
-
「骨架 + proxy-providers 配置架构 + API 操作层」一并解决:
|
|
62
|
-
|
|
63
|
-
| 痛点 | 解决方式 |
|
|
64
|
-
|---|---|
|
|
65
|
-
| 订阅一更新,手工修改的端口 / DNS / 规则全部丢失 | 订阅只作为 provider 数据源,骨架配置永不触碰 |
|
|
66
|
-
| 多份订阅互斥,无法混用不同机场的节点 | 多 provider 同时挂载,节点可混在同一个组里 |
|
|
67
|
-
| 切换订阅要重启内核,掐断所有连接 | 更新订阅走 API(`PUT /providers/proxies/{name}`),内核不重启 |
|
|
68
|
-
| 看不到节点存活与延迟 | 健康检查数据直接展示,支持手动测速 |
|
|
69
|
-
| 看不到订阅流量与到期时间 | 自动解析 `Subscription-Userinfo` 响应头 |
|
|
70
|
-
|
|
71
|
-
## 环境要求
|
|
72
|
-
|
|
73
|
-
- **Node.js ≥ 22**(依赖内置的 `fetch` 与全局 `WebSocket`,不依赖 ws / undici / axios)
|
|
74
|
-
- 一个正在运行的 mihomo 内核,且配置了 `external-controller`(本工具默认连接
|
|
75
|
-
`http://127.0.0.1:19090`,可在配置文件中修改)
|
|
76
|
-
- 可选:Linux + systemd(`--user` 服务),仅影响迁移脚本的部分检查项
|
|
12
|
+
它没有后端、账号和遥测。程序配置与订阅清单保存在 `~/.config/mihomo-tui/`,内核配置在
|
|
13
|
+
mihomo 目录,全部数据只落本机。
|
|
77
14
|
|
|
78
|
-
|
|
15
|
+
> 适合在本机长期运行 mihomo、希望订阅更新不冲掉自定义配置的用户。README 截图由虚构数据生成。
|
|
79
16
|
|
|
80
|
-
|
|
17
|
+
## 页面一览
|
|
81
18
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
19
|
+
| 节点页:代理组与节点,延迟五档显示 | 订阅页:节点数、流量与到期 |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
|  |  |
|
|
85
22
|
|
|
86
|
-
|
|
23
|
+
| 规则页:生效规则与规则集 | |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
|  | |
|
|
87
26
|
|
|
88
|
-
|
|
89
|
-
(Linux / macOS / Windows,x64 与 arm64,约 60–100 MB),并用同目录的 `checksums.txt` 校验:
|
|
27
|
+
## 能做什么
|
|
90
28
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
29
|
+
- **TUI**:六个标签页(节点 / 订阅 / 规则 / 日志 / 连接 / 设置),数字键直达、`ESC` 逐层返回、`M` 切换规则 / 全局 / 直连。
|
|
30
|
+
- **节点**:切换代理组与节点,单节点与整组测速,延迟五档显示并严格区分「未测试」与「超时」,只看可用;url-test / fallback 组的钉选解除走 CLI。
|
|
31
|
+
- **订阅**:TUI 内新增、删除、编辑订阅,展示节点数、流量与到期时间;更新走 API,内核不重启、连接不断。
|
|
32
|
+
- **规则**:筛选生效规则、保守测试域名与 IP 命中、运行时临时禁用;内置规则编辑器直接修改本地 `config.yaml` 规则段(保留原注释,保存前独立校验 + 备份)。
|
|
33
|
+
- **监控**:WebSocket 日志流(级别切换、关键字过滤)与连接流(排序、关闭),状态栏常驻内核版本、模式、速率、流量、内存。
|
|
34
|
+
- **CLI**:脚本与管道友好的全量子命令,支持 `--json` 供 `jq` 消费。
|
|
95
35
|
|
|
96
|
-
|
|
36
|
+
## 数据与隐私
|
|
97
37
|
|
|
98
|
-
|
|
38
|
+
- 数据全部在本机:程序配置 `~/.config/mihomo-tui/config.json`,订阅清单
|
|
39
|
+
`~/.config/mihomo-tui/subscriptions.json`(权限 `600`,**含订阅 token**),内核配置在
|
|
40
|
+
mihomo 目录(默认 `~/.config/mihomo`)。
|
|
41
|
+
- 联网只有四类:本机 External Controller;你配置的订阅与规则集 URL;设置页查询内核版本
|
|
42
|
+
时访问 `api.github.com` 并从 [MetaCubeX/mihomo Releases](https://github.com/MetaCubeX/mihomo/releases)
|
|
43
|
+
下载(可选 `gh-proxy.com` 镜像);延迟测试访问你配置的测速地址。
|
|
44
|
+
- 订阅 token 在所有 TUI / CLI 展示、日志与错误信息中经 `redactUrl` 脱敏为 `<REDACTED>`。
|
|
45
|
+
- 所有写 `config.yaml` 的路径统一走「备份 → `mihomo -t` 校验 → 原子写入 → 失败自动回滚」,
|
|
46
|
+
备份 `config.yaml.bak.*` 保留 7 天。
|
|
47
|
+
- Release 产物附 `checksums.txt`(SHA256);macOS 首次运行被 Gatekeeper 拦截时执行
|
|
48
|
+
`xattr -d com.apple.quarantine mihomo-tui-*`。
|
|
99
49
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
npm install && npm run build
|
|
104
|
-
```
|
|
50
|
+
不要把真实订阅链接或 token 提交到 Git 仓库。许可证见 LICENSE。
|
|
51
|
+
|
|
52
|
+
## 本地运行
|
|
105
53
|
|
|
106
|
-
|
|
107
|
-
`
|
|
54
|
+
Node.js ≥ 22(依赖内置 `fetch` 与全局 `WebSocket`,不引入 ws / undici / axios),外加一台
|
|
55
|
+
运行中且配置了 `external-controller` 的 mihomo 内核。
|
|
108
56
|
|
|
109
57
|
```bash
|
|
110
|
-
|
|
58
|
+
git clone https://github.com/MrChen-hero/mihomo-tui.git
|
|
59
|
+
cd mihomo-tui
|
|
60
|
+
npm install # 仓库不提交 lockfile,不用 npm ci
|
|
111
61
|
```
|
|
112
62
|
|
|
113
|
-
|
|
63
|
+
常用命令:
|
|
114
64
|
|
|
115
65
|
```bash
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
66
|
+
npm run dev -- status # tsx 直跑源码
|
|
67
|
+
npm run typecheck # tsc --noEmit
|
|
68
|
+
npm test # vitest 全量测试
|
|
69
|
+
npm run coverage # 覆盖率报告
|
|
70
|
+
npm run build # 编译到 dist/
|
|
71
|
+
npm run bundle:all # 五平台单二进制(需 bun)
|
|
120
72
|
```
|
|
121
73
|
|
|
122
|
-
|
|
123
|
-
(子进程改不了父 shell 的环境变量)。不装集成也可直接 `eval "$(mihomo-tui proxy on)"`;
|
|
124
|
-
终端直跑 `mihomo-tui proxy on` 时 stderr 会提示这一用法。
|
|
74
|
+
## 安装
|
|
125
75
|
|
|
126
|
-
|
|
76
|
+
### npm
|
|
127
77
|
|
|
128
78
|
```bash
|
|
129
|
-
mihomo-tui
|
|
130
|
-
mihomo-tui # 无参数进入 TUI
|
|
79
|
+
npm install -g @morndream/mihomo-tui@latest
|
|
131
80
|
```
|
|
132
81
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
六个标签页,数字键 `1`–`6` 直接切换,`Tab` 循环。`ESC` 逐层返回,在主界面弹退出确认;`Ctrl+C` 直接退出。
|
|
136
|
-
|
|
137
|
-
### [1] 节点
|
|
138
|
-
|
|
139
|
-
左栏代理组,右栏该组节点。默认只列**含真实节点的组**,按延迟升序排列,
|
|
140
|
-
可用节点浮在顶部。
|
|
141
|
-
|
|
142
|
-
| 键 | 作用 |
|
|
143
|
-
|---|---|
|
|
144
|
-
| `↑↓` / `jk` | 移动光标 |
|
|
145
|
-
| `←→` / `hl` | 左右切栏 |
|
|
146
|
-
| `Enter` | 选用节点(自动组会联动切换 PROXY 到对应区域组) |
|
|
147
|
-
| `u` | 恢复自动选路(PROXY → AUTO) |
|
|
148
|
-
| `t` | 测速:焦点在左栏测整组,在右栏测单个节点 |
|
|
149
|
-
| `T` | 整组测速 |
|
|
150
|
-
| `s` | 切换排序(延迟升序 / 配置顺序) |
|
|
151
|
-
| `v` | 只看可用(滤掉超时与未测试) |
|
|
152
|
-
| `m` | 切换模式(规则 → 全局 → 直连 → 规则) |
|
|
153
|
-
| `r` | 刷新 |
|
|
82
|
+
### 单二进制(免 Node.js)
|
|
154
83
|
|
|
155
|
-
|
|
84
|
+
从 [Releases](https://github.com/MrChen-hero/mihomo-tui/releases) 下载对应平台产物。国内网络直连
|
|
85
|
+
GitHub 缓慢时,在下载 URL 前加镜像前缀 `https://gh-proxy.com/`(Release 页已附各文件的镜像链接):
|
|
156
86
|
|
|
157
|
-
|
|
158
|
-
|
|
87
|
+
| 平台 | 产物 |
|
|
88
|
+
| --- | --- |
|
|
89
|
+
| Linux x64 / arm64 | `mihomo-tui-*-linux-x64` / `mihomo-tui-*-linux-arm64` |
|
|
90
|
+
| macOS x64(Intel)/ arm64(Apple Silicon) | `mihomo-tui-*-darwin-x64` / `mihomo-tui-*-darwin-arm64` |
|
|
91
|
+
| Windows x64 | `mihomo-tui-*-windows-x64.exe` |
|
|
159
92
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
| 缓慢(> 800ms) | 红色延迟值 |
|
|
165
|
-
| 未测试 | 灰色 `---` |
|
|
166
|
-
| 超时/错误 | 红色 `超时` |
|
|
167
|
-
|
|
168
|
-
### [2] 订阅
|
|
169
|
-
|
|
170
|
-
| 键 | 作用 |
|
|
171
|
-
|---|---|
|
|
172
|
-
| `a` | 新增订阅(名称 / URL / 节点名前缀,逐字段实时校验) |
|
|
173
|
-
| `d` | 删除当前订阅(红色确认框,列出将发生的全部变更) |
|
|
174
|
-
| `e` | 编辑当前订阅的节点名前缀(名称与 URL 不可改) |
|
|
175
|
-
| `u` | 更新当前订阅 |
|
|
176
|
-
| `U` | 更新全部订阅 |
|
|
177
|
-
| `c` | 健康检查 |
|
|
178
|
-
| `Enter` | 展开该订阅的节点列表 |
|
|
179
|
-
| `r` | 刷新 |
|
|
180
|
-
|
|
181
|
-
增删改是完整的事务流程:自动备份 `config.yaml` → 临时目录 `mihomo -t` 校验 →
|
|
182
|
-
原子写入 → 自动重启 `mihomo` 服务并确认状态;任何一步失败都会自动回滚
|
|
183
|
-
配置与订阅清单,并把 `systemctl status` 完整输出展示在错误框里。
|
|
184
|
-
配置备份保留 7 天(`config.yaml.bak.<时间戳>`)。
|
|
185
|
-
|
|
186
|
-
更新订阅失败会把完整错误显示在红框里(订阅域名失效、经代理被 403 都是常态)。
|
|
187
|
-
|
|
188
|
-
### [3] 规则
|
|
189
|
-
|
|
190
|
-
规则页支持 `l` 切换类型、`/` 关键字过滤、`Enter` 查看详情、`t` 测试域名/IP、`u` 更新规则集、`d` 临时禁用/启用、`r` 刷新。规则测试无法确定时会提示需内核判定。
|
|
191
|
-
|
|
192
|
-
禁用仅修改内核运行时状态,配置重载或内核重启后可能恢复。旧内核或缺少禁用字段时,使用 `m` 作会话内本地标记,**不影响实际分流和规则测试**;规则页的 `m` 不切换全局模式。
|
|
193
|
-
|
|
194
|
-
本地测试支持域名和 IP 网段。遇到 `GEOIP`、`RULE-SET`、进程规则或需要 DNS 查询的规则即停止并提示“需内核判定”;命中结果只表示规则目标,不代表最终节点或真实流量路径。禁用操作与外部配置重载可能竞争,显示“结果未确认”时请刷新检查,不会自动重试。
|
|
195
|
-
|
|
196
|
-
按 **`e` 打开配置规则编辑器**,编辑本机 `mihomoDir/config.yaml` 中的规则。配置草稿独立于当前生效规则,允许连续操作后统一保存;原规则页的 `d` 仍表示临时禁用。
|
|
197
|
-
|
|
198
|
-
| 编辑器按键 | 操作 |
|
|
199
|
-
|---|---|
|
|
200
|
-
| `↑↓` / `j/k` | 选择规则 |
|
|
201
|
-
| `a` / `e` / `d` | 新增 / 编辑 / 确认删除草稿规则 |
|
|
202
|
-
| `J/K` | 向后 / 向前移动一条,保持选中规则身份 |
|
|
203
|
-
| `/` | 按原文过滤;提交空字符串清除;过滤期间禁止新增和调序 |
|
|
204
|
-
| `Enter` | 查看完整原文、路径与保护原因;`↑↓` 滚动 |
|
|
205
|
-
| `Ctrl+S` | 确认后统一校验、保存并重载完整配置 |
|
|
206
|
-
| `ESC` | 取消当前弹窗;有草稿时确认放弃 |
|
|
207
|
-
|
|
208
|
-
常用表单覆盖域名、网段、端口、进程、`RULE-SET` 和 `MATCH`;候选字段按 `e` 选择。复杂表达式和额外参数使用单条原文,保留内部内容。`MATCH` 最多一条且须位于末尾,也允许删除它并明确提示“无显式 MATCH”。订阅直连规则按内容识别并保护;订阅清单缺失、为空、损坏或保护前缀不一致时禁止写入。
|
|
209
|
-
|
|
210
|
-
保存先在独立目录校验,创建唯一的 `config.yaml.bak.*` 备份,再原子替换、写后复验、按绝对路径重载和回读确认。保留原 YAML 节点及注释,但成功序列化可能调整排版。失败恢复使用保存前的原始字节和文件权限。**重载会重新建立规则状态,临时禁用、本地标记和旧测试结果会清除。** 校验期间可以取消;正式写入至重载/恢复结束期间,`ESC`、`Ctrl+C` 和切页不会终止事务。
|
|
211
|
-
|
|
212
|
-
重载已接受但回读失败时显示“已保存 · 待确认”,按 `r` 仅重新读取,不重复重载,也不允许叠加保存。恢复未完成时分别显示磁盘和内核状态及备份路径,保留草稿;处理状态后需重新打开编辑器。检测到其他程序修改配置或订阅清单时停止覆盖和自动恢复。
|
|
213
|
-
|
|
214
|
-
**支持边界:** 仅支持普通本地配置文件和回环控制器,保存确认要求该控制器确实读取显示的本机路径;SSH 隧道、容器路径映射不在支持范围。校验复制数据目录内相对路径的 provider 缓存及标准 geodata(地域数据库);缺少依赖、绝对/逃逸路径、外部 UI、证书/私钥文件等未支持资源会阻止保存。`rules` 的锚点、别名、自定义标签和顶层合并来源不支持写入。复杂规则的附加参数由内核校验,回读不承诺逐项验证,也不保证远程规则集已下载或实际流量一定命中。避免其他程序同时编辑同一文件;进程强杀、断电及多进程严格事务不在保证范围。后续订阅/代理组配置流程仍可能调整规则引用。规则集本身仍只查看与更新,没有新增 CLI 写命令。
|
|
215
|
-
|
|
216
|
-
### [4] 日志
|
|
217
|
-
|
|
218
|
-
| 键 | 作用 |
|
|
219
|
-
|---|---|
|
|
220
|
-
| `l` | 循环切换级别(silent / error / warning / info / debug) |
|
|
221
|
-
| `/` | 输入关键字过滤 |
|
|
222
|
-
| `Space` | 暂停 / 恢复滚动 |
|
|
223
|
-
| `c` | 清屏 |
|
|
224
|
-
|
|
225
|
-
环形缓冲上限 1000 行,长时运行内存稳定。
|
|
93
|
+
```bash
|
|
94
|
+
grep linux-x64 checksums.txt | sha256sum -c - # checksums.txt 含全部五个平台,按平台过滤后校验
|
|
95
|
+
chmod +x mihomo-tui-*-linux-x64
|
|
96
|
+
```
|
|
226
97
|
|
|
227
|
-
###
|
|
98
|
+
### 发布机制
|
|
228
99
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
| `D` | 关闭全部(需按 `y` 二次确认) |
|
|
233
|
-
| `s` | 切换排序(流量 / 时间 / 主机) |
|
|
100
|
+
推送 `v*` tag 触发 [.github/workflows/release.yml](.github/workflows/release.yml):五平台
|
|
101
|
+
交叉编译、三平台冒烟、Release 附加产物与 npm 同步发布;`-rc` 后缀的 tag 自动标记预发布并
|
|
102
|
+
发布到 npm 的 `next` dist-tag。项目未提供 Docker 或云平台部署配置。
|
|
234
103
|
|
|
235
|
-
|
|
104
|
+
## 第一次使用
|
|
236
105
|
|
|
237
|
-
|
|
106
|
+
1. **还没有 mihomo 内核?** 一条命令自助闭环:
|
|
238
107
|
|
|
239
|
-
|
|
108
|
+
```bash
|
|
109
|
+
mihomo-tui kernel install # 下载安装最新稳定版内核 + 生成最小引导配置
|
|
110
|
+
```
|
|
240
111
|
|
|
241
|
-
|
|
242
|
-
|
|
112
|
+
官方源失败自动回退镜像(可 `--mirror` 指定、`--port` 自定义控制口端口);`config.yaml`
|
|
113
|
+
已存在时绝不触碰。已有内核的用户跳过本步。
|
|
114
|
+
2. `mihomo-tui status` 确认内核可达,输出内核版本、模式、端口与 provider 概览;连不上时
|
|
115
|
+
检查内核是否已启动(安装但未启动的场景报错会单独提示)、`external-controller` 地址与
|
|
116
|
+
`secret` 是否正确。
|
|
117
|
+
3. `~/.config/mihomo-tui/config.json` 首次运行自动生成,确认 `api`、`secret` 与
|
|
118
|
+
`mihomoDir`(订阅事务和规则编辑器写 `config.yaml` 的位置)指向你的内核。
|
|
119
|
+
4. 进入 TUI(直接运行 `mihomo-tui`),在订阅页按 `a` 新增订阅;已有「整份订阅」旧配置的
|
|
120
|
+
用户可用 `node scripts/migrate-config.mjs --dry-run --diff` 预览改造方案,确认后 `--apply`。
|
|
121
|
+
5. 节点页 `Enter` 选用节点、`t` 测速;订阅页 `u` 更新当前订阅、`U` 全部更新。
|
|
122
|
+
6. 要用 `proxy on` / `proxy off` / `proxy status` 快捷命令管理本 shell 的系统代理环境变量,
|
|
123
|
+
把集成装进 bashrc(首次运行 `mihomo-tui` 时命令行也会输出同样提示):
|
|
243
124
|
|
|
244
|
-
|
|
125
|
+
```bash
|
|
126
|
+
echo 'eval "$(mihomo-tui proxy init)"' >> ~/.bashrc && source ~/.bashrc
|
|
127
|
+
proxy on # 开启本 shell 的系统代理,端口自动发现
|
|
128
|
+
```
|
|
129
|
+
7. 备份与迁移:配置变更自动留 `config.yaml.bak.*`(保留 7 天);换设备时拷贝
|
|
130
|
+
`~/.config/mihomo-tui/` 与 mihomo 目录即可完整复原。
|
|
131
|
+
8. 注意:新增 / 删除订阅会重启一次 mihomo 服务(秒级断流,更新不断流);切节点、切模式等
|
|
132
|
+
运行时改动重启后丢失,需持久化的变更写入 `config.yaml` 后执行 `mihomo-tui reload`。
|
|
245
133
|
|
|
246
|
-
|
|
134
|
+
## CLI 速查
|
|
247
135
|
|
|
248
136
|
```bash
|
|
249
137
|
mihomo-tui status # 内核版本、模式、端口、provider 概览
|
|
250
|
-
mihomo-tui proxy
|
|
251
|
-
mihomo-tui proxy
|
|
252
|
-
mihomo-tui proxy status # 内核端口与本 shell 代理状态(--json 可查)
|
|
253
|
-
mihomo-tui proxy ls # 列出所有代理组及当前选中
|
|
254
|
-
mihomo-tui proxy ls 香港 # 列出该组节点、延迟、状态
|
|
255
|
-
mihomo-tui proxy use <组> <节点> # 切换节点(url-test 组会钉选并提示)
|
|
138
|
+
mihomo-tui proxy ls [组名] # 代理组与节点、延迟、状态
|
|
139
|
+
mihomo-tui proxy use <组> <节点> # 切换节点(url-test 组会钉选并提示)
|
|
256
140
|
mihomo-tui proxy unfix <组> # 解除 url-test/fallback 组的钉选
|
|
257
|
-
mihomo-tui proxy test 香港 -
|
|
141
|
+
mihomo-tui proxy test 香港 -t 5000 # 整组延迟测试
|
|
258
142
|
mihomo-tui provider ls # 订阅列表(节点数/流量/到期/更新时间)
|
|
259
143
|
mihomo-tui provider update [名称] # 更新订阅,省略名称则全部
|
|
260
|
-
mihomo-tui
|
|
261
|
-
mihomo-tui rules
|
|
262
|
-
mihomo-tui
|
|
263
|
-
mihomo-tui rule-provider ls --json # 规则集列表
|
|
264
|
-
mihomo-tui rule-provider update <名称> --json # 更新规则集
|
|
265
|
-
mihomo-tui logs -f # 实时日志跟随,Ctrl+C 退出
|
|
266
|
-
mihomo-tui logs -n 20 -g 'error' # 抓 20 条含 error 的日志后退出
|
|
144
|
+
mihomo-tui rules ls --type DOMAIN-SUFFIX --json
|
|
145
|
+
mihomo-tui rules test example.com --json # hit / miss / unsupported
|
|
146
|
+
mihomo-tui logs -f # 实时日志跟随
|
|
267
147
|
mihomo-tui conn ls -s traffic -n 50 # 连接列表,按流量排序
|
|
268
|
-
mihomo-tui conn close <id|--all> #
|
|
148
|
+
mihomo-tui conn close <id|--all> # 关闭连接
|
|
149
|
+
mihomo-tui kernel ls # 本地与远端内核版本
|
|
150
|
+
mihomo-tui kernel install [version] # 下载安装内核与引导配置(--port/--mirror/--alpha)
|
|
269
151
|
mihomo-tui reload # 热重载配置(内核不重启)
|
|
270
152
|
```
|
|
271
153
|
|
|
272
|
-
组名含中文与 emoji
|
|
154
|
+
组名含中文与 emoji 直接传入即可。退出码:`0` 成功、`1` 通用错误、`2` 参数错误、`3` 内核不可达。
|
|
273
155
|
|
|
274
|
-
|
|
275
|
-
mihomo-tui proxy ls '🇭🇰 香港聚合'
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
**退出码约定**:`0` 成功,`1` 通用错误,`2` 参数错误,`3` 内核不可达。
|
|
279
|
-
|
|
280
|
-
## 配置
|
|
281
|
-
|
|
282
|
-
程序自身配置位于 `~/.config/mihomo-tui/config.json`,首次运行自动生成:
|
|
283
|
-
|
|
284
|
-
```json
|
|
285
|
-
{
|
|
286
|
-
"api": "http://127.0.0.1:19090",
|
|
287
|
-
"secret": "",
|
|
288
|
-
"mihomoDir": "~/.config/mihomo",
|
|
289
|
-
"testUrl": "https://www.gstatic.com/generate_204",
|
|
290
|
-
"testTimeout": 5000,
|
|
291
|
-
"delayThresholds": { "good": 300, "fair": 800 }
|
|
292
|
-
}
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
| 字段 | 说明 |
|
|
296
|
-
|---|---|
|
|
297
|
-
| `api` | mihomo External Controller 地址 |
|
|
298
|
-
| `secret` | 控制口密钥,与 `external-controller` 的 `secret` 一致 |
|
|
299
|
-
| `testUrl` | 延迟测试地址(默认 `gstatic.com`,实测比 `cp.cloudflare.com` 兼容性好) |
|
|
300
|
-
| `testTimeout` | 单节点测速超时(毫秒) |
|
|
301
|
-
| `delayThresholds` | 好 / 一般 / 缓慢三档延迟阈值 |
|
|
302
|
-
|
|
303
|
-
命令行可用 `--api <url>` 与 `--secret <token>` 临时覆盖。
|
|
304
|
-
|
|
305
|
-
## 配置架构:骨架 + Provider
|
|
306
|
-
|
|
307
|
-
推荐的 mihomo 配置为「骨架 + provider」两层结构,订阅更新不再覆盖任何自定义配置:
|
|
308
|
-
|
|
309
|
-
```txt
|
|
310
|
-
config.yaml(骨架,只维护一次)
|
|
311
|
-
├── 通用设置 / sniffer / dns / rules / rule-providers
|
|
312
|
-
├── proxy-providers: ← 订阅作为节点来源
|
|
313
|
-
│ ├── alpha → ./providers/alpha.yaml
|
|
314
|
-
│ ├── beta → ./providers/beta.yaml
|
|
315
|
-
└── proxy-groups:
|
|
316
|
-
├── PROXY / AUTO / FALLBACK
|
|
317
|
-
├── 区域组:香港 台湾 日本 韩国 新加坡 美国 …
|
|
318
|
-
├── 机场组:机场-alpha / 机场-beta
|
|
319
|
-
└── 用途组:AI Google YouTube Telegram 流媒体 …
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
> **关键约束**:provider 的 `path` **必须是相对路径** —— mihomo 对此有路径安全
|
|
323
|
-
> 校验,配置文件之外的绝对路径会被拒绝启动。
|
|
324
|
-
|
|
325
|
-
## 迁移脚本
|
|
326
|
-
|
|
327
|
-
`scripts/migrate-config.mjs` 负责把现有整份订阅配置一次性改造为上述架构。
|
|
328
|
-
它是一次性迁移入口;日常订阅与设置变更通过内置配置事务完成。迁移脚本的安全机制如下:
|
|
329
|
-
|
|
330
|
-
```bash
|
|
331
|
-
node scripts/migrate-config.mjs --dry-run --diff # 预览骨架与差异,不落盘
|
|
332
|
-
node scripts/migrate-config.mjs --apply # 备份 + 校验 + 写入
|
|
333
|
-
node scripts/migrate-config.mjs --apply --no-dns # 写入但不改 dns 段
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
- 订阅链接放在 `~/.config/mihomo-tui/subscriptions.json`(权限 600,含 token):
|
|
337
|
-
|
|
338
|
-
```json
|
|
339
|
-
{
|
|
340
|
-
"subscriptions": [
|
|
341
|
-
{ "name": "alpha", "prefix": "[A] ", "url": "https://example.com/sub?token=..." }
|
|
342
|
-
]
|
|
343
|
-
}
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
- `name` 只能用字母数字与 `-_`(要作文件名);`prefix` 会通过
|
|
347
|
-
`additional-prefix` 注入到节点名前,用于标记来源。
|
|
348
|
-
- 安全保证:`--dry-run` 也会跑 `mihomo -t` 校验;`--apply` 先备份再写,
|
|
349
|
-
写入后再校验一次,失败自动从备份回滚;重复运行结果一致(幂等)。
|
|
350
|
-
- 脚本会自动处理若干实测踩到的坑:DNS 上游可达性、`respect-rules` 与
|
|
351
|
-
`proxy-server-nameserver` 的成对约束、订阅域名 DIRECT 规则防拉取死锁、
|
|
352
|
-
过滤机场下发的「剩余流量 / 套餐到期」等伪装节点。
|
|
353
|
-
|
|
354
|
-
## 常见问题与已知限制
|
|
355
|
-
|
|
356
|
-
**Q:延迟测试全部超时?**
|
|
357
|
-
先确认测速地址本身可达:`curl -I https://www.gstatic.com/generate_204`。
|
|
358
|
-
部分内网环境对特定测速域名不通,可在 `config.json` 中更换 `testUrl`。
|
|
359
|
-
|
|
360
|
-
**Q:TUI 显示「内核不可达」?**
|
|
361
|
-
确认 mihomo 正在运行且 `external-controller` 地址正确:
|
|
362
|
-
|
|
363
|
-
```bash
|
|
364
|
-
curl http://127.0.0.1:19090/version
|
|
365
|
-
systemctl --user status mihomo # 按你的实际部署方式
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
**Q:AI 服务商(Claude / ChatGPT)不可用?**
|
|
369
|
-
多数机场出口 IP 被 AI 服务商封锁(403 或地区不可用页),这是节点 IP 问题,
|
|
370
|
-
改配置无法解决,需要带 AI 解锁的节点。
|
|
371
|
-
|
|
372
|
-
**Q:为什么日志命令有时不会立即退出?**
|
|
373
|
-
mihomo 内核不回应 WebSocket close 帧,客户端关闭握手永不完成,因此所有用到
|
|
374
|
-
流的命令都显式退出;非 `--follow` 的 `logs` 有 `--idle` 空闲超时(默认 5 秒)兜底。
|
|
375
|
-
|
|
376
|
-
**Q:TUI 里的修改重启内核后会丢吗?**
|
|
377
|
-
会。运行时操作(切节点、切模式)都是内存中变更。需要持久化的变更请编辑
|
|
378
|
-
`config.yaml` 后执行 `mihomo-tui reload`;订阅的增删改则直接持久化
|
|
379
|
-
(通过内置的备份 → 校验 → 原子写 → 回滚事务)。
|
|
380
|
-
|
|
381
|
-
**Q:添加订阅时提示「订阅名称已存在」?**
|
|
382
|
-
订阅名称会用作 provider 名与缓存文件名,全局唯一且只允许字母数字与 `-_`
|
|
383
|
-
(1–32 位)。换一个名字,或先删除旧订阅。
|
|
384
|
-
|
|
385
|
-
**Q:新增 / 删除订阅会导致代理断流吗?**
|
|
386
|
-
会重启 mihomo 服务一次(秒级断流)。随后的订阅更新(`u` / `U`)走 API,
|
|
387
|
-
不重启、不断流。
|
|
388
|
-
|
|
389
|
-
**Q:订阅 URL 里的 token 会泄露吗?**
|
|
390
|
-
token 只保存在本机两个文件里(`subscriptions.json` 与内核 `config.yaml`),
|
|
391
|
-
所有 TUI/CLI 展示、日志、错误信息都经过 `redactUrl` 脱敏;
|
|
392
|
-
测试套件里禁止出现真实 token,并有全局防护禁止测试写入生产配置目录。
|
|
393
|
-
|
|
394
|
-
## 开发
|
|
395
|
-
|
|
396
|
-
```bash
|
|
397
|
-
npm install
|
|
398
|
-
npm run typecheck # tsc --noEmit
|
|
399
|
-
npm test # vitest 单元 + 集成测试
|
|
400
|
-
npm run coverage # 覆盖率报告
|
|
401
|
-
npm run build # 编译到 dist/
|
|
402
|
-
npm run dev -- status # tsx 直跑源码
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
测试覆盖 `src/config/` 全模块(语句 94%+)、REST 客户端(本地假内核)、
|
|
406
|
-
WebSocket 状态机(FakeWebSocket + fake timers)、TUI 对话框(无头渲染 +
|
|
407
|
-
按键注入)与订阅事务的逐阶段回滚;测试物理禁止写入真实的
|
|
408
|
-
`~/.config/mihomo{,-tui}` 目录(`vitest.setup.ts` 全局防护)。
|
|
409
|
-
|
|
410
|
-
`bin/mihomo-tui` 优先用 `dist/cli.js`,未编译时回退 tsx 直跑源码。
|
|
156
|
+
## 项目结构
|
|
411
157
|
|
|
412
158
|
```txt
|
|
413
159
|
src/
|
|
414
160
|
├── api/ # REST 客户端 + WebSocket 流封装
|
|
415
161
|
├── commands/ # CLI 子命令
|
|
416
|
-
├── config/ #
|
|
417
|
-
│ # ServiceManager、订阅事务编排(subscriptionService)
|
|
162
|
+
├── config/ # 订阅清单、配置事务(唯一写配置入口)、规则编辑服务
|
|
418
163
|
├── rules/ # 规则类型转换、保守匹配与运行时禁用确认
|
|
419
|
-
├──
|
|
420
|
-
├──
|
|
164
|
+
├── kernel/ # 内核版本查询、下载与安装(含镜像源)
|
|
165
|
+
├── views/ # TUI 六个标签页
|
|
166
|
+
├── components/ # 对话框、列表、延迟徽章、状态栏
|
|
421
167
|
├── hooks/ # useProxies / useProviders / useStream
|
|
168
|
+
├── ui/ # 主题(唯一取色处)、布局、按键捕获与退出保护
|
|
422
169
|
├── App.tsx # TUI 根组件
|
|
423
|
-
├── cli.tsx # CLI/TUI 路由
|
|
424
|
-
└──
|
|
170
|
+
├── cli.tsx # CLI / TUI 路由
|
|
171
|
+
└── version.ts # 版本号来源链(编译期注入 → 环境变量 → package.json)
|
|
172
|
+
bin/mihomo-tui # 可执行胶水:优先 dist/cli.js,未编译时回退 tsx
|
|
173
|
+
scripts/ # 迁移、冒烟与打包脚本
|
|
174
|
+
docs/ # 设计规格、路线图与开发文档
|
|
425
175
|
```
|
|
426
176
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
规则管理的隔离内核验收:先 `npm run build`,再运行 `node scripts/smoke-rules.mjs /absolute/path/to/mihomo`。该脚本使用临时配置和随机回环端口验证禁用/恢复及规则集更新,不读取或重载现有服务配置。
|
|
177
|
+
架构与实测背景见 [docs/SPEC.md](docs/SPEC.md),开发文档见 [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)。
|
|
430
178
|
|
|
431
|
-
|
|
179
|
+
## 开发与贡献
|
|
432
180
|
|
|
433
|
-
|
|
434
|
-
|---|---|
|
|
435
|
-
| [`docs/SPEC.md`](docs/SPEC.md) | 完整设计规格:痛点分析、API 实测、架构决策、踩坑记录 |
|
|
436
|
-
| [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) | 开发文档:架构分层、核心实现、扩展指南、FAQ |
|
|
437
|
-
| [`docs/ROADMAP.md`](docs/ROADMAP.md) | 路线图与技术债:待实现功能、竞品对比、非目标清单 |
|
|
438
|
-
| [`docs/specs/2026-08-17-subscription-management-design.md`](docs/specs/2026-08-17-subscription-management-design.md) | 订阅生命周期管理(v0.2.0)设计稿 |
|
|
439
|
-
| [`docs/specs/2026-09-22-tui-standardize-polish-spec.md`](docs/specs/2026-09-22-tui-standardize-polish-spec.md) | TUI 标准化美化(v0.2.1)设计稿 |
|
|
440
|
-
| [`docs/specs/2026-09-24-config-management-spec.md`](docs/specs/2026-09-24-config-management-spec.md) | v0.4.0 规则管理规范与代理链范围修订 |
|
|
181
|
+
提交修改前执行:
|
|
441
182
|
|
|
442
|
-
|
|
183
|
+
```bash
|
|
184
|
+
npm run typecheck
|
|
185
|
+
npm test
|
|
186
|
+
npm run build
|
|
187
|
+
git diff --check
|
|
188
|
+
```
|
|
443
189
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
- [x] v0.2.1 —— TUI 标准化美化:响应式布局、设计系统统一、内核版本管理
|
|
447
|
-
- [x] v0.3.0 —— 订阅增强:分组、重命名、远程/本地类型、更新间隔、内联 YAML 编辑(前缀按订阅名自动派生)
|
|
448
|
-
- [x] v0.4.0 —— 规则管理:规则页、规则集更新、保守规则测试、运行时禁用/降级标记
|
|
449
|
-
- [ ] 后续 —— dialer-proxy 代理链设计;本机 mihomo v1.19.24 已移除 `type: relay`
|
|
450
|
-
- [x] v0.5.0(实现就绪)—— 单二进制打包(Bun 1.4.2)、shell 代理开关(`proxy on/off`)、npm 双通道;发布待 `v0.5.0-rc.0` tag
|
|
190
|
+
写路径(订阅事务、规则编辑)与 CLI 输出契约的变更需要补测试;测试一律使用假内核与
|
|
191
|
+
`HOME` 重定向,不触碰真实配置目录。不要提交真实订阅数据、token、备份文件或构建产物。
|
|
451
192
|
|
|
452
|
-
|
|
193
|
+
设计红线与贡献步骤见 [CONTRIBUTING.md](CONTRIBUTING.md);安全问题提交 Issue 并在标题
|
|
194
|
+
注明 `security`,描述中不要附真实 token 或订阅地址。
|
|
453
195
|
|
|
454
|
-
##
|
|
196
|
+
## 已知限制
|
|
455
197
|
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
198
|
+
- Windows 仅提供 x64 二进制;macOS 提供 x64 与 arm64;Linux 提供 x64 与 arm64。
|
|
199
|
+
- Node.js 全局 `WebSocket` 自 v22.4 起脱离实验状态,更早的小版本(22.0–22.3)未验证。
|
|
200
|
+
- 切节点、切模式、临时禁用规则等运行时改动重启内核后不保留。
|
|
201
|
+
- 规则编辑器不支持写入锚点、别名与顶层合并来源;保守规则测试遇到 `GEOIP`、`RULE-SET`
|
|
202
|
+
等会提示「需内核判定」,命中结果只表示规则目标,不代表真实流量路径。
|
|
203
|
+
- 不支持 SSH 隧道、容器路径映射等非本机回环场景。
|
|
204
|
+
- mihomo 内核不回应 WebSocket close 帧,用过日志 / 连接流的命令都显式退出。
|
|
459
205
|
|
|
460
206
|
## 许可证
|
|
461
207
|
|
|
462
|
-
[MIT](LICENSE)
|
|
208
|
+
本项目使用 [MIT License](LICENSE)。
|
package/dist/cli.js
CHANGED
|
@@ -11,6 +11,7 @@ import { runStatus } from './commands/status.js';
|
|
|
11
11
|
import { runProxyLs, runProxyTest, runProxyUnfix, runProxyUse } from './commands/proxy.js';
|
|
12
12
|
import { runProxyInit, runProxyOff, runProxyOn, runProxyStatus } from './commands/proxyEnv.js';
|
|
13
13
|
import { runProviderCheck, runProviderLs, runProviderUpdate } from './commands/provider.js';
|
|
14
|
+
import { runKernelInstall, runKernelLs } from './commands/kernel.js';
|
|
14
15
|
import { runConnClose, runConnLs, runReload } from './commands/conn.js';
|
|
15
16
|
import { runLogs } from './commands/logs.js';
|
|
16
17
|
import { runRuleProviderLs, runRuleProviderUpdate, runRulesLs, runRulesTest } from './commands/rules.js';
|
|
@@ -129,6 +130,21 @@ provider
|
|
|
129
130
|
.description('触发该 provider 的健康检查')
|
|
130
131
|
.option('--json', '输出原始 JSON')
|
|
131
132
|
.action(wrap(async (name, options) => runProviderCheck(resolveConfig(), name, options)));
|
|
133
|
+
const kernel = program.command('kernel').description('mihomo 内核版本管理(下载 / 安装 / 查看)');
|
|
134
|
+
kernel
|
|
135
|
+
.command('ls')
|
|
136
|
+
.description('查看生效与本地归档的内核版本,及远端最新稳定版')
|
|
137
|
+
.option('--json', '输出原始 JSON')
|
|
138
|
+
.action(wrap(async (options) => runKernelLs(resolveConfig(), options)));
|
|
139
|
+
kernel
|
|
140
|
+
.command('install')
|
|
141
|
+
.argument('[version]', '内核版本(如 1.19.30 或 v1.19.30),缺省安装最新稳定版')
|
|
142
|
+
.description('下载并安装内核;官方源失败自动回退镜像,并生成引导配置')
|
|
143
|
+
.option('--alpha', '安装最新 alpha 版(按资产 sha 键控,避免装到陈旧构建)')
|
|
144
|
+
.option('--port <n>', '引导配置的 external-controller 端口,默认 19090')
|
|
145
|
+
.option('--mirror <prefix>', '自定义下载镜像前缀(形如 https://gh-proxy.com/),指定后不再回退其他源')
|
|
146
|
+
.option('--json', '输出原始 JSON')
|
|
147
|
+
.action(wrap(async (version, options) => runKernelInstall(resolveConfig(), version, options)));
|
|
132
148
|
const rules = program.command('rules').description('查看当前生效规则并测试命中');
|
|
133
149
|
rules
|
|
134
150
|
.command('ls')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kernel 命令组:CLI 侧的内核版本管理。
|
|
3
|
+
*
|
|
4
|
+
* 下载 / 校验 / 替换全部复用 src/kernel/installer.ts(与设置页同一套服务),
|
|
5
|
+
* 这里只做三件事:版本与源的编排、无内核新机器的引导配置生成、收尾指引。
|
|
6
|
+
* 引导配置是全项目唯一「创建而非事务修改」config.yaml 的路径:仅在文件
|
|
7
|
+
* 不存在时写入最小骨架(存在则绝不触碰),因此不需要走备份回滚事务。
|
|
8
|
+
*/
|
|
9
|
+
import { spawnSync } from 'node:child_process';
|
|
10
|
+
import { existsSync, mkdirSync, renameSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
import { KERNELS_DIR_DEFAULT, archivedBinPath, listArchivedTags, installKernel, } from '../kernel/installer.js';
|
|
13
|
+
import { fetchAlphaRelease, listStableReleases, selectAlphaAsset, selectAsset, } from '../kernel/releases.js';
|
|
14
|
+
import { MihomoClient } from '../api/client.js';
|
|
15
|
+
import { ServiceManager } from '../config/service.js';
|
|
16
|
+
import { DEFAULT_CONFIG, loadConfig, saveConfig, } from '../config.js';
|
|
17
|
+
import { MIHOMO_BIN_DEFAULT, MIHOMO_DIR_DEFAULT } from '../config/manager.js';
|
|
18
|
+
import { EXIT, printJson } from './output.js';
|
|
19
|
+
/** controller 端口合法域,与 settingsService 的端口约束一致 */
|
|
20
|
+
const PORT_MIN = 1024;
|
|
21
|
+
const PORT_MAX = 65535;
|
|
22
|
+
/** 引导配置的代理端口:避开 7890 惯用值,降低与已有软件冲突的概率 */
|
|
23
|
+
const BOOTSTRAP_MIXED_PORT = 17890;
|
|
24
|
+
const BOOTSTRAP_CONTROLLER_PORT = 19090;
|
|
25
|
+
function usageExit(message) {
|
|
26
|
+
process.stderr.write(`错误:${message}\n`);
|
|
27
|
+
process.exit(EXIT.usage);
|
|
28
|
+
}
|
|
29
|
+
function parsePort(raw) {
|
|
30
|
+
if (raw === undefined)
|
|
31
|
+
return BOOTSTRAP_CONTROLLER_PORT;
|
|
32
|
+
const port = Number(raw);
|
|
33
|
+
if (!Number.isInteger(port) || port < PORT_MIN || port > PORT_MAX) {
|
|
34
|
+
usageExit(`--port 必须是 ${PORT_MIN}-${PORT_MAX} 之间的整数,收到:${raw}`);
|
|
35
|
+
}
|
|
36
|
+
return port;
|
|
37
|
+
}
|
|
38
|
+
function resolveSourceConfig(config, mirror) {
|
|
39
|
+
if (mirror === undefined)
|
|
40
|
+
return config.downloadSource;
|
|
41
|
+
if (!/^https?:\/\//.test(mirror)) {
|
|
42
|
+
usageExit(`--mirror 必须是以 http(s):// 开头的镜像前缀,收到:${mirror}`);
|
|
43
|
+
}
|
|
44
|
+
return { mode: 'custom', customPrefix: mirror };
|
|
45
|
+
}
|
|
46
|
+
/** systemd --user 下是否存在 mihomo 单元(决定安装后是否自动重启服务) */
|
|
47
|
+
function hasSystemdUnit() {
|
|
48
|
+
const probe = spawnSync('systemctl', ['--user', 'cat', 'mihomo'], { timeout: 2000 });
|
|
49
|
+
return !probe.error && probe.status === 0;
|
|
50
|
+
}
|
|
51
|
+
/** 生效二进制的版本行(mihomo -v 首行);读不到返回 undefined */
|
|
52
|
+
function activeVersionLine(binPath) {
|
|
53
|
+
const probe = spawnSync(binPath, ['-v'], { timeout: 3000 });
|
|
54
|
+
if (probe.error || probe.status !== 0)
|
|
55
|
+
return undefined;
|
|
56
|
+
const line = (probe.stdout?.toString() ?? '').split('\n')[0]?.trim();
|
|
57
|
+
return line ? line : undefined;
|
|
58
|
+
}
|
|
59
|
+
function progressLine(progress, lastPct) {
|
|
60
|
+
if (progress.phase === 'download' && progress.total) {
|
|
61
|
+
const pct = Math.min(100, Math.floor((progress.received ?? 0) / progress.total * 100));
|
|
62
|
+
if (pct - lastPct.value < 10 && pct < 100)
|
|
63
|
+
return undefined;
|
|
64
|
+
lastPct.value = pct;
|
|
65
|
+
return `${progress.message} ${pct}%`;
|
|
66
|
+
}
|
|
67
|
+
if (progress.phase === 'download')
|
|
68
|
+
return progress.received ? `${progress.message} ${(progress.received / 1024 / 1024).toFixed(1)} MB` : undefined;
|
|
69
|
+
return progress.message;
|
|
70
|
+
}
|
|
71
|
+
export async function runKernelLs(config, options = {}, deps = {}) {
|
|
72
|
+
const binPath = config.mihomoBin ?? MIHOMO_BIN_DEFAULT;
|
|
73
|
+
const kernelsDir = deps.kernelsDir ?? KERNELS_DIR_DEFAULT;
|
|
74
|
+
const archived = listArchivedTags(kernelsDir);
|
|
75
|
+
const active = activeVersionLine(binPath);
|
|
76
|
+
let remote = [];
|
|
77
|
+
let remoteError;
|
|
78
|
+
try {
|
|
79
|
+
const releases = await listStableReleases({ fetchImpl: deps.fetchImpl, sourceConfig: config.downloadSource });
|
|
80
|
+
remote = releases.slice(0, 5).map((r) => ({ tag: r.tag, publishedAt: r.publishedAt }));
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
remoteError = err instanceof Error ? err.message : String(err);
|
|
84
|
+
}
|
|
85
|
+
if (options.json) {
|
|
86
|
+
printJson({ active, archived, remote, ...(remoteError ? { remoteError } : {}) });
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const lines = [
|
|
90
|
+
`生效内核:${active ?? '未检测到(' + binPath + ')'}`,
|
|
91
|
+
`本地归档:${archived.length ? archived.join('、') : '无'}`,
|
|
92
|
+
];
|
|
93
|
+
if (remoteError)
|
|
94
|
+
lines.push(`远端查询失败:${remoteError}`);
|
|
95
|
+
else
|
|
96
|
+
lines.push('远端最新稳定版:' +
|
|
97
|
+
(remote.length ? remote.map((r) => r.tag).join('、') : '无'));
|
|
98
|
+
process.stdout.write(lines.join('\n') + '\n');
|
|
99
|
+
}
|
|
100
|
+
export async function runKernelInstall(config, versionArg, options = {}, deps = {}) {
|
|
101
|
+
const port = parsePort(options.port);
|
|
102
|
+
const sourceConfig = resolveSourceConfig(config, options.mirror);
|
|
103
|
+
const fetchOptions = { fetchImpl: deps.fetchImpl, sourceConfig };
|
|
104
|
+
const mihomoDir = config.mihomoDir || MIHOMO_DIR_DEFAULT;
|
|
105
|
+
const configYaml = join(mihomoDir, 'config.yaml');
|
|
106
|
+
// 版本编排:--alpha → 滚动 alpha release;显式版本 → 列表里找 digest,找不到按
|
|
107
|
+
// 命名规则构造(installer 会放弃 digest 校验但保留 -v 标记验证);缺省 → 最新稳定版
|
|
108
|
+
let tag;
|
|
109
|
+
let alpha = false;
|
|
110
|
+
let asset = undefined;
|
|
111
|
+
if (options.alpha) {
|
|
112
|
+
const release = await fetchAlphaRelease(fetchOptions);
|
|
113
|
+
const candidate = selectAlphaAsset(release);
|
|
114
|
+
if (!candidate)
|
|
115
|
+
throw new Error(`alpha release ${release.tag} 没有当前平台(${process.platform}/${process.arch})的资产`);
|
|
116
|
+
tag = release.tag;
|
|
117
|
+
asset = candidate;
|
|
118
|
+
alpha = true;
|
|
119
|
+
}
|
|
120
|
+
else if (versionArg) {
|
|
121
|
+
tag = versionArg.startsWith('v') ? versionArg : `v${versionArg}`;
|
|
122
|
+
if (!/^v\d/.test(tag))
|
|
123
|
+
usageExit(`版本号形如 1.19.30 或 v1.19.30,收到:${versionArg}`);
|
|
124
|
+
// 显式版本且归档已存在 → 离线直装,不查远端(对齐设置页离线切换语义)
|
|
125
|
+
const kernelsDir = deps.kernelsDir ?? KERNELS_DIR_DEFAULT;
|
|
126
|
+
if (!existsSync(archivedBinPath(kernelsDir, tag))) {
|
|
127
|
+
const releases = await listStableReleases(fetchOptions);
|
|
128
|
+
const release = releases.find((r) => r.tag === tag);
|
|
129
|
+
asset = release ? selectAsset(release, tag) : undefined;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const releases = await listStableReleases(fetchOptions);
|
|
134
|
+
const release = releases[0];
|
|
135
|
+
if (!release)
|
|
136
|
+
throw new Error('远端没有可用的稳定版 release');
|
|
137
|
+
tag = release.tag;
|
|
138
|
+
asset = selectAsset(release, tag);
|
|
139
|
+
}
|
|
140
|
+
const lastPct = { value: -100 };
|
|
141
|
+
const serviceAttached = deps.hasService ?? hasSystemdUnit();
|
|
142
|
+
// 全新机器上 ~/bin 往往不存在,installer 的原子替换(tmp 放目标同目录)会 ENOENT
|
|
143
|
+
const binPath = config.mihomoBin ?? MIHOMO_BIN_DEFAULT;
|
|
144
|
+
mkdirSync(dirname(binPath), { recursive: true });
|
|
145
|
+
const result = await installKernel({ tag, ...(asset ? { asset } : {}), ...(alpha ? { alpha: true } : {}) }, {
|
|
146
|
+
...(config.mihomoBin ? { mihomoBin: config.mihomoBin } : {}),
|
|
147
|
+
...(deps.kernelsDir ? { kernelsDir: deps.kernelsDir } : {}),
|
|
148
|
+
sourceConfig,
|
|
149
|
+
...(deps.fetchImpl ? { fetchImpl: deps.fetchImpl } : {}),
|
|
150
|
+
onProgress: (progress) => {
|
|
151
|
+
const line = progressLine(progress, lastPct);
|
|
152
|
+
if (line)
|
|
153
|
+
process.stderr.write(`${line}\n`);
|
|
154
|
+
},
|
|
155
|
+
// systemd --user 单元存在时才接管重启与确认(与设置页同源);新机器没有
|
|
156
|
+
// 服务可重启,installer 对缺省 deps 自动跳过这两个阶段
|
|
157
|
+
...(serviceAttached
|
|
158
|
+
? {
|
|
159
|
+
restart: () => new ServiceManager().restart(),
|
|
160
|
+
isActive: () => new ServiceManager().isActive(),
|
|
161
|
+
probeVersion: async () => {
|
|
162
|
+
try {
|
|
163
|
+
return (await new MihomoClient(config).version()).version;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
}
|
|
170
|
+
: {}),
|
|
171
|
+
});
|
|
172
|
+
// 引导配置:仅创建、零覆盖。config.yaml 已存在说明用户有自己的配置,
|
|
173
|
+
// 任何改动都必须走 ConfigManager 事务,这里碰都不碰。
|
|
174
|
+
let configCreated = false;
|
|
175
|
+
if (!existsSync(configYaml)) {
|
|
176
|
+
const body = `mixed-port: ${BOOTSTRAP_MIXED_PORT}\n` +
|
|
177
|
+
`external-controller: 127.0.0.1:${port}\n` +
|
|
178
|
+
'mode: rule\n' +
|
|
179
|
+
'log-level: info\n';
|
|
180
|
+
mkdirSync(mihomoDir, { recursive: true });
|
|
181
|
+
const tmp = `${configYaml}.tmp`;
|
|
182
|
+
writeFileSync(tmp, body, 'utf8');
|
|
183
|
+
renameSync(tmp, configYaml);
|
|
184
|
+
configCreated = true;
|
|
185
|
+
}
|
|
186
|
+
// 控制口端口落到工具自身配置:仅当用户仍是默认 api 时改写;--api 是会话级
|
|
187
|
+
// 覆盖(resolveConfig),不影响这里的持久化判断
|
|
188
|
+
const desiredApi = `http://127.0.0.1:${port}`;
|
|
189
|
+
const fresh = loadConfig(deps.configPath);
|
|
190
|
+
let apiState = 'already';
|
|
191
|
+
if (fresh.api !== desiredApi) {
|
|
192
|
+
if (fresh.api === DEFAULT_CONFIG.api) {
|
|
193
|
+
saveConfig({ ...fresh, api: desiredApi }, deps.configPath);
|
|
194
|
+
apiState = 'updated';
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
apiState = 'kept-custom';
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (options.json) {
|
|
201
|
+
printJson({
|
|
202
|
+
tag: result.tag,
|
|
203
|
+
alpha,
|
|
204
|
+
fromArchive: result.fromArchive,
|
|
205
|
+
bin: binPath,
|
|
206
|
+
bootstrapConfig: { created: configCreated, path: configYaml, mixedPort: BOOTSTRAP_MIXED_PORT, controllerPort: port },
|
|
207
|
+
api: { desired: desiredApi, state: apiState },
|
|
208
|
+
});
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const lines = [
|
|
212
|
+
`✓ 内核 ${result.tag}${alpha ? '(alpha)' : ''} 已安装:${binPath}` +
|
|
213
|
+
(result.fromArchive ? '(离线归档复用)' : ''),
|
|
214
|
+
configCreated
|
|
215
|
+
? `✓ 已生成引导配置 ${configYaml}(mixed-port ${BOOTSTRAP_MIXED_PORT},控制口 127.0.0.1:${port})`
|
|
216
|
+
: `已有内核配置 ${configYaml},未改动`,
|
|
217
|
+
apiState === 'updated'
|
|
218
|
+
? `✓ 控制口地址已写入 ${deps.configPath ?? '~/.config/mihomo-tui/config.json'}`
|
|
219
|
+
: apiState === 'kept-custom'
|
|
220
|
+
? `已有自定义 api(${fresh.api}),未改动;新内核控制口为 ${desiredApi}`
|
|
221
|
+
: `控制口地址 ${desiredApi} 与现有配置一致`,
|
|
222
|
+
serviceAttached
|
|
223
|
+
? '检测到 systemd --user 服务:已自动重启内核并确认版本'
|
|
224
|
+
: `下一步:${binPath} -d ${mihomoDir} # 启动内核(前台;长期运行建议配置 systemd --user 服务)`,
|
|
225
|
+
'然后:mihomo-tui status # 确认连接后即可正常使用',
|
|
226
|
+
];
|
|
227
|
+
process.stdout.write(lines.join('\n') + '\n');
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=kernel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/commands/kernel.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/output.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/** CLI 输出与错误处理的公共部分:统一表格排版、脱敏、退出码。 */
|
|
2
|
+
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
2
4
|
import { ApiBusinessError, HttpStatusError, KernelUnreachableError, } from '../api/client.js';
|
|
3
5
|
import { CONFIG_PATH } from '../config.js';
|
|
6
|
+
import { MIHOMO_BIN_DEFAULT } from '../config/manager.js';
|
|
4
7
|
import { InvalidTargetError } from '../rules/matcher.js';
|
|
5
8
|
/** 退出码约定:0 成功,1 通用错误,2 参数错误,3 内核不可达 */
|
|
6
9
|
export const EXIT = { ok: 0, error: 1, usage: 2, unreachable: 3 };
|
|
@@ -141,6 +144,55 @@ export async function exitAfterFlush(code) {
|
|
|
141
144
|
}
|
|
142
145
|
process.exit(code);
|
|
143
146
|
}
|
|
147
|
+
/** 常见安装位置之外的探测交给 `mihomo -v`(PATH 解析,含 Windows PATHEXT) */
|
|
148
|
+
const KNOWN_BIN_PATHS = ['/usr/local/bin/mihomo', '/usr/bin/mihomo'];
|
|
149
|
+
export function probeKernelEnv() {
|
|
150
|
+
const unit = spawnSync('systemctl', ['--user', 'cat', 'mihomo'], { timeout: 2000 });
|
|
151
|
+
if (!unit.error && unit.status === 0)
|
|
152
|
+
return 'service';
|
|
153
|
+
const binary = spawnSync('mihomo', ['-v'], { timeout: 1500 });
|
|
154
|
+
if (!binary.error && binary.status === 0)
|
|
155
|
+
return 'binary';
|
|
156
|
+
if (existsSync(MIHOMO_BIN_DEFAULT) || KNOWN_BIN_PATHS.some((p) => existsSync(p)))
|
|
157
|
+
return 'binary';
|
|
158
|
+
return 'none';
|
|
159
|
+
}
|
|
160
|
+
export function describeKernelHint(probe = probeKernelEnv) {
|
|
161
|
+
switch (probe()) {
|
|
162
|
+
case 'service':
|
|
163
|
+
return '内核可能未运行,请排查:systemctl --user status mihomo';
|
|
164
|
+
case 'binary':
|
|
165
|
+
return '检测到已安装的 mihomo 内核但控制口不可达:确认内核进程已启动,且 external-controller 指向控制口地址';
|
|
166
|
+
case 'none':
|
|
167
|
+
// 首装教学场景:像 --help 一样给出完整参数说明。
|
|
168
|
+
// 下面的 Arguments/Options 文案须与 cli.tsx 中 kernel install 的定义保持同步。
|
|
169
|
+
return [
|
|
170
|
+
'',
|
|
171
|
+
'未检测到 mihomo 内核。运行 mihomo-tui kernel install 快速安装并配置内核。',
|
|
172
|
+
"安装后建议执行: echo 'eval \"$(mihomo-tui proxy init)\"' >> ~/.bashrc && source ~/.bashrc",
|
|
173
|
+
'以解锁 proxy on / off / proxy 快捷命令',
|
|
174
|
+
'',
|
|
175
|
+
'示例:',
|
|
176
|
+
'',
|
|
177
|
+
' mihomo-tui kernel install # 最新稳定版',
|
|
178
|
+
' mihomo-tui kernel install --port 19091 # 控制口改 19091',
|
|
179
|
+
' mihomo-tui kernel install --mirror https://gh-proxy.com/ # 国内网络直达镜像',
|
|
180
|
+
'',
|
|
181
|
+
'Arguments:',
|
|
182
|
+
' version 内核版本(如 1.19.30 或 v1.19.30),缺省安装最新稳定版',
|
|
183
|
+
'',
|
|
184
|
+
'Options:',
|
|
185
|
+
' --alpha 安装最新 alpha 版',
|
|
186
|
+
' --port <n> 引导配置的 external-controller 端口,默认 19090',
|
|
187
|
+
' --mirror <prefix> 自定义下载镜像前缀(形如 https://gh-proxy.com/)',
|
|
188
|
+
'',
|
|
189
|
+
'安装完成后:',
|
|
190
|
+
'',
|
|
191
|
+
' ~/bin/mihomo -d ~/.config/mihomo # 启动内核(前台;引导配置:代理端口 17890)',
|
|
192
|
+
' mihomo-tui status # 确认连接后,直接运行 mihomo-tui 进入 TUI',
|
|
193
|
+
].join('\n');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
144
196
|
/**
|
|
145
197
|
* 把异常翻译成一行人话 + 退出码。
|
|
146
198
|
* 业务错误(如延迟测试失败)由调用方自行处理,不该走到这里。
|
|
@@ -152,7 +204,7 @@ export function reportError(err) {
|
|
|
152
204
|
}
|
|
153
205
|
if (err instanceof KernelUnreachableError) {
|
|
154
206
|
process.stderr.write(`错误:${err.message}\n`);
|
|
155
|
-
process.stderr.write(
|
|
207
|
+
process.stderr.write(`${describeKernelHint()}\n`);
|
|
156
208
|
process.exit(EXIT.unreachable);
|
|
157
209
|
}
|
|
158
210
|
if (err instanceof HttpStatusError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/commands/output.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/commands/output.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -63,6 +63,20 @@ function merge(raw) {
|
|
|
63
63
|
},
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* 首次生成配置后给一句 stderr 引导。
|
|
68
|
+
* npm install -g 在新版 npm(11+ 实测)不再执行被安装包的 postinstall,
|
|
69
|
+
* 安装期提示不可靠,改在首次运行的确定性时机给出;仅交互终端输出,
|
|
70
|
+
* 管道与 --json 消费者看到的是干净的 stderr。
|
|
71
|
+
*/
|
|
72
|
+
/** 导出仅为测试:内容断言需要直接调用,绕开 CONFIG_PATH 的真实首装守卫 */
|
|
73
|
+
export function printFirstRunHint() {
|
|
74
|
+
if (!process.stderr.isTTY)
|
|
75
|
+
return;
|
|
76
|
+
process.stderr.write('提示:已生成初始配置 ~/.config/mihomo-tui/config.json\n' +
|
|
77
|
+
'还没有 mihomo 内核?运行:mihomo-tui kernel install(自动下载安装内核与最小配置)\n' +
|
|
78
|
+
'要用 proxy on / off 管理本 shell 的系统代理?先执行:eval "$(mihomo-tui proxy init)"\n');
|
|
79
|
+
}
|
|
66
80
|
/** 读取配置;文件不存在则生成一份默认配置后返回 */
|
|
67
81
|
export function loadConfig(path = CONFIG_PATH) {
|
|
68
82
|
let text;
|
|
@@ -75,6 +89,8 @@ export function loadConfig(path = CONFIG_PATH) {
|
|
|
75
89
|
try {
|
|
76
90
|
mkdirSync(dirname(path), { recursive: true });
|
|
77
91
|
writeFileSync(path, `${JSON.stringify(created, null, 2)}\n`, 'utf8');
|
|
92
|
+
if (path === CONFIG_PATH)
|
|
93
|
+
printFirstRunHint();
|
|
78
94
|
}
|
|
79
95
|
catch {
|
|
80
96
|
// 写不进去也不该阻断运行,用内存里的默认值继续
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED