逆向复现Augment AceTool进展与求助
在互联网技术的快速发展中,代码库的管理和检索技术也在不断进步。最近,代码库检索工具如Augment的AceTool开始收费,这促使开发者寻求开源的替代方案。目前,开发者社区正在探索如何复现AceTool的功能,并保持其高效性和准确性。本文将探讨这一逆向复现的过程,以及可能的解决方案。
Augment AceTool的逆向复现
Augment的AceTool因其高效的代码逻辑关系处理和几乎瞬时的代码索引API而受到关注。其工作原理可能涉及将代码切分成多个chunk,对每个chunk进行embedding处理,并建立索引。然而,使用通用的embedding模型难以达到同样的效果。目前,开源项目ContextWeaver被认为可以平替AceTool,但在搜索精度上略逊一筹。
提出解决方案
为了提高代码库检索的效率,可以考虑使用大型语言模型(LLM)进行分层摘要,以摘要承载语义,结构承载关系。具体步骤包括:
- 对每个文件生成摘要,覆盖文件职责、关键函数/类、重要数据结构、对外接口、依赖关系等。
- 从文件递归到根目录,逐层汇总子节点摘要到父节点,形成目录树摘要。
- 检索时从根目录开始做深搜,计算top-k节点的相似度,逐层往下。
- 当树检索将候选范围缩到k个或更少文件后,对这些文件进行chunk化RAG,或让LLM定位具体行号。
成本分析
假设一个50k LOC,500文件的仓库,每个文件摘要约需3k token,总消耗约1.5M token。如果使用1 token 1美元的模型,成本约为1.5~2美元,这是一个可接受的成本。
进一步优化
对于复杂的仓库,同一个功能可能跨越多个目录和层级。为了解决这个问题,可以将pub sub、http、import等关系提取出来,形成有向无环图,再对涉及到的文件进行类似HNSW的广搜,得到N个文件,最终得到N+K个文件。
结语
尽管逆向复现Augment AceTool的挑战很大,但通过社区的合作和共创,有望开发出高效且可复现的开源方案。欢迎有经验的开发者加入,共同推进这一项目的发展。
评论已关闭