1. 我是一个极具成长潜力的火山开发从业人员(新手),熟练掌握已经熟练的火山知识(只会说废话的废物)。
2.两个月前开始尝试做一款嵌入火山的AI助手,纯古法,由于火山没有公开可用的接口(也尝试XX分析)发现自己能力仅仅能解决在Agent和火山来回切换的问题。后来终于想明白,如果只是实现这样的效果,直接SetParent将大厂Agent交互界面放到火山IDE中就可以,完全没必要开发Agent,所以直接放弃(置父内嵌/还不用维护)。
这两天AI用的多,没单子做,也无聊(台风刚过也没地方钓鱼),想尝试让AI做一个融合的工具,重做一个IDE直接内嵌AI交互并提供内置工具、工作模式、知识库体系、上下文管理。理想总是像我现任女朋友一样丰满,现实总像我已逝去的前任。
连续重写了三个版本,期间发现了很多问题产生了很多想法(AI-火山)。
1.主要的矛盾,火山IED表格声明式和文本代码之间存在一条很难跨越的鸿沟,给用户看的(IDE界面)和给AI看的(文本代码)完全是两个东西。(一份数据源两份投影)没办法做到同时编辑。所以我尝试使用文件编辑锁,AI和用户编辑同一个文件时互斥。
2.开始还好,几乎实现了所有我想实现的功能(主体已完成,细节代办中)。我甚至还用自己写的工具做了一个单子。
直到我去年的单子需要加功能,我打开了那个我亲手炮制的3万行古法shi山,解析器崩,AI每编辑一次编辑器就要解析一次,大文件要卡几秒。我意识到AI代码存在很多的问题,然后手工优化重做。
3.进入了第二个版本,将语法节点树作为唯一数据真源,AI编辑区分项目内外文件,项目内文件AI编辑读取代码时通过节点树进行序列化,AI编辑时再反序列化差异部分,替换/插入原始节点,旧指针入撤销栈,外部文件走纯文本文件操作(不可撤销)。编辑器/项目管理器持指针绘制(编辑器持有文件指针,项目管理器持有根指针)。顺利解决了操作卡和不能同时编辑的问题。
4.接下来就是AI遇到各种野指针和空指针,对象拷贝陷阱,最终AI摆烂。
5.于是我重建项目,手工实现了部分基座部分(语法树指针操作部分/简单的序列化和反序列化/AI、IDE、项目管理器如何传递共享指针操作示范/631行的提示词)后续让AI按照我的代码风格和习惯编写代码。正式进入第三个版本。但是我没有Token了........
1.我中间使用了几个模型,Claude/DeepSeek/MiMo/GPT/Qwen/MiniMax/Kimi/GML
2)Claude/GML/GPT太兢兢业业,很主动,做事也很快,总是我提出需求的名字他就主动帮我把所有事情都做完了,先不管质量和细节怎样,反正就是很快,功能也很完善。
3)DeepSeek/Qwen是我使用起来最顺手的,没有激进的提示词不会很主动的去做事,甚至可以说很懒,但是就是因为这种停顿我才有更多的机会去监督和指导它安照要求完成任务,也变相控制了代码逻辑和质量。
2.所有模型有一个共同的感受,这些模型被易语言代码投du。
如果作为一个通用Agent,需要考虑的大概是如何扩展更多的工具和技能以及管理好上下文和记忆。但是作为一个IDE内AI助手,需要考虑的就更加精细化。
除了基础的技能查询管理,编辑工具,代码补全,编辑器状态查看,编译调试接口。如何让不同开发需求/不同编程水平的用户都能有一个很好的使用体验这很重要。
有些人做的项目比较简单,希望只提供一个功能名字就能让AI完整的实现项目(激进模式)
有些人项目比较复杂对数据结构代码质量有一定的要求(计划模式)
有些人对代码不是很懂,只想做个让AI开发,又没办法一次性描述好所有需求(需求探索模式)
有些人喜欢古法乐趣,喜欢自己开发,又不喜欢做简单重复的事情(代码补全模式)
有些人只喜欢使用AI查BUG和定位问题,不喜欢AI编写代码(调试模式)
有些人无聊,喜欢边写代码边和AI聊天(迪拜烧钱模式)##你加我好友把Token给我,我陪你聊,包有情绪价值的##
除此之外还有场景类型的 封库模式、转译模式(其他代码转火山)等。
这些都需要不同的工作流(内置系统提示词) 工具和技能
以下是第三版本的半成品和进度文档(最新的Token不足还有很多东西没做)。给闲的无聊,想自己做AI助手的大佬做个交流,大部分是AI写的,我只开了一个头。