背景
在我们实际的开发当中,一个需求往往会涉及到多个文件修改,而需求也往往有相似性。
举个例子,我经常需要在 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
每个文件都需要修改,大概修改流程是:
修改command_args.py 添加,更新,删除命令行参数。
common/__init__.py 中的AutoCoderArgs 有对应的字段,也需要修改
lang.py 中则对参数有相应的描述说明
如果是添加了类似 <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

在最后一行通过输入 /eof 结束内容编辑。
你可以通过 /add_files /group 查看所有已有 Atom Group:

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

现在,你就可以简单的这么说:
/coding 添加一个新的命令行参数 --ask_model 默认值为空
这个时候auto-coder.chat 就可以精准并且稳定性很高的实现对需求的修改。
下面是执行后的结果:系统会告诉你这次修改了几个文件,每个文件的diff 视角,当然实际上有个缩进问题,从diff 里还是很容易看出来的,可以手动修改下。


模型一次修改了四个文件的四块代码,完成“添加参数的需求”。你观察到了 缩进的问题,以及没有发现同步修改中文说明,你可以通过完善前面的 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
会清理掉













![[Linux Kernel Block Layer第一篇] block layer架构设计](https://i-blog.csdnimg.cn/direct/6f402f42143b4aac927657769404055e.png)





