可用 node-diskusage 检测磁盘剩余空间:安装 npm install node-diskusage 后,通过 disk-alert.js 脚本跨平台监听目标盘符(如 windows 的 c: 或 macos/linux 的 /),获取剩余空间并对比阈值(如 5gb)触发告警。

直接用 node-diskusage 检测磁盘剩余空间
VSCode 本身不提供磁盘空间告警能力,但你可以用 Node.js 脚本在本地监听 C 盘(或工作区所在盘)剩余空间,并在低于阈值时触发通知。核心是 node-diskusage 这个轻量库——它跨平台、无依赖、只读取系统 API,不会污染项目。
安装只需:npm install node-diskusage,然后在项目根目录建一个 disk-alert.js:
const diskusage = require('node-diskusage');
const os = require('os');
// Windows 默认检测 C:;macOS/Linux 检测根路径 /
const targetPath = os.platform() === 'win32' ? 'C:' : '/';
diskusage.check(targetPath, (err, info) => {
if (err) return console.error(err);
const freeMB = Math.round(info.free / 1024 / 1024);
const threshold = 5000; // 单位 MB,即 5GB
if (freeMB
<p>注意:<code>info.free</code> 是字节数,别漏掉单位换算;Windows 下必须传 <code>'C:'</code>(带冒号),传 <code>'C:\'</code> 或 <code>'C:/'</code> 会报错。</p>
<h3>让告警出现在 VSCode 编辑器内(非弹窗)</h3>
<p>单纯 <code>console.warn</code> 不够醒目。想让提示出现在 VSCode 底部状态栏或问题面板,得走 Extension API 路线——但你不需要写完整插件。更简单的方式是:用 <code>vscode-languageclient</code> + 自定义命令,或直接复用已有的「任务」机制。</p>
- 把上面的脚本保存为
disk-check.js,再在.vscode/tasks.json里加一个 shell 任务: -
"type": "shell","command": "node disk-check.js" - 设置
"problemMatcher": []避免误解析输出 - 绑定快捷键(如
Ctrl+Shift+P→ “Tasks: Run Task” → 选它)
这样每次手动触发就能看到警告。如果真要自动轮询,别用 setInterval——Node 子进程长期驻留会拖慢 VSCode;建议改用系统级定时任务(Windows 的 Task Scheduler / macOS 的 launchd)每 10 分钟跑一次脚本,输出日志到 ./logs/disk.log,再用 VSCode 的 files.watcherExclude 排除该日志文件防止卡顿。
vscode.workspace.onDidChangeConfiguration 不适合做磁盘监控
有人试图监听配置变更来触发检查,这是误区。onDidChangeConfiguration 只响应 settings.json 修改,和磁盘空间完全无关。真正需要的是文件系统事件或定期轮询——但 VSCode 的 API 层不暴露 df 或 GetDiskFreeSpace 调用,所有磁盘操作必须交由独立 Node 进程完成。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
常见错误包括:
- 在 extension.ts 里直接调用
require('fs').stat()查C:—— Windows 权限失败,且 Electron 渲染进程无权访问根路径 - 用
workspace.fs.stat()(VSCode 1.89+ 新 API)查某个文件夹大小 —— 它只返回单目录元数据,无法获取剩余空间 - 把
node-diskusage放进 Webview 中运行 —— 浏览器环境不支持该模块,会报Module not found
结论:磁盘空间检测必须放在外部 Node 进程里,VSCode 只负责展示结果。
为什么不用 df -h 或 PowerShell 命令替代?
可以,但不推荐。比如 Windows 下写 cmd /c "wmic logicaldisk where caption='C:' get freespace",看似省事,实际有三个硬伤:
- 输出含单位和空格,需额外字符串解析,容易因 locale(如中文系统显示“可用空间”)崩掉
- PowerShell 的
Get-PSDrive C在受限策略下可能被禁用,尤其企业域环境 -
node-diskusage底层调用的是原生 syscall(statvfs/GetDiskFreeSpaceEx),比 shell 解析快 3–5 倍,且返回结构化对象
如果你的项目已用 child_process 调了几十个命令,那加一条 df 也无所谓;但只为磁盘告警单独起 shell 进程,属于高成本低收益。
真正难的是判断“多少空间算危险”——不是固定 5GB,而是看你的开发模式:VSCode 插件缓存常占 2–3GB,node_modules 解压峰值超 4GB,Rust target 编译产物动辄 10GB。告警阈值必须随工作流动态调整,静态写死反而容易误报。










