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进程里的输出却完全没问题.
如果你认为我说得比较模糊, 那么你完全正确, 因为真实世界就是可能有很多个因素会导致某个结果, 但是在你排除了其他各种原因前, 所有的原因都是混杂到一起的, 就像你在观察一个量子系统前, 系统的态矢量不会坍缩到某个确定的本征态一样. 对于这样一个系统, 可能有影响的因素有:
- kitty版本
- ssh contrl master
- coder版本(coder是负责管理devbox的进程)
- 远程服务器上的bash配置
- 远程服务器上的ps1代码逻辑
- 其他未知幺蛾子
我对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来复制所有内容.