3. 从复杂到简单:两次推演中的同一个答案
从复杂到简单:两次推演中的同一个答案
LLM-Wiki 两周,OpenViking 一个周末。方案都定了,东西能跑了。但有个问题硌着我:两次了,探索的终点都落在最简单的那个方案上。
第一次,Skill 从三百行缩回几十行,状态机砍了,长 Prompt 砍了。第二次,五个方案推演完,解析插件没要,伴生文件没要,双链图谱没要,留下来的就六个字——把文件复制过去。
这不是巧合。两次探索的大方向都没错——让 AI 提前消化知识,让编译的成果穿透到检索层。错的是每次刚一起步,就绕开了那个最简单的答案。
一、那个被跳过的选项
两次探索有个共同的细节。最简单的方案未及深思就否定了。
两次都是绕了一圈又回来。不是最开始不知道简单方案的存在,是最开始觉得它太简单了,简单到不可能对。
二、复杂为什么有吸引力
绕开简单方案的原因,两次都一样。复杂的方案看起来更像“在做事情”。
设计一个标注解析插件,听起来是在做什么正经工程。把 LLM-Wiki 的概念卡片嵌进 OpenViking 的 L2,架构上严丝合缝,感觉特别对。在 OpenViking 内部构建双链知识图谱,概念网络自动遍历,光想想就觉得自己在做一件有深度的事。
而方案 B 呢?把文件复制过去。没有技术含量,普通得让人想绕过它。
这就是两次掉进同一个坑里的真正原因。影响技术决策的,不全是理性的代价收益分析,还有对“技术含量”的隐秘偏好。方案越复杂,越像是在做一件值得做的事;方案越简单,越像什么都没做。
这个偏好本身不是问题。推动技术进步很多时候靠的就是对复杂挑战的兴奋。问题在于它在不该出现的时候出现了。当我还没测过基本流程的时候,就去设计标注语法、伴生配置、双链图谱,这时候“对复杂性的偏好”没有起到探索的作用,它只是让我绕开了那个最简单、但可能最对的选项。
三、推演的价值:复杂不是错误,是排错成本
绕了一大圈又回来,那前面的推演是不是浪费?
不是。复杂方案在这里的角色,不是错误,是排错成本。
方案 A 帮我排除了文档级 L1 的检索粒度。方案 C 帮我排除了外挂配置这条路。方案 D 帮我确认了耦合度的底线。每一条复杂路径的推演,都排除了一种可能性,确认了一条边界。排除完之后,简单方案不是从一堆选项里被挑出来的,是所有其他选项被排除后自然浮现的唯一解。
这跟 Knuth 说的“过早优化是万恶之源”,不是同一个意思。他说的是不要在还没测量的时候就优化性能瓶颈。我遇到的不是性能瓶颈的过早优化,是设计复杂度本身的过早引入。这两件事长相相似,内核不同。前者是工程时机的问题,后者是设计决策的问题。
但这两个问题有个共同的根源:在系统还没跑起来之前,就开始解决想象中的问题。LLM-Wiki 那一次,基本流程都没跑顺,就去加对比分析规则、状态机、向量检索。OpenViking 那一次,还没测过一个概念文件的检索效果,就去设计标注语法、图谱索引。解决的不是系统实际遇到的问题,是设计者预感到可能会有的问题。这个“预感”,来自对系统复杂性的想象,而不是来自对系统行为的观察。
四、设计决策中的两种判断
往回看这两次探索,影响方案选择的,其实有两套平行的判断在运行。
一套是显性的、理性的:Token 消耗多少,实现成本多高,维护复杂度多大,系统耦合度多深。这些指标层层推演,最终全部指向简单方案。
另一套是隐性的、感性的:这个方案的技术含量够不够,做出来有没有分量。简单方案在这套判断里完全落败。
最后简单方案胜出,是因为我在决策时选择相信了第一套判断。但第二套判断并没有消失——它在初期直接把简单方案否决过一次,在推演过程中又不断暗示复杂方案更有价值。
这两套判断的拉扯,可能才是每次都要绕一圈才回来的真正原因。不是不知道简单方案可以用,是不愿意接受它竟然是最优解。
五、复杂度是一种惯性
回到那个问题:为什么每次都要先绕一圈复杂方案,才能回到简单方案?
因为从简单到复杂,是人的本能。从复杂回到简单,需要的是判断力。而判断力不是天生的,是用一次次推演、排除、收敛的循环,反复训练出来的。
软件行业有它自己的“复杂度引力”——就像自然界中的熵增,系统总是自发地走向复杂。新框架、新范式、新架构模式,不断提供让人兴奋的复杂选项。保持简单不是默认状态,是刻意对抗引力的结果。而每一次推演,都是在为这种对抗积累势能——让我下一次面对复杂方案的诱惑时,能更快地认出它,更早地问出那个该问的问题。
这就是两次掉进同一个坑里的价值。不是坑本身有价值,是从坑里爬出来之后,那个坑的位置被记住了。下次再走到附近,肌肉记忆会自动拉响警报。
Antoine de Saint-Exupéry 在《人类的大地》里有句话,前后想了很久。
"La perfection est atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher."
(“完美不是无可增加,而是无可删减。”)
以前读这句话,觉得是讲审美。折腾完这两轮才摸到它真正在说什么。真正的判断力不是知道该加什么,是知道该删什么。而且最该删的,往往是那些让自己觉得自己很聪明的部分。在IT行业这片天然倾向于复杂生长的土壤里,知道什么时候不做什么,可能比知道做什么,更需要判断力。