关于ai的一些使用心得
打了一个九坤的量化比赛,然后迅速一轮游回家了 也算是真的第一次彻底的和ai交互的编程模式 有了一点点心得,发一篇说说记录一下
关于ai的一些使用心得
首先是关于项目结构,如果和ai不进行完整清晰约束的话,很容易让整个项目的结构急剧膨胀,并且让整个项目变成一个彻底的不可维护的黑盒
因此在开始让ai进行第一次编写之前,一定要init后简述你的整体思路,让ai给你生成一份初步的项目计划书,然后对着这份计划书把你的想法改明白
这是我到比赛中期才意识到的事情,所以前期我虽然一直在引导ai但始终没什么进展,就是ai自己想的被我打断了,而我的策略也没有被他很好的理解
这份计划应该包括 包括项目结构,需要编写多少之后需要的工具,整个项目的外部数据来源,分析流程,工作步骤,审计的范围,代码的硬约束,红绿灯测验,日志分析的流程以及流式输出的工程文档:一个版本的代码实现逻辑或者各个函数之间的关系还有宏观的策略,下一步修改方向等
其次是版本管理和各种git分支的管理,我建议如果任何人要用ai进行协助,且另一个合作者也在用ai vibe的时候,最好还是自己fork一个分支,最后再去合并
不要在别人的仓库上commit自己的分支,这会产生大量的冗余文件,我只迭代了8个策略一共70多个版本,每次pull到本地的时候另一个合作者的版本文件就给我把整个项目干到了6g的大小(前情提要:一个版本算上4000回合的数据,一个so编译文件和一个源代码也就十几m)
而且版本管理很重要,如果中间某个节点开始ai给你做坏了或者做烂掉了你还能重新返工。
这里的版本管理还包括了按版本保存ai任务进度的问题,这个留给人机协作和skill那边讲。
第三是关于终端的问题
powershell对于codex来说简直是灾难,据说wsl还可以,之后试一下
目前用的双系统要一直切换对于我来说也不是很友好,只能暂时用服务器端的linux顶一下
之后我会考虑搞一个mac或者纯linux的轻薄电子垃圾来跑轻度的任务,我也不用在外面背着一个巨重的游戏本乱跑了
这几天在外面一直跑还要打比赛给我恶心坏了
第四是关于人和ai协作完成项目
我认为现在一个人应该去学很多门编程的语言
而不是真的要求从头到尾的实现,对于你真正掌握而且精通的只要一门主语言就好了。
你要知道哪些语言擅长什么部分,适合什么方面的工作,其中有哪些特性可以被利用
而不是真的从头到尾去学一遍怎么写代码
毕竟这个世界上知识太多了,我们没有能力和精力全部学完,只要善假于物就好了。
和ai协助最好是一次性讲明白,ai第一次的逻辑是最清晰的,整个代码的结构也是最优美的
这种自然语言编程感觉很考验逻辑思维能力,如果一个策略有明显的漏洞,而ai没有指出的话,你也没有发现的话就会出问题,而且感觉ai也比较偷懒,如果你问了一个简短的问题,他也只会简短的回答你,而不会真的从很多方面去思考(这里有skill可以优化这个问题,但我用下来没有很好,还是得人提出有价值的策略)
关于使用ai,也就是迭代版本了,也是这次比赛的重头戏,我在最开始只开了一个终端进行优化,写了一个粗糙的工作流然后就开始让他goal 结果跑了15个小时,在我去看对局情况不断指出问题的情况下还是做出来了一大坨完全没用的史
然后我就去找了几个别的队的人聊了聊,各种学科和学历还有各种背景的人给了我很多启发
这个时候我开始考虑新的工作流和工作策略
第一是多任务多分支并发,即出了使用原生的subagent和side命令外,多开几个终端力大砖飞,虽然这个很简单但是他们不说我真没想到,也许不该只用cli和vscode的插件,还应该试试app,据说那个还可以远程工作和指导
第二是不要和ai对话,直接让他把目前的计划和策略完整输出,只让他做具体详细的工作,以及数据的收集和分析,真正决策全部交给人类,这样迭代效率和迭代速度都会更快,而且你可以对全局有完整的掌控力,出了什么问题也可以第一时间想到
第三是不要想着许愿或者一轮对话直接让他开始工作,这样ai大概率会做出来一坨屎,还是要静下心来慢慢和ai完成整个任务的清晰架构,然后不断,反复的追问ai你能想到的一切问题
第四是goal这个功能,要不是这次比赛我还真不知道ai竟然会偷懒,他只会根据你goal的硬约束完成,实际上在你没提到的地方漏洞百出,而且如果一个目标长时间未完成,且很难完成,他还会代理给另一个窗口的codex去做,自己在那里sleep,真是神了。
第五是关于skill,这个是个好东西,但我这次比赛尝试了很多很多skill,有的skill会把你的流程弄的很工程化,即影响体验,也会搞出来大量的审计,评估和测试拖慢进度还白吃token,目前用的比较好的是superpower,别的用下来感觉差点意思,然后把skill叠在一起又会让你的codex对话变成一个不可名状的语言系统,很诡异
第六是ai进度保存和hook,hook其实我没怎么用明白,但superpower的任务保存功能确实很好用,可惜有一部分内容保存在codex的根文件夹下,而我对版本进行回溯的时候有些hook会消失,有些任务会卡住,这个我还没搞懂,有没有懂得来和我交流一下
不过版本管理真的很重要,如果只用codex的diff的话完全是折磨人,多开窗口完全不知道自己在diff什么,而且poershell的历史命令做的又是一坨屎
还有是关于日志分析和优化:如果你不指定对日志分析的复杂度,只是用一个很抽象的名称告诉他任务,他总结出来的大部分都是无效信息,即使改了用上去也只是负优化。就算你最后把所有东西都流程化,规范化,并给出明确硬约束了,ai自己和自己改没有外部数据引入还是会变成大份,他自动优化几轮之后这个版本就彻底没法改了,因为这时候你和ai对这个版本的东西都已经神志不清了,我在昨天清晨看到tilrfast27v1-r4是一坨屎才意识到这个道理。
然后是目前收集到的信息:
绝大部分队伍使用的都是ai vibe coding,并且高排名里有很多完全没有代码背景,纯粹靠vibe和一个很好的策略打上去的,他们和ai交互的方式也很有趣,各自有各自的特点。
当然也有说让人介入是纯负优化的不如把goalcomplete删了ai自己和自己优化打全场,但感觉这个需要一个很好的评分规则和参数约束,总之还是手上的知识储备不够,以及写提示词的水平也不够
最后是这次比赛学到的各类对c++程序优化方式:asm,lto,simd和pgo插桩都是很有用的优化方式,也很大程度的提升了我对ai的认知,虽然烧了不少钱,但还行,明年干回来吧。
别的等这个比赛最终打完了我去和别的选手聊一聊我应该会再写一个交流心得,感觉打这个比赛还是收获挺大的
总之,卡了没办法,明年再战吧,今年经验还是太少了,还得沉淀一下。
与本文关联的下载资源
关联视觉研究
讨论区
评论输入框固定放在文档最下方。点赞、回复和提交新评论前,都会先检查你是否已确认站点协议;如果账号处于禁言中,接口会直接返回禁言截止时间。
如果你想反馈文档内容、提出补充建议,或者评价其他人的观点,可以从这里开始。