阅读视图

记录一下我因为懒导致六天被入侵三次的经历

感谢订阅陶其的个人博客!

我有一份兼职,目前处于运维状态。

因为我的懒,导致上周被入侵了三次。

第一次

1、入侵警告

事情开始时间是2025年03月18日,周三。

老板(他有阿里云主账号)在群里发,接到阿里云安全警告短信,说是我使用的RAM账号的AccessKey泄露了,检测到对云资源有异常试探访问记录。

我赶紧登录我的RAM账号,因为我的RAM账号被授权几乎所有权限,所以一开始我并没有登录老板的主账号。

我登录之后,看了一眼告警日志,说是我这个RAM账号的一个AccessKey泄露了,对方(后面称为黑客)使用这个AccessKey去试探性访问云资源的一个接口,去获取基本信息,属于中低危警告。

我一时有一点懵,我有点纳闷,并不清楚这个AccessKey怎么突然泄露了。

因为这个AccessKey只在下面几个地方存在:

  • 我自己电脑的项目里;
  • Gitee私有代码仓库;
  • 测试服务器部署的jar里;
  • 生产服务器部署的jar里。

可以说保护的算不错来了,应该并没有泄露的可能,然后我检查了一下:

  • 我电脑里有360,我也扫描了一下,没发现电脑被入侵的记录。
  • 检查了一下Gitee账号,发现没有其他异常IP地址登录和异常动态,我也把密码改了,之前授权但是不用了的Token也被我删除了。
  • 那最大的可能就是从测试服务器或者生产服务器泄露的。

因为这个AccessKey涉及到好几个生产项目的使用,这些项目需要一直保持可运行状态。

被中低危警告的级别迷惑了的我,想着先申请一个新的AccessKey,把所有测试环境项目和生产环境项目的AccessKey都替换之后再去禁用这个泄露的AccessKey。这样那些生产项目只需要经历2-3分钟重启停服,问题不大。正好这个AccessKey也已经使用9个月了,早就该换了。

2、被黑客创建高权限RAM账号

结果正在我按部就班愉快的更换项目代码里Accesskey时,老板又发了一条信息,说阿里云发警告短信,说泄露的AccessKey正在创建新的高权限的RAM账号。

?(此处应该有:黑人问号脸.gif)

发生了什么?这次这么刺激的么?

然后等我从项目代码切回阿里云操作界面时,我发现我的RAM账号被退登了(被踢了)。

我以为是长时间没操作,登录过期了,当我再尝试登录的时候,登录界面弹出提示:当前账号不允许RAM用户登录,请使用主账号登录联系客服。

一开始我没仔细看到“联系客服”,心里卧槽一声,我这个账号不会被黑客删了吧,对方不会已经拿到主账号的权限了吧。

我的RAM账号不能用了,我又想到对方还创建了一个高权限的RAM账号。

我赶紧问老板要他的手机号码和验证码登录主账号。

结果老板在忙,不回我消息,电话也直接挂断。

在遭到我的消息轰炸之后,老板终于把验证码发了过来。

经历好久终于登录上主账号,那时候心里特别忐忑,千万不要动云资源和服务器数据库啥的呀,如果被勒索了,这兼职铁定完了。

此时阿里云的顾问也打来电话,说账号疑似被入侵了,我说我正在处理了,不得不说阿里云的安全嗅探和提醒机制是真🐂🍺。

3、紧急处理

所以等我登录上主账号之后,我第一时间查看RAM列表,然后把对方创建的RAM账号给禁用并删除了,然后我赶紧把我RAM账号的AccessKey给禁用了,防止对方再搞事情。

这个时候已经顾不上线上系统服务会不会崩了,先和对方对完线再说。

等都禁止的差不多了,我才去看操作日志,看一下对方都做了些啥,看看有没有什么损失,赶紧处理或者修复。

然后我就看到,对方一开始在使用我的RAM账号的AccessKey去试探访问各种账号或者云资源的API接口,然后就用这个Accesskey自己创建了一个高权限RAM账号。

因为我当初为了省事,直接给我自己的RAM账号赋予了主账号几乎所有权限,然后在创建AccessKey时,不想一个一个勾选,索性也直接赋予所有权限了。

4、阿里云🐂🍺

但是庆幸的是,当对方创建了高权限RAM账号之后,触发了阿里云安全限制,直接禁止这个主账号下所有RAM账号登录。所以我看到了对方登录自己创建的RAM账号的控制台时,提示操作失败。

因为用一个RAM账号的AccessKey去创建另一个高权限的RAM账号,这个接口不仅是高敏结构,这个操作本身就很反常,因为创建RAM账号基本都是主账号或者在控制台操作,几乎很少会是RAM账号的AccessKey去创建另一个高权限的RAM账号。

主要是此时,我们并没有购买阿里云的安全服务和防火墙之类的安全产品,纯阿里云自带的免费基础安全服务在顶。

此处我只能说:阿里云🐂🍺

我的RAM账号也是被阿里云禁止登录的,直接禁止了所有RAM账号登录控制台,所以黑客没有成功登录自己的RAM账号,但是RAM账号下属的AccessKey还能用,所以我直接把泄露的AccessKey给禁用了。

5、排查处置

然后经过我细细的排查,发现黑客只进行了一些查询操作和创建账号的操作,并没有对云资源和其他东西做出增删改的操作。

黑客是使用徐州的一个代理服务器进行入侵的,IP地址:49.68.57.93。

虽然我这边阿里云限制了常用登录地址是徐州,结果对方的IP地址就是徐州,这个正好放过去了。



此时,各项目服务还处于停服的状态。

所以我赶紧更换项目的AccessKey为自己新申请的AccessKey,先恢复项目服务再说。

我把所有项目的已泄露AccessKey都换成新的AccessKey并恢复运行之后。

6、入侵原因解析并处理

我开始排查泄露原因,不然对方还是能通过泄露渠道再次拿到AccessKey的。

因为之前简单排查过,大概率是从测试服务器或者生产服务器泄露的。

这两个服务器的账号密码,我们保护的也挺严格的,应该不是账号密码问题。

所以我就先从漏洞方面考虑。

果然在排查期间,发现对方就是从测试服务器的Redis的一个漏洞入侵的,然后一步一步提权,然后访问系统里的jar文件,解析到里面的AccessKey,才导致的AccessKey泄露的。

我看了一下,服务器里部署的Redis Server版本是6.2.6,这个版本有一个高危漏洞,可以通过漏洞逐步提权到root账号级别。

果然,我赶紧把测试服务器和生产服务器的redis版本从6.2.6升级到6.2.20(安全版本),之所以没有升级到最新的安全版本,是因为老项目了,能不动就不要大动,小版本升级更保险一些。

然后我在Redis版本升级之后,还检查了一些服务器里有没有新增异常的账号,以及root近期登录日志啥的,以及那个入侵的IP地址在服务器有没有其他操作啥的,结果没有发现异常。

我想着此次危机应该是度过了,就结束了运维。


第二次

本来我以为入侵事件就这么结束了,毕竟我已经把漏洞都给修复了,而且排查了对方没有在服务器里留东西,测试和生产服务器的root的密码我也换了。

结果打脸来的如此之快。

因为我的懒惰,并没有做过多的防御设置,结果就是再次被入侵了。

1、再一次被入侵,破防

时间发生在2026年03月21日,那天是周六。

估计是对方想着,这天是周末,应该不会被发现的那么快,即使发现了也不会处置的那么快。

但是黑客应该没有想到,我主职是上六休一,我那天上班,所以接到老板的消息之后就立即着手处置。

想利用我休息时间偷袭我,没想到我周六也上班吧,哈哈呜呜呜呜~

我特么周六上班,还被黑客入侵。

焯!毁灭吧。

言归正传。

我发现又是通过这个RAM的AccessKey泄露导致的,而这个AccessKey是前两天刚换的新的AccessKey。

我擦,怎么又泄露了。

2、紧急排查

有了上一次经验之后,我在他还在进行查询一些权限接口的时候,第一时间封禁了这个AccessKey。

项目停就停吧,先保命。

我禁掉AccessKey后,就开始着手排查,是不是服务器还存在漏洞,结果发现没有了。

因为我其实对运维,特别是安全方向的运维并不熟悉,所以我让AI给我生成一堆全面检查CentOS系统的检查入侵的命令,我还把黑客的IP地址也给AI了。

然后我使用AI给我的命令一条一条的排查。

果然发现了端倪。

在测试环境的MySQL中,发现了这个IP地址的几条长链接。

淦!

他没在系统里留后门和木马,他在MySQL里留了长连接,然后潜伏几天之后悄悄摸摸进行账号提权,再一次拿到了新部署的jar包,解析到了新的AccessKey。

淦!

上次升级了Redis的版本,检查了服务器层面,修复了漏洞,结果偏偏漏掉了MySQL,其实也不算漏掉,我想着MySQL版本是安全的,所以就没在意。

3、紧急处置

我赶紧把所有异常的MySQL链接全部杀死,然后更换MySQL的密码和端口。

又排查了一遍测试服务器里所有的异常链接、定时任务之类的可能留后门或者木马的地方。

而且这次我直接在测试服务器的防火墙里封禁了这个黑客的IP地址。

我不知道我的RAM账号本身是不是也出现了问题。

我直接问老板要来了主账号,又重新创建一个RAM账号,把之前的RAM账号连带泄露的AccessKey都删除了。

然后用新的RAM账号,重新申请了AccessKey。

这次我留了一个心思,我创建了两个AccessKey,然后分别用在测试环境和生产环境的项目配置文件里。如果万一后面再出现泄露,我好知道是哪个服务器泄露的。

然后在项目打包构建jar的时候,让不同环境仅能把自己环境的配置文件打进去,其他环境配置文件不会打进jar包。之前我都是直接打,一个jar里包含所有环境的配置文件。

4、自我感觉良好

然后我感觉我应该处理完了。

排查了Redis和MySQL、排查了系统层面的链接和日志、更换了RAM账号和AccessKey,并且分环境打包。

于是我结束了这次的处置。

但是世事无常,大肠包小肠。


第三次

时间是2026年03月23日上午,周一。

仅仅过去一天,接到老板的消息,新RAM账号的新AccessKey再次泄露。

MD!

没完了,盯着我打。

我上RAM账号,查了一下,是生产服务器的AccessKey泄露的。

我特么,淦!

他是怎么进到生产服务器的。

1、全面处理

倒不是说生产服务器是内网,而是jar包里就没有生产服务器的IP地址,后面我才想明白,可能是之前黑客通过访问阿里云的API查询接口,拿到了云服务器的信息,所以才被入侵的。

上次我只封禁了测试服务器的防火墙对这个IP的禁止访问,忘了生产了,想着他也没有入侵成功生产,生产服务器的MySQL、Redis、系统日志都没有显示被异常访问过,没有异常链接,就忘记封禁了。淦!真的一点懒都不能偷。

我又第三次的封禁了AccessKey,我担心另一个测试服务器用的AccessKey也泄露了,索性两个都禁用了。

因为,一个RAM账号只能同时有两个AccessKey,我又申请了一个RAM账号,用新RAM账号申请的两个AccessKey重新替换。

在替换之前,我还做了一些操作。

  • 关闭阿里云生产服务器的MySQL的远程连接;
  • 关闭阿里云生产服务器的Redis的远程连接;
  • 在阿里云的安全组里限制测试服务器MySQL的端口访问IP仅为我当前所在的动态IP;
  • 在阿里云的安全组里限制测试服务区Redis的端口访问IP仅为我当前所在的动态IP;
  • 在阿里云的安全组里限制生产服务器和测试服务器的22端口访问IP仅为我当前所在的动态IP;
  • 对最新RAM账号新申请的两个AccessKey做网络访问限制,用于测试的AccessKey只能通过测试服务器IP访问,用于生产的AccessKey只能通过那几台生产服务器的IP访问。
  • 在测试服务器和生产服务器,全面禁止黑客的IP地址访问;
  • 更换测试服务器和生产服务器的MySQL和Redis账号密码;
  • 把测试服务器和生产服务器的root账号的SSH连接登录方式,从账号密码改成公私钥证书登录,然后禁用账号密码登录;
  • 把测试项目和生产项目的配置文件中的AccessKey都做成了环境变量,Key值存放在系统的文件中,项目本身不自带密钥;

这样,直接进行了AccessKey的固定IP访问、服务的指定动态IP访问(我每次想要远程连接这些服务,都要登录阿里云账号进行当前所在IP地址的临时授权)、服务器登录方式的变更。

说实话,第三次的AccessKey的泄露,我并没有查到从哪里泄露的,实在是没有一丁点头绪,但是我把能封禁的或者能限制IP的地方都限制了。

现在即使黑客拿到了AccessKey也无法进行任何操作,因为这些AccessKey只接受来自我允许的服务器IP地址的访问,而服务器层面也做了加固和防御。

然后我还针对我的RAM账号进行了权限收缩,解除了一些不必要的高权限授权。

所以,这次应该能真正的结束了…吧。

真的,心累了,真不能偷懒。

我之前就是想偷懒,不想每次登录服务器或者使用服务都要登录阿里云进行IP授权,才直接放开所有IP都可访问的,大忌啊!

喜欢记录一下我因为懒导致六天被入侵三次的经历这篇文章吗?您可以点击浏览我的博客主页 发现更多技术分享与生活趣事。

  •  

局部有雨

春天到了,又到了万物复苏的季节。小草也从土里钻出了头,露出了点点的绿色。树上的花也开始绽放,虽然没有绿叶的衬托,倒是也别有一番韵味。

每个周末,都大同小异。跟上班一样,也没有什么特别的,与渐渐生机勃勃的春天比起来,似乎有些过于平淡了。每周依然是带着宝子上课,上课,剩下偶尔有那么一点时间,也不能走的太远,只能周边小范围的溜达溜达。

宝子现在上课不太需要自己去帮忙了,至少能隔网之后,不用自己跟着去抛球了。这样就有点时间可以继续跑步了,围着网球场一圈一圈的跑。

不过相比操场的400米跑道,这一圈一百多米跑起来感觉更累,感觉跟拉磨的驴一样。

周日上午的网球课推迟到了十一点,早上早点起来,宝子嚷嚷着去公园,我嚷嚷着去轮渡。当然,公园是上午去,轮渡是下午去。对象再次征求宝子的意见,得到的答复是两个都去。

急忙吃完东西,开车去公园。上车之后发现前挡风玻璃上面有点雨点,想着是不是要下雨,跟宝子说,下雨了可能。她表示怀疑,没感觉到雨点啊。不过既然没感觉到,那就去公园吧,一路上虽然天依然阴沉,刚停好车,拉开车门的瞬间,一阵大雨落了下来,赶忙重新钻进车里。前后不到五秒中的时间,就让这场公园之旅化为了泡影。

回家之后,宝子在家换上轮滑鞋,来回溜达。想着,既然下雨了,应该网球课也停了吧,然而等到十点半依然没消息。既然如此,那可能市北没有下雨吧。一路上天变得越来越晴朗,到了学校之后依然是一篇艳阳天。

下课去学校餐厅吃点东西,下午就可以去轮渡了。

虽然是中午的饭店,想找个空位置还是蛮方便的,买了两碗麻辣烫,没有小碗。去隔壁的卤肉饭要了个小碗。餐厅门口从外面能感受到吹进来的真真的凉风。吃完饭,到了室外反而变得更加的温暖,与餐厅的温度完全不同。

一路小道辗转到环湾大道,路况还是比较畅通的,半个小时就到了轮渡停车场。怕找不到停车位,在入口找了个空塞了进入。往里走,大约100米发现内部竟然有一个大的停车场,并且还有大量的空位。

候船厅入口,写了一些方言的标语。

虽然购票的时候显示有场次,但是实际买的时候,就是看人数,人够了就发船。感觉到了县城做镇上的客车的感觉,流水车,流水船。检票的时候会给一个油条,这个油条并不是给游客吃的,是给海鸥吃的。

这个码头,在海底隧道和跨海大桥开通之后就已经停了好几年,这两年才又重新开放,用来做海上观光。成人票两个人90,宝子2块,价格还是蛮合适的,海上50分钟的观光,说可以看到跨海大桥。

检票上船,刚找地方坐下,就有工作人员开始喊,大家可以去喂海鸥了。喂海鸥只能在一楼,二楼是观光区域,油条投喂完之后可以上二楼。带着宝子来到船尾,大家都在那里观望,也不知道在等什么,我扔了一块油条出去之后,马山就有无数的海鸥飞过来开始争抢。大家也跟着开始往海里投喂。

发船之后,海鸥依然跟着游船,甚至能感受到海鸥翅膀煽动的时候,甩出来的水滴。

还有跟着游船一直来回盘旋,不断的争抢从游客手里抛出的油条。

当然啦,如果足够大胆,也可以直接用手拿着让海鸥去吃。

不过,这天气稍微微差点了,大约半小时不到,就开始掉头返航了。说好的看跨海大桥呢?海面的能见度并不算高。只能隐约看到一个轮廓,远处的货轮也一样,飘渺。

回港之后,依然能看到很多人在等着检票。如果五点多应该能看到海上的日落,很多人也在等那个最好的时间。

海上的冷风吹来,单穿一条牛仔裤还是冷了点。

好在没有因为家里的一场雨而不出门,毕竟其他的地方是一片艳阳天,不过局部有雨。

  •  

m3u8 downloader v26.03.28

基于 ffmpeg 的 m3u8 / 归档页解析下载工具,支持单链接、批量 CSV/文本、自定义输出目录与 ffmpeg 路径。

参数 说明
-i 输入:直链 m3u8、含 archives 的归档详情页、或带 cms_player 的播放页;也支持 .mp4 / .avi / .mov / .mpeg 直链(走 HTTP 分段下载,非 ffmpeg)
-o 输出文件名(自动补 .mp4);对部分模式用于覆盖默认标题名
-p 输出目录;可为本机路径或 UNC(如 \\服务器\共享\目录
-f 批量输入文件:.csv 或纯文本(每行一个链接)
-m 指定 ffmpeg 可执行文件路径

注意: 必须提供 -i 或 -f 之一。

单条示例

python m3u8_downloader.py -i "https://example.com/video.m3u8?token=xxx" -o myvideo -p D:\Videos

 

批量 CSV

 

  • 编码建议 UTF-8(含 BOM 亦可),表头需包含列 link;可选列 name(用于在部分逻辑里拼接输出名后缀,空单元格按空字符串处理,不会出现 nan 文件名)。
  • 会跳过空的 link 或内容为 link 的占位行。
  • 按行 顺序执行:上一任务结束(含 ffmpeg)后才会处理下一行。
python m3u8_downloader.py -f list.csv -p "\\192.168.1.12\media\Videos"

 

纯文本列表

 

每行一个 URL,行为与逐次 -i 类似;可通过 -o 传入统一输出名(视链接类型而定)。

功能说明

 

链接类型与行为

 

  1. .m3u8 直链
    使用 ffmpeg 拉流并 remux 为 .mp4-c copy)。
  2. URL 中含 archives(归档站 / bl05 类页面)
    请求页面,解析多个 div.dplayer 的 data-config,得到多路 m3u8;按路依次下载,文件名一般为 页面标题 + 序号,并经 safe_mp4_filename 净化。
  3. 其它播放页(非 archives)
    解析 var cms_player = {...} 的 JSON,取 url 作为 m3u8,再走 ffmpeg。
  4. .mp4 等直链
    使用 requests 分段下载(file_download.download_from_url),带 tqdm 进度条,不经过 ffmpeg

页面编码

 

抓取 HTML 时依次尝试 UTF-8 → UTF-8-sig → gb18030,减轻标题乱码。

输出文件名

 

  • 去除 Windows 非法字符,过长截断并可带 crc 后缀兜底。
  • 对「UTF-8 被误当成 latin-1」类乱码标题做启发式纠正(日志中可能出现 [F] 标题疑似 UTF-8/latin-1 乱码,已尝试纠正)。

覆盖策略

 

  • 若目标 .mp4 已存在os.path.isfile),跳过该次下载。
  • 调用 ffmpeg 时带 -n:不在终端交互询问覆盖;若因路径编码等导致检测不一致,ffmpeg 侧也会拒绝覆盖而非静默覆盖。

本地 m3u8 文件

 

-f 指向 .m3u8 / .m3u 时,当前代码分支为占位(pass),尚未实现。

目录说明

 

路径(相对程序目录) 用途
bin/ffmpeg.exe Windows 打包/放置 ffmpeg 的常见位置
download/m3u8_files 内部与 make_dir 相关的子目录逻辑
download/mp4 未指定 -p 时的默认输出目录

下载地址:

https://www.123912.com/s/ucY7Vv-njQAA?pwd=HwGK#

  •  

两岁半小棉袄的快乐时光

 闺女在家向来能睡到十点多才起床,今天一大早刚醒就打来了视频。洗漱完之后,便跟着妈妈在梳妆台前有模有样地学化妆,小模样认真得很。

 不由得感叹,现在的小孩子真是聪明,接触新鲜事物也早。这才不到三岁的小家伙,做起事来常常透着一股小大人的模样,不像我们小时候,六七岁还在玩泥巴。
 奶奶给她做好吃的,她会竖起大拇指,按在奶奶额头上,奶声奶气地夸:“奶奶真棒,给你点个赞。” 穿衣服也讲究搭配,尤其偏爱小裙子,买衣服时必须让她自己挑,不喜欢的连试都不肯试,看上的便攥在手里不肯撒手。晚上妈妈搂着她睡觉,她会软软地说:“妈妈抱,爱妈妈。” 嘴甜的时候,心都要被她融化了。
 当然,撒泼耍赖的时候也毫不含糊,满地打滚、鬼哭狼嚎,真是让人又气又笑。可转念一想,孩子嘛,不哭不闹反倒不正常了。
 原本打算过完年送她去幼儿园适应一下,去学校一问,年龄太小人家不收,加上之前还不会自己上厕所,便作罢了。最近天气暖和,她才慢慢学会自理,干脆再玩几个月,等下半年满三岁再正式入园。
 前些天刚学会用筷子,之前一直用辅助筷都不太会,换成正常筷子,反倒用得有模有样。说来惭愧,我到现在都握不好标准的拿筷姿势,跟她一比还不如个小朋友。
 就让她好好享受这最后几个月无忧无虑的春日时光吧,等秋天,再正式开启她的小小 “修炼之路”。
[vplayer url="https://img.hxy.cc/file/blog/260329-2suiban2.mp4" /]

  •  

注册两个免费域名玩玩

 前两天看见军爸发的可托管CF的免费域名注册,本来是没需求的,昨天晚上收到了西部数码发过来的邮件,唯一闲置的域名也被一口价出掉了,那就没有闲置域名了,主要想要一个域名用来做博客站的境内外分路解析,用作CF的SAAS的中转域名,通过军爸的链接注册了一下,可以免费注册两个前缀,其实就是一个二级域名,主要是可以作为一个独立域名托管在CF上,刚好可以满足这个需求,省的再去单独注册一个域名了,注册好之后托管在彩虹的NS域名管理程序,到时候1年到期会有提醒,挺好。

 原本手里的域名和服务器该卖的卖,该丢的丢,现在就剩两个域名和一个虚拟主机了,不再购入新的了,说不定有朝一日也转去静态博客,虚拟主机也不要了。

  •  

简单的快乐

过年的时候买了两条牛仔裤,虽然是过年买的,但是有一条却并没怎么穿。主要是因为那是一条洞洞裤,穿洞洞裤里面穿的太厚了总是感觉有些奇怪。

洞洞裤最好的搭配可能就是薄裤袜或者光腿了,有时候总是看到什么各种短视频,见男朋友的最高礼仪-裤里丝。

不过可能更多男生喜欢的是黑丝吧。老妈看着自己的裤子,还以为是穿破了。用手指扣进去扣了一下,转头问我:『裤子坏了,你还不扔了?买不起裤子了吗?要不我给你缝一下?』

她总是说,你俩挣得也不少啊,买个东西扣扣搜搜的。多买几条裤子不行啊,别买那些几十块钱的鞋,太烂了。

有时候不得不承认,我的快乐就是来源于那些便宜的小玩意儿,哪怕穿几天坏了,扔了都不心疼。不过买东西的时候,宝子和她姥姥的眼光的确毒辣,给她们买衣服买鞋子,总是一眼就能相中那个最贵的。至于自己的日常穿搭,一百块钱的牛仔裤,500的鞋子,两百的衬衣,600的外套。内搭就不算了,这几本就是全部了,但是这些东西能穿好久,尤其是外套已经穿了好几年了。

有时候去逛街其实也不知道要买什么,就是纯粹瞎逛,基本也不会买什么衣服。等到换季的时候,偶尔买那么一两件。或者干脆从网上买,两百块钱买好几件,喜欢的留下,不喜欢的退回去。

周末带宝子去吃米线的时候看到的那家牛杂店,终于前天没忍住还是去了。看了一眼没地方停车,把车停到了对面充电停车场,于是在一片电车中间,混进了一辆纯油车。进入店里,虽然是午饭时间,店里只有两个大哥。

盯着菜单看了好久,才看到纯牛杂,小份35。

又要了一个肉夹馍,一瓶可乐,一共51块。等了半天,终于上了,不得不说,这小份真的不大的样子。刚开始害怕吃多了,影响自己减肥,后来才发现是自己想多了。

而至于味道,也没吃出小时候的味道。吃完出门给对象发消息说,『我去吃周末看到的那个店里的牛杂了,味道没有自己预想的那么好。』

发完消息,等红灯,过马路,这时候看到停车场的告示牌上写着:『中午11点-下午2点,充电高峰期禁止燃油车入内……』

这我往里进的时候自动放行了,也确实没注意,赶紧上车准备开走。这时候手机响了一声,拿起来看到一条微信消息:『那你以后还会再去吗?』

迟疑了一下,我回复:『不会去了,还不如我自己从二手东买处理好的,我自己煮。』

下午,从二手东买了之前看的牛杂,127三斤。

到了晚上依然是少吃,运动。白天走的少了,晚上就多跳几个,白天步数多的时候就可以少跳几个,目标就是凑够一万步。

跳习惯了之后,其实至于现在三千,五千,还是七千,感觉区别都不大,唯一的区别也就在于时长了。有时候跳完感觉还是有点紧绷的感觉。

偶尔也想能全身再按一下,上次按摩应该还是去年十月份左右吧。转眼快半年了,早上从高德上扒拉了半天,找到一个相对来说看着还算可以的。

最起码那个名字看起来还满顺眼的。

鉴于第一次去,没有选择太复杂的项目。不过也有不靠谱的地方,那个巨幕是个啥,确实没看到。刚开始趴在床上,技师按的挺舒服的,感觉都快睡着了。等开始按小腿的时候,一下就给按醒了,还是挺疼得。两个腿都是如此,聊了会儿,建议经常运动还是要多按一下。

为了按摩,中午吃饭的时间就没了。70分钟,甚至已经超了下午上班的点了。

喝点水,顺便看了下价目表,嗯,下次可以做个全身精油按摩,价格貌似跟之前经常去的那家店差不多。

按完还完衣服赶紧往公司赶,店外的停车场也挺让人崩溃的,一遍有台阶,整体过道也比较窄,好在车不多,来回倒腾十来次才从停车场开出来。

路上等红灯的时候,遇到一辆typeR,至于是不是真的,其实我也不大认识。后来着急从左侧超了过去,等上立交桥的时候发现那辆typeR紧贴在后面,不是,姐姐我不是想飙车啊,我是真的到上班点了。

直到自己从从主路转到辅路他还紧贴在后面,但是,姐姐我到啦。

停好车往电梯口走,发现小腿依然有点疼,可能是长时间不按,不习惯了吧。

哼,还是得多按几次。

  •  

绽放

我要变成野花开在你身边
将我摘走吧在枯萎之前  — 戴娆 《绽放》

周末带宝子去上课的时候,竟然又听到了这首歌。上次听的时候应该是十年前了,眨眼间十几年竟然就过去了。那种轻松欢快的旋律,总是能让人心情变得更加的雀跃。

对我来说,绽放的年龄似乎依然是过去了,剩下的只有残花败柳,跟着时间一起变老。在老去的过程中也看到有的人的凋零,一个接着一个。上周的时候,同事神秘兮兮的说,公司有个哥们没了。说着拿手机给我看,我接过来,在他的朋友圈看到一条消息:『***因为心脏问题,医治无效去世,将在**举行告别仪式……』

看到这条消息的时候,内心并没有太大的波动。这几年,已经看着好多的人凋零,同村的邻居,自己的亲人,自己的同事,还有网上的名人。

昨天晚上对象说,下午看说什么张雪峰的头像变灰了,后面好像又给换回来了。我上网搜了一下,最开始看到的是张的助理说不清楚,合伙人说无可奉告。后来去微博搜的时候,就看到了张的微博账号发的讣告,的确是心脏问题去世了。

张还说自己跑马拉松什么的,身体没问题,网友都不见得能跑过他。然而,这他也没跑赢心脏病。看完消息之后,我一度都想直接买个aed放在家里了。不过对象说不至于,没啥必要。

张雪峰比我大一些,另外一个去世的同事比我大的更多一些。如果身体不好,看来真的不适合当牛马。而至于运动,真的能提高寿命吗?可能也没什么必然的相关性,有的疾病可能没有什么症状,而等到发病的时候,身体素质好的人可能存活的机会更少。身体素质不好的,可能会被拖垮但是不至于要命。当然,也有人说,锻炼是为了更体面的离开。身体拖垮了,可能就只剩下苟延残喘,没有质量的生活。

总是觉得来生还长,似乎有的是时间。现在看来,很多的人时间并没有那么多。或许正在绽放的时候,就被意外给消灭了。相比生命来说,其他的也就没那么重要了。钱多钱少,只要能活的开心就好了。体验生活,享受生活,才是关键,总是让自己活的不后悔才是对的。

很久之前刷短视频,看到一款个别假的手链。前几天又刷到了,去淘宝下了单买了四条,原价12块钱,最后实际花了3块钱。快递到了之后,带回家,对象看到说:『你真无聊,这有什么好玩的啊』

『没什么好玩的啊,我就是喜欢那种很假的感觉。』我答到。

我喜欢的是ta的视觉效果 ,有个角度看过去特别假。感觉都不想这个世界的东西。有时候买这些乱七八糟的小玩意儿,也会上瘾。可能买来不会戴,但是买的时候还是挺开心的。有时候也会买特别廉价的衣服神马的,并且买的衣服也真的不会穿出去。

有时候也挺矛盾的,这一身加起来不到100块钱,然而,周一去加油,大半箱油就花掉了300。加几次一辆电动车出来了,这还是里程数不多的情况下。粉皮每年花的钱,比我花的钱多多了。这么一向,感觉也挺无语。拍写真都够好多套了,不过下次拍,争取把十斤体重先减下来。跳绳的时候想到这些天天运动还猝死的,有感觉有那么一丝丝凉意。运动并不会使人长寿,健康也不会使人长寿,但是,我还是喜欢健康苗条。

最近事情的确有点多,一点点的堆积着都没来得及处理。工行发短信,说新信用卡已经到了营业厅了,但是却一直没去取。偶然想起来小时候吃的牛杂汤,忽然就很想吃。然而,美团、高德搜了一圈都没找到能吃牛杂的地方。想从二手东买,买回来自己加工,对象表示这个东西可能就你自己吃,买那么多也不合适,还是找个地方出去吃罢。

只是,到现在还没找到一个能吃牛杂的地方。周日带宝子去吃罐罐米线的时候,看到万达边上有一个牛杂店,好几天了,却还是没有来的及去。每天中午回家去消灭宝子姥姥在周末包的水饺,荠菜的,韭菜的。每次怕不够吃都会包很多,虽然很好吃,但是为了控制体重,剩下的水饺到现在已经吃了三天了,还有一些在冷冻上,明天不能再吃了,想去吃牛杂了。有的时候,那种记忆真的是刻在了骨子里。熟悉的味道,总是能让人感慨良多。而闺蜜圈的新版本发布,总是一波三折。华为的商户资质,三星的各种材料提交,总是有无数的关卡卡在前面,有时候也在想,不如放弃吧,反正也不挣钱,自己用也够了。

原本,今天似乎能有点空闲时间。然而,早上到公司拉代码的时候,发现移动硬盘坏了,mac 能识别磁盘,但是挂载不了,尝试急救失败。

Checking if the parent's minkey can be updated...
error: btn: oid (854310), xid (36994), type (0x40000003), subtype (0xb), flags (0x4) level (1)
error: btn: unable to repair minkey
   Object map is invalid.
** The volume /dev/rdisk5s1 with UUID 381DE7AB-BD78-4F75-879C-0E618699D213 was found to be corrupt and cannot be repaired.
** Verifying allocated space.
warning: found spaceman free queue tree entry (0xcfef0+17, xid 36987) which overlaps with existing range (0xcfef1+1)
warning: found spaceman free queue tree entry (0xcfef0+17, xid 36987) which overlaps with existing range (0xcfefb+1)
warning: found spaceman free queue tree entry (0xcff16+9, xid 36987) which overlaps with existing range (0xcff16+1)
warning: found spaceman free queue tree entry (0xcff16+9, xid 36987) which overlaps with existing range (0xcff1a+1)
warning: found spaceman free queue tree entry (0xcff16+9, xid 36987) which overlaps with existing range (0xcff1c+1)
warning: found spaceman free queue tree entry (0xcff22+1, xid 36987) which overlaps with existing range (0xcff22+1)
warning: found spaceman free queue tree entry (0xcff2c+3, xid 36987) which overlaps with existing range (0xcff2d+1)
warning: found spaceman free queue tree entry (0xcff30+3, xid 36987) which overlaps with existing range (0xcff31+1)
warning: found spaceman free queue tree entry (0xcff45+2, xid 36987) which overlaps with existing range (0xcff45+1)
warning: found spaceman free queue tree entry (0xcff4c+1, xid 36987) which overlaps with existing range (0xcff4c+1)
warning: found spaceman free queue tree entry (0xcffcc+3, xid 36987) which overlaps with existing range (0xcffcd+1)
warning: found spaceman free queue tree entry (0xcffcc+3, xid 36987) which overlaps with existing range (0xcffce+1)
warning: found spaceman free queue tree entry (0xcfe0f+11, xid 36988) which overlaps with existing range (0xcfe13+1)
warning: found spaceman free queue tree entry (0xcfe22+12, xid 36988) which overlaps with existing range (0xcfe24+1)
warning: found spaceman free queue tree entry (0xcfe22+12, xid 36988) which overlaps with existing range (0xcfe25+1)
warning: found spaceman free queue tree entry (0xcfe60+1, xid 36988) which overlaps with existing range (0xcfe60+1)
warning: found spaceman free queue tree entry (0xcfe85+1, xid 36988) which overlaps with existing range (0xcfe85+1)
warning: found spaceman free queue tree entry (0xcfe96+3, xid 36988) which overlaps with existing range (0xcfe98+1)
warning: found spaceman free queue tree entry (0xcff12+2, xid 36988) which overlaps with existing range (0xcff13+1)
warning: found spaceman free queue tree entry (0xcfe1c+1, xid 36989) which overlaps with existing range (0xcfe1c+1)
warning: found spaceman free queue tree entry (0xcfe36+1, xid 36989) which overlaps with existing range (0xcfe36+1)
warning: found spaceman free queue tree entry (0xcfe3e+1, xid 36989) which overlaps with existing range (0xcfe3e+1)
warning: found spaceman free queue tree entry (0xcfe57+2, xid 36989) which overlaps with existing range (0xcfe57+1)
warning: found spaceman free queue tree entry (0xcfea9+3, xid 36989) which overlaps with existing range (0xcfeab+1)
warning: found spaceman free queue tree entry (0xcfebe+1, xid 36989) which overlaps with existing range (0xcfebe+1)
warning: found spaceman free queue tree entry (0xcfee3+1, xid 36989) which overlaps with existing range (0xcfee3+1)
warning: found spaceman free queue tree entry (0xcff2f+1, xid 36989) which overlaps with existing range (0xcff2f+1)
warning: found spaceman free queue tree entry (0xcffd8+3, xid 36989) which overlaps with existing range (0xcffd9+1)
warning: found spaceman free queue tree entry (0xcfd9e+3, xid 36990) which overlaps with existing range (0xcfd9f+1)
warning: found spaceman free queue tree entry (0xcfd9e+3, xid 36990) which overlaps with existing range (0xcfda0+2)
warning: found spaceman free queue tree entry (0xcfe6e+1, xid 36990) which overlaps with existing range (0xcfe6e+1)
warning: found spaceman free queue tree entry (0xcfee6+1, xid 36990) which overlaps with existing range (0xcfee6+1)
warning: found spaceman free queue tree entry (0xcff29+1, xid 36990) which overlaps with existing range (0xcff29+1)
warning: found spaceman free queue tree entry (0xcfdc9+1, xid 36991) which overlaps with existing range (0xcfdc9+1)
warning: found spaceman free queue tree entry (0xcfe11+1, xid 36991) which overlaps with existing range (0xcfe0f+11)
warning: found spaceman free queue tree entry (0xcfda1+1, xid 36992) which overlaps with existing range (0xcfd9e+4)
warning: found spaceman free queue tree entry (0xcfdb5+1, xid 36992) which overlaps with existing range (0xcfdb5+1)
warning: found spaceman free queue tree entry (0xcfe4e+1, xid 36992) which overlaps with existing range (0xcfe4e+1)
warning: found spaceman free queue tree entry (0xcfe66+1, xid 36992) which overlaps with existing range (0xcfe66+1)
warning: found spaceman free queue tree entry (0xcfe88+1, xid 36992) which overlaps with existing range (0xcfe88+1)
warning: found spaceman free queue tree entry (0xcff41+1, xid 36992) which overlaps with existing range (0xcff41+1)
warning: found spaceman free queue tree entry (0xcfe40+1, xid 36993) which overlaps with existing range (0xcfe40+1)
warning: found spaceman free queue tree entry (0xcfeda+1, xid 36993) which overlaps with existing range (0xcfeda+1)
warning: found spaceman free queue tree entry (0xcff6c+1, xid 36993) which overlaps with existing range (0xcff6c+1)
warning: found spaceman free queue tree entry (0xcff7b+1, xid 36993) which overlaps with existing range (0xcff7a+2)
** Performing deferred repairs.
error: Unable to perform deferred repairs without full space verification
** The container /dev/rdisk5 could not be verified completely.

尝试各种修复方式,最终都以失败告终,apfs看来也不咋靠谱。只能格式化硬盘,重新拉代码,重新配置运行环境,拉代码大半天时间竟然就没了。

只是,退堂鼓一向,内心又觉得不甘。应该让她绽放的,辛辛苦苦的折腾到现在,总是不想功亏一篑。好好的东西,夭折了,也的确不是我的风格。

如果按照所谓的平均寿命,现在看来,正是如花似玉的年龄。该绽放就绽放吧,哪怕花开的有些晚了,也是总要开的。

  •  

🦞龙虾养殖小技巧

在深入体验这个东西之前,其实我并未对龙虾抱有太高的期望。不过这几天实际使用下来,感觉还算可以,最起码没那么智障,一些简单的事情也能给处理好。

然而,龙虾虽好,但是养殖却还是稍显麻烦。尤其是系统配置不高的情况下,最开始的时候一切都配置好了,结果在某天晚上gateway就再也启动不了了,启动的的时候就报内存溢出。cpu和内存都直接跑满,等降下来之后,龙虾也跟着死了。刚开始以为是配置问题,改错东西导致启动失败了,结果在回滚镜像之后依然报错,这个镜像是刚安装好的时候创建的镜像。那么此时就有另外一个问题了,同样的镜像为什么系统重启之后就启动不了了?

当时没想这么多,解决办法是备份memory文件等进行重装,好在重装之后接本的功能和代码都在,让龙虾从新加载配置文件,也恢复到了之前的状态。不过,在重装的时候npm源也是个问题,可以考虑直接修改系统的npm源:

npm config set registry https://registry.npmmirror.com

检查修改是否生效:

npm config get registry

另外一个,那就是我给龙虾外层套了一层认证,当然这个做法有点傻,但是呢。这些乱七八糟的东西直接暴露出来总是多少感觉有点问题,于是还是套了一层nginx的认证。

毕竟,前几天周鸿祎还吆喝发现了龙虾的oday漏洞。

相关登录界面实现参考:https://cnb.cool/oba.by/baby-claw

然而,安装之后,昨天尝试更新龙虾,结果更新之后重启又开始报内存溢出,这就有点尴尬了,直接运行doctor:

ubuntu@VM-0-11-ubuntu:~$ openclaw doctor

🦞 OpenClaw 2026.3.23-2 (77e4) — I'm like tmux: confusing at first, then suddenly you can't live without me.

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
                  🦞 OPENCLAW 🦞                    
 
┌  OpenClaw doctor
│
◇  Update ──────────────────────────────────────────────────────────────────────────────────╮
│                                                                                           │
│  This install is not a git checkout.                                                      │
│  Run `openclaw update` to update via your package manager (npm/pnpm), then rerun doctor.  │
│                                                                                           │
├───────────────────────────────────────────────────────────────────────────────────────────╯
│
◇  Startup optimization ─────────────────────────────────────────────────────────────────────╮
│                                                                                            │
│  - NODE_COMPILE_CACHE is not set; repeated CLI runs can be slower on small hosts (Pi/VM).  │
│  - OPENCLAW_NO_RESPAWN is not set to 1; set it to avoid extra startup overhead from        │
│    self-respawn.                                                                           │
│  - Suggested env for low-power hosts:                                                      │
│    export NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache                               │
│    mkdir -p /var/tmp/openclaw-compile-cache                                                │
│    export OPENCLAW_NO_RESPAWN=1                                                            │
│                                                                                            │
├────────────────────────────────────────────────────────────────────────────────────────────╯
13:24:32 [plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: openclaw-qqbot (/home/ubuntu/.openclaw/extensions/openclaw-qqbot/index.ts). Set plugins.allow to explicit trusted ids.
[qqbot-channel-api] Registered QQ channel API proxy tool
[qqbot-remind] Registered QQBot remind tool
│
◇  Archive 1 orphan transcript file in ~/.openclaw/agents/main/sessions? This only renames them to *.deleted.<timestamp>.
│  No
│
◇  State integrity ─────────────────────────────────────────────────────────────────────────╮
│                                                                                           │
│  - OAuth dir not present (~/.openclaw/credentials). Skipping create because no            │
│    WhatsApp/pairing channel config is active.                                             │
│  - Found 1 orphan transcript file in ~/.openclaw/agents/main/sessions.                    │
│    These .jsonl files are no longer referenced by sessions.json, so they are not part of  │
│    any active session history.                                                            │
│    Doctor can archive them safely by renaming each file to *.deleted.<timestamp>.         │
│    Examples: 9ede0dd4-5344-4156-a156-a9035538b1cb0d.jsonl                                   │
│                                                                                           │
├───────────────────────────────────────────────────────────────────────────────────────────╯
│
◇  Security ─────────────────────────────────╮
│                                            │
│  - No channel security warnings detected.  │
│  - Run: openclaw security audit --deep     │
│                                            │
├────────────────────────────────────────────╯
│
◇  Systemd ───────────────────────────────────────────────────────────────────────────╮
│                                                                                     │
│  Gateway runs as a systemd user service. Without lingering, systemd stops the user  │
│  session on logout/idle and kills the Gateway.                                      │
│  We can enable lingering now (may require sudo; writes /var/lib/systemd/linger).    │
│                                                                                     │
├─────────────────────────────────────────────────────────────────────────────────────╯
│
◇  Enable systemd lingering for ubuntu?
│  Yes
│
◇  Systemd ───────────────────────────────╮
│                                         │
│  Enabled systemd lingering for ubuntu.  │
│                                         │
├─────────────────────────────────────────╯

这时候才发现关键性的几行:

◇  Startup optimization ─────────────────────────────────────────────────────────────────────╮
│                                                                                            │
│  - NODE_COMPILE_CACHE is not set; repeated CLI runs can be slower on small hosts (Pi/VM).  │
│  - OPENCLAW_NO_RESPAWN is not set to 1; set it to avoid extra startup overhead from        │
│    self-respawn.                                                                           │
│  - Suggested env for low-power hosts:                                                      │
│    export NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache                               │
│    mkdir -p /var/tmp/openclaw-compile-cache                                                │
│    export OPENCLAW_NO_RESPAWN=1                                                            │
│                                                                                            │
├────────────────────────────────────────────────────────────────────────────────────────────╯

这个startup 优化,不知道是不是针对gateway的启动也有效。不过在升级到最新版之后,感觉启动稍微顺畅了一点。似乎没那么卡了。

新版本貌似也同时修复了用量显示问题,上个版本,不管怎么查询用量都只显示今天的,新版貌似是没问题了:

服务器作为一个比较干净的环境,如果要实现一些其他的功能,就得能够进行文件快速交互,所以文件上传下载也就是一个必备的技能,推荐filebrower:

至此对我来说,一个简单的勉强能用的龙虾就实现了。可以尝试各种工作了:

1. 手搓elf可执行文件

2.给我发布闺蜜圈wiki的文章:

3.批量创建停机申请表:

skill这个东西,可以有,但是也不是必须的。

 

  •  

张雪峰猝死于41岁,比我还年轻几岁

  昨天晚上得知张雪峰猝死的消息,心里咯噔了一下,惊讶的同时也感到惋惜。他才41岁,比我还小几岁,事业也正当红。

张雪峰讣告

  上次张雪峰上全网热搜可能是新闻学专业被他干死的事情了。张雪峰是现今无数网红里面少数我印象深刻的之一,之前看过一些关于他对高考志愿指导及大学和就业指导的视频切片,对他的态度和观点都有深刻的印象。他把一些底层家庭关于大学和就业的信息差,语言生动态度鲜明的讲出来,对于向他咨询的学生家长,以及屏幕前的看客,都是一次再教育。

  新闻中说,他是个工作很拼的人,也很注重运动,有长期跑步的习惯,昨天下午还在跑步机上跑了7公里,然后就倒下了,4个小时后就被宣告死亡。而在此之前好几年,他就已经多次出现过严重的健康问题,还住过院。

  人有时候就像装在机器上的螺丝,随着整台机器的运转而不由自主的运转。张雪峰是所有人眼中寒门学子奋斗逆袭的成功典范,同时也是长期高压状态的创业者,他不停的在忙着直播、讲座、咨询培训、出书、综艺等,可能很多时候吃饭的时间都没有,我看到直播切片里他也经常在吃东西。我不及他十分之一的忙,却也时常累的不想动,对运动更是毫无积极性,不得不佩服他这样自律性极强的人。

  为什么说四十不惑,四十多岁就是大多数人的山顶,开始直面死亡冲击,开始考虑自己的老年。

  三年前的春节,惊悉大学班长岁河同学的讣闻。(《纪念岁河同学》

  去年春节,48岁的大S之死,在脑子里的印象还没有消去。

  昨天张雪峰去世,年仅41岁。

  不论是哪个年龄段,都要给大脑以及身体一些趴着不动的修整时间。打工人在业余时间,也要做做无为者无所求,饱食而遨游。

  别总以为来日方长、以后再说,意外真不知道和明天到底谁先来。珍惜生命,不意味着消极躺平,而是要积极生活,少留遗憾。中年人也要有安排后事的思维,要有立遗嘱的准备,对上有老下有小的状况清醒认知。

  我希望国家有一种福利,替有个人网站的人去世后长期的免费托管域名和网站,低者每年百来块钱,一百年也没多少钱,从退休金或者抚恤金里面抠出来也行,国家集中托管还能把成本再降低一个数量级,关键是要稳定可靠。我们大多没有富人那样庞大的物质遗产,唯有精神文化遗产,可能是我们最值得珍视的遗产了。

  •  

野心家

时间总是太少,感觉有太多的事情想要做,太多的东西想要学。总是觉得时间太少,仿佛永远都没有够用的时候。总也赶不上发展的步伐,被时代狠狠的甩到了后面。

跟着滚滚洪流,跟在后面跑的精疲力尽,却总是感觉和这个世界脱节越来越严重,渐行渐远。有时候很容易有一种错觉,就是我上我也行,看着简单的东西,实际操作起来从来都不简单。并且没有什么捷径。

学了很多的技术,也许了很多的东西,然而,却似乎从来没有经通过,也不曾足够深入一项技术。总是感慨人与人之间的差距,不单纯是智商的差距,而是物种的差距,似乎完全不能理解别人是如何做到的。什么99%的汗水+1%的灵感,却鲜有人告诉你,那1%才是最重要的。

这几天体验养龙虾,几天下来感觉一些复杂的东西也能处理,至于能处理多复杂的东西就看用的模型多先进了。

以前自己做家里的家居控制系统的时候,只能用简单的语音识别加ifttt的指令简单识别。包括前几天给闺蜜圈做得快捷指令也是通过指令匹配的方式做得,现在看来是真的落伍。不过要体验新的东西,总是要付出代价的,巨量的token消耗。新技术的发展和迭代必然会改变一些事情,也会改变一些人的生存方式,这个是无解的。当然,也催生了一堆新的职业,例如那群生产孵化各种龙虾的,虽然现在看来各种虾是真的瞎。

以前花费好长时间才能掌握的汇编、java、oc等等,现在各种工具连一分钟的时间都不用就能生成可以运行的代码。或许,这依然不是极限,以前在windows上曾经手写十六进制,构造可执行文件。或许已经有ai能够实现不需要高级语言直接生成可执行文件了,不管是windows的pe文件,还是linux的efl文件,遵循特定的文件结构,剩下的就是生成导入导出表,编译机器码。如果这样,还要什么高级语言,你告诉ai需要什么格式,到时候可能就直接给出exe、so、apk、ipa文件了。最终的发展趋势就是从机器码->低级语言->高级语言->机器码。以前从命令行到了gui,现在又有很多人从gui回到了命令行,现在的ide编辑器似乎也没那么重要了,全部ai驱动,只需要一个输入输出窗口就行了。广义来说,龙虾也是此类进化方式,不再需要关注具体的代码,也不用修改,全部ai驱动。 

文件:hello_obaby

上午让workbuddy给整理汇总图片里的运维日志,结果卡住了之后,一天都没进展。

最后还是切到了龙虾上,虽然费功夫,但是确实做到了。

ai甚至说,人工识别了这些图片。可能ai才是野心家,哪天想把人类取而代之吧。

周末给龙虾装了个看板,结果在折腾到晚上的时候,因为qqbot的一个问题,把系统整挂了,通过快照还愿之后,cpu一直卡在100,最后也没能再起来。相比之下,自己的确不如ai,然而,ai却无法自救。

之前看《机器学习》的时候,总觉得自己也能写个模型出来,然而,前几天尝试用机器学习计算月经的预期时间都没弄好,想着改进算法却一直没时间。时间也不知道都干嘛去了,当然,与最近工作的事情也有关系,乱七八糟的事情实在是多,每天都有解决不完的问题。

那广泛的涉猎,到现在已经没有太大的意义,因为连自己的空闲时间都挤不出来。

也许,等哪天自己不眠不休,或者能活500年的时候,才能成为真正的野心家吧。

  •  

周六和室友小酌一杯

 之前说过我的一个同学被优化了,当时没过多久,我们这边也收到了通知,要有7个人被裁掉,其中有一个就是我的室友,二月初好像就通知了,说是让干到三月底,年后一过来也是各种饭局,经常喊他吃饭喝酒说送他呢,前几天有天晚上回来也是晕乎乎的,说要跟我喝点呢。
 我就从京东下单买了两瓶古5,也是昨天一大早就送过来了,本来想着晚上的时候出去吃点喝点,赖了一上午床,中午爬起来想做点东西吃,看着冰箱里的菜,这不也能整几个么,就跟室友讲了一下,中午别让他点外卖了,我简单炒几个菜一块吃点。
 他说最近喝酒喝的有点多了,最后我整的古5也没喝,他去楼下超市搞了一箱啤的上来。应该是一点多开始吃的,最后干到了晚上六七点,就一直喝着聊天啥的,一箱啤的被我俩造完才算结束。
 最近也在和公司谈赔偿的事,他在这边干了七年多了,想的是至少能赔个N,但是之前领导找他谈过一次,说能赔个小几万,赔不了N,现在还在僵持着,下周再找机会再和领导PK一波吧,实在谈不妥再想别的办法。
 附个随手拍的图片吧,最后闷了个从家带回来的鸡肉,吃了一半才想起来拍个照片,哈哈,在家养了几个月的鸡还挺好吃。

  •  

岁月是把猪饲料

前段时间,孙燕姿开演唱会,网上的评论都是变胖了,以及说什么穿着不合体,不好看之类的。

只是变胖的又何止是她,还有好多人也都变胖了。曾经的女神,现在变成胖女神了,还有人调侃石矶娘娘的。

然而,女神们也曾经风华正茂,身材婀娜过啊。

说到穿衣造型,其实作为一个胖女生,可塑空间就变得非常小,很多衣服或者穿搭就没那么合适,所以有时候不能全怪造型师,也不能全怪变胖的女神们。

毕竟在时光的洗礼下谁又不胖,最近带着对象运动,然而,确时常听到:『我现在吃的不多啊,还蹭蹭的长肉。现在连吃都不能吃了,还有什么乐趣?』

减肥的时候真的挺没乐趣的,第一次去拍写真的时候,肚肚还非常的突出,第二次去拍的时候,摄影师甚至问,『你上次拍照的时候带的那个束腰带了吗?』

然而,那个束腰第一次没用上,第二次想用的时候已经被我扔了。以前在记得时候,偶尔用一次对象总说:『那玩意儿不管用,你少戴吧』

真正开始减肥了,还是靠控制饮食和运动,当然,最主要的运动就是跳绳。昨天晚上在家跳的时候,竟然断了。

重新插回去之后就变得一个长一个短了,等哪天看看把那根长的也调整下。跳绳一年多,右手可能是握姿有问题,竟然磨出了茧子。翻了下记录,才发现真的挺久了。

至于跑步,其实这两年跑的并不多,主要集中在还有跑步机的时候。

不过那时候跑步却没有变瘦,真正减肥还是去年,一共减掉了40斤,今年的目标是再减掉10斤。不过这个周期可能就比较长了。

岁月的猪饲料是平等的,雨露均沾,谁都躲不过,看身边的男人,多数一个个都停着大大的肚子。女生也一个个的出现了小肚子,哪怕是还没有结婚的那个同学,身材也开始走样了。

谁都想一直好看,然而,不是所有人都能抗住岁月的变迁。

好看一天是一天,就酱紫吧。

  •  

女儿学习成绩拉胯,老父亲也焦虑上了

  女儿正在初三,再过三个月就到中考了,但是成绩一直都很不在状态,我这么不焦虑的人,都变得有一丢丢的焦虑了。

  她的成绩是从初二开始明显下滑的,到初三已经比较难看了。虽然她成绩变差,但并没有因此受到指责,我和她妈妈都还是比较宠她,也考虑到这么大的孩子了,应该自己去做自己的事,家长不应要求太多,还有就是,青春期的孩子,说她了难免会产生逆反。考虑过给她报课外辅导班或者一对一家教,但也没有太放在心上去花精力寻找和试课,而且感觉针对性不高,从她的状态来看也不太适合,也就作罢,不勉强。

  她和她妈一起生活,日常也都是一幅母慈女孝,她妈也不怎么管她的作业,主要靠她自觉。我周末会给她一些陪伴,带她户外运动一下,跟她聊聊天,给她辅导一下作业。通常也只是看看数学作业,偶尔也看看物理化学,不怎么看其他作业,为啥呢,一是因为其他作业她更容易应对,二是她没那么多时间跟我检查和探讨。

  平时的作业,有一段时间我是让她拍照给我看的,我会抽时间看,然后把她整不明白的题给她讲解一下。这个模式施行了两个月就无疾而终了。我总结的话,原因有,其一,她的作业完成时间经常太晚了,晚到如果我再看作业再讲作业就会影响到她正常睡觉了;其二,她对此并不积极,我催了几次之后,也懒得每次催她拍作业了;其三,视频讲题的效果不得而知,反正她啊啊哦哦的,是不是真懂了我不知道,但肯定是不如面对面讲解的效果好。

  周末的时候,我有机会给她面对面讲题,但也是效果越来越差。感觉她的耐心越来越差了,有时候我讲了一个题,她就在打呵欠了。讲题的过程中,局部过程跟她提问,她多半也答不上来。我要等她把作业做完,或者做完一两页,我再去查看,但她做的太慢了,在我看来就半小时到一小时的量,她可能磨叽四个小时还没写完,说她一个作业从早写到晚都不夸张。

  老师打过好几次电话,反馈她的学习状态和学习态度问题,但是似乎我也无能为力,有劲也不知道往哪儿使,也怕使错了方向而适得其反。她会迷恋电子产品,有机会就会玩游戏,不能玩游戏就看动漫或者别的。有一种说法,说是因为家长没有给孩子创造有意思的活动去参与,所以孩子才会去玩电子产品,这个我不太认同,一般成年人都抵不住短视频的诱惑,小孩子怎么抵得了游戏和动漫的吸引。

  现在她的数学成绩差到什么程度呢,就是不及格的程度,第一次看到她数学不及格的时候我挺诧异的,我觉得普通智商+有听课的话都能及格的吧。我最近买了基本中考数学相关的书,准备看一看初中数学的知识点,不一定能够帮到她,至少她遇到疑问时,我能够联系起来。

  我已经是有点躺平思维了,准备这最后三个月,微弱的推她一把,要是推不起来,那就愉快的接受现实吧。就算她数学考零分,地球该转还得转。

  •  

🦞龙虾初体验

龙虾刚出来的时候,我无动于衷;龙虾爆火的时候,我依然无动于衷;龙虾开始被卸载的时候,我终于不再无动于衷了。

从春节的时候,龙虾忽然就开始变得热度极高。几乎所有人都在讨论龙虾,以及养虾的话题。这儿东西最开始的时候,给我的感觉就是,如果本地没有足够多的资源,龙虾就发挥不出自己的作用;如果直接用自己的电脑去安装,又会出现龙虾权限过高的问题。

龙虾做得事情,可能在我的预期范围之外。单纯为龙虾创建一个沙盒环境,意义感觉也不是很大。如果一个问题需要解决两遍,那感觉和不解决似乎也没太多的区别。

尽管如此,龙虾的热度还是越来越高,一度出现各种上门安装的服务。

再后来出现线了,各种收费卸载的服务。果然是此一时,彼一时,三十年河东三十年河西。

然而,在这滚滚的卸载浪潮中,我逆流而上,反其道而行之,我安装龙虾了。

不得不多,openclaw基于node的服务还是蛮笨重的,安装的确有点麻烦,刚开始为了省事,直接百度云买了个所谓的9.9的open claw实例,然而订阅coding plan的时候发现根本抢不到。

使用按量付费之后,简单尝试了以下,发现效果还是可以的,不过就是太费token了。千帆大模型感觉体验也还ok。

可以理解你的意图,也能正常的推进任务。然而,不能订阅,这个长期跑费用是个问题。

于是再次尝试别的方式,直接腾讯清凉弄了台99的服务器,干净安装openclaw,模型选择参考的杜郎的文章里提到的nvidia nim。好处是免费,当然,速率还是有限制的。

昨天的时候,第一次玩这个东西没啥经验,还是用的kimi,后来尝试minimax,但是效果怎么说呢,不知道是配置问题还是啥问题,总是不尽如意。

再后来看到了zero claw,号称体积更小,占用资源更少。直接二进制安装,下载之后启动:

至于怎么在公网访问,直接使用nginx反代即可,参考: https://cnb.cool/oba.by/baby-claw

这次直接用glm5,配置好之后,整体体验感觉有些差,就是非常智障的感jio。

假装执行,这种处理逻辑真是可以,如果我不知道文章分类都有啥,差点就信了。在这种状况下不得不再切回openclaw。鉴于昨天的配置问题,今天reset之后,尝试重新配置运行,依然用与zero claw同样的glm5,这次相对来说还是比较顺利的。

与之前zero claw的对比就会发现了,这次好歹是真的获取到相关的分类了,而不是假装执行。

所以,有的时候虽然都说自己很厉害,但是不对比永远都不知道谁更厉害。很多东西不是单纯说说就可以的,当然zero的优势在于部署方便,占用资源更低,但是作为一个agent,实际的效果并没有赶上open claw。

所以,现在各种龙虾层出不穷,如果不知道选择哪一只,建议还是选择原版,open claw,虽然安装费劲点。但是相对来说,没那么弱智(在同样的模型glm5下)。

上图为三小时token消耗量。

微信公众号文章,自动发布wp效果:

相关资源:

https://cnb.cool/oba.by/baby-claw 

https://dujun.io/28c43a95-478f-5e2a-8805-510244c99494.html

https://build.nvidia.com/z-ai/glm5

https://q.qq.com/qqbot/openclaw/index.html

  •  

又活半年

活到2026年,终于如愿以偿地玩上了生化危机9。作为0~8代无一缺席的粉丝,这次迫不及待地在首发就以三百多大洋购入游戏本体。

RE9的快乐

开局是惊艳的,依然是发丝清晰可见,场景细致入微,但是里昂老了,虽然风韵犹存,但是我还是更怀念2和4的奶昂。另一个遗憾是艾达从始至终没有出现,虽然有新的角色格蕾丝,怯懦口吃颇有几分可爱,但是艾达已经成为了a part of me i can’t let go.

RESIDENT EVIL requiem 2026_3_1 23_37_30.png

RESIDENT EVIL requiem 2026_3_1 23_37_50.png

RESIDENT EVIL requiem 2026_3_10 23_49_47.png

RESIDENT EVIL requiem 2026_3_12 23_18_17.png

慢悠悠搜刮的话,差不多是13个小时的通关流程,每天间歇性玩几个小时的话,差不多一两周的快乐时光。但是通关后的空虚,可能要长达两个月。很难再找到这么符合我口味的高质量游戏了。

我是从原版那个年代过来的,原版的乌鸦,可以用枪击杀,落地变成金币,原版的艾达,是毫不留情抢夺我胜利果实跳上直升机的坏女人,一袭红衣两缕飘带,这个形象挥之不去了……

3D打印的快乐

3D打印机是我买过最正确的东西。我是抱着智商税的怀疑下单的,结果它真的解放生产力。甚至靠着它打印出来的大疆nano配件在小红书开店小赚了一笔,直接售罄,已经赚回了打印机的钱。(虽然炒股又亏了)

1773843571902.jpg

1773843571940.jpg

1773843571978.jpg

1773843572018.jpg

销量好的时候每天下班要发十单左右,来不及做现货,只能下班继续加自己的班,那段时间感觉很命苦,但是是真暴利,成本6.21元,运费5块左右(偏远省份更贵),售价38,就这样我大概卖了100多个……

磁吸手环成本:

  1. 圆形包胶磁铁(磁力加强到极限值12kg)4元
  2. 拍拍带手环 1.5元
  3. 圆形引磁片两片 0.15+0.08元
  4. 黑色包装盒 0.24元
  5. 3D打印成本 0.1元
  6. 螺钉 0.04元
  7. 其他 0.1元

但是由于是懒人主义+完美主义+同行竞争+玻璃心+悲观主义,我卖完第一批库存后还是收手不干了,现在市场应该已经被其他竞品吞没了,机会窗口也就那么一两个月。懒是因为单打独斗+扮演客服真的让人心神不宁,时不时来个咨询都要及时回复,上班时间很难回复;完美主义是我认为产品本身不完美,不够轻薄,大疆Nano本身也不完美,为不完美的产品做配件是不可能完美的;同行竞品也确实多,他们甚至更暴利!但是他们也确实宣传图精美,而这是我没有时间改进的,哪怕在AI时代,我也没有多余力气去调教;玻璃心是因为有极为挑剔的用户差评并投诉了我的拼多多店铺,虽然其余95%都是好评或沉默,但这加剧了我的不完美主义……悲观主义是我害怕下次进货没有这么好的流量,库存烂手里,于是我选择了见好就收……于是我草草结束了这次从设计、采购、生产到销售的完整实践……虽然几个月后依然有买家追着问何时补货……真的很感激他们的认可,但是我真的力竭了……

寻找下一个商机真的很难……有的时候太想赚钱,反而赚不到钱,这次商机,完全是恰好对运动相机感兴趣和恰好有3D打印机的双重偶然。真的是有心栽花花不成,无心插柳柳成荫。

除此之外也打了很多很多实用的工具和摆件,比如小米鱼缸增高架、垃圾袋悬挂支架、桌边收纳盒、nano三脚架兼手持握把、打字机抽纸盒、游标卡尺、豪宅模型、皮划艇模型、王冠、花瓶、盖瑞蛇……

1773846292711.jpg

1773847399292.jpgRESIDENT EVIL requiem 2026_3_12 21_09_13.png

简直就是生化危机的周边!这个打字机抽纸盒我花了一周改良,甚至还在拓竹社区上传了配置,还有下面的三脚架也是!

1773846292773.jpg

1773846292840.jpg

1773847110118.jpg

RESIDENT EVIL requiem 2026_3_1 11_46_26.png

虽然这栋小房子和游戏里的疗养院不能说是一模一样,也算是同一种风格吧,更温馨,超喜欢!

1773582332049.jpg

1773846659399.jpg

今年以来打印的东西实在是太多了,实在不能每张图片都放全了……所以说3D打印机真的不是智商税!是第一生产力!拓竹能发财我是一点也不意外,可惜没有上市,不然肯定要重仓!

口袋照片打印机

除此之外小米的热升华打印机也是极具幸福感的好东西,虽然没有靠它挣到钱……

1773845624437.jpg

从Pinterest上打印了好多康纳的美照……当然也可以打自己的……丑照!

没有买拍立得,是因为以我的拙劣摄影技巧,废片率太高。

断舍离

今年是我的断舍离元年,物质观有重大转折,从囤积综合征转变为身外之物皆可弃的流浪主义——一个行李箱装下所有,保持随时随地可以踏上旅程的状态(毕竟要追随里昂的步伐可得轻装上阵)。

经常吃灰的switch和kindle已经咸鱼出掉了。

电脑和掌机游戏不互通实在不方便,墨水屏不能听书刷小红书实在不方便,于是想换steam deck和海信A10了,还没剁手,后者据说下半年才会出。

虽然物品还在努力删减中,但我相信极简主义已经说服了我——

有什么东西不是花钱能买回来的呢?花几块钱就能买到的东西,留着干啥?塑料袋、空瓶都是废物,自从批发了几百个整齐叠放的漂亮袋子就再也没有囤塑料袋的习惯了,自从买了漂亮的玻璃罐子就再也没有囤空瓶的习惯了;就连3D打印机这样的大件,也完全是工业标准品,就算地震了房塌了也可以随时东山再起卷土重来,没有必要视为不可割舍的一部分,只要有存款,黄金才是唯一值得囤积的东西!1773850933520.jpg

到哪里去

如今的我已经不再纠结从哪里来,只常常梦想到哪里去。这半年间我踩点了好多地方,在湖州爬了山,在东太湖看了日落,在独墅湖划了浆板,在宁波东钱湖看了日落,在杭州西湖坐了手摇船,在钱塘江没追上日落……我的梦中情乡也在苏州吴江和杭州滨江之间反复横跳……

虽然看似还是去了一些地方,但真实的情况是大部分时间还是家里躺着……

Monday,work & sleep
Tuesday,work & sleep
Wednesday,work & sleep
Thursday,work & sleep
Friday,work & sleep
Saturday,sleep~
Sunday,sleep!

陷入虚无

随着养鱼养猫成为日常生活的一部分,那种初遇时的新鲜感也在迅速流失,哆哆的猫砂盆换了一个又一个,啵啵的鱼缸清洗了一次又一次,长期复购的品牌和鱼缸造景也逐渐稳定下来。啵啵会钻进它的洞穴,哆哆会在键盘上打滚……只能趁它睡觉的时候偷偷码字喽,写这篇文章的时候哆哆正在熟睡,嘘!

虽然这些可爱的瞬间仍然能让人会心一笑,但是嘴角上扬的弧度逐渐变小,撸猫喂猫和在鱼缸前发呆已经成了例行公事。有那么几个时刻似乎理解了有钱人的空虚,也许拥有更多,也会觉得寡淡无味吧。当漂亮房子、漂亮老婆、漂亮饭变得唾手可得的日常基线,就会想要更多。但是他们随时可以踏上新的旅途,尝试新的运动,或者发展新的relationship……而打工人不能。

随着不停地画板改板投板调板,越发地对技术的本质——人人都能做但有些人不愿意做的dirty work——产生了疲惫。于是愈发地发现人类工作30年是一种酷刑,这30年间将无数次盼望衰老,错过四季,时间上的不平等分配是人类生产资料不平衡的终极本质。但我也渐渐想明白了自己最需要的一种自由是时间自由。

随着文章更新的频率越来越低,我不得不承认我的曾经引以为傲的精力正在迅速流失,一切的意义正在黯然失色,或者俗不可耐地聚焦到金钱上,然后献给股市和彩票的镰刀,人性的贪嗔痴一个都逃不掉,最终成为一个无聊的大人。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往又活半年

  •