AI辅助编程里的 Atom Group 的概念和使用

背景

在我们实际的开发当中,一个需求往往会涉及到多个文件修改,而需求也往往有相似性。

举个例子,我经常需要在 auto-coder中需要添加命令行参数,通常是这样的:

/coding 添加一个新的命令行参数 --chat_model 默认值为空

实际上这个需求涉及到以下文件列表:

  • /Users/allwefantasy/projects/auto-coder/src/autocoder/auto_coder.py

  • /Users/allwefantasy/projects/auto-coder/src/autocoder/command_args.py

  • /Users/allwefantasy/projects/auto-coder/src/autocoder/lang.py

  • /Users/allwefantasy/projects/auto-coder/src/autocoder/common/__init__.py

每个文件都需要修改,大概修改流程是:

  1. 修改command_args.py 添加,更新,删除命令行参数。

  2. common/__init__.py 中的AutoCoderArgs 有对应的字段,也需要修改

  3. lang.py 中则对参数有相应的描述说明

  4. 如果是添加了类似 <xxxx>_model 的参数,那么需要在 auto_coder.py 中 用setup_sub_client 添加到主llm 中.

如果让auto-coder.chat 自己根据需求寻找文件,有可能会找不全,导致修改不完整,所以一般还是需要手动使用

/add_files xxxx

来进行上下文的添加。这样就比较繁琐了。此外,就算文件添加全了,大模型也不会一定每次都能改全,而用户倾向于这样写:

/coding 添加一个新的命令行参数 --chat_model 默认值为空

而不是:

/coding 添加一个新的命令行参数 --chat_model 默认值为空。具体修改逻辑为:
1.修改command_args.py 添加,更新,删除命令行参数。
common/__init__.py 中的AutoCoderArgs 有对应的字段,也需要修改
lang.py 中则对参数有相应的描述说明
如果是添加了类似 <xxxx>_model 的参数,那么需要在 auto_coder.py中 用setup_sub_client 添加到主llm 中.

实际上,在一个已经成熟的项目里,我们往往都是在做加法,或者一些有固定套路的`修改`。每个加法或者修改,都会作用在相对来说一组固定的文件。

这是一个极为有用的特性。

Atom Group

Atom Group 相当于帮助用户把一组文件以及对应的一组需求创建一个任务,用户提供这组文件以及为了满足这一组需求需要的任务拆解。

以前面为例子,你手动添加完文件后,可以这么做:

/add_files /group /add params

这样我们添加了一个 Atom Task,叫  params. 然后我们把修改逻辑也加到这个组里去:

/add_files /group /set params

6142a0d44c5b52afd4b222ac6144588c.png

在最后一行通过输入 /eof 结束内容编辑。

你可以通过 /add_files /group 查看所有已有 Atom Group:

df955fbb4909e0de31db9fdfe3b695ff.png

通过  /add_files /group params 进行激活:

0dc01526baf1f30e5287f06e0baca15c.png

现在,你就可以简单的这么说:

/coding 添加一个新的命令行参数 --ask_model 默认值为空

这个时候auto-coder.chat 就可以精准并且稳定性很高的实现对需求的修改。

下面是执行后的结果:系统会告诉你这次修改了几个文件,每个文件的diff 视角,当然实际上有个缩进问题,从diff 里还是很容易看出来的,可以手动修改下。

adbaf15587a5cd1a7880015f76fcbdc5.png

1f0b51cf316f4de37c187706ea5acc69.png

模型一次修改了四个文件的四块代码,完成“添加参数的需求”。你观察到了 缩进的问题,以及没有发现同步修改中文说明,你可以通过完善前面的 Atom Group 说明来完成。

总结

把对项目的常见更改 映射成 Atom Group, 从而帮助模型可以高效而稳定的实现新增需求,这样才能更加容易实现自动化,减少人工干预。

甚至对于比较稳定的这种 Atom Group,我们可以开放给产品经理,让产品经理也可以在可控的范围内使用指定的 Atom Group 完成一些自助项目修改或者迭代。

更多介绍,点击阅读原文。

额外注意点和小功能

实际上我们使用的Atom Group 永远都是一个 当前 组。当我们做 Atom Group 切换,本质上是清空当前组

Active 文件,然后拷贝对应组的文件进来。

比如执行:

/add_files /group params

然后接着你添加新的文件,只会影响 当前组 而不会影响 param 组。如果你希望影响,可以先:

/add_files /group /drop params
/add_files /group /add params

上面的语句表示 删除 params 组,然后新建一个组,然后将 当前组 拷贝到 params 组。

你也可以将多个组的文件同时加到当前组里,注意,加入之前会先清空再拷贝:

/add_files /group <group-1>,</group-2>

如果不想 Atom Group 影响编程行为,可以这样做:

/add_files /group /reset

会清理掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值