myspace-cli


Namemyspace-cli JSON
Version 1.3.0 PyPI version JSON
download
home_pageNone
SummaryA macOS disk space analysis CLI: health, index, app usage, big files.
upload_time2025-10-09 11:53:31
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords disk space cleanup macos cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # space-cli - Mac OS 磁盘空间分析工具

很多人的Mac电脑都会出现磁盘空间不够用,付费软件太贵或者难以使用。

space-cli是一个开源的Mac OS命令行小工具,用于分析磁盘空间健康度并找出占用空间最大的目录。

本软件采用**最严安全原则**,所有分析操作采用只读模式,未经允许不会尝试改写和破坏用户电脑的任何数据,也不会上传任何数据到外网,严格保护用户的隐私。

## 功能特性

- 🔍 **磁盘健康度检测** - 评估磁盘空间使用情况,提供健康状态建议
- 📊 **目录大小分析** - 递归分析目录大小,找出占用空间最大的文件夹
- 💻 **系统信息显示** - 显示Mac系统版本和基本信息
- 📄 **报告导出** - 将分析结果导出为JSON格式报告
- ⚡ **高性能** - 优化的算法,快速分析大型文件系统
- 🎯 **灵活配置** - 支持自定义分析路径和显示数量
- 🗂️ **索引缓存** - 目录大小结果本地索引缓存(`~/.spacecli/index.json`),支持TTL与重建提示
- 🧩 **应用分析** - 汇总 `Applications`、`Library`、`Caches`、`Logs` 等路径估算应用占用,给出卸载建议
- 🗑️ **一键删除应用** - 在应用分析列表中输入序号即可一键删除所选应用及其缓存(含二次确认)
 - 🏠 **用户目录深度分析** - 针对 `~/Library`、`~/Downloads`、`~/Documents` 分别下探并展示Top N目录
 - 🗄️ **大文件分析** - 扫描并列出指定路径下最大的文件,支持数量和最小体积阈值
 - ⏱️ **支持MCP调用** - 支持你自己的AI Agent无缝调用磁盘空间信息

## 安装

### 方法1:通过 pip 安装(推荐)

```bash
python3 -m pip install --upgrade myspace-cli

# 支持Pip安装
pip install myspace-cli

# 安装完成后直接使用
space-cli --help

# 或以模块方式
python3 -m space_cli --help
```

### 方法2:直接使用

```bash
# 克隆或下载项目
git clone https://github.com/kennyz/space-cli
cd MacDiskSpace

# 给脚本添加执行权限
chmod +x space_cli.py

# 运行
python3 space_cli.py
```

### 方法3:创建全局命令

```bash
# 复制到系统路径
sudo cp space_cli.py /usr/local/bin/space-cli
sudo chmod +x /usr/local/bin/space-cli

# 现在可以在任何地方使用
space-cli
```

注:若你更倾向于使用 PyPI 包名 `spacecli`,也可执行 `python3 -m pip install --upgrade spacecli`,命令入口同为 `space-cli`。

## 使用方法

### 基本用法

```bash
# 分析根目录(默认)
python3 space_cli.py

# 分析指定路径
python3 space_cli.py -p /Users/username

# 显示前10个最大的目录
python3 space_cli.py -n 10

# 快捷分析当前用户目录(含用户目录深度分析)
python3 space_cli.py --home
```

### 高级用法

```bash
# 只显示磁盘健康状态
python3 space_cli.py --health-only

# 只显示目录分析
python3 space_cli.py --directories-only

# 导出分析报告
python3 space_cli.py --export disk_report.json

# 分析用户目录并导出报告
python3 space_cli.py -p /Users -n 15 --export user_analysis.json

# 使用索引缓存(默认开启)
python3 space_cli.py --use-index

# 强制重建索引
python3 space_cli.py --reindex

# 设置索引缓存有效期为 6 小时
python3 space_cli.py --index-ttl 6

# 非交互,不提示使用缓存
python3 space_cli.py --no-prompt

# 分析应用目录占用并给出卸载建议(按应用归并)
python3 space_cli.py --apps -n 20

# 在应用分析输出后,按提示输入序号一键删除应用(会二次确认)
# 例如:输入 3 即删除列表中的第3个应用及其相关缓存
# 大文件分析(显示前20个,阈值2G)
python3 space_cli.py --big-files --big-files-top 20 --big-files-min 2G

# 将含大文件分析的结果写入导出报告
python3 space_cli.py --big-files --export report.json


```


### 命令行参数

| 参数 | 说明 | 默认值 |
|------|------|--------|
| `-p, --path` | 要分析的路径 | `/` |
| `-n, --top-n` | 显示前N个最大的目录 | `20` |
| `--health-only` | 只显示磁盘健康状态 | - |
| `--directories-only` | 只显示目录分析 | - |
| `--export FILE` | 导出报告到JSON文件 | - |
| `--use-index` | 使用索引缓存(默认) | - |
| `--no-index` | 禁用索引缓存 | - |
| `--reindex` | 强制重建索引 | - |
| `--index-ttl` | 索引缓存有效期(小时) | `24` |
| `--no-prompt` | 非交互模式,不提示使用缓存 | - |
| `--apps` | 分析应用目录空间与卸载建议 | - |
| `--home` | 将分析路径设置为当前用户目录 | - |
| `--big-files` | 启用大文件分析 | - |
| `--big-files-top` | 大文件列表数量 | `20` |
| `--big-files-min` | 大文件最小阈值(K/M/G/T) | `0` |
| `--version` | 显示版本信息 | - |
| `-h, --help` | 显示帮助信息 | - |

## 输出示例

### 磁盘健康状态
```
============================================================
🔍 磁盘空间健康度分析
============================================================
磁盘路径: /
总容量: 500.0 GB
已使用: 400.0 GB
可用空间: 100.0 GB
使用率: 80.0%
健康状态: ⚠️ 警告
建议: 磁盘空间不足,建议清理一些文件
```

### 目录分析
```
============================================================
📊 占用空间最大的目录
============================================================
显示前 20 个最大的目录:

 1. /Applications
    大小: 15.2 GB (3.04%)

 2. /Users/username/Library
    大小: 8.5 GB (1.70%)

 3. /System
    大小: 6.8 GB (1.36%)
```

### 大文件分析
```
============================================================
🗄️ 大文件分析
============================================================
 1. /Users/username/Downloads/big.iso  --  大小: 7.2 GB (1.44%)
 2. /Users/username/Movies/clip.mov   --  大小: 3.1 GB (0.62%)
```

### 应用分析与一键删除
```
============================================================
🧩 应用目录空间分析与卸载建议
============================================================
 1. Docker Desktop  --  占用: 9.1 GB (1.80%)  — 建议卸载或清理缓存
 2. Xcode           --  占用: 6.2 GB (1.23%)  — 建议卸载或清理缓存
 3. WeChat          --  占用: 2.4 GB (0.47%)  — 可保留,定期清理缓存

是否要一键删除某个应用?输入序号或回车跳过: 1
确认删除应用及相关缓存: Docker Desktop (约 9.1 GB)?[y/N]: y
将尝试删除以下路径:
 - /Applications/Docker.app
 - ~/Library/Application Support/Docker
 - ~/Library/Caches/com.docker.docker
...(略)
✅ 删除完成,预计释放空间: 8.7 GB
```

说明:
- 删除动作包含二次确认,并会列出将删除的路径清单。
- 系统级目录可能因权限/SIP 受保护而无法完全删除,此时工具会尽量清理可删部分并给出失败项与原因。


## MCP Server(可选)

本项目提供 MCP Server,方便在支持 MCP 的客户端中以“工具”的形式调用:

### 安装依赖
```bash
python3 -m pip install mcp
```

### 启动MCP服务
```bash
python3 mcp_server.py
```

### MCP暴露的工具
- `disk_health(path="/")`
- `largest_directories(path="/", top_n=20, use_index=True, reindex=False, index_ttl=24)`
- `app_analysis(top_n=20, use_index=True, reindex=False, index_ttl=24)`
- `big_files(path="/", top_n=20, min_size="0")`

以上工具与 CLI 输出保持一致的逻辑(索引缓存、阈值等),适合与 IDE/Agent 集成。


## 性能优化

- 使用递归算法高效计算目录大小
- 跳过无法访问的系统文件和隐藏文件
- 支持中断操作(Ctrl+C)
- 内存优化的文件遍历
 - 单行滚动进度避免输出刷屏
 - 进度刷新使用 ANSI 清行(\r\033[K),避免长行残留

## 故障排除

### 权限问题
如果遇到权限错误,可以尝试:
```bash
# 使用sudo运行(谨慎使用)
sudo python3 space_cli.py

# 或者分析用户目录
python3 space_cli.py -p /Users/$(whoami)
```

此外,针对“Operation not permitted”等提示:
- 退出相关应用后再试(例如删除 Docker 前先退出 Docker Desktop)。
- 在“系统设置 → 隐私与安全性”中为终端授予“完全磁盘访问权限”。
- 遇到容器元数据或受 SIP 保护的系统级文件(如 `~/Library/Containers/com.docker.docker/... .plist`),可能无法删除,建议仅清理用户级缓存目录。

### 性能问题
对于大型文件系统,分析可能需要较长时间:
- 使用 `--directories-only` 跳过健康检查
- 减少 `-n` 参数值
- 分析特定子目录而不是根目录
 - 使用 `--big-files-min` 提高阈值可减少扫描文件数量
 - 使用 `--use-index`/`--reindex`/`--index-ttl` 控制索引的使用与刷新

## 系统要求

- macOS 10.12 或更高版本
- Python 3.6 或更高版本
- 足够的磁盘空间用于临时文件

## 许可证

MIT License

## 贡献

欢迎提交Issue和Pull Request来改进这个工具!

## 更新日志

### v1.0.0
- 初始版本发布
- 基本的磁盘健康度检测
- 目录大小分析功能
- JSON报告导出
- 命令行参数支持

### v1.1.0
- 新增交互式菜单(无参数时出现),默认执行全部项目
- 新增 `--home` 用户目录快速分析与用户目录深度分析
- 新增应用分析缓存(`~/.cache/spacecli/apps.json`)
- 新增大文件分析 `--big-files`/`--big-files-top`/`--big-files-min`
- 导出报告在启用大文件分析时包含 `largest_files`
- 单行滚动进度显示

### v1.2.0
- 应用分析支持“按序号一键删除应用”,并显示将删除的路径清单与预计释放空间
- 删除过程增加权限修复与降级清理策略(chflags nouchg / chmod 0777 / 逐项清理)
- 针对 "Operation not permitted" 增加友好提示(SIP、完全磁盘访问、退出相关应用)
- 单行覆盖输出加入 ANSI 清行,避免长行残留

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "myspace-cli",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "disk, space, cleanup, macos, cli",
    "author": null,
    "author_email": "Your Name <you@example.com>",
    "download_url": "https://files.pythonhosted.org/packages/63/61/9f50ce68bca4b932d9a9a96ab725c681d528070f93f6220532e86e96ffdf/myspace_cli-1.3.0.tar.gz",
    "platform": null,
    "description": "# space-cli - Mac OS \u78c1\u76d8\u7a7a\u95f4\u5206\u6790\u5de5\u5177\n\n\u5f88\u591a\u4eba\u7684Mac\u7535\u8111\u90fd\u4f1a\u51fa\u73b0\u78c1\u76d8\u7a7a\u95f4\u4e0d\u591f\u7528\uff0c\u4ed8\u8d39\u8f6f\u4ef6\u592a\u8d35\u6216\u8005\u96be\u4ee5\u4f7f\u7528\u3002\n\nspace-cli\u662f\u4e00\u4e2a\u5f00\u6e90\u7684Mac OS\u547d\u4ee4\u884c\u5c0f\u5de5\u5177\uff0c\u7528\u4e8e\u5206\u6790\u78c1\u76d8\u7a7a\u95f4\u5065\u5eb7\u5ea6\u5e76\u627e\u51fa\u5360\u7528\u7a7a\u95f4\u6700\u5927\u7684\u76ee\u5f55\u3002\n\n\u672c\u8f6f\u4ef6\u91c7\u7528**\u6700\u4e25\u5b89\u5168\u539f\u5219**\uff0c\u6240\u6709\u5206\u6790\u64cd\u4f5c\u91c7\u7528\u53ea\u8bfb\u6a21\u5f0f\uff0c\u672a\u7ecf\u5141\u8bb8\u4e0d\u4f1a\u5c1d\u8bd5\u6539\u5199\u548c\u7834\u574f\u7528\u6237\u7535\u8111\u7684\u4efb\u4f55\u6570\u636e\uff0c\u4e5f\u4e0d\u4f1a\u4e0a\u4f20\u4efb\u4f55\u6570\u636e\u5230\u5916\u7f51\uff0c\u4e25\u683c\u4fdd\u62a4\u7528\u6237\u7684\u9690\u79c1\u3002\n\n## \u529f\u80fd\u7279\u6027\n\n- \ud83d\udd0d **\u78c1\u76d8\u5065\u5eb7\u5ea6\u68c0\u6d4b** - \u8bc4\u4f30\u78c1\u76d8\u7a7a\u95f4\u4f7f\u7528\u60c5\u51b5\uff0c\u63d0\u4f9b\u5065\u5eb7\u72b6\u6001\u5efa\u8bae\n- \ud83d\udcca **\u76ee\u5f55\u5927\u5c0f\u5206\u6790** - \u9012\u5f52\u5206\u6790\u76ee\u5f55\u5927\u5c0f\uff0c\u627e\u51fa\u5360\u7528\u7a7a\u95f4\u6700\u5927\u7684\u6587\u4ef6\u5939\n- \ud83d\udcbb **\u7cfb\u7edf\u4fe1\u606f\u663e\u793a** - \u663e\u793aMac\u7cfb\u7edf\u7248\u672c\u548c\u57fa\u672c\u4fe1\u606f\n- \ud83d\udcc4 **\u62a5\u544a\u5bfc\u51fa** - \u5c06\u5206\u6790\u7ed3\u679c\u5bfc\u51fa\u4e3aJSON\u683c\u5f0f\u62a5\u544a\n- \u26a1 **\u9ad8\u6027\u80fd** - \u4f18\u5316\u7684\u7b97\u6cd5\uff0c\u5feb\u901f\u5206\u6790\u5927\u578b\u6587\u4ef6\u7cfb\u7edf\n- \ud83c\udfaf **\u7075\u6d3b\u914d\u7f6e** - \u652f\u6301\u81ea\u5b9a\u4e49\u5206\u6790\u8def\u5f84\u548c\u663e\u793a\u6570\u91cf\n- \ud83d\uddc2\ufe0f **\u7d22\u5f15\u7f13\u5b58** - \u76ee\u5f55\u5927\u5c0f\u7ed3\u679c\u672c\u5730\u7d22\u5f15\u7f13\u5b58\uff08`~/.spacecli/index.json`\uff09\uff0c\u652f\u6301TTL\u4e0e\u91cd\u5efa\u63d0\u793a\n- \ud83e\udde9 **\u5e94\u7528\u5206\u6790** - \u6c47\u603b `Applications`\u3001`Library`\u3001`Caches`\u3001`Logs` \u7b49\u8def\u5f84\u4f30\u7b97\u5e94\u7528\u5360\u7528\uff0c\u7ed9\u51fa\u5378\u8f7d\u5efa\u8bae\n- \ud83d\uddd1\ufe0f **\u4e00\u952e\u5220\u9664\u5e94\u7528** - \u5728\u5e94\u7528\u5206\u6790\u5217\u8868\u4e2d\u8f93\u5165\u5e8f\u53f7\u5373\u53ef\u4e00\u952e\u5220\u9664\u6240\u9009\u5e94\u7528\u53ca\u5176\u7f13\u5b58\uff08\u542b\u4e8c\u6b21\u786e\u8ba4\uff09\n - \ud83c\udfe0 **\u7528\u6237\u76ee\u5f55\u6df1\u5ea6\u5206\u6790** - \u9488\u5bf9 `~/Library`\u3001`~/Downloads`\u3001`~/Documents` \u5206\u522b\u4e0b\u63a2\u5e76\u5c55\u793aTop N\u76ee\u5f55\n - \ud83d\uddc4\ufe0f **\u5927\u6587\u4ef6\u5206\u6790** - \u626b\u63cf\u5e76\u5217\u51fa\u6307\u5b9a\u8def\u5f84\u4e0b\u6700\u5927\u7684\u6587\u4ef6\uff0c\u652f\u6301\u6570\u91cf\u548c\u6700\u5c0f\u4f53\u79ef\u9608\u503c\n - \u23f1\ufe0f **\u652f\u6301MCP\u8c03\u7528** - \u652f\u6301\u4f60\u81ea\u5df1\u7684AI Agent\u65e0\u7f1d\u8c03\u7528\u78c1\u76d8\u7a7a\u95f4\u4fe1\u606f\n\n## \u5b89\u88c5\n\n### \u65b9\u6cd51\uff1a\u901a\u8fc7 pip \u5b89\u88c5\uff08\u63a8\u8350\uff09\n\n```bash\npython3 -m pip install --upgrade myspace-cli\n\n# \u652f\u6301Pip\u5b89\u88c5\npip install myspace-cli\n\n# \u5b89\u88c5\u5b8c\u6210\u540e\u76f4\u63a5\u4f7f\u7528\nspace-cli --help\n\n# \u6216\u4ee5\u6a21\u5757\u65b9\u5f0f\npython3 -m space_cli --help\n```\n\n### \u65b9\u6cd52\uff1a\u76f4\u63a5\u4f7f\u7528\n\n```bash\n# \u514b\u9686\u6216\u4e0b\u8f7d\u9879\u76ee\ngit clone https://github.com/kennyz/space-cli\ncd MacDiskSpace\n\n# \u7ed9\u811a\u672c\u6dfb\u52a0\u6267\u884c\u6743\u9650\nchmod +x space_cli.py\n\n# \u8fd0\u884c\npython3 space_cli.py\n```\n\n### \u65b9\u6cd53\uff1a\u521b\u5efa\u5168\u5c40\u547d\u4ee4\n\n```bash\n# \u590d\u5236\u5230\u7cfb\u7edf\u8def\u5f84\nsudo cp space_cli.py /usr/local/bin/space-cli\nsudo chmod +x /usr/local/bin/space-cli\n\n# \u73b0\u5728\u53ef\u4ee5\u5728\u4efb\u4f55\u5730\u65b9\u4f7f\u7528\nspace-cli\n```\n\n\u6ce8\uff1a\u82e5\u4f60\u66f4\u503e\u5411\u4e8e\u4f7f\u7528 PyPI \u5305\u540d `spacecli`\uff0c\u4e5f\u53ef\u6267\u884c `python3 -m pip install --upgrade spacecli`\uff0c\u547d\u4ee4\u5165\u53e3\u540c\u4e3a `space-cli`\u3002\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### \u57fa\u672c\u7528\u6cd5\n\n```bash\n# \u5206\u6790\u6839\u76ee\u5f55\uff08\u9ed8\u8ba4\uff09\npython3 space_cli.py\n\n# \u5206\u6790\u6307\u5b9a\u8def\u5f84\npython3 space_cli.py -p /Users/username\n\n# \u663e\u793a\u524d10\u4e2a\u6700\u5927\u7684\u76ee\u5f55\npython3 space_cli.py -n 10\n\n# \u5feb\u6377\u5206\u6790\u5f53\u524d\u7528\u6237\u76ee\u5f55\uff08\u542b\u7528\u6237\u76ee\u5f55\u6df1\u5ea6\u5206\u6790\uff09\npython3 space_cli.py --home\n```\n\n### \u9ad8\u7ea7\u7528\u6cd5\n\n```bash\n# \u53ea\u663e\u793a\u78c1\u76d8\u5065\u5eb7\u72b6\u6001\npython3 space_cli.py --health-only\n\n# \u53ea\u663e\u793a\u76ee\u5f55\u5206\u6790\npython3 space_cli.py --directories-only\n\n# \u5bfc\u51fa\u5206\u6790\u62a5\u544a\npython3 space_cli.py --export disk_report.json\n\n# \u5206\u6790\u7528\u6237\u76ee\u5f55\u5e76\u5bfc\u51fa\u62a5\u544a\npython3 space_cli.py -p /Users -n 15 --export user_analysis.json\n\n# \u4f7f\u7528\u7d22\u5f15\u7f13\u5b58\uff08\u9ed8\u8ba4\u5f00\u542f\uff09\npython3 space_cli.py --use-index\n\n# \u5f3a\u5236\u91cd\u5efa\u7d22\u5f15\npython3 space_cli.py --reindex\n\n# \u8bbe\u7f6e\u7d22\u5f15\u7f13\u5b58\u6709\u6548\u671f\u4e3a 6 \u5c0f\u65f6\npython3 space_cli.py --index-ttl 6\n\n# \u975e\u4ea4\u4e92\uff0c\u4e0d\u63d0\u793a\u4f7f\u7528\u7f13\u5b58\npython3 space_cli.py --no-prompt\n\n# \u5206\u6790\u5e94\u7528\u76ee\u5f55\u5360\u7528\u5e76\u7ed9\u51fa\u5378\u8f7d\u5efa\u8bae\uff08\u6309\u5e94\u7528\u5f52\u5e76\uff09\npython3 space_cli.py --apps -n 20\n\n# \u5728\u5e94\u7528\u5206\u6790\u8f93\u51fa\u540e\uff0c\u6309\u63d0\u793a\u8f93\u5165\u5e8f\u53f7\u4e00\u952e\u5220\u9664\u5e94\u7528\uff08\u4f1a\u4e8c\u6b21\u786e\u8ba4\uff09\n# \u4f8b\u5982\uff1a\u8f93\u5165 3 \u5373\u5220\u9664\u5217\u8868\u4e2d\u7684\u7b2c3\u4e2a\u5e94\u7528\u53ca\u5176\u76f8\u5173\u7f13\u5b58\n# \u5927\u6587\u4ef6\u5206\u6790\uff08\u663e\u793a\u524d20\u4e2a\uff0c\u9608\u503c2G\uff09\npython3 space_cli.py --big-files --big-files-top 20 --big-files-min 2G\n\n# \u5c06\u542b\u5927\u6587\u4ef6\u5206\u6790\u7684\u7ed3\u679c\u5199\u5165\u5bfc\u51fa\u62a5\u544a\npython3 space_cli.py --big-files --export report.json\n\n\n```\n\n\n### \u547d\u4ee4\u884c\u53c2\u6570\n\n| \u53c2\u6570 | \u8bf4\u660e | \u9ed8\u8ba4\u503c |\n|------|------|--------|\n| `-p, --path` | \u8981\u5206\u6790\u7684\u8def\u5f84 | `/` |\n| `-n, --top-n` | \u663e\u793a\u524dN\u4e2a\u6700\u5927\u7684\u76ee\u5f55 | `20` |\n| `--health-only` | \u53ea\u663e\u793a\u78c1\u76d8\u5065\u5eb7\u72b6\u6001 | - |\n| `--directories-only` | \u53ea\u663e\u793a\u76ee\u5f55\u5206\u6790 | - |\n| `--export FILE` | \u5bfc\u51fa\u62a5\u544a\u5230JSON\u6587\u4ef6 | - |\n| `--use-index` | \u4f7f\u7528\u7d22\u5f15\u7f13\u5b58\uff08\u9ed8\u8ba4\uff09 | - |\n| `--no-index` | \u7981\u7528\u7d22\u5f15\u7f13\u5b58 | - |\n| `--reindex` | \u5f3a\u5236\u91cd\u5efa\u7d22\u5f15 | - |\n| `--index-ttl` | \u7d22\u5f15\u7f13\u5b58\u6709\u6548\u671f\uff08\u5c0f\u65f6\uff09 | `24` |\n| `--no-prompt` | \u975e\u4ea4\u4e92\u6a21\u5f0f\uff0c\u4e0d\u63d0\u793a\u4f7f\u7528\u7f13\u5b58 | - |\n| `--apps` | \u5206\u6790\u5e94\u7528\u76ee\u5f55\u7a7a\u95f4\u4e0e\u5378\u8f7d\u5efa\u8bae | - |\n| `--home` | \u5c06\u5206\u6790\u8def\u5f84\u8bbe\u7f6e\u4e3a\u5f53\u524d\u7528\u6237\u76ee\u5f55 | - |\n| `--big-files` | \u542f\u7528\u5927\u6587\u4ef6\u5206\u6790 | - |\n| `--big-files-top` | \u5927\u6587\u4ef6\u5217\u8868\u6570\u91cf | `20` |\n| `--big-files-min` | \u5927\u6587\u4ef6\u6700\u5c0f\u9608\u503c\uff08K/M/G/T\uff09 | `0` |\n| `--version` | \u663e\u793a\u7248\u672c\u4fe1\u606f | - |\n| `-h, --help` | \u663e\u793a\u5e2e\u52a9\u4fe1\u606f | - |\n\n## \u8f93\u51fa\u793a\u4f8b\n\n### \u78c1\u76d8\u5065\u5eb7\u72b6\u6001\n```\n============================================================\n\ud83d\udd0d \u78c1\u76d8\u7a7a\u95f4\u5065\u5eb7\u5ea6\u5206\u6790\n============================================================\n\u78c1\u76d8\u8def\u5f84: /\n\u603b\u5bb9\u91cf: 500.0 GB\n\u5df2\u4f7f\u7528: 400.0 GB\n\u53ef\u7528\u7a7a\u95f4: 100.0 GB\n\u4f7f\u7528\u7387: 80.0%\n\u5065\u5eb7\u72b6\u6001: \u26a0\ufe0f \u8b66\u544a\n\u5efa\u8bae: \u78c1\u76d8\u7a7a\u95f4\u4e0d\u8db3\uff0c\u5efa\u8bae\u6e05\u7406\u4e00\u4e9b\u6587\u4ef6\n```\n\n### \u76ee\u5f55\u5206\u6790\n```\n============================================================\n\ud83d\udcca \u5360\u7528\u7a7a\u95f4\u6700\u5927\u7684\u76ee\u5f55\n============================================================\n\u663e\u793a\u524d 20 \u4e2a\u6700\u5927\u7684\u76ee\u5f55:\n\n 1. /Applications\n    \u5927\u5c0f: 15.2 GB (3.04%)\n\n 2. /Users/username/Library\n    \u5927\u5c0f: 8.5 GB (1.70%)\n\n 3. /System\n    \u5927\u5c0f: 6.8 GB (1.36%)\n```\n\n### \u5927\u6587\u4ef6\u5206\u6790\n```\n============================================================\n\ud83d\uddc4\ufe0f \u5927\u6587\u4ef6\u5206\u6790\n============================================================\n 1. /Users/username/Downloads/big.iso  --  \u5927\u5c0f: 7.2 GB (1.44%)\n 2. /Users/username/Movies/clip.mov   --  \u5927\u5c0f: 3.1 GB (0.62%)\n```\n\n### \u5e94\u7528\u5206\u6790\u4e0e\u4e00\u952e\u5220\u9664\n```\n============================================================\n\ud83e\udde9 \u5e94\u7528\u76ee\u5f55\u7a7a\u95f4\u5206\u6790\u4e0e\u5378\u8f7d\u5efa\u8bae\n============================================================\n 1. Docker Desktop  --  \u5360\u7528: 9.1 GB (1.80%)  \u2014 \u5efa\u8bae\u5378\u8f7d\u6216\u6e05\u7406\u7f13\u5b58\n 2. Xcode           --  \u5360\u7528: 6.2 GB (1.23%)  \u2014 \u5efa\u8bae\u5378\u8f7d\u6216\u6e05\u7406\u7f13\u5b58\n 3. WeChat          --  \u5360\u7528: 2.4 GB (0.47%)  \u2014 \u53ef\u4fdd\u7559\uff0c\u5b9a\u671f\u6e05\u7406\u7f13\u5b58\n\n\u662f\u5426\u8981\u4e00\u952e\u5220\u9664\u67d0\u4e2a\u5e94\u7528\uff1f\u8f93\u5165\u5e8f\u53f7\u6216\u56de\u8f66\u8df3\u8fc7: 1\n\u786e\u8ba4\u5220\u9664\u5e94\u7528\u53ca\u76f8\u5173\u7f13\u5b58: Docker Desktop (\u7ea6 9.1 GB)\uff1f[y/N]: y\n\u5c06\u5c1d\u8bd5\u5220\u9664\u4ee5\u4e0b\u8def\u5f84\uff1a\n - /Applications/Docker.app\n - ~/Library/Application Support/Docker\n - ~/Library/Caches/com.docker.docker\n...\uff08\u7565\uff09\n\u2705 \u5220\u9664\u5b8c\u6210\uff0c\u9884\u8ba1\u91ca\u653e\u7a7a\u95f4: 8.7 GB\n```\n\n\u8bf4\u660e\uff1a\n- \u5220\u9664\u52a8\u4f5c\u5305\u542b\u4e8c\u6b21\u786e\u8ba4\uff0c\u5e76\u4f1a\u5217\u51fa\u5c06\u5220\u9664\u7684\u8def\u5f84\u6e05\u5355\u3002\n- \u7cfb\u7edf\u7ea7\u76ee\u5f55\u53ef\u80fd\u56e0\u6743\u9650/SIP \u53d7\u4fdd\u62a4\u800c\u65e0\u6cd5\u5b8c\u5168\u5220\u9664\uff0c\u6b64\u65f6\u5de5\u5177\u4f1a\u5c3d\u91cf\u6e05\u7406\u53ef\u5220\u90e8\u5206\u5e76\u7ed9\u51fa\u5931\u8d25\u9879\u4e0e\u539f\u56e0\u3002\n\n\n## MCP Server\uff08\u53ef\u9009\uff09\n\n\u672c\u9879\u76ee\u63d0\u4f9b MCP Server\uff0c\u65b9\u4fbf\u5728\u652f\u6301 MCP \u7684\u5ba2\u6237\u7aef\u4e2d\u4ee5\u201c\u5de5\u5177\u201d\u7684\u5f62\u5f0f\u8c03\u7528\uff1a\n\n### \u5b89\u88c5\u4f9d\u8d56\n```bash\npython3 -m pip install mcp\n```\n\n### \u542f\u52a8MCP\u670d\u52a1\n```bash\npython3 mcp_server.py\n```\n\n### MCP\u66b4\u9732\u7684\u5de5\u5177\n- `disk_health(path=\"/\")`\n- `largest_directories(path=\"/\", top_n=20, use_index=True, reindex=False, index_ttl=24)`\n- `app_analysis(top_n=20, use_index=True, reindex=False, index_ttl=24)`\n- `big_files(path=\"/\", top_n=20, min_size=\"0\")`\n\n\u4ee5\u4e0a\u5de5\u5177\u4e0e CLI \u8f93\u51fa\u4fdd\u6301\u4e00\u81f4\u7684\u903b\u8f91\uff08\u7d22\u5f15\u7f13\u5b58\u3001\u9608\u503c\u7b49\uff09\uff0c\u9002\u5408\u4e0e IDE/Agent \u96c6\u6210\u3002\n\n\n## \u6027\u80fd\u4f18\u5316\n\n- \u4f7f\u7528\u9012\u5f52\u7b97\u6cd5\u9ad8\u6548\u8ba1\u7b97\u76ee\u5f55\u5927\u5c0f\n- \u8df3\u8fc7\u65e0\u6cd5\u8bbf\u95ee\u7684\u7cfb\u7edf\u6587\u4ef6\u548c\u9690\u85cf\u6587\u4ef6\n- \u652f\u6301\u4e2d\u65ad\u64cd\u4f5c\uff08Ctrl+C\uff09\n- \u5185\u5b58\u4f18\u5316\u7684\u6587\u4ef6\u904d\u5386\n - \u5355\u884c\u6eda\u52a8\u8fdb\u5ea6\u907f\u514d\u8f93\u51fa\u5237\u5c4f\n - \u8fdb\u5ea6\u5237\u65b0\u4f7f\u7528 ANSI \u6e05\u884c\uff08\\r\\033[K\uff09\uff0c\u907f\u514d\u957f\u884c\u6b8b\u7559\n\n## \u6545\u969c\u6392\u9664\n\n### \u6743\u9650\u95ee\u9898\n\u5982\u679c\u9047\u5230\u6743\u9650\u9519\u8bef\uff0c\u53ef\u4ee5\u5c1d\u8bd5\uff1a\n```bash\n# \u4f7f\u7528sudo\u8fd0\u884c\uff08\u8c28\u614e\u4f7f\u7528\uff09\nsudo python3 space_cli.py\n\n# \u6216\u8005\u5206\u6790\u7528\u6237\u76ee\u5f55\npython3 space_cli.py -p /Users/$(whoami)\n```\n\n\u6b64\u5916\uff0c\u9488\u5bf9\u201cOperation not permitted\u201d\u7b49\u63d0\u793a\uff1a\n- \u9000\u51fa\u76f8\u5173\u5e94\u7528\u540e\u518d\u8bd5\uff08\u4f8b\u5982\u5220\u9664 Docker \u524d\u5148\u9000\u51fa Docker Desktop\uff09\u3002\n- \u5728\u201c\u7cfb\u7edf\u8bbe\u7f6e \u2192 \u9690\u79c1\u4e0e\u5b89\u5168\u6027\u201d\u4e2d\u4e3a\u7ec8\u7aef\u6388\u4e88\u201c\u5b8c\u5168\u78c1\u76d8\u8bbf\u95ee\u6743\u9650\u201d\u3002\n- \u9047\u5230\u5bb9\u5668\u5143\u6570\u636e\u6216\u53d7 SIP \u4fdd\u62a4\u7684\u7cfb\u7edf\u7ea7\u6587\u4ef6\uff08\u5982 `~/Library/Containers/com.docker.docker/... .plist`\uff09\uff0c\u53ef\u80fd\u65e0\u6cd5\u5220\u9664\uff0c\u5efa\u8bae\u4ec5\u6e05\u7406\u7528\u6237\u7ea7\u7f13\u5b58\u76ee\u5f55\u3002\n\n### \u6027\u80fd\u95ee\u9898\n\u5bf9\u4e8e\u5927\u578b\u6587\u4ef6\u7cfb\u7edf\uff0c\u5206\u6790\u53ef\u80fd\u9700\u8981\u8f83\u957f\u65f6\u95f4\uff1a\n- \u4f7f\u7528 `--directories-only` \u8df3\u8fc7\u5065\u5eb7\u68c0\u67e5\n- \u51cf\u5c11 `-n` \u53c2\u6570\u503c\n- \u5206\u6790\u7279\u5b9a\u5b50\u76ee\u5f55\u800c\u4e0d\u662f\u6839\u76ee\u5f55\n - \u4f7f\u7528 `--big-files-min` \u63d0\u9ad8\u9608\u503c\u53ef\u51cf\u5c11\u626b\u63cf\u6587\u4ef6\u6570\u91cf\n - \u4f7f\u7528 `--use-index`/`--reindex`/`--index-ttl` \u63a7\u5236\u7d22\u5f15\u7684\u4f7f\u7528\u4e0e\u5237\u65b0\n\n## \u7cfb\u7edf\u8981\u6c42\n\n- macOS 10.12 \u6216\u66f4\u9ad8\u7248\u672c\n- Python 3.6 \u6216\u66f4\u9ad8\u7248\u672c\n- \u8db3\u591f\u7684\u78c1\u76d8\u7a7a\u95f4\u7528\u4e8e\u4e34\u65f6\u6587\u4ef6\n\n## \u8bb8\u53ef\u8bc1\n\nMIT License\n\n## \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4Issue\u548cPull Request\u6765\u6539\u8fdb\u8fd9\u4e2a\u5de5\u5177\uff01\n\n## \u66f4\u65b0\u65e5\u5fd7\n\n### v1.0.0\n- \u521d\u59cb\u7248\u672c\u53d1\u5e03\n- \u57fa\u672c\u7684\u78c1\u76d8\u5065\u5eb7\u5ea6\u68c0\u6d4b\n- \u76ee\u5f55\u5927\u5c0f\u5206\u6790\u529f\u80fd\n- JSON\u62a5\u544a\u5bfc\u51fa\n- \u547d\u4ee4\u884c\u53c2\u6570\u652f\u6301\n\n### v1.1.0\n- \u65b0\u589e\u4ea4\u4e92\u5f0f\u83dc\u5355\uff08\u65e0\u53c2\u6570\u65f6\u51fa\u73b0\uff09\uff0c\u9ed8\u8ba4\u6267\u884c\u5168\u90e8\u9879\u76ee\n- \u65b0\u589e `--home` \u7528\u6237\u76ee\u5f55\u5feb\u901f\u5206\u6790\u4e0e\u7528\u6237\u76ee\u5f55\u6df1\u5ea6\u5206\u6790\n- \u65b0\u589e\u5e94\u7528\u5206\u6790\u7f13\u5b58\uff08`~/.cache/spacecli/apps.json`\uff09\n- \u65b0\u589e\u5927\u6587\u4ef6\u5206\u6790 `--big-files`/`--big-files-top`/`--big-files-min`\n- \u5bfc\u51fa\u62a5\u544a\u5728\u542f\u7528\u5927\u6587\u4ef6\u5206\u6790\u65f6\u5305\u542b `largest_files`\n- \u5355\u884c\u6eda\u52a8\u8fdb\u5ea6\u663e\u793a\n\n### v1.2.0\n- \u5e94\u7528\u5206\u6790\u652f\u6301\u201c\u6309\u5e8f\u53f7\u4e00\u952e\u5220\u9664\u5e94\u7528\u201d\uff0c\u5e76\u663e\u793a\u5c06\u5220\u9664\u7684\u8def\u5f84\u6e05\u5355\u4e0e\u9884\u8ba1\u91ca\u653e\u7a7a\u95f4\n- \u5220\u9664\u8fc7\u7a0b\u589e\u52a0\u6743\u9650\u4fee\u590d\u4e0e\u964d\u7ea7\u6e05\u7406\u7b56\u7565\uff08chflags nouchg / chmod 0777 / \u9010\u9879\u6e05\u7406\uff09\n- \u9488\u5bf9 \"Operation not permitted\" \u589e\u52a0\u53cb\u597d\u63d0\u793a\uff08SIP\u3001\u5b8c\u5168\u78c1\u76d8\u8bbf\u95ee\u3001\u9000\u51fa\u76f8\u5173\u5e94\u7528\uff09\n- \u5355\u884c\u8986\u76d6\u8f93\u51fa\u52a0\u5165 ANSI \u6e05\u884c\uff0c\u907f\u514d\u957f\u884c\u6b8b\u7559\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A macOS disk space analysis CLI: health, index, app usage, big files.",
    "version": "1.3.0",
    "project_urls": {
        "Homepage": "https://github.com/kennyz/space-cli",
        "Issues": "https://github.com/kennyz/space-cli/issues"
    },
    "split_keywords": [
        "disk",
        " space",
        " cleanup",
        " macos",
        " cli"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "eebfc53d3cc956b16bda995a43c4e18ce50af305463d108e1e0dd6933ae483a3",
                "md5": "52a8333776bf342c290ea67276444984",
                "sha256": "3b3d72e184fe6850c7b7d820848c6b495258ebfb2170ef8bdca6772e9d03338b"
            },
            "downloads": -1,
            "filename": "myspace_cli-1.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "52a8333776bf342c290ea67276444984",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 16079,
            "upload_time": "2025-10-09T11:53:29",
            "upload_time_iso_8601": "2025-10-09T11:53:29.827471Z",
            "url": "https://files.pythonhosted.org/packages/ee/bf/c53d3cc956b16bda995a43c4e18ce50af305463d108e1e0dd6933ae483a3/myspace_cli-1.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "63619f50ce68bca4b932d9a9a96ab725c681d528070f93f6220532e86e96ffdf",
                "md5": "68a6b02a2ef49441e5045557a9b076cc",
                "sha256": "2f9bbc24730c7e964fcfda2a9572449c1eb29fe08c868778737a9967d45b0fd4"
            },
            "downloads": -1,
            "filename": "myspace_cli-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "68a6b02a2ef49441e5045557a9b076cc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 15704,
            "upload_time": "2025-10-09T11:53:31",
            "upload_time_iso_8601": "2025-10-09T11:53:31.158386Z",
            "url": "https://files.pythonhosted.org/packages/63/61/9f50ce68bca4b932d9a9a96ab725c681d528070f93f6220532e86e96ffdf/myspace_cli-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-09 11:53:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kennyz",
    "github_project": "space-cli",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "myspace-cli"
}
        
Elapsed time: 2.24293s