ARTICLE · 1200763
AI 复刻TT静听(十):从改版崩溃到神之一手
上一篇说到歌词窗上的漏洞补住了。可那张皮肤要怎么无损拉伸,还是没摸着门。
这一篇记的是10号晚上到11号上午的心路历程。
一:九宫格的宿命
晚上8:20,它把旧的第N版九宫格方案(是的,已经是第N版)从灰里扒出来重新用——带上一套择优规则和三段映射,再补两处。
其中一处是裁边:底图里那些"整行、整列被键透明"的垃圾边,先用代码裁掉再拿去铺。它是这么量出来的:Orange 那张底图,顶行有 282/283 的像素被键透明,底行有 280/283。四角和边带是 1:1 复制的,把这些透明行原样画上去,就是漏桌面蓝的根因。
8:32提交,回归全绿。它大概松了口气。
我看了一眼,说:先别急着歇。
9:24,问题来了。
"目前只是实现了把窗口铺满这一底线,算法肯定和我交代的不一样:ACGI 四个区,图像是不会被拉伸的。而你实现的效果,A 区已经被拉伸得非常明显。"
九宫格这套做法,我前前后后跟它讲过好几次。它做出来的东西能跑,但跟我说的不是一回事。
我把改良法子也一起递了过去:1px 太碎,改成 10px、20px 一块块复制着铺,最后一块按结束坐标倒着铺一次。
到9:50,窗口拉伸能用。我却在这一刻叫了停:
"目前的算法效果跟原版还是有差距,再优化就得好好研究原版,比较费精力。先记到待办事项里,优先级较低。"
同一段话里我还提了第三桩:歌词秀的子窗口,经常不响应拖动消息。
它没顾上。
二:燃尽
夜深了,活倒多起来。
WMP10 的进度条滑块一直只显示一半——它用"列可见度凹陷法"推定出 4 态 ×20px,修好了。
那第三桩,到后半夜变成更要命的:歌词窗右侧和下侧拖不动,只有左边能拖。
日志看着让人心里发凉:布局尺寸确实涨到了 411,可屏幕上一点反应都没有。属性里的宽度在涨,真实窗口不跟着长。
凌晨1:00,修法落定:命中判定改用窗口相对坐标,处理器挂到窗口级。1:10提交,1分钟后推git,它说了句"明天继续"。
我睡了,它也停了,都在回蓝熬CD。
三:虚心接受,坚决不改
早上8:40,昨晚那批总算闭环了。
我把今天的活排了序,安排给CD之后的WB:
按 5、1、3、4 的顺序来,2 继续往后放。5 你全自动跑,不用问我;1 给我看结论就行,我点头就算完;3 直接给我看图;4 得一步一步讨论。
被排在第一、全权交给它的"5",正是昨晚被我压进低优先级的那件事——看看九宫格法跟原版的差距,到底差在哪。
9:07,它的结论出来了:resize_rect 根本不是九宫格的口,它的语义是"可拉伸的竖直区间",横向那两个数只是历史遗留。
9:36,我把这个结论整个退了回去。
"我无法认同。Orange 必然是横向、纵向都能拉伸的,你的算法在逻辑上就不成立。透明色是全局定义的,井字形九宫格也是必然的——剩下的只是局部拉伸填充算法谁好谁坏,这才是要比较的。圆角在四个角,天然不用拉伸。你好好翻翻昨天的日志。"
9:37,它认了:
"你说得对,我认领这个错误——我上一轮是用 Python 粗糙复刻后凭想象下的结论,没回代码核实。"
9:44,又补了一句:那版结论作废,是拿一个写得很糙的复刻跑出来的,属于你说的"在猜"。
四:柳暗花明
9:54,我把三条路摆开:
1px 单线平铺,性能太差,早否了;20px 块复制,不过是应急;连续渐变和离散特征法对渐变有效,但对像素式单一背景,反而会一点点累积"噪声"——这是我自己的顾虑。
它先去查性能。9:56,实测回来了:最近邻拉伸,颜色数 +0%(Let's Seven 2962→2962,WMP10 39→39)。所以插值模式必须锁成不插值——我担心的"累积噪声",只在双线性下才成立。
一句推论把分类法整个绕开了:既然最近邻对纯色零噪声、对渐变百分百保真,那分类本身就是多余的。
10:05,先打备份点,再改代码。
10:11,数据出来了:标题栏那一行唯一色,从 1 变成 153——底图参考值恰好也是 153,百分之百保留。
10:12,它顺手立了份专题档案,把这个算法的最近五代演进都记了下来:从最早的 ImageBrush 毛病,到 1px,到 20px 应急,到被我的"噪声"顾虑否掉的分类法,再到现在这版终案。
10:24,我只说了一句:"现在的填充算法表现非常完美,直接采用作为定稿。"
话音刚落,我又挑出一处:Orange、Winamp、WMP10、WMP10_HD 这几套,歌词窗最外缘多了一圈矩形边框——原版没有。
10:26,它把边框回归修掉了。10:28,回归全绿。
五:五味杂陈
就这么成了,心总算放下了。
折腾了那么久,方案一次次被退回来,我驳回它4回——其中1次它直接承认自己在"猜"。最后的解法是两句话:铺满,然后把插值关掉(用最近邻)。
我盯着那两行代码看了半天,甚至有点不真实的感觉:这就完成了?
复盘时我还跟它说过一句:算法演变不止五代,在我明确九宫格分区之前,我们已经探索了很久,失败的次数非常多,填充结果的截图惨不忍睹——这些都要写进文档去。
现在回头看,真正挽回局面的,反而是昨晚9:50我那句习惯性的"先记到待办里"。当时看着是叫停,其实是把它从一条越跑越偏的路上拽了回来,让它睡了一觉,第二天用新的眼睛重新看。
AI 不怕辛苦,怕的是在错路上越跑越起劲。这时候需要有人喊一声——别跑了,先歇会,顺便抬头看看方向。















































































