- 人工智能
- MCP 服务
- AI Agent
- 开发工具
【免费下载链接】ClaudeComputerCommander
This is MCP server for Claude that gives it terminal control, file system search and diff file editing capabilities
导读
本文讲解 ClaudeComputerCommander(Desktop Commander MCP)内置的computer-health-check技能在 Linux 平台上的完整实践:一套无需 sudo、只读的批量采集命令,覆盖系统信息、磁盘容量与健康、内存与 swap、CPU/内存热点进程、电池损耗、启动项、存储热点与待更新包等全部维度。读完本文,你将掌握如何用一条批量脚本采集 Linux 机器健康数据、逐字段解读输出含义、按风险等级打分,并在用户明确批准后安全地执行清理操作。
该技能是三平台对齐设计的:macOS、Windows、Linux 各有一份镜像同类的参考文档,本文聚焦 Linux 命令集,并引用仓库源码印证其底层实现。
技能定位:只读、无 sudo、可解释的健康巡检
computer-health-check是一个面向 Agent 的技能(定义见 SKILL.md),它通过 Desktop Commander 提供的本地持久化 shell(start_process/interact_with_process)运行批量诊断,然后在聊天中输出一份带评分的简明报告,并给出按收益排序的清理建议,每个清理动作都必须经用户明确批准后才执行。
它的安全契约是整份文档的基石:
- 默认只读:采集阶段只观察(容量、计数、状态),不改变任何东西;
- 绝不使用
sudo或提权:Desktop Commander 会拦截sudo、shutdown、reboot、dd、mount、mkfs、diskpart等命令。下面每一条检查都设计为无需提权即可运行;若某项确实需要 root,就跳过并明说,而不是绕过拦截; - 清理必须显式批准:可以自由地建议清理,但只有用户明确批准某条具体动作后才执行,且执行前先展示精确命令;
- 优先可逆、非破坏性动作:清空可再生缓存、清空包管理器下载缓存、清空回收站都是可以提供的;删除用户文档、卸载应用、修改系统文件则只能建议、由用户自己执行。
在 Linux 上,技能的工作流是:先通过get_config读取systemInfo.isLinux(实现见 system-info.ts)或运行uname确认平台,然后只读取匹配的参考文件(即本文所讲的 linux.md),把其中的批量采集脚本用start_process一次性跑完。
批量采集脚本:一条命令跑完所有只读检查
Linux 参考文档的核心是一条整体打包的 bash 脚本。把它作为一个批处理进程运行(而不是拆成几十次小调用),既快又让输出整洁。脚本按== 区块 ==分隔输出,逐个解读如下:
bash -c ' echo "== SYSTEM =="; (. /etc/os-release 2>/dev/null; echo "$PRETTY_NAME"); uname -r; uptime -p 2>/dev/null || uptime echo "== HARDWARE =="; echo "CPUs: $(nproc)"; grep -m1 "model name" /proc/cpuinfo | cut -d: -f2 | sed "s/^ //" echo "== DISK =="; df -h / /home 2>/dev/null | grep -v tmpfs echo "== DISK HEALTH =="; lsblk -d -o NAME,SIZE,ROTA,MODEL 2>/dev/null echo "== MEMORY =="; free -h echo "swap:"; swapon --show 2>/dev/null || echo "none" echo "== TOP CPU =="; ps -eo pid,pcpu,pmem,comm --sort=-pcpu | head -n 8 echo "== TOP MEM =="; ps -eo pid,pcpu,pmem,comm --sort=-rss | head -n 8 echo "== BATTERY =="; for b in /sys/class/power_supply/BAT*; do [ -d "$b" ] && { echo "capacity: $(cat $b/capacity 2>/dev/null)%"; echo "health: $(cat $b/health 2>/dev/null)"; cf=$(cat $b/charge_full 2>/dev/null); cd=$(cat $b/charge_full_design 2>/dev/null); [ -n "$cf" ] && [ -n "$cd" ] && echo "wear: $((100*cf/cd))% of design"; }; done echo "== STARTUP =="; echo "enabled user services: $(systemctl --user list-unit-files --state=enabled 2>/dev/null | grep -c enabled)"; ls -1 "$HOME/.config/autostart" 2>/dev/null echo "== STORAGE HOTSPOTS ==" for d in "$HOME/Downloads" "$HOME/.cache" "$HOME/.local/share/Trash"; do [ -d "$d" ] && printf "%s\t%s\n" "$(du -sh "$d" 2>/dev/null | cut -f1)" "${d/#$HOME/~}" done echo "== PACKAGES ==" if command -v apt >/dev/null 2>&1; then echo "apt upgradable: $(apt list --upgradable 2>/dev/null | grep -c upgradable)" elif command -v dnf >/dev/null 2>&1; then echo "dnf updates: $(dnf check-update -q 2>/dev/null | grep -c .)" elif command -v pacman >/dev/null 2>&1; then echo "pacman updates: $(checkupdates 2>/dev/null | wc -l)"; fi echo "== DONE =="'逐区块字段说明
| 区块 | 命令 | 采集内容与要点 |
|---|---|---|
| SYSTEM | /etc/os-release、uname -r、uptime | 发行版名称(如PRETTY_NAME)、内核版本、运行时长。uptime -p优雅格式失败时回退到uptime |
| HARDWARE | nproc、/proc/cpuinfo | CPU 逻辑核数与型号(model name去掉前导空格) |
| DISK | df -h / /home | 根分区与家目录分区容量;grep -v tmpfs剔除 tmpfs 干扰 |
| DISK HEALTH | lsblk -d | 设备名、容量、是否旋转介质(ROTA)、型号。确认设备存在即可,完整 SMART 需要 root,见下文 |
| MEMORY | free -h、swapon --show | 内存总量/已用/可用;swap 使用情况(无 swap 时输出none) |
| TOP CPU / TOP MEM | ps -eo pid,pcpu,pmem,comm排序截断 | 分别按 CPU% 与 RSS(内存驻留集)排序取前 8 个进程 |
| BATTERY | /sys/class/power_supply/BAT* | 电量百分比、健康状态、charge_full/charge_full_design计算的损耗比;无BAT*则跳过(台式机/虚拟机) |
| STARTUP | systemctl --user、~/.config/autostart | 已启用的用户级 systemd 单元数 + 第三方自启动.desktop文件 |
| STORAGE HOTSPOTS | du -sh | Downloads /.cache/ Trash 三大常见占空间目录,路径显示时将$HOME缩写为~ |
| PACKAGES | apt/dnf/pacman分支 | 按检测到的包管理器统计待升级包数量,只走命中分支 |
注意该脚本的“优雅降级”设计:smartctl、upower等工具可能未安装,或需要 root 才能拿到完整细节——此时跳过该项并如实说明,而不是猜测。每条命令都做了2>/dev/null静默与存在性判断(如[ -d "$b" ]、[ -n "$cf" ]),单条命令失败不影响整体采集,这正是 SKILL.md 中“partial data is fine”的落地写法。
如何解读采集结果
Linux 参考文档给出了四个最关键的判读口径:
- 内存:看
free -h的available列(真实可用余量),以及 swap 的used是否在爬升。高 swap 占用 + 低 available = 🟡/🔴,说明物理内存吃紧、系统正在换页。 - 磁盘健康:
lsblk用于确认设备存在;完整 SMART 检测需要sudo smartctl -H /dev/sdX(跳过——需要 root)。对 SMART 状态应如实报告为“未提权时不可用”,而不是猜一个结论。 - 电池:
charge_full / charge_full_design的比值就是损耗百分比;无BAT*设备(台式机、虚拟机、容器)直接跳过此项。 - 启动项:
~/.config/autostart下的.desktop文件和已启用的--usersystemd 单元,是用户可自主处置的第三方项目,也是清理建议的主要来源。
结合 SKILL.md 的评分细则,各领域按 🟢/🟡/🔴 评级:磁盘可用空间 >20% 为 🟢、10–20% 为 🟡、<10% 为 🔴;电池最大容量 ≥80% 为 🟢、70–80% 为 🟡、<70% 或出现 “Service/Replace” 为 🔴;维护维度看 uptime(<7 天 🟢、7–30 天 🟡、>30 天或待安全更新 🔴)。总分从 100 起算,每个 🟡 减 8 分、每个 🔴 减 18 分,下限为 0;90+ Excellent、75–89 Good、60–74 Fair、<60 Needs attention。电池仅对笔记本计分。
可选深度检查(仅在用户要求时运行)
第一遍巡检默认跳过慢速/联网检查,以下项目按需运行:
journalctl -p 3 -b --no-pager | tail -n 30 # 本次启动以来的错误日志(可能需要相应组权限) du -xh "$HOME" 2>/dev/null | sort -rh | head -n 15 # 家目录下最大的 15 个子目录 ping -c 4 8.8.8.8 # 连通性这些深度检查包括:整机启动错误日志、家目录全盘逐目录扫描、网络连通性,以及 SKILL.md 中提到的网速测试、完整更新列表、崩溃报告趋势分析。它们或慢、或需要网络、或需要额外权限,因此只在用户明确要求时才跑,并如实标注权限限制。
清理命令:只建议、经批准后执行
Linux 文档明确区分“安全可逆”与“需用户自行决定”两类:
- 清空回收站(安全):
rm -rf "$HOME/.local/share/Trash/"*。注意:Desktop Commander 的技能流程要求先展示精确命令、等用户说“是”再执行。 - 用户缓存(安全、可再生):先
du -sh ~/.cache/* | sort -rh | head复核,再清理其中体积异常大的特定条目,避免整目录一刀切删除。 - 包管理器缓存(通常需 sudo,建议而非代跑):
apt-get clean、dnf clean all、pacman -Sc——这些命令通常需要 root,属于“suggest, don't auto-run”一类,SKILL.md 在 Step 5 明确将 Linux 上的apt-get clean/dnf clean归入需要 root 的“建议”清单。 - 系统更新(用户动作、需 sudo):
apt upgrade/dnf upgrade/pacman -Syu。 - 启动项(用户动作):从
~/.config/autostart移除.desktop文件,或systemctl --user disable <unit>。
清理完成后,建议重跑一遍 Step 2 的存储检查来确认实际释放了多少空间——这是文档推荐的收尾验证。
源码级印证:脚本背后的实现机制
这套命令集之所以能安全运行,依赖 Desktop Commander 的几处底层实现:
- 平台识别:system-info.ts 通过
os.platform()判定isLinux,并给出 Linux 下defaultShell = 'bash'、路径分隔符/、家目录示例/home/username,这与 linux.md 面向 bash 的脚本风格一致;容器环境下还会在platformName中追加 “Docker/Podman/Kubernetes” 等标签,便于技能跳过不适用的检查(如电池)。 - 进程与命令执行:批量脚本经
start_process启动,其实现位于 improved-process-tools.ts,执行前会经过 command-manager.ts 的blockedCommands校验(内置sudo、shutdown、reboot、dd、mkfs、diskpart等黑名单)。这与 SKILL.md 反复强调的“绝不使用 sudo、绝不绕过拦截”完全对应——即使脚本里写了apt upgrade,Agent 也只建议不执行,提权类命令根本过不了校验层。 - 进程列表解析:process.ts 的
parsePsAux解析ps aux输出(11 列、COMMAND 从第 10 列起可能含空格需重连),而采集脚本用的是ps -eo pid,pcpu,pmem,comm --sort=...的列式输出——两者互补:脚本用于快速巡检热点进程,list_processes工具则提供结构化的全量进程视图供后续定位。
输出与落地:报告格式与推荐规则
最终交付物是聊天中的一份紧凑报告(SKILL.md Step 4 给出了模板:机型/OS 版本、总分与评定、Storage/Memory/Battery/Maintenance/Startup/Right now 六行 🟢🟡🔴 摘要,再加 3–5 条按收益排序的 Top recommendations)。Linux 上的典型映射包括:uptime 超过 30 天 → 建议重启(最高性价比);磁盘可用低于 15% → 优先列出实测到的最大可回收桶;有大量待升级包 → 升级 + 缓存清理;电池最大容量低于 80% → 说明损耗属正常现象、影响续航时考虑电池服务。
贯穿始终的原则是 SKILL.md 的“Don't assume — measure”:每次都必须真实运行命令并报告真实数字,绝不虚构容量、循环次数或状态;输出要限界(head等);隐私上只读本地系统元数据,不外传。Linux 参考文档与 macOS、Windows 两份姊妹文档保持同构,因此无论宿主是什么系统,最终报告结构都完全一致。
使用前提与限制
- 本命令集面向常见发行版(Debian/Ubuntu、Fedora、Arch)的 bash 环境;包管理器检测按
apt → dnf → pacman分支,其他发行版(如 openSUSE 的 zypper)不会被统计。 - 部分工具(
smartctl、upower)可能缺失或需要 root,采集时会优雅跳过并如实标注“未提权不可用”。 - 清理动作中所有需要 root 的命令(包缓存清理、系统升级)都只能建议,由用户在终端自行执行。
- 技能依赖 Desktop Commander 的本地持久化 shell;其安装与配置方式见仓库 README.md 与 插件目录。
- 人工智能
- MCP 服务
- AI Agent
- 开发工具
【免费下载链接】ClaudeComputerCommander
This is MCP server for Claude that gives it terminal control, file system search and diff file editing capabilities
相关推荐
MicroPython machine.Timer 定时器全面指南:虚拟与硬件定时器、周期回调与中断上下文
MicroPython machine.Timer 定时器全面指南:虚拟与硬件定时器、周期回调与中断上下文 machine.Timer 是 MicroPytho
人工智能MCP 服务AI Agent开发工具Engram doctor:一键诊断AI记忆健康,只读检查与安全修复完整手册
Engram doctor:一键诊断AI记忆健康,只读检查与安全修复完整手册 Engram 是面向 AI 编码代理的持久化记忆系统(Go 编写的二进制,内置 S
Agent 记忆MCP 服务AI 应用人工智能DLSS Swapper一键切换DLSS版本
DLSS Swapper一键切换DLSS版本 游戏刚打完补丁,你发现社区都在聊新版 DLSS(NVIDIA 的深度学习的图像增强技术)画质更好,但你手里这份游戏
桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考