2025 更新日志

现在已经是 2026 年的夏天,但对于我来说,2025 好像迟迟没有离开,所以我写下这篇文章主动告别 2025。

青年艺术家,停止表演

燕郊的学习在两个月前(也就是 26 年的 5 月)结束,我在晓飞老师的工作室完成了素描课程、色彩课程,以及原定的目标:商品级别的作品创作。 那段时间我去画室不再是上课而是画创作,我留起了长长的头发,身上的衣服斑斑点点的都是颜料,看上去像艺术家,做的事情也像艺术家,所以,让我不妨怯生生地自夸一下,我也算是个青年艺术家了?

第二张长期作业

25 年 5 月的时候我终于把摩西像完成。本来 21 年我已经把课程内容走过一遍,现在回炉再造时却明显感觉自己比当年更迟钝,因此平添不少内耗。

现在回看,21 年的在简单的石膏像上死磕获得了银灰色的美妙质感,25 年面对一个复杂得多的画面依然也能保持逻辑清晰,我其实不必更苛求自己。我过去也许有一个隐秘的优点:即使自我评价不高、即使赢不起也输不起,还是会死磕着没有完全放弃。但我想这个优点我就不带到以后了。

../_images/m-002.webp

高乃依像, 2020

../_images/m-006.webp

摩西像, 2024

难道我意外地有些色彩天赋?

在 23 年之前我没有接受过正经的色彩训练 -- 我一直在有意识地避免自己「受教育」。这里其实有点过于爱惜羽毛的意思:虽然我画不好,但内心总觉得大部分色彩教学的「近暖远冷」「近纯远灰」「暗部藏色」难以说服我,因此抗拒使用他们的理论,反过来又加深了自己色感不好的印象。

23 年国庆的时候我抽空回画室画了半个月,色彩课程开了个头。画完摩西后,26 年 5到 8 月,我在画室又完成了色彩训练的室内部分。让我感到意外的是,学色彩的过程没有像学素描那样步步受挫,也一直得到老师的夸奖,虽然最后还是花了别人两倍的时间,但这样的结果已经让我非常满意了。

../_images/cs-006.webp

小场景写生 1, 2025

../_images/cs-007.webp

光色写生 1, 2025

../_images/cs-008.webp

光色写生 2, 2025

../_images/cs-009.webp

光色写生 3 + 简单静物组合 1, 2025

../_images/cs-010.webp

简单静物组合 2, 2025

../_images/cs-011.webp

简单静物组合 3, 2025

../_images/cs-013.webp

复杂静物组合 2, 2025

../_images/cs-022.webp

马奈静物临摹(未完成), 2025

中间 Swan 回北京,一起度过了一段短暂的甜蜜时光,为了不耽误上课,辛苦她住在离公司很远的酒店。后面我和老师说要尝试写生,在人大地铁站附近画了一些写生。

../_images/cs-014.webp

北京人大地铁站附近写生 1, 2025

../_images/cs-015.webp

北京人大地铁站附近写生 2, 2025

../_images/cs-016.webp

北京人大地铁站附近写生 3, 2025

../_images/cs-017.webp

北京人大地铁站附近写生 4, 2025

9 月,老师让我外出写生,分别在燕郊的小区、北京青龙湖、老家、云南画了一些画。那时候刚好分手,没什么行动力,所以画得并不多。

../_images/cs-021.webp

燕郊忆江南写生 1, 2025

../_images/cs-024.webp

北京青龙峡写生 1, 2025

../_images/cs-035.webp

宋大元帅陵园写生 3, 2025

../_images/cs-037.webp

宋大元帅陵园写生 5, 2025

作品制作

11 月的时候,到了原定结束学画的时间,但我的进度还远远落后,不能拖下去了。我跟老师说我不想再画色彩,要开始做作品了。

这里说的作品是:稍大尺幅的(相比几十厘米的小画)、在做工较好的画框上绘制的、完成度高的、个人创作。我接触油画时间太短,完全没有油画创作经验,老师给我推荐的策略是:从以前的水彩小稿里选比较好的,直接放大画成油画,不使用太多技法,平涂覆盖多次直到效果足够好。

从 25 年的 11 月到 26 年的 5 月,断断续续地画了 17 张成品,记录在 第一批作品制作,每一张都远算不上完善,但确实也呈现出了一些灵韵:

../_images/s-001.webp

情绪委托, 2025

../_images/s-004.webp

黑猫, 2025

../_images/s-007.webp

拥抱申请, 2026

../_images/s-009.webp

出行准备, 2026

../_images/s-011.webp

度洛西汀戒断反应, 2026

../_images/s-013.webp

无题, 2026

../_images/s-014.webp

漫长的剥离, 2026

../_images/s-017.webp

, 2026

../_images/s-010.webp

拒绝拥抱, 2026

../_images/s-012.webp

个人展览, 2026

../_images/s-015.webp

傲慢, 2026

../_images/s-016.webp

剥离, 2026

这段时间的生活上过得不太好,画室很久没有学生来,平时也没有说话的人,除了打羽毛球时候能快乐些,但总之是熬过去了,我获得了这些画,完成了这次学习的目标。

后面的时间里,按说这位青年艺术家应该开始联络画廊和策展人,同时继续新一轮的创作。但他从燕郊搬走了,画画其实对他失去意义了,尤其是在完成这些作品之后。

风暴瓶的隐喻

很长一段时间里我都在怀疑创作是否加深了我的痛苦,或者说我是否为了创作去刻意追求痛苦纵容自己的恶性思维。又害怕自己因为不创作而变得不特别,而失去那个人的喜爱。

你啊你,你想和稀泥说「你不是这样的」?还是想说「这是艺术家的天命使然」? 事实上是,我确实纵容了自己的恶性思维,因为害怕自己不被喜欢而向他人施加了压力,最后也成功了失去了那个人的喜欢。

我现在心里倒没有悔恨,也没有想道更多的潜,只是有点点遗憾。

晓飞老师让我写创作自述,我让 GPT/Gemini 看了我的画,然后各给我一个自述,初稿里当然有很多艺术圈的套话,但我从和 GPT 的多轮对话里慢慢形成了一个有意思的版本:

我曾是一名软件工程师。在长时间与系统、逻辑和确定性相处之后,我两度「脱轨」,离开了原本的职业轨道去学习绘画。我曾把自己的选择视为命运的感召,后来才意识到,我只是需要一条高尚的遮羞布,来供一个被效率、理性与自我要求压抑的人藏身而已 —— 绘画,再适合不过了。

在这一系列的作品里,绘画不是一种表达观点的媒介,而更像是一个反映内心晴雨的风暴瓶。我过分敏感,总是滋生很多情绪,工程师的职业素养让我天然倾向于结构化地理解一切,但这些情绪却并不遵循显著的逻辑。理性的分析在这里处处碰壁,最终从理解转变为抵抗。更可怕的是,当一个人过度观察自己时,他既是主体,也是被观看的对象;我试图以理性解构自己,同时自身也被解构,一点一点分崩离析。这种崩坏有时是自限的,达到一定程度后又因为求生本能而熔断,于是内心的暴风雨过境,我在一片狼藉中得以喘息。

在内心世界,矛盾产生,激化,归于平静,又再次产生。在瓶中,随机的晶核出现,结晶,消融,又再次结晶。这些矛盾是超越语言的 —— 或者说,我没有能力用线性的、基于语言的思考去梳理、消融他们。我只能画画,画布作为晶核,颜料在其上凝结,通过窥视这个瓶子,我得以伪装成一个真正的客体来看见自己的内心。

我的绘画里经常同时存在两种相反的力量:一面是克制、冷静、必须服从某种规则的理性组织;另一面则是躁狂、荒诞、经常扭曲边界的感性体验。就如同微观晶体的形状只取决于内部粒子的排布,但外部复杂的环境又促成了千变万化的宏观形状。我自己也经常沉醉于这两种力量并置时带来的美妙体验,可是当我越来越熟练于辨认、凝视并描绘这些内部风暴时,我也开始怀疑:这种持续的自我觉察,究竟是在使我更接近真实,还是正在制造一种新的异化?

你知道吗,其实风暴瓶与天气的对应关系几乎成随机分布。

数字生活

因为不工作,今年的所有代码都是为了自己写的。

Homelab 建设

新设备 n100

年初了时候因为 rpi3 性能不足,跑不动更多的服务,咸鱼买了个台工控机准系统,又去收了二手内存,买便宜硬盘,期间小有波折,最后也总算是把机器攒起来了。 作为以前靠电脑吃饭的人,我其实对电脑硬件的代际、接口和性价比都没什么了解(也缺乏热情),这次调研的时候通过大量和 AI 聊天恶补了一堆(大概是正确的)知识,最后攒出来的结果自己还挺满意,在此记录:

  • 一番调研后我决定买小型的工控机而非品牌的 NAS/NUS,工控机厂商都很小,没什么品牌溢价,缺点是外观没有设计可言、没有 NAS 那么多的盘位、没有集成的系统、一般不带存储和内存。但便宜就是最大的优点了,我闲鱼上 ¥570 拿下一台新创云的工控机。

  • 我选的 CPU 是 Intel n100:

    • 23 年的 CPU 还算不上到洋垃圾,在未来五六年内都够用;缺点是比洋垃圾贵了好几倍

    • 低功耗(TDP 6W)的同时还是 x86 架构,可无缝用 ArchLinux,archlinuxcn 的包也可以直接用。 之前用树莓派的时候偶尔会需要自己编译一些包,但树莓派太弱了,只能偷摸用社区的 buildarm 机器

  • 主板上接口还算丰富:

    • 4 个 2.5G 网口,对我来说两个就够用其实,多了当然更好

    • 主板上 1 个 M.2 接口(系统盘)、1 个 SATA(数据盘)、一个 MiniPCiE(空置,此处有伏笔

    • USB3 *2 + USB2 *2 + HDMI *1 + DP *1,我没有特殊要求

  • 内存插槽只有一个,我淘了一条联想拆机的 RAMAXEL DDR5 12G 的内存 ¥110

    • 内存很难坏,买二手的就行

    • DDR5 是个缺点,相比 DDR4 贵太多

    • 挑了在消费级市场不知名的 RAMAXEL(基本上都是拆机件)

    • 12G 对 Homelab 来说足够了,而且这个冷门的规格(相比 8/16/32)算下来 perG 的价格最便宜!

  • 硬盘最开始想法是:系统盘可以买个小的(64G)、二手的无所谓,可以随时恢复,数据盘靠谱即可,结果 PDD 上买了两次便宜硬盘都翻车了,于是最后还是买了新的:

    • 系统盘长城 GW3300 128G ¥64,数据盘铠侠 TC10 1T ¥348

    • 机器内空间太小,塞进一个 2.5 寸硬盘费劲儿,需要特地买上弯+上弯 SATA 线才能盖上盖

最终的花费大头是:570+110+64+348= ¥1092

n100 晋升网关

我之前的 NetCore G1 4G 无线路由器的信号质量很不好,且用 Linux 连它时总连不上,最后也没搞明白原因。 后来我就将他便宜买了,在家就只能把流量卡插手机里开热点。于是内网的设备们就闲置了,包括 n100。 但 5 月底搬来北京后我开始琢磨是否能买个 4G 模块,加上树莓派或者 n100 就不用再买 4G 路由了。

最终,在众多 AI 的指导下给工控机加上了一个 20 块淘的移远 EC20,配合 19 月租的流量卡,让他从一个普通的大头设备晋升家里的网关。最后我要求一根黄色的曲别针变直,任命它为 LTE 天线,负责将这个漂亮的小房间和世界连通。

../_images/mmexport1783235485068.webp

便宜量大的广电流量卡

../_images/mmexport1783235487682.webp

20 块淘的移远 EC20 模块

../_images/IMG_20260705_202022.jpg

为了让 n100 调试时能联网,用上了手机 USB 网络共享

../_images/mmexport1783235491711.webp

现在这个小房间居然通过一根掰直了的黄色曲别针和世界相连

chezetc: 管理所有主机配置

有了更强劲的主机后我开始部署更多服务:immich、gitea……(好像也没多少),开始纠结于各个服务的配置如何管理起来, 如果是用 k8s/k3s 大约可以用 ConfigMap 管理并且把整台机器打包?但家庭网络用这个还是杀鸡用牛刀了。 咨询过资深老师傅 pandada,pdd 表示部署上去就完了,反正很少会有迁移的时候,这么说也有道理……

我对管理配置的执念其实来自 Linux 用户人手一个的 📖 dotfiles,用户可以把 $HOME 下的软件配置文件用软链接或者专用的 dotfiles 管理器统一放到一处管理。 但部署服务时的配置不同,系统服务的配置在 /etc 下,用软链接或者 dotfiles 管理器会产生权限问题。 也有 etckeeper 这类软件,但他把整个 /etc 当成一个 git 仓库的做法我不喜欢,/etc 下大部分的配置我都不需要更改,更不需要管理他们。

一番搜索后我看到了 chezmoi,它是一个 dotfiles 管理器,策略是而是通过复制文件/模板生成来管理配置,使得它有可能管理 /etc 下的文件(如果是基于软链接就避不开权限问题了)。此外软件还提供了非常多的扩展能力和配置项。

twpayne/chezmoi · Discussion #1510 提供了一个思路,利用 chezmoi 的 hook script 来处理权限问题,于是我在这个基础上写了 chezetc:

https://gh-card.dev/repos/SilverRainZ/chezetc.svg?fullname=

chezetc 只是一层薄薄的脚本,简单来说它:

  • 会几乎原样转发命令行参数给 chzemoi,绝大部分工作实际上还是 chezmoi 完成的

  • 通过 --config 隔离配置让原生的 chezmoi 实例免受影响

  • 最关键的,chezetc 通过注入配置和钩子,使得 chezmoi 能够维护在 $HOME 下维护一个仓库,管理 /etc 下的文件:

    如果从 $HOME 更新到 /etc:

    chezetc 会在复制文件时自动插入 sudo

    如果从 /etc 更新到 $HOME:

    chezetc 会在文件复制后自动 chwown $USER

在此基础上我在内网 git 上创建了 etcfiles 这个仓库,用来容纳我所有机器上的统配置,结构大概如下:

etcfiles/
├── README.rst         # 项目说明
├── chezetc.toml       # chezetc 工具配置
├── data.yaml          # chezmoi 模板数据(LAN IP、Tailscale IP、服务映射、主机名)
├── prefix/
│   └── etc/           # 对应 /etc 下的配置文件
│       ├── shared/    # 共享配置(pacman, nginx, letsencrypt, systemd 等)
│       ├── x1c/       # ThinkPad X1C 专属配置(iwd, llama-swap 等)
│       ├── n100/      # N100 专属配置(dnsmasq, forgejo, bitwarden 等)
│       ├── rpi3/      # Raspberry Pi 专属配置(iwd, miniflux 等)
│       ├── tcc/       # 腾讯云主机专属配置(nginx)
│       └── claw/      # claw 主机专属配置(sing-box)
└── bin/
    ├── etc-host       # 操作单台主机的配置
    └── etc-shared     # 操作所有主机的共享配置

etc-hostetc-shared 是 chezetc 的简单封装: 前者会将 etcfiles/prefix/$HOST/etc/ 下的配置文件和 /etc 关联起来,而后者则无论当前主机为何,都将 etcfiles/prefix/shared/etc//etc 关联起来。这两个脚本组合起来,我就能灵活地处理多台机器上的所有配置了。

The Sphinx Notes Project

随着这两年 AI 的飞速发展,关于通用知识的笔记是几乎没有记录的必要了,但我依然 依赖我的笔记系统记录一些个人化的东西:画册、练习谱、一些复杂的备忘。

此外,探索如何「将笔记更好地结构化、去冗余」带给我很大的愉悦感,所以 SphinxNotes 系列项目的开发没有停滞。

sphinxnotes-render: 统一的渲染能力

在 Sphinx 里,减少冗余一个办法就是创建专用的 reStructuredText 指令(Directive,可以理解为标记语言里的可调用函数)+ 模板生成。

举个例子,假设我有大量的作品要记录,我可以创建专用的指令 叫「作品」,有日期、媒介、尺幅几个属性,这个指令会在文档构建时将结构化的作品信息作为 context 传递给形如右方的模板:

Original reStructuredText
.. 作品:: 出行准备
   :编号: s-009
   :日期: 2026
   :材料: 油画
   :尺幅: 60cm*50cm

   作品简介……
Template
{{ 名称 }}(``{{ 编号 }}``)
   📅 ``{{ 时间 }}`` | 🎨 ``{{ 材料 }}`` | 📐 ``{{ 尺幅 }}``

   .. image:: /_assets/aw/{{ 编号 }}.webp

   {{ 内容 }}

模板渲染的结果是新的 reStructuredText,会继续交给 Sphinx 渲染得到最终的文档,如此我们便可以只提供必要的信息便得到足够丰富的文档。

Rendered reStructuredText
出行准备(``s-009``)
   📅 ``2026`` | 🎨 ``油画`` | 📐 ``60cm*50cm``

   .. image:: /_assets/aw/s-009.webp

   作品简介……
Rendered Document
出行准备(s-009

📅 2026 | 🎨 油画 | 📐 60cm*50cm

../_images/s-009.webp

作品简介……

这样的模式在我的文档里普遍存在,但他们因为形式不同,需要由不同的插件实现:

  • 除了画作之外,友情链接、读书笔记也都有对应的专用指令(由 📦 sphinxnotes-any 提供)

  • 首页的「最新更新」功能使用了 recentupdate 指令来读取 Git 仓库,并配合模板生成更新条目(由 📦 sphinxnotes-recentupdate 提供)

  • 所有 SphinxNotes 项目的配置项描述,都是通过 autoconfval 指令实现,仅需知道配置名称,就能从 Sphinx 内部 class 里取得类型和默认值(由 📦 sphinxnotes-project 提供)

这些相似的逻辑代码之前一直分散在不同的项目中,今年的主要工作就是 sphinxnotes-render:一个用于在 Sphinx 里渲染数据的框架,为有自定义指令 + Jinja 模板渲染需求的插件提供底层能力。

https://gh-card.dev/repos/sphinx-notes/render.svg?fullname=

将这些能力抽象出来不太容易,配合 AI 来回重写了几个版本,最终这个框架包含这些核心能力,满足当前所有需求,应该也给未来留下了扩展余量:

  • 一套用来用来描述 Directive 参数的 Schema Definition Language

  • 一个携带模板和结构化数据的 docutils 文档节点 pending_node

  • 一个搭配 pending_node,能在 Sphinx 构建文档不同阶段(parsing、parsed、resolving)都提供近似的渲染能力的 render pipeline

  • 一系列提供不同程度渲染能力的 SphinxDirectiveSphinxRole 基类

有了底层能力之后,原来的扩展在迁移过去后,自动拥有了很多新特性的同时也减少了很多重复代码:

+1311+,-1822:

Integrate with sphinxnotes-render · sphinx-notes/any#51

+149,-256:

refactor: Migrate to sphinxnotes-render · sphinx-notes/recentupdate#5

sphinxnotes-any: 支持 object embedding

https://gh-card.dev/repos/sphinx-notes/any.svg?fullname=

这里的 embedding 就是字面意思,和 LLM 的 embedding 没有半点关系。

sphinxnotes-any 允许用户定义各种各种的专用指令,每个指令使用时会生成一个 object 和对应的锚点,还是刚才的例子,创建了一个作品对象 s-009 ,用户可以文档的任意一处通过 reStructuredText Role :作品:`s-009` 创建一个指向它的超链接。但如果我我想在文档中嵌入作品的图片,或者作品的描述呢?

在迁移到 render 后的 any 3.x 后,这个功能可以被顺畅地实现了:feat: Impl ObjEmbedDirective · sphinx-notes/any#54。用户可以用自动生成的 xxx+embed 指令,在它的 body 里编写的 reStructuredText 可以直接访问到对应作品的信息。这里就不用虚构的例子了,我们用 artwork+embed 指令即可将 s-009 嵌入到文档里:

Source
.. artwork+embed:: s-009

   .. figure::
      /_assets/aw/{{ id }}.webp
      :width: 50%

      {{ name }}, {{ size }}
Result
../_images/s-009.webp

出行准备, 60*50

本文包含的所有画作图片也都是通过类似的这个方式插入,不过用了更多的封装,只需要提供作品 ID 就能批量地插入并显示为网格布局,画廊 页面也是这么实现的:

Source
.. gallery::
   :grid: 3 3 3 3

   s-009 s-001 s-004
Result
../_images/s-009.webp

出行准备, 2026

../_images/s-001.webp

情绪委托, 2025

../_images/s-004.webp

黑猫, 2025

不擅长许愿的古典程序员

早在 23 年 GPT 就显现出了强大的逻辑能力,但我是没想到 AI Coding 的落地如此之快:从 25 年底 Coding Agent 开始加速发展,现在大概没有几位程序员能自信地说写的代码比 AI 好了,这让我感到相当焦虑。如果有先知告诉我「未来不需要程序员了」倒也还好,对未知的恐惧是更折磨人的:我不知道现在的模型能力边界在哪里,也不知道未来它们的上限几何。

还好前者显然是可以解决的问题,26 年 2 月我从 OpenCode/MiniMax-M2.4 开始,我还记得第一轮任务是写 sphinxnotes-render 的 Schema DSL。用了一段时间我感到 M2.4 智商有限,这甚至让我沾沾自喜了一番。等我薅到 Codex/GPT5 的羊毛后,我发现自己还是自大了。

5 月我搬离燕郊。因为不画画了,写代码更多了,也开始用 AI 优化自己的开发流程。

截至目前,我确实几乎不手写代码了,开发的速度比之前大概快了 3~4 倍,但离网上两天说的 Vibe 一个系统的效率还是相去甚远,我想了一下原因可能是:

  1. 我还没有写全新的系统的需求

  2. 我目前还在用二三梯队的模型(DeepSeek、MiMO,而非 Claude/GPT)

  3. 我无法心安理得地许愿获取一个自己不了解的系统,我不能确保一个超出我能力太多的系统正常工作(当然可能 1 有关系)

模型

目前我主力依然是使用 OpenCode,配合 DeepSeek 的计费 API,另外订阅了 OpenCode Zen 让我偶尔能用上 Claude/GPT 此类 SOTA。

编码

我倾向于用 OpenCode 的 TUI,稍复杂的任务会先 Plan + grill-me ,如果需要更细致的修改会打开 Neovim + ⛺ nickjvandyke/opencode.nvim

单轮临时对话

在终端里我自己写了个 agent-run 脚本,配合 Shell Aliases 能方便发起单次的一问一答任务,不必每次都启动 TUI。模型用的 OpenCode Zen 提供的免费 DeepSeek,所以不需要省着用,很多终端操作都交给它:

$ run  cs-009.jpg 命名为 cs-010.jpg,后面的 010..038 以此类推,注意不要覆盖文件
> action-easy · deepseek-v4-flash-free

✱ Glob "cs-*.jpg" 32 matches
→ Read .

... 省略部分输出 ...

  没有冲突文件。从高到低逆序重命名:
  已完成。验证一下结果:
  完成。cs-009→010, cs-010→011, ..., cs-038→039, cs-
  039→040,全部后移一位,没有覆盖任何文件。

遇到复杂任务则可以 run --hard 切换高一档的模型:

$ run --hard 总结 https://github.com/neovim/neovim/issues/39032
> action-hard · deepseek-v4-pro

$ gh issue view 39032 --repo neovim/neovim --comments 2>&1 | head -200

## Issue #39032 总结

标题: treesitter: attempt to call method 'range' (a nil value) in
languagetree.lua:215 with markdown fenced code blocks

状态: 已关闭(标记为 "not planned"),非 Neovim 自身问题

... 省略部分内容 ...

一句话: 这是第三方插件 nvim-treesitter 的兼容性问题,Neovim 本身无
bug,切换到插件的 main 分支即可。
语音输入

现在本地 ASR(Automatic Speech Recognition,自动语音识别)的小模型已经相当成熟,中英文混和不是特别多的情况下我会倾向使用语音输入。我在 Linux 下用 ⛺ xifan2333/fcitx5-vinput,配合 SenseVoice FunASR 模型,效果可以接受。

archlinuxcn 用户可以直接 pacman -S fcitx5-vinput 来安装和更新。

开发杂务
批量更新项目模板

SphinxNotes 开发至今已经有 10 多个需要维护的项目了,大部分是由 ⛺ sphinx-notes/cookiecutter 模板生成的 Sphinx Extension,共享文档、Lint、CI 等基础设施。但每次更新模板时或多或少需要人工解决一些冲突,有了 AI 后,配合 sphinxnotes-template-update skill,批量更新变得非常轻松,现在要是把所有项目一口气迁移到 uv 应该也花不了半个小时。

../blobs/images/2026-06-28_151018.png

16 results in sphinx-notes

Git Commit

我对 Git commit message 的编写一直有些强迫症,除非后面要 squash,否则是断不会写 "update" 这样的 commit message 的。现在有 AI 帮忙写 commit message 了,于是我有这么些 commit skill 互相配合,在不同的项目启用不同的 skill:

文档修改用:

docs-git-commit

配置修改用:

dotfiles-git-commit

通用:

general-git-commit

在 TUI 则配置了 /commit/push/pr 几个 commands,终端则 agent-run + 预定义的 alias

未来还需要程序员吗?我不知道,但一个有 AI 可以用的世界也还不错。

线下生活

失乐园

分手后的生活发生了剧变,这并不是谁谁的错,除了短期的阵痛外,我更愿意相信自己是因为存在一些社会化上的不足而感到难熬,我只讨论我自己。

我现在什么感觉?

在情感开始有明显裂痕的阶段,我同期开展了咨询,本意是挽回感情,但重点不在此。咨询师一开始总是问我:「你现在是什么感觉?」。我说胸闷, 她追问:「感受一下身体,让你胸闷的那团东西是什么形状?」。我有些恼怒,这个东西怎会有形状呢?嗯,那个东西没有实体,确实不会有一个客观的形状,但也我没有听话 —— 我没有去感受,感受了的话,一定会有形状,哪怕是卫生纸套上小米手环,也会有示数啊。

在一次又一次的咨询里,我慢慢地知道了,胸闷是一团边界清晰的迷雾,有时候在胸口,有时候在喉咙,它们的存在是有原因的:有时候是没休息好,有时候是想起难过的事情,有时候是过敏哮喘了,有时候是因为我就在一个抑郁的状态里。我至少可以分区:我是身体不舒服,还是某件事情让我不舒服。我也会更频繁地反问自己:我现在什么感觉,我的情绪从哪里来?

好奇怪啊,这样的身体感受,早在 找自己 我就画过数十遍了,我能轻易地把它们画在纸上,但却无法回答自己「我现在什么感觉」,甚至很少有意识:这原来是我啊……

我也许从现在才开始看见自己。

学习挑剔和浪费

很经常别人问我吃什么,我说「随便」的时候,其实是真的随便,吃什么都行。别人问我喜欢吃什么,我也很难回答,我没有喜欢吃的东西吗?一方面是从小被教育不挑食,不能提要求,不敢说自己喜欢什么;另一方面,和问出「我现在什么感觉」很难一样,我也很少问自己喜欢吃什么。

其实我最爱吃的水果是芭乐、草莓和樱桃也很喜欢,虽然它们有点贵但是我就是喜欢它们;我最不爱吃苹果和梨。 每顿饭得有青菜吃才能舒服,热的时候会想吃汉堡可乐或者冷面,冷的时候想吃热腾腾的杀猪菜,偶尔会很想吃三文鱼; 我不能吃辣,讨厌吃速冻饺子和几乎牛肉丸以外的其他肉丸。

有时想尝试新的吃食,又怕实际上不好吃,我也会接受买来试试,实在太难吃我会扔掉。嗯,是有些罪过,但我也做过很多善事。

我其实是有很明确的好恶的,别人也有。

其实还有很多想写下,但写这些好像有些太过消耗自己了,我感觉不太舒服,喉咙发紧,不是过敏,应该是太累了,所以就到这里为止。

隐居在朝阳

因为觉得燕郊的房子太压抑,因为想离北京的朋友近些,加之后续找工作大概率还在北京,我从燕郊搬到了朝阳一个有漂亮树景的房子里。每天的目标是按时吃饭,吃完在小区里一圈有一圈地散步 —— 后来发现哪怕这一点都很难,所以我更加刻意地这么做,整个人的状态居然也慢慢还有好转。

../_images/IMG20260503120700.webp

我的美丽树屋

../_images/IMG20260624180724.webp

看到朋友圈立刻出门蹬车两公里拍到的漂亮浓积云

../_images/mmexport1779361815851.webp

和球友在运河边野餐

../_images/IMG20260705183249.webp

小区边上的单行道

其他

小妹降临我身边

去年 10 月底我去领养了小妹,是一只长毛狸花的小女猫!

不知道是不是小猫长大过程中都要经历一些波折,四个月多的时候在家摔断了股骨头,虽然狠狠折腾了一番但好歹也是健康长大了。

来朝阳后有了更多精力陪她玩,经过我一番教育,本来不让抱的她现在可以躺怀里三五分钟了!

../_images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20260628154851.jpg

一开始像一个被唆过的猕猴桃

../_images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20260628154857.jpg

这不是缅因什么是缅因!

../_images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20260628154841.jpg

脸小小所以大声嚷嚷眼睛会皱起来

../_images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20260628154847.jpg

标准脸小猫,你应该去拍广告!

../_images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20260628154043.jpg

现在已经是一只标致中猫了

刘辉羽毛球周训

离开大柳之后就没机会练球,十二月的时候刷朋友圈发现 刘辉周训营 有个位子空出来,在网上关注刘辉教练很久,感觉他的教学和晓飞老师一样,都比较成体系。机会难得于是去天津练了一周球,体验了一把运动员生活。抛开提升球技的目标不说,这种非日常的体验感非常美妙,每天训练再训练,时间被填满的同时不停地有新体验冲刷着头脑。可能相比旅游,这样的出行更适合我吧。

这次培训对我短期内的球技提升不大,从训练营回来只记住了高远球的动作,三个月内我甚至变得更菜了。但长期来看,我挥拍时肩膀不适的问题完全消失了,且上手球(高吊杀)的发力也越来越顺畅,可惜培训还是太贵了,不然可以再跑几趟。

../_images/mmexport1783244533950.webp

圣地巡礼

../_images/mmexport1783244542529.webp

辉哥在直播

吉他

今年因为看了《凡人修仙传》,练了一首 《归期》,节奏还是有问题也没心思改。还跟着小龙老师的视频练了一点 小型三和弦,感觉很有用但还弹不利索。

再见啦 2025

已经是七月啦,这个时候才挥别 2025 有点奇怪。我剪掉了长长的头发,又开始在房间里画一点写生,工作还没有着落,但有一些好消息。我完全不知道以后的自己是什么样子,其实也不算是坏事。