Pensieve: 2607

2026-07-27 09:35

所读所观所玩

这个月在微信读书上读完了四本书, 都一般, 没特别出彩. 最好的一本是漫画分镜头表现教程, 看这本的原因是下个月开头组织的一个Game Day里面大家都会用AI来去生成一些多媒体内容(漫画, 视频等), 这本书能够提供一些分镜头方面的知识储备. 而且这本书算是超出期待, 在于不光演示了正确地画法, 而且还演示了如果不这样做会怎么样. 第二本是金圣叹选评杜诗, 作为金圣叹的粉丝, 我本来对这本有比较高的期待, 但是他所选取的杜诗没让我领略到杜甫的好. 倒是附录里的一句歪诗让我印象很深刻: “子美篇篇老, 陶潜顿顿饥”. 剩下两本都是技术相关, 一本是汉语写的Claude Code实战: Harness工程之道, 这本书比较有意思的地方在于没读到多少AI味, 但是不少技术细节有些缺漏, 看不明白作者的深浅. 最后一本是更像是工具书的Three.js权威指南, 这本书虽然是人写的, 但是更像是AI的输出一般, 一味堆材料, 没有起伏, 比较无味.

游戏来说, 这个月无聊重新捡起暗黑三, 用死灵又玩了一遍150层大秘境. 总共大概也就花了十几个小时吧. 整个游戏最好玩的部分是刚刚到70到能速刷T16的部分. 后面的冲层真的挺无聊, 就是按部就班地升级宝石, 给身上的装备打卡, 然后能速刷120后就可以试着冲150了, 一千巅峰就差不多够了. 而且真正抓的时候很多时候是在撕票, 就很没意思. 最好玩的那个部分玩家能明显地感觉到提升感, 而一千巅峰后的提升就很不明显了.

kitty配置不当导致的故障一则

有了AI之后, 我越来越懒, 配置文件的管理都是交给AI来更改了. 这个月也是在AI的帮助下, 解决了一个困扰了我数个月的小故障.

问题是这样的: 我在使用kitty这个终端模拟器的时候, 本地的日常操作都很正常, 但是连到一台远程由coder管理的devbox的时候, 经常ascii码会错乱, 比如复制内容的时候会带上ascii控制字符, Ctrl-C/Ctrl-D无效等等. 往往都是得关Tab来断开连接. 我一般是多个tab操作, 与此同时, 我devbox上的Claude Code进程里的输出却完全没问题.

如果你认为我说得比较模糊, 那么你完全正确, 因为真实世界就是可能有很多个因素会导致某个结果, 但是在你排除了其他各种原因前, 所有的原因都是混杂到一起的, 就像你在观察一个量子系统前, 系统的态矢量不会坍缩到某个确定的本征态一样. 对于这样一个系统, 可能有影响的因素有:

我对ps1有点信心, 因为这个软件的ascii控制字符我很仔细地调校过, 而且这么多个版本都没出故障. 然后, 当然一开始要怀疑自己的代码了, 而且最近有rust的第三方库更新. 我让AI帮我审核了一遍, 答复说应该没问题.

然后我认为是kitty版本的问题, 我记得之前从0.45.0升级到0.46.0的时候发现了这个问题, 当时回退到0.45.0就正常了, 所以我当时猜测是kitty版本导致了问题. 后来发现0.45.0也能触发这个故障, 于是排除了这个可能.

因为claude code里面的输出都完全正常, 所以我猜测是不是ssh control master导致了这个故障, 两个ssh会话共享一个连接时, 是不是有些内容错乱的问题? 虽然这样的想法很玄幻(因为openssh如果有这种bug, 早应该被修好了), 但是我还是认真地测试了下, 发现control master完全关闭后也还是有一样的乱码情况.

为此, claude开始指导我, 让我用下面这样的代码来运行kitty, 这样能够捕获所有输入输出流:

kitty --dump-bytes=/tmp/kitty-dump.bin --dump-commands > /tmp/kitty-commands.log 2>&1

AI当然会犯错, 比如它看到我的prompt里面有一个分支名叫kaix/dynamic⁁ess, 信誓旦旦地告诉我, 这就是是kitty跨窗口串台的证据, 其实这是我自己写的ps1代码里对过长分支名做截断显示的正常逻辑(用作为截断标记), 并不是bug.

下一个发现是, 我在devbox上尝试重现问题的时候, 发现我在我自己的Home里面随便操作, 没导致问题, 而一旦我进入了我们公司的monorepo, 就有问题了. AI指导我操作了一圈, 还是没发现具体的问题.

这个时候, 我开始问AI, 为啥系统自带的Terminal做这些操作都一切正常, 而当我用kitty的时候就会有故障呢? 这个时候, 我发现了另外一个线索, 因为我在kitty下已经习惯了用Cmd+K来执行清屏操作(映射到clear_terminal reset active), 而这可能是导致后面出乱码的直接原因, 而Apple Terminal我用得很少, 在里面也是缩手缩脚, 肯定不会有这个肌肉记忆来帮我清屏, 所以一切正常. 让AI进一步帮我分析了一下, 果然. 问题是我本地有清屏, 但是这个操作并没有把任何操作指令发到远程服务器上去, 因此两边会不同步. 为了验证这个猜想, 我慢悠悠地在Home下执行了一次ls, 然后Cmd+K清屏, 然后再ls, 此时复制的结果就出问题了, 类似^[[200~bin/git-misc^[[201~. 而且, 这个粘贴结果只有在当前这个被reset过的session里是这样, 贴到kitty其他的tab都是正常的.

知道了问题的原因, 修起来就容易多了, 我们不应该那么粗暴地重置状态, 按照AI推荐的这个组合就好很多了:

map cmd+k                combine : clear_terminal scrollback active : clear_terminal to_cursor active : send_text normal,application \x0c

这样长是因为我的确很多时候习惯了Cmd+K清屏后跑命令, 然后Cmd+A来复制所有内容.