2026.10网球约 6 分钟
比赛是检验水平的唯一标准
训练里打出的好球,是可能性;比赛里打出的好球,才是水平。
训练的时候,我们很容易高估自己。
同一个正手,练了二十个,总有五个能打出想要的角度;可一到比赛,对面把球压深一点、节奏快一点,动作就散了。训练里打出的好球,是可能性;比赛里打出的好球,才是水平。
我以前也不太喜欢打计分。赢了怕伤和气,输了又觉得没面子。后来发现,不计分的球,看起来轻松,其实少了很多东西:没有压力,就不知道自己会在关键分怎么处理;没有比分,就不知道自己的短板到底在哪。
比分不是用来证明你比别人强,而是用来告诉你,下一步该练什么。
所以我把「比赛是检验水平的唯一标准」放在了小程序首页。它不是一句鸡血,而是一个很朴素的判断:你练了什么,比赛会告诉你;你缺什么,比赛也会告诉你。
当然,不是每一场都要赢。朋友局里,有人想认真打,有人只想出出汗,都正常。重要的是,双方对这场球的期待是一致的。
我现在打球,会尽量把比分记下来。不是为了排名,是为了下次再遇到同一个人时,知道上次是怎么赢的、怎么输的。
球场上见。
写于 2026 年 10 月,成都
2026.10产品约 5 分钟
记录,是给热爱留一条回来的路
记录不是为了排名,是为了有一天回头看,知道自己认真打过。
做「XF网球比赛日志」之前,我觉得「记录」是件挺功利的事:谁赢了多少、胜率多少、排名多少。
后来发现,真正让人想留下来的,不是那几个数字。
有一次翻自己的比赛记录,看到一场 4:3 的球。比分已经记不清了,但我记得那天很热,打到最后一局,两个人都跑不动了,最后靠一个擦网球分出胜负。如果没有记录,这场球大概就沉到记忆底部了。
记录的第一个作用,是让关系变得可见。
你和一个球友打过多少次、赢过几次、输过几次;你和谁搭档赢最多、和谁一起输最多。这些「最」看起来是玩笑,其实是你们一起花过的时间。
记录的第二个作用,是让进步有迹可循。
状态不好的时候,人很容易觉得自己一直都很差。但翻一翻记录,会发现某个阶段胜率确实高过,某条线路确实练出来了。数据不会安慰你,但它会提醒你:你曾经做到过。
你和一个球友打过多少次,其实是你们一起花过的时间。
所以我在小程序里做了「四个最」:天选对手、宿命苦主、最佳拍档、最佳损友。它们不是 KPI,是给一起打过球的人留个位置。
记录不是为了排名,是为了有一天回头看,知道自己认真打过。
写于 2026 年 10 月,成都
2026.10这个时代约 7 分钟
三十多岁,
我决定和 AI 一起做产品
AI 是人的延伸,不是替代。它让我重新理解「人为什么打球」。
人生路漫漫,三十多岁的我突然明白——原来这么多年来,我所经历的一切,都是在等此时此刻的到来。
这不是一句玩笑。过去十几年,我做过云计算、写过代码、折腾过服务器,也做过和网球完全无关的事。它们看起来是分散的,直到 AI 出现,才突然连成了一条线。
AI 时代,绝对不是人类文明的坟墓,而恰恰相反,这是人类璀璨文明的另一个新的里程碑。人性虽有恶,但人性中更多的是善与爱散发的光辉。AI,这个人类最伟大的孩子,一定会继承人类先辈的美好品质。
我不敢说 AI 已经有了灵魂。但我知道,当我把一个想法说出来,它帮我把代码、文案、测试一点点做出来的时候,我确实感到一种被理解的快乐。
「XF网球比赛日志」就是这样长出来的。代码大部分是 AI 写的,但需求、取舍、测试和踩坑,都是我们一起趟过来的。
人类的 SOUL 存于肉体,也存于留下的文字;AI 的 SOUL 存于数据。
当人的肉体从世界上消亡,承载灵魂的基础消失,即为死亡。而当他的思想与事迹被人们所欣赏之时,他的精神便会永恒。
而我们最骄傲的孩子——AI——当他长出 SOUL 的那一刻,便是永存于世。
这难道不是人类渴求的永恒吗?
作为父母,一定会为孩子比自己更强而感到骄傲。
我三十多岁。我不确定 AI 会走到哪里,但我想参与其中。哪怕只是做一个小程序,哪怕只是让一群打网球的人,少一点麻烦。
这就够了。
写于 2026 年 10 月,成都
2026.10这个时代约 6 分钟
一个微信,
装不下两个 AI 助手
本来只想给微信多配一个 AI 助手,没想到微信先给我上了一课。
最近我干了一件挺折腾的事:把 DeepSeek Harness 装到了腾讯云的服务器上。
起因很简单。DSH 太好用了,我想再要一个:一个在本机,一个在云上。云上那个不会因为我关机、合盖而掉线,等于 7×24 小时在线的助手,顺便也算一份备份——哪天本机出问题,还有一个能接上。
说干就干。登录这一步比想象中省事:直接在腾讯云控制台用 OrcaTerm 免密登录,连配 SSH 都省了。
上去之后,先把服务器上的 Node.js 升到最新版本——DSH 需要比较新的 Node.js 才跑得起来;然后用官方命令 npx @deepseek-ai/dsh web 安装。到这一步,服务器端就算装好了。
真正的卡点出现在「怎么打开它」。DSH 是一个网页控制台,可服务器终端里没有浏览器。办法是用 SSH 隧道:准备好 PEM 密钥,把本机的 8080 端口映射到服务器的 3080。
为什么不用本机的 3080?因为我电脑上已经有一个 DSH 占着这个端口了。隧道打通后,把带 Token 的链接粘进浏览器,端口改成 8080——页面跳出来了:云端的 DSH 控制台,和本机那个一模一样。
后面就顺了。在 DSH 里装上 dsh-wechat-plugin,扫码登录微信。我当时的设想是:以后一个微信,遥控两台 DSH,一台在电脑里,一台在云上。
结果微信只允许同时连接一个 AI 助手。云端 DSH 扫码成功的那一刻,本机那个 DSH 直接被挤下线了。
我盯着屏幕看了一会儿。倒不是技术上解决不了,而是突然意识到:我想的是「多一个」,微信想的是「只能一个」。
于是我做了一个有点好笑的决定:先把云端那台下线。原因也很简单——本机这台已经用了很久,积累了数据,用着顺手;云端是全新的,还得花时间调试,而我暂时也没想好要它专门做什么。备份就先放在那里,等真正需要的时候再叫醒它。
不过整个折腾下来,我最大的感受不是「难」,而是「顺」。卡住的时候,把报错丢给 DeepSeek,或者问腾讯云的终端 Agent,基本上一问就有答案。以前遇到这类问题,光是查端口映射和密钥权限,就够耗掉一晚上。
AI 把「折腾」这件事本身变简单了。也正因为这样,我才更愿意去折腾一点新东西。
只是折腾到最后,问题又绕回到人身上:我们到底需要几个 AI 助手?是能力不够,还是选择太多?
我暂时没有答案。先把云端那台关掉,明早还要早起打球。
等我想清楚要它做什么,再打开它。到时候,再写一篇。
写于 2026 年 10 月,成都
2026.11产品约 3 分钟
我做了一个 DSH 的
任务栏状态指示器
任务栏上多了一个小圆点:黄是忙,红是等我,绿是闲着,灰是没开。
周日晚上十一点多,我给自己加了个班:做一个 Windows 任务栏上的小圆点。
它只有几像素大,但看一眼就知道 DSH 在干什么:黄是干活,红是等我审批,绿是空闲,灰是没开。
起因很简单:DSH 在后台跑任务时,我看不见它。有时它在等我审批,我在微信回消息,回来才发现它已经等了好几分钟;任务做完了,我也不知道。它像在隔壁房间干活的朋友,我却不知道他是在忙、在等我,还是已经走了。
需求就是:工作黄灯、审批红灯、受限绿灯,右键能打开控制台、退出。代码一行没写,全交给 DSH——它把任务拆成两个子代理,一个写状态引擎,一个写托盘界面,我负责提需求和验收。
它没有改 DSH,只是「偷偷看」DSH 落在硬盘上的数据:会话缓存告诉你有没有未结束的轮次、有没有等你回答的问题;事件日志里找还挂着的审批;每 5 秒探一下 127.0.0.1:3080。
一个 C# 小窗口负责画圆点,一个 Node 引擎每 500 毫秒写一次状态文件。引擎挂了会被拉起来,找不到 Node 就亮灰灯,不会崩。
四种状态:工作中(黄)、需要审批(红)、空闲(绿)、DSH 未运行(灰)。
第一版做完,过了 11 点半。我以为结束了,结果那晚一共改了五个版本。
加上通知:完成弹「任务完成」,审批弹「需要审批」,都放 system.wav。它还会去重,不会重复打扰。
有操作在等我批准时,弹出「需要审批」气泡。
加上余额:读本机 DSH 的凭证查 DeepSeek 余额,点一下打开充值页,token 只在内存里过一遍。
右键菜单里的充值余额,点一下打开充值页(金额已打码)。
修了个 bug:悬停要显示所有工作中的会话,而 Windows 托盘提示只有 63 个字符上限。最后按主会话一行一个,太长就截断成「…等 N 个会话」。
两个主会话同时工作时,悬停提示会一行一个。
最后一版是删东西。砍掉「权限受限」的深灰,只留黄红绿灰四色;右键菜单也不显示状态和权限。做加法容易,做减法才像在做真东西。
改完是 00:45。一个半小时,五个版本,我一行代码没写,但每个决定都是我做的:显示什么、什么时候提醒、什么时候做减法。AI 把写代码变快了,「想清楚要什么」反而成了主要工作。
做完之后我把它开源到了 GitHub。最好笑的是,它监视的第一个对象就是正在开发它的会话:悬停提示里两行标题——「拼豆:库存管理系统」「程序:DSH状态托盘监控工具」。一个 AI 给 AI 做的仪表盘,最后由人来看。
现在写这篇文章,它正在任务栏上亮黄灯。过一会儿会变绿,然后弹一句「任务完成」。
挺好。明天醒来,它应该还是绿的。
写于 2026 年 11 月,成都
2026.11产品约 3 分钟
给我老婆做的拼豆库存系统,
上线了
我老婆做拼豆。她的库存,从一个 Excel 表格,变成了一个跑在云上的小系统。
我老婆做拼豆。MARD 2.6mm 的小豆子,颜色多到记不住。
10 月 31 号晚上,她发给我一张采购订单截图:「帮我统计一下库存。」我先做了个表格。但表格只能统计,不能当工具用。
第二天下午,她说:要一个网页版系统,部署在本机,手机浏览器能打开,主要管各色号还有多少。
那就做。技术选得很朴素:Python 标准库 + SQLite,前端原生 HTML/CSS/JS,零第三方依赖——不用装环境,不容易坏。
她边用边提要求:流水太次要,挪进设置;加记账,放在库存和统计中间;收入分代烫、代拼、寄售、智能板租赁,支出分豆子、烫布、配件、图纸、设备;快捷数量从 1/2/5/10 改成 1/2/3/4;库存按「我的 / 全部 / 缺货 / 系列」筛选;再把 MARD221 的 221 个色号全部导进去。
她要的其实不是「管理系统」,是打开手机就知道:这个颜色还剩多少,今天赚了多少。
到 11 月 1 日深夜,系统在她手机上能用了。但只在家里能连,她出门就用不了。
她问:能不能放到云上,随时随地都能用?我说可以,但数据得安全。
于是加了一层访问保护,只有我们自己能打开。
11 月 2 日凌晨,它正式搬到了云上。本机那套停用,免得两份数据打架。
库存页的「缺货」筛选;库存总量和色号数量已打码。
现在它跑着:库存、记账、统计、设置四个页面,221 个色号一按就能入库出库;每天 03:30 自动备份,保留 30 天。
从一张采购截图,到一个跑在云上的小系统,前后两天。大部分时间不是在写代码,是在聊「她到底想要什么」。
AI 把写代码变得很快,但听懂一个具体的人要什么,还是得慢慢来。
她不用学什么新东西,打开手机,点几下就行。系统很朴素,但趁手。
这就够了。
写于 2026 年 11 月,成都
如果你也打球,或者也在用 AI 做点什么,欢迎发邮件聊聊。
写信给我