之前在使用AI辅助编程的时候,在自己手工编程 / AI编程之间切换,这对我而言,是两种不同的思维模式,容易手忙脚乱,而且要特别小心AI生成代码的正确性。
思考了一下利用AI辅助编程的流程,目前的想法大概是
生成新代码 / 修改现有功能
生成测试 / 修改并运行测试 / 确保AI生成的代码是对的
重构代码和测试
每次AI生成的代码不要太多,小步前进,保证每一步走稳了
具体写在这里
AI辅助编程是个比较新的话题,也许现在也没有统一成熟的方法论。如果各位有不同看法或者建议,或者有新的想法,请不吝赐教,谢谢。
2 个赞
可以分享一下工作流,aider很多人不会用,哈哈哈
yibie
2025 年2 月 3 日 06:52
3
我把 README 中的相关章节翻译了一下:
我使用aider.el进行个人开发的经验分享。以下仅为个人经验,你可能会有不同或更好的使用方法。
功能开发
启动Aider会话: 运行命令“aider-run-aider”启动与当前git仓库相关的Aider会话。此命令将会话与项目上下文关联起来。
添加文件: 使用命令“aider-add-current-file”或“aider-add-files-in-current-window”将相关文件添加到会话中。这为Aider提供额外的上下文信息。
代码修改: 这可能包括添加新代码或修改现有代码。
添加新代码(使用单行注释实现): 假设遇到以下Python代码片段:
# TODO: Implement a function that checks if a number is prime
将光标置于TODO注释行,运行“aider-implement-todo”将仅发送该内联注释给Aider。Aider可能会生成修改后的代码,例如is_prime
函数的完整实现,同时保留现有代码。例如,Aider可能生成:
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
此示例演示了aider-implement-todo
如何帮助添加新代码。(此命令也可能对某些文档任务有用。) 如果建议的更改不完全令人满意,可以选择拒绝(例如,输入N)。之后,可以使用“Ask Question”命令(或在Aider会话缓冲区中使用/ask)请求更详细指导的修改。获得可接受的建议后,可以使用“Go Ahead”命令(或在Aider会话缓冲区中使用“go ahead”)进行确认。
修改现有代码(函数、类或代码块):
a. 如果只需要修改代码的一部分,可以选择相关区域;否则,将光标放在目标函数或类中即可。
b. 执行“aider-function-or-region-refactor”。
c. 出现提示时,提供清晰的更改说明(例如,“将变量‘temp’重命名为‘result’”或“将函数设为静态”)。
d. 然后将生成包含这些建议的修改后的代码版本,同时保留整体结构。
e. 可以查看输出,如果需要进一步改进,可以使用“Ask Question”进行额外调整,然后使用“Go Ahead”确认,直到达到预期结果。
注意:aider-architect-discussion
和aider-code-change
是可用的替代方案,但它们可能不如上述命令上下文敏感。
生成测试: 建议使用单元测试命令(如“aider-write-unit-test”和“aider-fix-failing-test-under-cursor”)验证并迭代改进功能。虽然AI生成的代码可以作为有用的起点,但它有时可能会引入细微的问题。在集成更改之前和之后运行测试,可以确保每个增量改进都得到正确验证。建议在每次更改后执行完整的测试套件,以便尽早发现任何问题。(顺便提一句,目前使用projectile函数在主代码和测试代码之间切换并将它们添加到会话中——但进一步改进以无缝地包含测试代码始终是受欢迎的。)
代码和测试重构: 最后,可以根据需要进一步重构AI生成的代码和测试——无论是通过额外的提示还是手动——以最好地满足项目的需要。
7 个赞
这个README怎么把用法放在installation前面的 通常installation放第一,个人感觉也是这样比较好
1 个赞
哦… 在别人有意愿安装之前,先解释,在aider提供的命令行操作之上,这个library提供了什么额外的价值?如果别人觉得有用,再装。
菜单操作,少敲几个按键,直接在代码上操作,不用切换; 自动管理git repo aider session.
aider.el会把emacs编辑的上下文发给aider, 比如,现在关心哪个函数或者类?当前选定了哪些内容?这会让用户少敲键盘。
aider是核心的引擎,这个软件包针对的是程序员关心的日常应用层面的问题。比如,如何新增/修改代码; 如何测试AI代码的正确性; 如何阅读别人的代码; 以及以后想加强的,如何debug exception.
你说的也有道理。installation之前的部分太长了。
update
Added both pros and cons.
能具体说一下,哪些地方不如意,想要有哪些功能吗?谢谢