九源开源技术周 06|InfiniCoder:用代码分析与任务记忆增强编程能力

在已有项目中修改代码,经常需要跨文件追踪接口和状态变化,还要记住前面做过哪些修改、哪些测试没有通过。任务越复杂,源码信息和开发进展的组织就越重要。代码智能体要参与这些工作,也需要相应的分析方法、记忆机制和执行工具。

InfiniCoder 是我们新开源的代码智能体,支持通用编程任务,并将算子开发与优化、训练推理框架开发等作为能力增强的重点方向。它接入现有大模型,将程序分析、代码记忆和任务流程结合起来,帮助模型围绕实际目标完成分析、实现与验证。

InfiniCoder 重点增强边端侧大模型的代码能力。 相较于 GLM、Kimi、DeepSeek 等系列中的千亿乃至万亿级模型,适合边端部署的十亿级、百亿级模型,在复杂编程任务上的能力往往还有差距。我们希望通过代码分析、任务记忆和工具协同,让 Qwen3.8-27B、MiniCPM5-2B 等模型在有限资源下,也能完成更复杂的开发任务。

用多视图代码记忆组织上下文

一份源码可以从不同角度理解:文件和符号结构说明实现在哪里,静态调用关系说明接口之间如何连接,数据结构和引用关系则帮助追踪状态在哪里定义、在哪里使用。

InfiniCoder 将这些信息组织成相互关联的代码视图,并保留对应的源码位置和版本。围绕一项修改,模型可以从接口定义展开到相关调用位置和实现片段,把分散在不同文件中的逻辑联系起来。

上下文按照仓库、模块、符号和源码片段分层组织。先定位相关模块,再展开具体实现,让有限的上下文优先容纳当前任务需要的信息。分析结果与源码版本关联,也为修改后的信息核对和更新提供依据。

在跨文件定位并修复加权平均计算错误的任务中,MiniCPM5-2B 在三种配置下的结果如下:

配置 模型请求次数 结果
未自动加入代码记忆 20 次 失败
+仓库记忆 12 次 通过
+导航视图 9 次 通过

⚠️这个案例中,同一模型在原配置下未能完成的任务,在加入仓库记忆和导航视图后得到了解决。

另一个例子是“数据已经更新,读到的仍然是旧缓存”。这类问题需要同时检查数据更新、事务回滚和缓存读取的逻辑。多视图可以帮助组织这些相关实现,供模型分析状态变化如何传递。在对应的事务缓存修复任务中,Qwen3.8-27B 的单次代码生成未通过检查;接入 InfiniCoder 后,同一模型生成的修复通过了独立检查,覆盖嵌套事务、删除和缓存失效等情况。

将代码事实与任务进展分别记住

代码记忆记录当前仓库中的结构与关系,任务工作记忆则记录这次开发已经做过什么。两类信息有不同的用途,也需要分别管理。

InfiniCoder 的任务工作记忆围绕实际操作、修改进展和失败反馈组织信息。在上下文压力增大时,这些记录可以为后续步骤保留依据:哪些地方已经修改,哪些检查没有通过,下一次尝试需要接着处理什么问题。

这样的设计让前面的分析和验证能够继续参与后续决策。模型可以利用此前的执行结果调整方案,沿着已有进展推进开发。

在训练检查点恢复和分页 KV Cache 修复两项任务的对照测试中,同样使用 Qwen3.8-27B。在 InfiniCoder 中关闭任务工作记忆时,两项任务均未通过;启用后,两项任务均通过了检查。 这些案例为利用任务记忆增强连续开发能力提供了具体支撑。

把领域约束纳入实现与验证

算子与框架开发的要求,需要落实到模型的工作步骤中。

InfiniCoder 的算子流程将 shape、dtype、stride 和精度要求纳入实现与检查;框架流程则关注数值状态、对象生命周期、检查点恢复等问题。涉及多个模块时,可以进一步形成依赖计划,明确接口关系、修改范围和验证步骤,再分阶段推进。

以 masked softmax 为例,非连续输入和掩码广播会影响索引方式,全掩码行需要相应的数值处理,半精度输入也需要考虑累积精度。Qwen3.8-27B 的单次生成未通过这一任务的检查;借助 InfiniCoder 读取代码、运行检查并继续修改,同一模型生成的实现通过了独立检查。

执行检查产生的错误会反馈给模型,推动下一轮修改;最终产物再接受独立验证。领域知识由此进入具体的实现、检查和修复过程。

后续:加强编译器协同,增强边端侧模型的代码能力

InfiniCoder 是一个正在发展中的代码智能体。后续的工作中,除了增强通用代码能力外,InfiniCoder 将进一步加强与编译器的协同,让模型负责算法设计和代码实现,由编译器完成代码生成与优化。模型在开发中探索出的有效优化方法,也将经过验证后沉淀到编译器中,供后续任务直接复用,减少重复探索。

同时,在边端侧大模型的代码能力增强方面,InfiniCoder 将通过代码分析、任务记忆和工具执行,帮助模型在有限资源下理解复杂代码、完成更长的开发任务,进一步完善从需求拆解、代码实现到测试修复的连续工作过程,逐步支持跨模块功能开发与系统集成。

相关链接

开源地址: https://github.com/InfiniTensor/InfiniCoder

关注与交流