任务超时之后的级联取消。
这个功能他自己想做没做,因为它牵扯到至少四个文件、两个goroutine的生命周期管理,还要兼容他之前写得乱七八糟的事件总线。
最麻烦的是,这个项目里有一段历史包袱。一开始写的时候他偷懒,把一个本该解耦的模块直接塞进了主循环里。
Nexus内部那个还在打磨的类似工具,叫Nexus Atlas(地图集),瑞恩也会用这个项目来测试Atlas,每次测试都栽在这个耦合里。
他想看看御风在这段逻辑里会犯什么错。
回车。
终端开始滚动。
可以看到,御风先是扫描了一遍仓库结构。
这步不算什么,瑞恩挑了挑眉,心想。
接着御风开始读代码,标出了几个它认为相关的文件。
瑞恩往前凑了凑。
不对。
它怎么知道事件总线是相关的?落地页里没提“事件总线”,他敲的命令里也没提。
而且它居然很快就略过了那几个名字里带“task”(任务)、“timeout”(超时)的文件,知道那里的逻辑和这次要求的改动毫无关系。要知道,那些是新手最容易上钩的假相关文件。
它像是真的读懂了这个项目,知道哪个模块是核心,知道哪段代码是历史包袱。
就好像这程序本来就是它写的一样。
瑞恩的冷笑慢慢从脸上消失了。
终端里继续在输出文字。
御风给出了第一版改动方案,它没碰那段历史包袱,而是在事件总线上加了一层信号广播,把级联取消挂在了广播那一层。
瑞恩盯着屏幕。
这正是他自己想到过的、但因为懒得动事件总线所以没做的那个方案。
别慌,这只是个巧合。
瑞恩在心里默默告诉自己。
他重新往椅背上靠了靠,强迫自己想了一个合理的解释:事件总线在这个项目里本来就是核心模块,文件体量最大,被扫描到只是概率问题。如果这个团队,它在扫描文件的逻辑上格外花了精力,做到这一步也不是不可能。他们可能就只是擅长干这个。
这个解释站得住脚。
御风继续工作,开始动手写代码。瑞恩盯着终端,等着它在历史包袱那里犯错。那段耦合进主循环的模块,Atlas每次都在这里翻车。
然而,御风没出一点错,耦合逻辑被清理得干干净净。
御风甚至在重构之前先补完了单元测试。
旧的代码被大刀阔斧的删除了,新生成出来的代码结构清晰。
御风又自动跑了一遍单元测试。
全绿,一遍通过。
瑞恩的脸上露出了难以置信的表情。
这,这怎么可能呢?这个工具,比Atlas还要强?
瑞恩不信邪的又打开了Atlas测试库里的另一个例子,这个例子是Atlas测试库里最恶心的,编号case-42。
到现在为止,Atlas还没有一次能够完整通过过。
瑞恩输入了标准的测试提示词,等着看这个御风会在哪里跌倒。
然而,五分钟之后,御风一遍通过了测试,代码优雅,注释完整,看起来简直不像是AI写出来的代码。
瑞恩不得不强迫自己接受了现状。
对比Nexus Atlas,你让它从需求文档生成代码还可以,但是每次在已有的代码仓库里运行,都会出两类典型故障。
一类是找不准上下文。给它一个修bug的任务,它能在一个十万行的文件夹里满世界乱找,把毫不相关的文件都翻出来塞进提示词里,然后生成一份看起来很专业、但完全没办法运行的代码。
另一类是碰巧找到了相关的代码,也改不对。就算上下文给对了,模型也常常分不清哪段是要遵守的约束,哪段只是参考,出来的结果很不稳定,有的时候能用,有的时候不能用。判断能不能用要花的精力不比直接写少多少。
这两类问题,Nexus的研究和工程团队从八月卡到现在,准确率提升了不少,但完全没到可用的程度。
而御风,这个新工具,至少在他刚才尝试的那两个任务里,看起来把问题都漂亮地解决了。
瑞恩感觉房间里有点儿热,他扯了扯衣领,然后低头看了看电脑上的时间,晚上十点三十七。
瑞恩又看向莎拉的对话框。
莎拉的上一条消息还是十分钟之前。
“中国的网络论坛上有一篇测评「御风」的文章,讨论量非常大,请看一下。【链接】”
瑞恩又顺着对话框看向上面的聊天记录。
“刚才我和开发团队已经一起试用过了,完成度比我们的还要高不少!”
这是莎拉刚才发来的话,瑞恩本来还觉得莎拉是在大惊小怪,现在这句话看起来格外的刺目。
他没点开莎拉的链接,而是直接拿起了手机,拨通了莎拉的电话。
“……呃,嗨?”接起电话的莎拉有点儿错愕,她虽然经常晚上汇报工作,但是老板却很少会直接回复。在硅谷,即使是在创业公司,老板们还尝试维持着表面的“不鼓励加班”的文化。
“莎拉,现在就联系工程团队、研究团队的负责人,市场负责人,半个小时以后”瑞恩又看了一下时间,“十一点开线上会。约翰我来联系。”
约翰斯诺是Nexus AI的CTO。
“十一点?”莎拉在电话那边又确认了一下,“今天?现在?十一点?晚上十一点?”
这个电话的信息量显然有点儿大,冲击了她思考的回路。
“是的。”瑞恩说,“确保所有负责人都上线,给他们发信息,给他们打电话,或者直接去他们家敲门。总之,确保所有人都上线。”
说完,瑞恩挂断了电话。
紧接着,他又联系了约翰,把他刚才测试的过程大概描述了一下。
约翰在电话那边沉默了一下,开口道:“我现在就过来。”
约翰家和瑞恩家住的不远,开车只要五分钟。
挂断了电话,书房里安静了下来。
坐在办公桌前,瑞恩重新看向屏幕,点开了莎拉发来的那个帖子。
帖子是中文,瑞恩用翻译插件翻译了页面,读起来还算通顺。
老张在帖子里痛心疾首:御风重构他的支付模块,自作主张把他写的一段去重逻辑删掉了,没有任何提示。
“它不知道自己不知道”,“潘多拉的魔盒”,“互联网的地基”……
看完这篇文章,瑞恩整个人往椅背上一靠,目光对着书房的窗户。
“这个人什么都不懂。”瑞恩低声说了一句。
老张以为自己在骂的是御风。
但老张不知道的是,御风底下做意图理解、任务编排和技术决策的,正是Nexus的大模型水星模型。
水星模型的决策风格就是这样的,激进、自信,看见不符合规范的冗余代码就会“顺手改掉”,能删的部分绝不保留。
这是瑞恩本人和研究团队特意选择的技术方向,现在大模型的竞争已经进入白热化,几家巨头的市占率那么高,Nexus作为一家创业公司,要怎么找到自己的定位?
人狠话不多的技术精英,就是Nexus给水星模型选择的定位。
老张那段去重逻辑被悄悄删掉,根本不是因为御风的“幻觉”,而是因为水星的“脾气”。
老张找错攻击的对象了。
但是御风真正的功夫:找对上下文、识别历史包袱、无需人工接管的完成整个任务,这些才是「御风」作为工作流编排工具的核心价值。
模型是可以换的,把激进的换成保守的,水星模型换成别家的模型,老张那段去重可能就保住了。
但是瑞恩现在最好奇的是,源码科技,这个团队,到底是怎么做到的?
第二百零六章 还好,他们没有大模型
很快约翰就来到了瑞恩家。
瑞恩去给约翰开门的时候,妻子艾米丽(Emily)正从楼上下来。她先和约翰挥了挥手,然后压低声音说道:“你们要谈事情,声音小一点,孩子已经睡了。”
瑞恩点了点头。
他带约翰去书房拿上电脑,两人去了地下室的一个房间。
刚坐定,约翰开口了:“你说那个中国公司,把自动化工作流的产品做出来了?”
他的语气里还有点难以置信。
瑞恩点了点头,然后看了一下时间,已经十点五十了。
“一会开会的时候,我会再现场做一遍演示,到时候你再看吧。”瑞恩说。
“也许你一会演示的时候,那个工具就翻车了。”约翰开了一个玩笑。
做这一行的都有过这种经历,很多时候做软件原型,私底下的时候用的都没问题,一到现场演示环节就有没见过的Bug冒出来。
“我衷心的希望它会翻车。”瑞恩没有笑,认真地看着约翰。
约翰也收起了笑容。
他明白瑞恩的意思,如果演示的时候翻车了,那说明这个新产品最多和Atlas半斤八两,有威胁,但不致命。
但是如果真的能稳定地达到瑞恩刚才电话里说的那个水平。
那Nexus就很危险了。
很快,线上会议开始了。
CEO瑞恩和CTO约翰在一起,会议一开始,与会的员工就感觉到不对了。产品负责人莎拉和工程团队负责人对会议内容心里有猜测,临时被叫进来的研究团队负责人和市场负责人则一头雾水。
市场负责人现在正在酒吧外面的大街上用手机开会呢。
瑞恩没管众人的反应,迅速说明了情况。
“在中国有一家公司,几个小时前开放内测了一款产品,方向和Nexus Atlas高度重合。”瑞恩说着打开了屏幕共享,一边滑动页面一边说,“这是他们的产品落地页,这是产品描述。”
市场负责人迈克尔(Michael)一边在街上走着,想找个安静的地方,一边在心里想着:这是被抄袭了?怎么没把法务叫进会里?叫我干什么?
“然后,这是他们的产品。”瑞恩说着打开了电脑上的终端,给自己的玩具项目又加了一个新功能。
他特意没去复现之前的那个功能,可能在瑞恩的心里,他也暗暗期盼着这次运行能够翻车。
然而没有。
御风运行的非常顺利,分析代码库,规划任务,生成代码,补全单元测试。
最后生成了一个摘要,写了这次任务中做了什么改动,里面的产品逻辑是什么。
甚至因为在同一个代码库里,这不是第一次运行,分析代码库的时间大大减少了,整个改动只花了三分钟左右。
演示完后,瑞恩没有说话。