【Code With SOLO】48小时挑战从0开始做3D网页应用,从建仓到跑路。记录最真实的solo使用过程,包含各种solo思考细节和坑点。

鉴于自身经常使用三维软件,特别是节点式操作的交互界面,也是使用得比较多。所以打算尝试做个3D网页应用。深度体验solo的编程能力,文档能力,自主思考解决问题的能力。

测评记录和提示词完全手写,从人类视觉,看待普通人写的,和AI自主写的需求文档差距到底在哪。图片量有点大。

我本身工作上基本用不到Github,但是看到Solo有连接Github的功能,想尝试一下,所以先申请了个账号,从建仓开始,然后授权连接了Solo,直接让Solo从一个空白的仓库开始。这样更方便记录它的迭代过程。

然后开始直接让Solo开干,它拉取了仓库之后,就开始编写相关文档规划了,然后等我确认。

**这里有个细节的地方,那就是Solo貌似有超时机制,**如果我阅读确认的时间太长了,它就会自动帮我确认并且开始执行这个计划了。实时上,我阅读它的这几个文档,时间确实花了不少,前期还是要认真一点的。不过我感觉结构大体上应该没问题(绝不是我看不懂它的技术栈在写什么)。

这个任务看起来是有点复杂,然后它会把任务分配给一个个的subagent来单独完成每个任务。

一看到熟悉的光照,相机,几何体,材质,就感到安稳。

它工作的中途也会弹出一些预览窗口,但是看起来还是很粗糙的样子呢。左右被裁切了怎么回事。然后它似乎自己意识到了问题,把这个修复了一下。

毕竟还没跑完,先等它完全跑完之后再看。

这期间,我上个厕所,泡个咖啡,打开手机做做每日的手游任务。结果回来一看,我几个手游任务都做完了,它还在跑。果然是个孜孜不倦的牛马,连自己都愧对不如。

看它连续跑了一个小时十分钟,终于停下来了。我先验收一下初版的成果。它最后似乎甚至自动完成了推送到Github。

先让我看看效果是什么样。

嗯,看着有常规三维软件里面的,平移,旋转,缩放,还有三种灯光类型呢。资源库也能正确上传纹理。但是貌似控制台有些错误信息,虽然不知道是什么,先发给solo解决一下吧。

然后开始悲剧了,我感觉自己是不是聊得太随意了。Solo开始左右横跳。修一个旧的问题会带来一个新的问题。Solo后面将会数次在思考中用到的经典语录:**让我用更简单的方式去实现。**当solo在思考的过程中,出现这种想法的时候,你得特别小心一点。幸亏被我看到了。

后面修的几个问题,都开始出现:**让我用更简单的方式去实现。**然后纹理这个功能,就处于禁用,开启,禁用,开启。量子叠加态了。

这样可不行,我不能让solo一直处于这种左右摇摆的状态。我决定让它自己先写个修复计划吧。

让solo在修BUG之前,一定要先写文档,再执行。让它有个全局观,让它不要破坏设计意图(但是实际上还是会偶尔不听话)。然后折腾了半天的成果。灯光和材质贴图都能正常使用了。

然后,我发现场景导出和加载,也存在问题,这次我也同样要求它先写文档。同时我自己还补充了一些我自己的想法和细节。我平时是怎么操作三维软件的,三维软件的正确操作应该是什么样的,使用体验应该什么样的。基于我对这类软件的使用经验,三维软件也是有资源路径素材缺失的问题,solo似乎没有考虑到资源不存在的时候的情况的问题,导致直接画面就崩了。如果素材实在找不到,就替换成一个默认的空白贴图吧。

这个加载场景,单个修复任务它这次跑了半小时,倒是一次过(也可能这个任务比较简单),但是起码没有那么粗放了。

又折腾了半天,算是把基础的三维场景的交互问题解决了。我让它做下一个材质系统的任务。但是这个似乎对solo来说,是有点难度的,足足干崩了三次,毕竟这个系统,它跑一次就花了1小时。

最后终于还是出来了个初始版本的样子。但是这UI是怎么回事,看起来有点丑,而且层级有点混乱的样子。我决定让Solo把界面的布局重构一下。

做功能模块细化的时候,直接把solo哥干崩了三次。鉴于solo哥表示,我的需求有亿点点复杂,我决定再拆分一下,给solo哥吃上细槺。我表示再努力一下,再加亿一点点的功能,就能完成当前模块的开发了。

界面重构之后,终于有点对味了,我相信你可以的,solo哥加油。要不我们把这个节点系统也重构一下吧。鉴于我怕solo哥罢工,我决定把这个单独拉出去重新设计成新的系统,毕竟看起来还不够专业。要设计得更专业一点才行。

你的新界面怎么看起来有点小问题,没事,继续交给solo哥解决。

本来想继续细化下去的,但是一看时间,都快跑了俩天了,我也累了,是时候提桶跑路了(不是)。

还是先给这俩天的结果做个总结吧,后续的更新看心情了。

毫无疑问,大语言模型的文本能力确实是吊打大部分人类的,反正自己想要写出这么细致和复杂的需求,感觉思考半天也未必能写出这么严谨的。当然我们只需要关注自己真正想要的就行了,需求写得丑没关系,反正Ai会帮你美化。
solo对文本的阅读,理解,总结,查找能力很强,所以某个功能出现问题,它能够根据关键词,快速定位该模块所关联到的其他模块,以及哪些地方调用了它。观察它的思考过程,感觉也像是人类的方式,解决问题和查找问题的也看起来比较合理。

但solo有时候会为了让程序能正常跑通,修复错误,会采用临时禁用一些功能的策略,会破坏功能的完整性。甚至有时候会把用户体验相关的操作简化,也就是能跑了,但是用起来操作很别扭。也就是solo实际上是完全不知道什么是用户交互体验,它只是按照手册要求它怎么干的规则来的,如果手册本身就没描述清楚什么操作流程顺序,操作反馈的细节。那么它就会随意发挥,寻找最短路径去修复代码问题。即便文档是有详细描写操作方式,你依旧还是得自己去确认,毕竟solo没办法看到真实的操作过程,它对操作的理解其实还是停留在文档层面,以及代码的层面,它认为自己有这么做了,而且跑通了。

总结:文本处理能力,你可以相信solo。但是质量把关,你只能相信自己。

这里还有个小BUG:那就是solo给我打开预览网页的时候,我明明看到一大段的代码报错,初始化失败,也就是页面完全看不到东西,而是一堆代码的黑色背景(可惜这里没截到图)。但是它说运行没问题,而且又检查了一次,还说顺利编译。还是我把信息复制给它,它才意识到代码出现基本的语法错误了。

这次体验也展示出了solo跑长线任务的能力,在设计好每个任务规划之后,直接让solo跑。第一天是最顺利的,即便超过1小时的任务,中途并没有发生过中断的问题。第二天尝试跑几个超过1小时的任务,中途都出现过中断的问题。

任务怎么拆,拆成多小的颗粒度,取决于自己对业务面的理解。如果你想让Ai一口气输出达成你想要的最终效果,不大现实。比如我让solo跑了其中一个模块的内容,都足足跑了一个小时。而且错误可能会累加,所以最好每个阶段验收,并且纠正它,免得让它在错误的路上越跑越远。
是这样的,solo哥只需要写代码和总结文档就行了,而用户要思考怎么写提示词,怎么验收效果,怎么鞭策它,就需要考虑很多了。

关于Github仓库,目前提交的版本还有一些Bug没有修正,毕竟是48小时试验性质跑出来的,质量还是缺佳,特别是交互操作上面需要细化的还是太多了。但是里面包含了大量solo在任务执行过程所产生的文档产物,我觉得这才是最大的意义所在吧。经过这个仓库,你能清楚看到solo是怎么把我的任务分析拆解成更详细的文档,并且执行的,版本更新的总结信息也是solo自动编写的。

github.com

你犯了很多AI新人都会犯的错误:将所有任务全部堆在一个对话窗口里解决,撑爆AI的上下文,导致模型出现幻觉。一个任务只解决一个问题,比如这个对话只用来生成文档,那个对话只用来解决贴图材质问题。

1 个赞

其实并不是的,它执行任务的时候,它用的是子agent,所以一开始的上下文是干净的。它持续跑1小时的那会,主窗口的上下文20%都不到。它修Bug的时候,我开的是新窗口。

1 个赞

修一个bug就要新开一个窗口,一个bug对应一个窗口。

1 个赞

还有,它撑爆过一次上下文,那是子agent跟其他子agent的任务冲突打加了。导致思考过长,子agent自己压缩了一下,这个我就没法控制。我在话题里面,尽量都是任务完成就压缩一下。认为这个话题没法继续了。我就新开窗口。其实你看我截图,我单单修复一个材质系统,就用了四五个新窗口。即便是同一个类型的问题。

1 个赞

其实它每次开始出现左右横跳的苗头的时候,我就新开窗口。但是还是没办法阻止它的幻觉。有时候你需要连贯的上下文继续,但是有时候你新开窗口,它会重复相同的错误,即便文档已经有记录。我觉得有些任务适合在同一个窗口,让它对历史记录的错误有完整信息。因为写入文档的信息不完整,它又会产生新的幻觉。有些幻觉是上下文太长导致的,有些幻觉是上下文太短导致的,我认为这是要分情况的。

1 个赞

你的文档是怎么写的?我看你的项目没有后端,前端是TypeScript。

一个窗口只聚焦于一个任务是合理的。如果修复一个材质需要开四五个窗口的话,那么这代表着你的任务其实还能继续细分,但这就要求你会编程。不会编程也没关系,指令足够清晰的话,它也会构建一群详细的spec文档。而且这些文档都是可以引用的。对于需要引用别的窗口的情况,TRAE IDE里有引用历史对话的功能,SOLO没有,但也不意味着就手足无措了。你可以让这个窗口的AI输出一个构建物,或者总结一下都干了些什么,然后在新窗口引用就行了。和TRAE IDE的区别只是一个是自动,一个是手动。

1 个赞

因为我一开始对它的要求就是只关注前端,因为我想先解决的就是效果和操作上的问题,这些更实际一点,毕竟它还是有点偏工具向。真要用到后端的时候再考虑。而且我认为有些Bug应该拿出来一同修复,不然他就会导致为了修复一个Bug,而导致一个新的Bug,而且这个也是没法拆的。后面成功修好的反而是把几个问题关联在一起的时候一起修,它才没有犯错。你提供的上下文太短了,它真的也会产生幻觉的,因为我以前就试过Ai对自己总结的文档产生过幻觉的。而且就像中医那样,不能头疼医头,脚疼医脚。而且有些问题,我认为已经没法再拆的,因为交互性的问题,是关联在一起的,它是一个整体,你一旦只给它局部,它反而会出错。

1 个赞

这个帅 好看 但我在想一个问题 如果一开始把最终版本给ai ai能做到什么程度

1 个赞

其实一开始就是有最终版的规划的。但是solo在接收到我首句提示词输入的时候,第一版跑了1小时10分钟,输出就是一个简化版的版本。也就是那个带坐标切换,视口角度切换,灯光系统,材质。这四个模块都是有的。但是它明显偷懒了,这四个系统都是最基础的参数。属于齐全,但是不深入。第一天跑的超长任务是最顺利的,不知道第二天为什么不行了,好几个单任务超过1小时的任务它就会中断。我也不知道solo是不是加了时间限制还是什么的。所以我第二天是大量拆分系统,切得更碎,尽量单次任务不让它跑超过1小时。
我试过尝试给个最完整的文档,但是它貌似没法一步到位。
我目前的经验就是第一版尽量让框架完整。有了地基之后,才开始单独抽出每个模块来细化。我认为solo这样操作会比较适合。

1 个赞

get 感谢详细解答 那就更强了 证明当前模型能力下这种方法论才能出这种效果 :cat_with_wry_smile:

1 个赞