{"_id":"@dennis273/mem-tool","name":"@dennis273/mem-tool","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@dennis273/mem-tool","version":"0.1.0","type":"module","bin":{"mem-tool":"dist/cli.js"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/Dennis273/mem-tool.git"},"dependencies":{"ink":"^6.0.0","react":"^19.0.0"},"devDependencies":{"@changesets/cli":"^2.30.0","@types/node":"^22.0.0","@types/react":"^19.0.0","tsup":"^8.4.0","tsx":"^4.19.0","typescript":"^5.7.0","vitest":"^3.0.0"},"scripts":{"dev":"tsx src/cli.tsx","build":"tsup src/cli.tsx --format esm --dts --clean","test":"vitest run","test:watch":"vitest","changeset":"changeset","version-packages":"changeset version","release":"changeset version && pnpm build && changeset publish"},"_id":"@dennis273/mem-tool@0.1.0","description":"macOS 系统内存监控 TUI 工具，实时追踪进程内存使用，识别内存占用高或增长异常的进程。","bugs":{"url":"https://github.com/Dennis273/mem-tool/issues"},"homepage":"https://github.com/Dennis273/mem-tool#readme","_integrity":"sha512-Q/BwnuacwElMnf6gJlsNoUbPP3w8i3SY2JfyUiRfKyAgfxLgMTx3Z+WzfFkBggkOnJbXfZcR5cdyTWFWe7tpCQ==","_resolved":"/tmp/d388cc988c0c6f31f0a424008fef4947/dennis273-mem-tool-0.1.0.tgz","_from":"file:dennis273-mem-tool-0.1.0.tgz","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-Q/BwnuacwElMnf6gJlsNoUbPP3w8i3SY2JfyUiRfKyAgfxLgMTx3Z+WzfFkBggkOnJbXfZcR5cdyTWFWe7tpCQ==","shasum":"58252255d91c7c7ab877028f51f38a92625ba5d0","tarball":"https://registry.npmjs.org/@dennis273/mem-tool/-/mem-tool-0.1.0.tgz","fileCount":4,"unpackedSize":27328,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD5Ggf/ToHePqV74kA4A0HJK5GmiTQNbhpqBv9oQv1yvwIgG3y5JevvuT24OME8iqQ2WdiOoz2SmpdqXkqtBN9uA+E="}]},"_npmUser":{"name":"dennis273","email":"dennisc695@gmail.com"},"directories":{},"maintainers":[{"name":"dennis273","email":"dennisc695@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mem-tool_0.1.0_1772608860952_0.6807611273885628"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-04T07:21:00.800Z","0.1.0":"2026-03-04T07:21:01.090Z","modified":"2026-03-04T07:21:01.325Z"},"maintainers":[{"name":"dennis273","email":"dennisc695@gmail.com"}],"description":"macOS 系统内存监控 TUI 工具，实时追踪进程内存使用，识别内存占用高或增长异常的进程。","homepage":"https://github.com/Dennis273/mem-tool#readme","repository":{"type":"git","url":"git+https://github.com/Dennis273/mem-tool.git"},"bugs":{"url":"https://github.com/Dennis273/mem-tool/issues"},"readme":"# mem-tool\n\nmacOS 系统内存监控 TUI 工具，实时追踪进程内存使用，识别内存占用高或增长异常的进程。\n\n## 核心职责\n\n1. **进程采集** — 定期采集系统上所有进程的内存使用（排除系统进程），按内存降序展示 Top N\n2. **增长率追踪** — 滑动窗口内计算每个进程的内存增长趋势\n3. **阈值告警** — 单进程超限、增长异常、系统内存超限时，发送 macOS 通知（带冷却）\n4. **CSV 日志** — 每轮采集结果追加写入 CSV，供离线分析\n5. **TUI 展示** — 终端内原地刷新的仪表盘，显示进程列表、状态指示、告警历史\n\n## 不做的事\n\n- 不管理/控制进程（不 kill、不 restart）\n- 不做跨平台支持（仅 macOS，依赖 `footprint`、`vm_stat`、`sysctl`、`osascript`）\n- 不提供 Web UI 或远程访问\n- 不做历史数据可视化（CSV 导出后用其他工具分析）\n\n## 采集策略\n\n1. `ps aux` 单次调用获取全量 RSS + VSZ\n2. 排除 root (UID 0) 系统进程\n3. 按 RSS 降序排序\n4. 仅对 Top 20 调用 `footprint` 获取精确物理内存\n\n### 展示指标\n\n| 指标 | 来源 | 用途 |\n|------|------|------|\n| **footprint** | `footprint <pid>`，Top 20 | 真实物理内存，用于增长率计算和告警 |\n| **VSZ** | `ps aux`，全量 | 虚拟内存大小，用于发现异常膨胀进程 |\n| **RSS** | `ps aux`，全量 | 物理驻留内存，用于粗排序 |\n\n### 默认阈值\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| 采集间隔 | 30s | |\n| 单进程上限 | 1500MB | footprint |\n| 增长窗口 | 30m | |\n| 增长上限 | 200MB/30m | footprint |\n| 系统内存上限 | 150GB | VSZ 维度，CLI 参数可配置 |\n| 告警冷却 | 5m | |\n| Top N | 20 | footprint 精确采集数量 |\n| CSV 路径 | ~/mem-tool-log.csv | |\n\n## 技术栈\n\n- **Ink 6** + React 19 + TypeScript\n- **tsx** 开发运行，**tsup** 构建\n- **pnpm** 包管理\n\n## 待解决\n\n- [ ] Ink 6 组件测试：`ink-testing-library` 4.0 仅支持 Ink 5，当前组件层无自动化测试。待上游兼容后补充。\n\n## 使用\n\n```bash\npnpm dev    # 开发运行\npnpm build  # 构建\n```\n","readmeFilename":"README.md","_rev":"1-8ecc30671d8b9bbe9c434b9cf16c9fef"}