大型语言模型(LLM)代理在完成复杂软件工程任务时,越来越依赖可复用的技能库。要让这些技能在不同仓库中保持有效,必须随代码结构、实现约定和维护需求的变化而演化。Pull Request(PR)记录了实现与评审过程,天然地提供了仓库演化的知识来源。新的 PR 需要遵循仓库特有的实现模式、保持相关组件的一致性,并在添加新功能的同时确保已有测试通过并覆盖新增代码。于是形成了一个相互促进的循环:PR 为技能更新提供素材,技能又帮助后续 PR 更好地实现、维护和遵循约定。
为实现 PR、仓库和技能的协同进化,我们提出 Skill Dreaming 框架。框架接受仓库及其 PR 历史作为输入,首先从已验证的 PR 中抽取可执行的知识,构建仓库专属的技能库。随后,随着新 PR 的出现,框架持续对技能进行细化和扩展。得到的技能不仅指导编码代理实现功能,还负责维护相应的测试、文档、兼容性以及仓库约定。
Skill Dreaming 将四个关键环节串联:
- PR 分析:解析代码改动、评审意见和 CI 结果,提取实现步骤和约束条件。
- 技能管理:将抽取的步骤组织为可调用的函数或脚本,并记录版本信息。
- 代码执行:在安全的沙箱环境中运行技能,验证其正确性并生成测试覆盖。
- 持续集成:将执行结果反馈至 CI,确保新技能在实际 PR 中能够通过所有检查。
整个工作流实现了从 PR 到技能再回到 PR 的闭环,使得每一次代码提交都能为后续的自动化支持提供新的学习材料。随着时间推移,技能库会逐渐丰富,代理在处理新需求时能够更快地适配仓库特性,降低人工审查成本。
点评:Skill Dreaming 将软件维护的经验化为可机器调用的技能,实现了知识的持续积累与自动化复用,为 LLM 在真实代码库中的长期协作提供了可行路径。