myspace-cli 1.2.0__tar.gz → 1.4.0__tar.gz
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.
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/PKG-INFO +107 -37
- myspace_cli-1.4.0/README.md +335 -0
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/myspace_cli.egg-info/PKG-INFO +107 -37
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/pyproject.toml +1 -1
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/space_cli.py +428 -71
- myspace_cli-1.2.0/README.md +0 -265
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/myspace_cli.egg-info/SOURCES.txt +0 -0
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/myspace_cli.egg-info/dependency_links.txt +0 -0
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/myspace_cli.egg-info/entry_points.txt +0 -0
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/myspace_cli.egg-info/requires.txt +0 -0
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/myspace_cli.egg-info/top_level.txt +0 -0
- {myspace_cli-1.2.0 → myspace_cli-1.4.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: myspace-cli
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.4.0
|
4
4
|
Summary: A macOS disk space analysis CLI: health, index, app usage, big files.
|
5
5
|
Author-email: Your Name <you@example.com>
|
6
6
|
License: MIT
|
@@ -17,31 +17,54 @@ Description-Content-Type: text/markdown
|
|
17
17
|
Provides-Extra: mcp
|
18
18
|
Requires-Dist: mcp<2,>=1; extra == "mcp"
|
19
19
|
|
20
|
-
# space-cli -
|
20
|
+
# space-cli - macOS 磁盘空间优化工具
|
21
21
|
|
22
22
|
很多人的Mac电脑都会出现磁盘空间不够用,付费软件太贵或者难以使用。
|
23
23
|
|
24
|
-
space-cli是一个开源的
|
24
|
+
space-cli是一个开源的macOS命令行小工具,用于分析磁盘空间健康度并找出占用空间大的目录,可选择针对单个应用进行一键清理。
|
25
25
|
|
26
|
-
|
26
|
+
本软件采用**最严安全原则**,所有分析操作采用只读模式,未经允许不会尝试改写和破坏用户电脑的任何数据,也不会上传任何数据到外网,严格保护用户的隐私。
|
27
27
|
|
28
28
|
## 功能特性
|
29
29
|
|
30
30
|
- 🔍 **磁盘健康度检测** - 评估磁盘空间使用情况,提供健康状态建议
|
31
|
-
- 📊
|
32
|
-
- 💻
|
31
|
+
- 📊 **交互式目录分析** - 递归分析目录大小,支持选择序号进行深度下探分析
|
32
|
+
- 💻 **详细系统信息** - 显示CPU、内存、GPU、硬盘等完整硬件信息
|
33
33
|
- 📄 **报告导出** - 将分析结果导出为JSON格式报告
|
34
|
-
- ⚡
|
34
|
+
- ⚡ **高性能优化** - 优先使用 `du -sk` 命令,失败时回退到 `os.scandir` 高效遍历
|
35
35
|
- 🎯 **灵活配置** - 支持自定义分析路径和显示数量
|
36
|
-
- 🗂️
|
36
|
+
- 🗂️ **智能索引缓存** - 目录大小结果本地索引缓存(`~/.spacecli/index.json`),支持TTL与重建提示
|
37
37
|
- 🧩 **应用分析** - 汇总 `Applications`、`Library`、`Caches`、`Logs` 等路径估算应用占用,给出卸载建议
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
- 🗑️ **一键删除应用** - 在应用分析列表中输入序号即可一键删除所选应用及其缓存(含二次确认)
|
39
|
+
- 🏠 **用户目录深度分析** - 针对 `~/Library`、`~/Downloads`、`~/Documents` 分别下探并展示Top N目录
|
40
|
+
- 🗄️ **大文件分析** - 扫描并列出指定路径下最大的文件,支持数量和最小体积阈值
|
41
|
+
- 🔄 **返回上一级** - 在下探分析中支持选择0返回上一级目录
|
42
|
+
- ⏱️ **支持MCP调用** - 支持你自己的AI Agent无缝调用磁盘空间信息
|
41
43
|
|
42
44
|
## 安装
|
43
45
|
|
44
|
-
### 方法1
|
46
|
+
### 方法1:通过 pip 安装(推荐)
|
47
|
+
|
48
|
+
```bash
|
49
|
+
python3 -m pip install --upgrade myspace-cli
|
50
|
+
|
51
|
+
# 支持Pip安装
|
52
|
+
pip install myspace-cli
|
53
|
+
|
54
|
+
# 安装完成后直接使用
|
55
|
+
# 请注意命令行的启动文件名(space-cli)和pip包的名字(myspace-cli)不一样
|
56
|
+
# 建议直接运行,可以看到使用菜单
|
57
|
+
space-cli
|
58
|
+
|
59
|
+
# 或以模块方式
|
60
|
+
python3 -m space_cli
|
61
|
+
|
62
|
+
# 如果要使用高级的功能,请使用更复杂的命令行参数,可以运行help
|
63
|
+
space-cli --help
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
### 方法2:直接使用
|
45
68
|
|
46
69
|
```bash
|
47
70
|
# 克隆或下载项目
|
@@ -55,7 +78,7 @@ chmod +x space_cli.py
|
|
55
78
|
python3 space_cli.py
|
56
79
|
```
|
57
80
|
|
58
|
-
### 方法
|
81
|
+
### 方法3:创建全局命令
|
59
82
|
|
60
83
|
```bash
|
61
84
|
# 复制到系统路径
|
@@ -66,24 +89,14 @@ sudo chmod +x /usr/local/bin/space-cli
|
|
66
89
|
space-cli
|
67
90
|
```
|
68
91
|
|
69
|
-
|
70
|
-
|
71
|
-
```bash
|
72
|
-
python3 -m pip install --upgrade spacecli
|
73
|
-
|
74
|
-
# 直接使用命令
|
75
|
-
space-cli --help
|
76
|
-
|
77
|
-
# 或者作为模块调用
|
78
|
-
python3 -m space_cli --help
|
79
|
-
```
|
92
|
+
注:若你更倾向于使用 PyPI 包名 `spacecli`,也可执行 `python3 -m pip install --upgrade spacecli`,命令入口同为 `space-cli`。
|
80
93
|
|
81
94
|
## 使用方法
|
82
95
|
|
83
96
|
### 基本用法
|
84
97
|
|
85
98
|
```bash
|
86
|
-
#
|
99
|
+
# 分析根目录(默认)- 支持交互式下探分析
|
87
100
|
python3 space_cli.py
|
88
101
|
|
89
102
|
# 分析指定路径
|
@@ -94,6 +107,9 @@ python3 space_cli.py -n 10
|
|
94
107
|
|
95
108
|
# 快捷分析当前用户目录(含用户目录深度分析)
|
96
109
|
python3 space_cli.py --home
|
110
|
+
|
111
|
+
# 交互式目录空间分析(支持选择序号下探,选择0返回上一级)
|
112
|
+
python3 space_cli.py --directories-only
|
97
113
|
```
|
98
114
|
|
99
115
|
### 高级用法
|
@@ -126,6 +142,8 @@ python3 space_cli.py --no-prompt
|
|
126
142
|
# 分析应用目录占用并给出卸载建议(按应用归并)
|
127
143
|
python3 space_cli.py --apps -n 20
|
128
144
|
|
145
|
+
# 在应用分析输出后,按提示输入序号一键删除应用(会二次确认)
|
146
|
+
# 例如:输入 3 即删除列表中的第3个应用及其相关缓存
|
129
147
|
# 大文件分析(显示前20个,阈值2G)
|
130
148
|
python3 space_cli.py --big-files --big-files-top 20 --big-files-min 2G
|
131
149
|
|
@@ -174,21 +192,30 @@ python3 space_cli.py --big-files --export report.json
|
|
174
192
|
建议: 磁盘空间不足,建议清理一些文件
|
175
193
|
```
|
176
194
|
|
177
|
-
###
|
195
|
+
### 交互式目录分析
|
178
196
|
```
|
179
197
|
============================================================
|
180
198
|
📊 占用空间最大的目录
|
181
199
|
============================================================
|
182
200
|
显示前 20 个最大的目录:
|
183
201
|
|
184
|
-
1. /Applications
|
185
|
-
大小:
|
202
|
+
1. /Applications -- 大小: 15.2 GB (3.04%)
|
203
|
+
2. /Users/username/Library -- 大小: 8.5 GB (1.70%)
|
204
|
+
3. /System -- 大小: 6.8 GB (1.36%)
|
186
205
|
|
187
|
-
|
188
|
-
|
206
|
+
============================================================
|
207
|
+
🔍 下探分析选项
|
208
|
+
============================================================
|
209
|
+
选择序号进行深度分析,选择0返回上一级,直接回车退出:
|
210
|
+
请输入选择 [回车=退出]: 1
|
189
211
|
|
190
|
-
|
191
|
-
|
212
|
+
🔍 正在分析: /Applications (15.2 GB)
|
213
|
+
============================================================
|
214
|
+
📊 占用空间最大的目录
|
215
|
+
============================================================
|
216
|
+
1. /Applications/Xcode.app -- 大小: 8.2 GB (1.64%)
|
217
|
+
2. /Applications/Docker.app -- 大小: 3.1 GB (0.62%)
|
218
|
+
3. /Applications/Visual Studio Code.app -- 大小: 1.8 GB (0.36%)
|
192
219
|
```
|
193
220
|
|
194
221
|
### 大文件分析
|
@@ -200,6 +227,29 @@ python3 space_cli.py --big-files --export report.json
|
|
200
227
|
2. /Users/username/Movies/clip.mov -- 大小: 3.1 GB (0.62%)
|
201
228
|
```
|
202
229
|
|
230
|
+
### 应用分析与一键删除
|
231
|
+
```
|
232
|
+
============================================================
|
233
|
+
🧩 应用目录空间分析与卸载建议
|
234
|
+
============================================================
|
235
|
+
1. Docker Desktop -- 占用: 9.1 GB (1.80%) — 建议卸载或清理缓存
|
236
|
+
2. Xcode -- 占用: 6.2 GB (1.23%) — 建议卸载或清理缓存
|
237
|
+
3. WeChat -- 占用: 2.4 GB (0.47%) — 可保留,定期清理缓存
|
238
|
+
|
239
|
+
是否要一键删除某个应用?输入序号或回车跳过: 1
|
240
|
+
确认删除应用及相关缓存: Docker Desktop (约 9.1 GB)?[y/N]: y
|
241
|
+
将尝试删除以下路径:
|
242
|
+
- /Applications/Docker.app
|
243
|
+
- ~/Library/Application Support/Docker
|
244
|
+
- ~/Library/Caches/com.docker.docker
|
245
|
+
...(略)
|
246
|
+
✅ 删除完成,预计释放空间: 8.7 GB
|
247
|
+
```
|
248
|
+
|
249
|
+
说明:
|
250
|
+
- 删除动作包含二次确认,并会列出将删除的路径清单。
|
251
|
+
- 系统级目录可能因权限/SIP 受保护而无法完全删除,此时工具会尽量清理可删部分并给出失败项与原因。
|
252
|
+
|
203
253
|
|
204
254
|
## MCP Server(可选)
|
205
255
|
|
@@ -226,11 +276,13 @@ python3 mcp_server.py
|
|
226
276
|
|
227
277
|
## 性能优化
|
228
278
|
|
229
|
-
-
|
230
|
-
-
|
231
|
-
-
|
232
|
-
-
|
233
|
-
|
279
|
+
- **优先使用 `du -sk` 命令**:在 macOS 上使用原生 `du` 命令快速获取目录大小
|
280
|
+
- **智能回退机制**:当 `du` 命令失败时,自动回退到基于 `os.scandir` 的高效遍历
|
281
|
+
- **跳过系统目录**:自动忽略 `/System`、`/Volumes`、`/private` 等系统目录
|
282
|
+
- **跳过无法访问的文件**:自动处理权限错误和符号链接
|
283
|
+
- **支持中断操作**:使用 Ctrl+C 随时中断分析
|
284
|
+
- **内存优化遍历**:使用栈式迭代替代递归,避免深度目录的栈溢出
|
285
|
+
- **单行滚动进度**:避免输出刷屏,使用 ANSI 清行(\r\033[K)避免长行残留
|
234
286
|
|
235
287
|
## 故障排除
|
236
288
|
|
@@ -244,6 +296,11 @@ sudo python3 space_cli.py
|
|
244
296
|
python3 space_cli.py -p /Users/$(whoami)
|
245
297
|
```
|
246
298
|
|
299
|
+
此外,针对“Operation not permitted”等提示:
|
300
|
+
- 退出相关应用后再试(例如删除 Docker 前先退出 Docker Desktop)。
|
301
|
+
- 在“系统设置 → 隐私与安全性”中为终端授予“完全磁盘访问权限”。
|
302
|
+
- 遇到容器元数据或受 SIP 保护的系统级文件(如 `~/Library/Containers/com.docker.docker/... .plist`),可能无法删除,建议仅清理用户级缓存目录。
|
303
|
+
|
247
304
|
### 性能问题
|
248
305
|
对于大型文件系统,分析可能需要较长时间:
|
249
306
|
- 使用 `--directories-only` 跳过健康检查
|
@@ -282,3 +339,16 @@ MIT License
|
|
282
339
|
- 新增大文件分析 `--big-files`/`--big-files-top`/`--big-files-min`
|
283
340
|
- 导出报告在启用大文件分析时包含 `largest_files`
|
284
341
|
- 单行滚动进度显示
|
342
|
+
|
343
|
+
### v1.2.0
|
344
|
+
- 应用分析支持"按序号一键删除应用",并显示将删除的路径清单与预计释放空间
|
345
|
+
- 删除过程增加权限修复与降级清理策略(chflags nouchg / chmod 0777 / 逐项清理)
|
346
|
+
- 针对 "Operation not permitted" 增加友好提示(SIP、完全磁盘访问、退出相关应用)
|
347
|
+
- 单行覆盖输出加入 ANSI 清行,避免长行残留
|
348
|
+
|
349
|
+
### v1.3.0
|
350
|
+
- **性能大幅优化**:优先使用 `du -sk` 命令获取目录大小,失败时回退到 `os.scandir` 高效遍历
|
351
|
+
- **交互式下探分析**:支持选择序号进行深度目录分析,选择0返回上一级
|
352
|
+
- **增强系统信息**:显示 CPU、内存、GPU、硬盘等完整硬件信息
|
353
|
+
- **智能目录过滤**:自动忽略系统目录(`/System`、`/Volumes`、`/private`)
|
354
|
+
- **优化用户体验**:改进菜单选项,支持交互式目录空间分析
|
@@ -0,0 +1,335 @@
|
|
1
|
+
# space-cli - macOS 磁盘空间优化工具
|
2
|
+
|
3
|
+
很多人的Mac电脑都会出现磁盘空间不够用,付费软件太贵或者难以使用。
|
4
|
+
|
5
|
+
space-cli是一个开源的macOS命令行小工具,用于分析磁盘空间健康度并找出占用空间大的目录,可选择针对单个应用进行一键清理。
|
6
|
+
|
7
|
+
本软件采用**最严安全原则**,所有分析操作采用只读模式,未经允许不会尝试改写和破坏用户电脑的任何数据,也不会上传任何数据到外网,严格保护用户的隐私。
|
8
|
+
|
9
|
+
## 功能特性
|
10
|
+
|
11
|
+
- 🔍 **磁盘健康度检测** - 评估磁盘空间使用情况,提供健康状态建议
|
12
|
+
- 📊 **交互式目录分析** - 递归分析目录大小,支持选择序号进行深度下探分析
|
13
|
+
- 💻 **详细系统信息** - 显示CPU、内存、GPU、硬盘等完整硬件信息
|
14
|
+
- 📄 **报告导出** - 将分析结果导出为JSON格式报告
|
15
|
+
- ⚡ **高性能优化** - 优先使用 `du -sk` 命令,失败时回退到 `os.scandir` 高效遍历
|
16
|
+
- 🎯 **灵活配置** - 支持自定义分析路径和显示数量
|
17
|
+
- 🗂️ **智能索引缓存** - 目录大小结果本地索引缓存(`~/.spacecli/index.json`),支持TTL与重建提示
|
18
|
+
- 🧩 **应用分析** - 汇总 `Applications`、`Library`、`Caches`、`Logs` 等路径估算应用占用,给出卸载建议
|
19
|
+
- 🗑️ **一键删除应用** - 在应用分析列表中输入序号即可一键删除所选应用及其缓存(含二次确认)
|
20
|
+
- 🏠 **用户目录深度分析** - 针对 `~/Library`、`~/Downloads`、`~/Documents` 分别下探并展示Top N目录
|
21
|
+
- 🗄️ **大文件分析** - 扫描并列出指定路径下最大的文件,支持数量和最小体积阈值
|
22
|
+
- 🔄 **返回上一级** - 在下探分析中支持选择0返回上一级目录
|
23
|
+
- ⏱️ **支持MCP调用** - 支持你自己的AI Agent无缝调用磁盘空间信息
|
24
|
+
|
25
|
+
## 安装
|
26
|
+
|
27
|
+
### 方法1:通过 pip 安装(推荐)
|
28
|
+
|
29
|
+
```bash
|
30
|
+
python3 -m pip install --upgrade myspace-cli
|
31
|
+
|
32
|
+
# 支持Pip安装
|
33
|
+
pip install myspace-cli
|
34
|
+
|
35
|
+
# 安装完成后直接使用
|
36
|
+
# 请注意命令行的启动文件名(space-cli)和pip包的名字(myspace-cli)不一样
|
37
|
+
# 建议直接运行,可以看到使用菜单
|
38
|
+
space-cli
|
39
|
+
|
40
|
+
# 或以模块方式
|
41
|
+
python3 -m space_cli
|
42
|
+
|
43
|
+
# 如果要使用高级的功能,请使用更复杂的命令行参数,可以运行help
|
44
|
+
space-cli --help
|
45
|
+
|
46
|
+
```
|
47
|
+
|
48
|
+
### 方法2:直接使用
|
49
|
+
|
50
|
+
```bash
|
51
|
+
# 克隆或下载项目
|
52
|
+
git clone https://github.com/kennyz/space-cli
|
53
|
+
cd MacDiskSpace
|
54
|
+
|
55
|
+
# 给脚本添加执行权限
|
56
|
+
chmod +x space_cli.py
|
57
|
+
|
58
|
+
# 运行
|
59
|
+
python3 space_cli.py
|
60
|
+
```
|
61
|
+
|
62
|
+
### 方法3:创建全局命令
|
63
|
+
|
64
|
+
```bash
|
65
|
+
# 复制到系统路径
|
66
|
+
sudo cp space_cli.py /usr/local/bin/space-cli
|
67
|
+
sudo chmod +x /usr/local/bin/space-cli
|
68
|
+
|
69
|
+
# 现在可以在任何地方使用
|
70
|
+
space-cli
|
71
|
+
```
|
72
|
+
|
73
|
+
注:若你更倾向于使用 PyPI 包名 `spacecli`,也可执行 `python3 -m pip install --upgrade spacecli`,命令入口同为 `space-cli`。
|
74
|
+
|
75
|
+
## 使用方法
|
76
|
+
|
77
|
+
### 基本用法
|
78
|
+
|
79
|
+
```bash
|
80
|
+
# 分析根目录(默认)- 支持交互式下探分析
|
81
|
+
python3 space_cli.py
|
82
|
+
|
83
|
+
# 分析指定路径
|
84
|
+
python3 space_cli.py -p /Users/username
|
85
|
+
|
86
|
+
# 显示前10个最大的目录
|
87
|
+
python3 space_cli.py -n 10
|
88
|
+
|
89
|
+
# 快捷分析当前用户目录(含用户目录深度分析)
|
90
|
+
python3 space_cli.py --home
|
91
|
+
|
92
|
+
# 交互式目录空间分析(支持选择序号下探,选择0返回上一级)
|
93
|
+
python3 space_cli.py --directories-only
|
94
|
+
```
|
95
|
+
|
96
|
+
### 高级用法
|
97
|
+
|
98
|
+
```bash
|
99
|
+
# 只显示磁盘健康状态
|
100
|
+
python3 space_cli.py --health-only
|
101
|
+
|
102
|
+
# 只显示目录分析
|
103
|
+
python3 space_cli.py --directories-only
|
104
|
+
|
105
|
+
# 导出分析报告
|
106
|
+
python3 space_cli.py --export disk_report.json
|
107
|
+
|
108
|
+
# 分析用户目录并导出报告
|
109
|
+
python3 space_cli.py -p /Users -n 15 --export user_analysis.json
|
110
|
+
|
111
|
+
# 使用索引缓存(默认开启)
|
112
|
+
python3 space_cli.py --use-index
|
113
|
+
|
114
|
+
# 强制重建索引
|
115
|
+
python3 space_cli.py --reindex
|
116
|
+
|
117
|
+
# 设置索引缓存有效期为 6 小时
|
118
|
+
python3 space_cli.py --index-ttl 6
|
119
|
+
|
120
|
+
# 非交互,不提示使用缓存
|
121
|
+
python3 space_cli.py --no-prompt
|
122
|
+
|
123
|
+
# 分析应用目录占用并给出卸载建议(按应用归并)
|
124
|
+
python3 space_cli.py --apps -n 20
|
125
|
+
|
126
|
+
# 在应用分析输出后,按提示输入序号一键删除应用(会二次确认)
|
127
|
+
# 例如:输入 3 即删除列表中的第3个应用及其相关缓存
|
128
|
+
# 大文件分析(显示前20个,阈值2G)
|
129
|
+
python3 space_cli.py --big-files --big-files-top 20 --big-files-min 2G
|
130
|
+
|
131
|
+
# 将含大文件分析的结果写入导出报告
|
132
|
+
python3 space_cli.py --big-files --export report.json
|
133
|
+
|
134
|
+
|
135
|
+
```
|
136
|
+
|
137
|
+
|
138
|
+
### 命令行参数
|
139
|
+
|
140
|
+
| 参数 | 说明 | 默认值 |
|
141
|
+
|------|------|--------|
|
142
|
+
| `-p, --path` | 要分析的路径 | `/` |
|
143
|
+
| `-n, --top-n` | 显示前N个最大的目录 | `20` |
|
144
|
+
| `--health-only` | 只显示磁盘健康状态 | - |
|
145
|
+
| `--directories-only` | 只显示目录分析 | - |
|
146
|
+
| `--export FILE` | 导出报告到JSON文件 | - |
|
147
|
+
| `--use-index` | 使用索引缓存(默认) | - |
|
148
|
+
| `--no-index` | 禁用索引缓存 | - |
|
149
|
+
| `--reindex` | 强制重建索引 | - |
|
150
|
+
| `--index-ttl` | 索引缓存有效期(小时) | `24` |
|
151
|
+
| `--no-prompt` | 非交互模式,不提示使用缓存 | - |
|
152
|
+
| `--apps` | 分析应用目录空间与卸载建议 | - |
|
153
|
+
| `--home` | 将分析路径设置为当前用户目录 | - |
|
154
|
+
| `--big-files` | 启用大文件分析 | - |
|
155
|
+
| `--big-files-top` | 大文件列表数量 | `20` |
|
156
|
+
| `--big-files-min` | 大文件最小阈值(K/M/G/T) | `0` |
|
157
|
+
| `--version` | 显示版本信息 | - |
|
158
|
+
| `-h, --help` | 显示帮助信息 | - |
|
159
|
+
|
160
|
+
## 输出示例
|
161
|
+
|
162
|
+
### 磁盘健康状态
|
163
|
+
```
|
164
|
+
============================================================
|
165
|
+
🔍 磁盘空间健康度分析
|
166
|
+
============================================================
|
167
|
+
磁盘路径: /
|
168
|
+
总容量: 500.0 GB
|
169
|
+
已使用: 400.0 GB
|
170
|
+
可用空间: 100.0 GB
|
171
|
+
使用率: 80.0%
|
172
|
+
健康状态: ⚠️ 警告
|
173
|
+
建议: 磁盘空间不足,建议清理一些文件
|
174
|
+
```
|
175
|
+
|
176
|
+
### 交互式目录分析
|
177
|
+
```
|
178
|
+
============================================================
|
179
|
+
📊 占用空间最大的目录
|
180
|
+
============================================================
|
181
|
+
显示前 20 个最大的目录:
|
182
|
+
|
183
|
+
1. /Applications -- 大小: 15.2 GB (3.04%)
|
184
|
+
2. /Users/username/Library -- 大小: 8.5 GB (1.70%)
|
185
|
+
3. /System -- 大小: 6.8 GB (1.36%)
|
186
|
+
|
187
|
+
============================================================
|
188
|
+
🔍 下探分析选项
|
189
|
+
============================================================
|
190
|
+
选择序号进行深度分析,选择0返回上一级,直接回车退出:
|
191
|
+
请输入选择 [回车=退出]: 1
|
192
|
+
|
193
|
+
🔍 正在分析: /Applications (15.2 GB)
|
194
|
+
============================================================
|
195
|
+
📊 占用空间最大的目录
|
196
|
+
============================================================
|
197
|
+
1. /Applications/Xcode.app -- 大小: 8.2 GB (1.64%)
|
198
|
+
2. /Applications/Docker.app -- 大小: 3.1 GB (0.62%)
|
199
|
+
3. /Applications/Visual Studio Code.app -- 大小: 1.8 GB (0.36%)
|
200
|
+
```
|
201
|
+
|
202
|
+
### 大文件分析
|
203
|
+
```
|
204
|
+
============================================================
|
205
|
+
🗄️ 大文件分析
|
206
|
+
============================================================
|
207
|
+
1. /Users/username/Downloads/big.iso -- 大小: 7.2 GB (1.44%)
|
208
|
+
2. /Users/username/Movies/clip.mov -- 大小: 3.1 GB (0.62%)
|
209
|
+
```
|
210
|
+
|
211
|
+
### 应用分析与一键删除
|
212
|
+
```
|
213
|
+
============================================================
|
214
|
+
🧩 应用目录空间分析与卸载建议
|
215
|
+
============================================================
|
216
|
+
1. Docker Desktop -- 占用: 9.1 GB (1.80%) — 建议卸载或清理缓存
|
217
|
+
2. Xcode -- 占用: 6.2 GB (1.23%) — 建议卸载或清理缓存
|
218
|
+
3. WeChat -- 占用: 2.4 GB (0.47%) — 可保留,定期清理缓存
|
219
|
+
|
220
|
+
是否要一键删除某个应用?输入序号或回车跳过: 1
|
221
|
+
确认删除应用及相关缓存: Docker Desktop (约 9.1 GB)?[y/N]: y
|
222
|
+
将尝试删除以下路径:
|
223
|
+
- /Applications/Docker.app
|
224
|
+
- ~/Library/Application Support/Docker
|
225
|
+
- ~/Library/Caches/com.docker.docker
|
226
|
+
...(略)
|
227
|
+
✅ 删除完成,预计释放空间: 8.7 GB
|
228
|
+
```
|
229
|
+
|
230
|
+
说明:
|
231
|
+
- 删除动作包含二次确认,并会列出将删除的路径清单。
|
232
|
+
- 系统级目录可能因权限/SIP 受保护而无法完全删除,此时工具会尽量清理可删部分并给出失败项与原因。
|
233
|
+
|
234
|
+
|
235
|
+
## MCP Server(可选)
|
236
|
+
|
237
|
+
本项目提供 MCP Server,方便在支持 MCP 的客户端中以“工具”的形式调用:
|
238
|
+
|
239
|
+
### 安装依赖
|
240
|
+
```bash
|
241
|
+
python3 -m pip install mcp
|
242
|
+
```
|
243
|
+
|
244
|
+
### 启动MCP服务
|
245
|
+
```bash
|
246
|
+
python3 mcp_server.py
|
247
|
+
```
|
248
|
+
|
249
|
+
### MCP暴露的工具
|
250
|
+
- `disk_health(path="/")`
|
251
|
+
- `largest_directories(path="/", top_n=20, use_index=True, reindex=False, index_ttl=24)`
|
252
|
+
- `app_analysis(top_n=20, use_index=True, reindex=False, index_ttl=24)`
|
253
|
+
- `big_files(path="/", top_n=20, min_size="0")`
|
254
|
+
|
255
|
+
以上工具与 CLI 输出保持一致的逻辑(索引缓存、阈值等),适合与 IDE/Agent 集成。
|
256
|
+
|
257
|
+
|
258
|
+
## 性能优化
|
259
|
+
|
260
|
+
- **优先使用 `du -sk` 命令**:在 macOS 上使用原生 `du` 命令快速获取目录大小
|
261
|
+
- **智能回退机制**:当 `du` 命令失败时,自动回退到基于 `os.scandir` 的高效遍历
|
262
|
+
- **跳过系统目录**:自动忽略 `/System`、`/Volumes`、`/private` 等系统目录
|
263
|
+
- **跳过无法访问的文件**:自动处理权限错误和符号链接
|
264
|
+
- **支持中断操作**:使用 Ctrl+C 随时中断分析
|
265
|
+
- **内存优化遍历**:使用栈式迭代替代递归,避免深度目录的栈溢出
|
266
|
+
- **单行滚动进度**:避免输出刷屏,使用 ANSI 清行(\r\033[K)避免长行残留
|
267
|
+
|
268
|
+
## 故障排除
|
269
|
+
|
270
|
+
### 权限问题
|
271
|
+
如果遇到权限错误,可以尝试:
|
272
|
+
```bash
|
273
|
+
# 使用sudo运行(谨慎使用)
|
274
|
+
sudo python3 space_cli.py
|
275
|
+
|
276
|
+
# 或者分析用户目录
|
277
|
+
python3 space_cli.py -p /Users/$(whoami)
|
278
|
+
```
|
279
|
+
|
280
|
+
此外,针对“Operation not permitted”等提示:
|
281
|
+
- 退出相关应用后再试(例如删除 Docker 前先退出 Docker Desktop)。
|
282
|
+
- 在“系统设置 → 隐私与安全性”中为终端授予“完全磁盘访问权限”。
|
283
|
+
- 遇到容器元数据或受 SIP 保护的系统级文件(如 `~/Library/Containers/com.docker.docker/... .plist`),可能无法删除,建议仅清理用户级缓存目录。
|
284
|
+
|
285
|
+
### 性能问题
|
286
|
+
对于大型文件系统,分析可能需要较长时间:
|
287
|
+
- 使用 `--directories-only` 跳过健康检查
|
288
|
+
- 减少 `-n` 参数值
|
289
|
+
- 分析特定子目录而不是根目录
|
290
|
+
- 使用 `--big-files-min` 提高阈值可减少扫描文件数量
|
291
|
+
- 使用 `--use-index`/`--reindex`/`--index-ttl` 控制索引的使用与刷新
|
292
|
+
|
293
|
+
## 系统要求
|
294
|
+
|
295
|
+
- macOS 10.12 或更高版本
|
296
|
+
- Python 3.6 或更高版本
|
297
|
+
- 足够的磁盘空间用于临时文件
|
298
|
+
|
299
|
+
## 许可证
|
300
|
+
|
301
|
+
MIT License
|
302
|
+
|
303
|
+
## 贡献
|
304
|
+
|
305
|
+
欢迎提交Issue和Pull Request来改进这个工具!
|
306
|
+
|
307
|
+
## 更新日志
|
308
|
+
|
309
|
+
### v1.0.0
|
310
|
+
- 初始版本发布
|
311
|
+
- 基本的磁盘健康度检测
|
312
|
+
- 目录大小分析功能
|
313
|
+
- JSON报告导出
|
314
|
+
- 命令行参数支持
|
315
|
+
|
316
|
+
### v1.1.0
|
317
|
+
- 新增交互式菜单(无参数时出现),默认执行全部项目
|
318
|
+
- 新增 `--home` 用户目录快速分析与用户目录深度分析
|
319
|
+
- 新增应用分析缓存(`~/.cache/spacecli/apps.json`)
|
320
|
+
- 新增大文件分析 `--big-files`/`--big-files-top`/`--big-files-min`
|
321
|
+
- 导出报告在启用大文件分析时包含 `largest_files`
|
322
|
+
- 单行滚动进度显示
|
323
|
+
|
324
|
+
### v1.2.0
|
325
|
+
- 应用分析支持"按序号一键删除应用",并显示将删除的路径清单与预计释放空间
|
326
|
+
- 删除过程增加权限修复与降级清理策略(chflags nouchg / chmod 0777 / 逐项清理)
|
327
|
+
- 针对 "Operation not permitted" 增加友好提示(SIP、完全磁盘访问、退出相关应用)
|
328
|
+
- 单行覆盖输出加入 ANSI 清行,避免长行残留
|
329
|
+
|
330
|
+
### v1.3.0
|
331
|
+
- **性能大幅优化**:优先使用 `du -sk` 命令获取目录大小,失败时回退到 `os.scandir` 高效遍历
|
332
|
+
- **交互式下探分析**:支持选择序号进行深度目录分析,选择0返回上一级
|
333
|
+
- **增强系统信息**:显示 CPU、内存、GPU、硬盘等完整硬件信息
|
334
|
+
- **智能目录过滤**:自动忽略系统目录(`/System`、`/Volumes`、`/private`)
|
335
|
+
- **优化用户体验**:改进菜单选项,支持交互式目录空间分析
|