惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
Cisco Talos Blog
Cisco Talos Blog
MongoDB | Blog
MongoDB | Blog
IT之家
IT之家
N
News and Events Feed by Topic
博客园 - 叶小钗
Help Net Security
Help Net Security
美团技术团队
Attack and Defense Labs
Attack and Defense Labs
雷峰网
雷峰网
S
Security @ Cisco Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
AI
AI
Hacker News: Ask HN
Hacker News: Ask HN
T
The Blog of Author Tim Ferriss
Security Latest
Security Latest
Last Week in AI
Last Week in AI
S
Secure Thoughts
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
A
Arctic Wolf
Y
Y Combinator Blog
MyScale Blog
MyScale Blog
Cyberwarzone
Cyberwarzone
酷 壳 – CoolShell
酷 壳 – CoolShell
S
SegmentFault 最新的问题
罗磊的独立博客
Vercel News
Vercel News
D
DataBreaches.Net
博客园 - 聂微东
P
Palo Alto Networks Blog
N
News | PayPal Newsroom
GbyAI
GbyAI
B
Blog
A
About on SuperTechFans
PCI Perspectives
PCI Perspectives
S
Schneier on Security
Apple Machine Learning Research
Apple Machine Learning Research
I
InfoQ
The GitHub Blog
The GitHub Blog
P
Privacy International News Feed
Blog — PlanetScale
Blog — PlanetScale
博客园_首页
T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News

张洪Heo

给 SearXNG 接入豆包搜索,解决 OpenClaw 信源难题 OpenClaw记忆系统升级:从memory-core到memory-lancedb-pro的迁移与配置 screenpipe:开源本地的 AI 记忆引擎,让电脑更懂你 混元hy3模型上手:腾讯送了云函数个人版6个月,怎么才能用上 豆言豆语Skill发布:让AI学会豆包的毒舌说话风格 美团longcat上手:缓存免费,主打便宜,就是速度太慢,思考时间looooong OpenClaw Workboard 功能上手:让 Agent 自己干活,你只管盯进度 小米平板8Pro上手:便宜且流畅的好平板,安卓平板的高效令人印象深刻 洪绘动图发布:将视频转换为帧图或者GIF并且限制只有5MB,APNG、WEBP动图生成工具 AI支付宝上手:内容全靠编,出问题甩锅给商家,付款快退款难 重要照片一定要备份,手机养成照片备份的好习惯 HeoSticker3D发布:3D形态的Heo表情,个人免费使用 这才是我心目中AI博客的样子 洪绘历史记录大更新:支持根据历史记录的AI对话 如何让OpenClaw调用你的百度网盘?百度网盘官方Skill帮你上传、下载与分享 如何判断一个文章是不是AI写的?文字、视频、图片AI检测方法 分享一下我现在都在使用哪些AI工具,以及我的的AI生产力状况 为OpenClaw搭建一个免费的搜索引擎,如何让OpenClaw搜索网页内容 这一次,我们听点有意思的 为啥别人用Image2做的图那么好看?我的却特别丑?如何模仿别人的风格作图? 如何给自己创作的歌曲生成歌词文件?手打逐字歌词lrc文件教程 免费可商用字体推荐:寒蝉端黑宋下载 洪绘响度发布:测量视频LUFS工具,并支持转换视频到指定LUFS 中国传统色上线!快速寻找和使用具有文化气息和韵味的中国传统色 如何将小米CodingPlan的Mimo模型接入到OpenClaw 洪绘切图发布!如何将一个图片平均切图?按照固定距离或者网格切图? 让UPS接入OpenWrt软路由,创建UPS NUT服务器教程 ChatGPT Image-2 上手:杀死比赛!设计师这下子真的可以解放双手了 龙虾与微信聊天记录结合:群内容总结、整理和提取关键内容实在是太方便 洪绘压图发布!批量转图片格式,批量压缩图片工具(Mac/Windows) 视频压缩软件 CompressO 3.0 MacOS 免费汉化版下载 我将我最初接触 Vibe Coding 的飞机大战重写了,飞机大战2.0登场 如何让OpenClaw控制智能家居,OpenClaw连接HomeAssistant教程 抖音iframe代码生成器:将抖音链接转为可嵌入网页的iframe代码 Apple Watch + AirPods 真实体验分享:那些意外里的小惊喜与小教训 使用 Magsafe 磁吸保护壳,但是磁力比较低,怎么办 OpenClaw喧嚣过后,我最终选择了QClaw 洪绘存图发布:保存浏览器图片为指定格式、提取网页所有图片、屏幕截图插件 洪绘星空发布:一个值得逛的博客友链朋友圈 腾讯QClaw上手:打通微信很方便,但是性能上略有不足 阿里 JVS Claw 上手:都这么多天了,养虾的门槛被打下来了吗? 洪绘图标助手更新:获取应用图标、将你的图标对mac进行适配 超级制图上手:图片上的文字如何用AI修改?无痕改字一键出图 用虚拟机养龙虾,在Mac上通过Lume使用虚拟机的隔离环境安装OpenClaw 如何创作AI歌曲?从生成歌词、歌曲创作、专辑封面到音乐发行 洪绘历史记录发布!无限存储你的浏览器历史记录,防止历史记录被自动删除 红包封面:祝大家新的一年发大财啦! 如何将 FinalcutPro的fcpxml文件转换为srt字幕?导出srt字幕方法 如何免水印下载豆包生成的图片?豆包AI图去水印,无水印下载 Mac中罗技鼠标键盘近期失灵问题解决方法,Logi Options 打不开
给OpenClaw加上rm删除保护:防止AI误删你的整个电脑
张洪Heo · 2026-07-07 · via 张洪Heo

这篇文章介绍了如何给OpenClaw加上rm删除保护,防止AI误删整个用户目录。起因是OpenClaw执行清理任务时跑了一行rm -rf ~/,导致用户主目录被递归删除。通过在.zshrc中定义rm函数实现两层防护:危险路径拦截和受保护目录精确匹配,同时所有递归删除自动转为trash废纸篓恢复。

本来一开始没想写这个文章,因为有点过于丢人了。但是我之前一直推荐大家用OpenClaw,我都翻车了还是本着负责任的态度说说。

之前有个事故,OpenClaw 在执行清理任务的时候跑了一行 rm -rf ~/,没加引号,Shell 直接把 ~ 展开成 /Users/zhheo/,然后整个用户目录就开始被递归删除。

玩梗的段子回旋镖来了

等我发现的时候,Desktop、Music、Pictures 这些文件夹已经没了。好在有极空间 NAS 的 Syncthing 同步,大部分文件恢复了回来,但那个心惊胆战的感觉是真的不好受。

所以这次我给 .zshrc 里的 rm 函数加了一层硬保护。

两层防护

第一层:危险路径拦截

不管你是 rm -rf ~/ 还是 rm -rf /Users/zhheo,只要目标是用户主目录,直接拦截不执行。Shell 展开 ~ 之后变成绝对路径,函数里有一份危险路径黑名单,命中就报错退出。

第二层:受保护目录

Desktop、Documents、Downloads、Music、Movies、Pictures、.ssh、.openclaw、.config 这些目录,rm -rf 直接拦截。精确匹配,rm -rf ~/Music 会被拦。

其他递归删除(比如 rm -rf ~/Music/some_folder)不会被拦截,但会自动转成 trash,文件进废纸篓可恢复。只有非递归的单文件删除才走系统原生 rm

怎么实现的

.zshrc 里定义了一个 rm() 函数,覆盖系统的 rm 命令。逻辑很简单:

1
2
3
4
5
6
7
rm() {





}

递归删除全部自动转 trash,文件进废纸篓还能恢复。只有非递归的 rm(比如删单个文件)才走系统原生命令。

测试结果

1
2
3
$ rm -rf ~/
🚫 危险操作已拦截:rm /Users/zhheo/
这会删除整个用户目录!
1
2
3
$ rm -rf ~/Music
🚫 受保护目录,禁止递归删除:/Users/zhheo/Music
如需删除请用 trash 命令手动操作

要加减保护目录的话随时说,改 .zshrc 就行。

把下面这段加到你的 ~/.zshrc 里就行(代码仅适用于mac,建议发给你的龙虾帮你添加代码,因为代码可能需要根据环境定制修改)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

rm() {
local has_recursive=false
local files=()
for arg in "$@"; do
case "$arg" in
-r*|-R*) has_recursive=true ;;
-f*|-i*|-v*|-I*) ;;
--*) ;;
-*) ;;
*) files+=("$arg") ;;
esac
done


local protected_dirs=(
"$HOME/Desktop"
"$HOME/Documents"
"$HOME/Downloads"
"$HOME/Music"
"$HOME/Movies"
"$HOME/Pictures"
"$HOME/.ssh"
"$HOME/.openclaw"
"$HOME/.config"
)
if $has_recursive; then
for f in "${files[@]}"; do
for pd in "${protected_dirs[@]}"; do
if [[ "$f" == "$pd" || "$f" == "$pd/" ]]; then
echo "🚫 受保护目录,禁止递归删除:$f" >&2
echo " 如需删除请用 trash 命令手动操作" >&2
return 1
fi
done
done
fi


local dangerous_paths=(
"/Users/zhheo"
"/Users/zhheo/"
"$HOME"
"$HOME/"
"/"
"/root"
"/home"
)
for f in "${files[@]}"; do
for dp in "${dangerous_paths[@]}"; do
if [[ "$f" == "$dp" || "$f" == "$dp/" ]]; then
echo "🚫 危险操作已拦截:rm $f" >&2
echo " 这会删除整个用户目录!" >&2
return 1
fi
done
done

if $has_recursive; then
for f in "${files[@]}"; do
trash "$f" 2>/dev/null || echo "⚠️ 无法移到废纸篓: $f" >&2
done
else
command rm "$@"
fi
}

protected_dirs 里可以加你自己的目录,比如项目文件夹、数据库目录之类的。改完跑 source ~/.zshrc 就生效。

头像背景Guli形象

张洪Heo

分享设计与科技生活

本文使用AI辅助创作,采用 CC BY-NC-ND 4.0 协议,转载请注明出处。