写在最前:我个人更偏爱实用主义,对于界面啥的要求很低(绝对不是给我自己界面丑开脱!),所以Aider没有界面在我看来绝对不是减分项,但是肯定会有人觉得这是很重要的事情,所以如果介意这一点的可以在心里先给这个项目减分。
用Aider的需求是紧接着之前新增的bang命令,我准备在前端界面上进行一点预览,比如!current_date这个bang应该在前端界面上能预览到日期,并且每分钟都检查是否到了新的日期等等;获取选中文本需要和Rust配合,在Rust获取到文本之后再想办法传递到前端展示。
如何安装可以直接去官网查下,我不介绍了,先介绍下我是如何使用的,首先先搞 .aider.conf.yml
,持久化配置,不然每次启动Aider都要搞很多命令,我改的一般是下面几个配置:
# 不进行自动提交 auto-commits: false # 用deepseek模型提供商 deepseek: true # 使用read-only这个文件 read: [CONVENTIONS.md]
这次的测试是用的Deepseek来进行的,因为价格更便宜而且Rust方面Deepseek写的更好,配置完key就可以直接运行Aider:
export DEEPSEEK_API_KEY=<your key> aider
接下来就是提需求了,使用了这么多自动写代码的产品之后,我目前摸索出了一些心得,那就是自己要把需求搞清楚之后拆分成简单的小任务,我的最终效果是这样,几个特殊的bang命令在界面上带有动态的预览:
Aider虽然是支持自动找到需要修改的文件,和Composer、Copilot一样,不过最好还是自己添加下文件更加准确。我的第一个任务直接给的是界面相关的,并且手动添加了相关的前端文件:
我希望给bang功能的 !s !cd !ct 增加预览,展示对应的内容,其中 !s 是由props传递进来
Deepseek没有正确理解这几个bang的意思,只是加了预览,但是没有实时更新日期和时间的预览值,于是我继续提修改要求(使用Sonnet3.5估计就没这种问题了):
`!cd` 和 `!ct` 的值不用传递进来,直接在这个界面初始化,并且让currentTime应该每秒更新一次,currentDate每分钟更新一次
这次就直接修改成我想要的样子了,然后继续修改样式,让界面美观:
添加 `preview` class的样式,使这个预览的文字看起来更有预览的感觉,和实际的命令描述文本区分开 ,`!s`的preview如果发现selectedText没有内容,则不展示对应的preview部分,并且给preview设置最大宽度100px,超过的文本用省略展示
期间Deepseek没有遵循Aider的指令格式,Aider会自动让Deepseek重新编写一次,然后就正确了,这个体验不错,不需要我去干预。
接下来要修改Rust:
udpate system_api.rs:新增一个tauri command,返回当前context里面的selected_text
后续还有一些聊天我就不赘述了,总共从启动Aider到测试完commit,大概花了30分钟不到,如果是我自己来写,估计时间差不多,但是这30分钟我除了提需求和测试之外,大概有一半时间我是在干别的事情,也就是说我自己花的时间大概是10-15分钟,体验还是不错的。
附:Aider会自动寻找需要加到上下文的文件,示例如下
我想要在输入bang的时候,比如!出现banglist提示面板之后,我还可以继续输入用于过滤bang command,直到输入的值无法匹配任何bang command才让banglist面板消失
评价
工程能力部分
Aider是我目前使用到的工程最强的自动编码产品。
强大的自检能力(升级、检索可用的key、确保项目有git等等)、自纠错能力(代码运行或者测试报错了会自动询问你是否要修复,也可以使用–yes让Aider永远自动运行不需要确认)、运行命令和读取错误能力(能够在写完代码之后自动运行测试用例,并且确保测试用例全部通过)、与terminal的结合完成度等,都让我觉得用着很舒心,不像是那种摇摇欲坠的半成品,写出来的代码因为纠错能力和运行命令来跑测试用例,所以相同模型下完成需求的能力比别的产品都要高,这属于对模型能力的增强而不是利用了。
如果对没有界面而介意的同学可以试试看浏览器模式,不过我个人对他们和终端的结合程度已经非常满足了,单独为Aider开一个终端之后,几乎就相当于在IDE里集成了一个界面,而且也更少的使用到鼠标,让编码过程(不过好像也没多少编码过程了)更加的集中注意力。
如果有心仪的IDE,比如VSCode或者JB家的,但是又没有心仪的自动编码产品,可以试试看Aider。
代码完成部分
Aider可以使用任何模型,而且对新提供商和模型的支持还挺快的。
我使用的Deepseek,是Aider leaderboard上最便宜但是效果又在前列的模型(缺点嘛就是慢)。有钱或者有低价渠道的可以试试sonnet3.5和4o甚至是o1 preview,效果应该是比Deepseek要更好的。Aider在编写完代码之后会直接应用到代码文件中,这也是为什么Aider一定要你使用git的原因,不然你不知道它改了哪里(而且Aider默认是修改完代码就commit的,如果介意要配置下不要自动提交)。
UI UX部分
见仁见智,我个人还对这个交互比较满意,并且Aider也提供了一些配置来设置终端中的展示效果。
不过有珠玉在前,和Cursor比肯定是不足的,能与原生IDE结合会让交互好很多,看Aider官方的意思是准备让社区发力,自己不会下场做。目前社区也做了点插件,我就没体验了。
总结
Aider是我心目中那种“水涨船高”的项目,随着大模型能力的提高,Aider能做到的东西也越来越多,大模型不管是智力、上下文、速度或者别的方面哪一项的提升,对于Aider本身来说都是增强。期待社区以后发力做出更好的编辑器插件吧。我的这个开源项目说不定也会以某种方式接入Aider。
0 条评论