Zing 论坛

正文

Ciallo:基于提示链和大语言模型的自动化程序修复框架

Ciallo是一个创新的自动化程序修复(APR)框架,它巧妙地结合了大语言模型的代码生成能力与提示链技术,通过结构化的多阶段推理流程来定位和修复软件缺陷。

自动化程序修复APR大语言模型LLM提示链Prompt Chaining软件工程代码修复Defects4JJava
发布时间 2026/05/11 19:55最近活动 2026/05/11 20:03预计阅读 3 分钟
Ciallo:基于提示链和大语言模型的自动化程序修复框架
1

章节 01

Ciallo框架导读:结合提示链与LLM的自动化程序修复创新

Ciallo是一个创新的自动化程序修复(APR)框架,核心在于结合大语言模型(LLM)的代码生成能力与提示链(Prompt Chaining)技术,通过结构化多阶段推理流程定位和修复软件缺陷。它解决了传统APR方法的局限(如模板匹配或搜索的不足),以及纯LLM单轮对话的缺陷(上下文限制、推理深度不足等)。本文将从背景、设计、技术架构、实验验证、部署使用等方面展开介绍Ciallo的特点与价值。

2

章节 02

项目背景:自动化程序修复的挑战与LLM的机遇

软件缺陷修复是开发中耗时且易出错的环节,大型项目约50%开发时间用于调试。传统APR技术受限于模板匹配或基于搜索的方法,难以处理复杂逻辑错误。近年来LLM在代码理解与生成上表现突出,Ciallo正是基于这一趋势,提出结合提示链与LLM的新型APR框架,以应对传统方法的挑战。

3

章节 03

Ciallo核心设计:提示链技术的优势

Ciallo名称源于"prompt chaining and large language models"缩写,核心设计哲学是通过结构化提示链引导LLM多阶段推理,而非一次性生成修复方案。相比单轮对话,提示链优势在于:1. 解决上下文窗口限制;2. 引导深度结构化推理;3. 提升结果可控性。通过分解复杂任务为连续子任务,每个阶段输出作为下一阶段输入,形成清晰推理链。

4

章节 04

技术架构与工作流程:多阶段修复流程解析

Ciallo技术架构包含三大组件:

  1. AST差异分析:使用GumTree Spoon AST Diff工具,具备语义感知、粒度精细、噪音过滤优势;
  2. 多阶段提示链:分为缺陷定位(分析失败测试定位可疑代码)、根因分析(识别根本原因与修复策略)、补丁生成(生成diff格式补丁)、补丁验证(运行测试验证修复)四个阶段;
  3. plausible补丁筛选:通过语法检查、测试通过率验证、回归测试筛选有效补丁,存储于指定目录。
5

章节 05

实验验证:Defects4J基准测试结果与对比

Ciallo使用Defects4J(APR研究标准数据集,含真实Java项目缺陷)验证。评估指标包括修复率、plausible补丁率、正确补丁率、平均修复时间。对比传统APR工具(如GenProg)和纯LLM方法,Ciallo展现更高修复率、更少错误修复、更好可解释性的优势。

6

章节 06

部署与使用:Docker化快速上手指南

Ciallo支持Docker化部署简化环境配置,快速开始步骤:

  1. 克隆仓库;
  2. 下载AST差异分析工具;
  3. 配置OpenAI API密钥;
  4. 拉取Docker镜像;
  5. 启动容器运行。 可通过prog_params.py配置模型选择、输出目录、提示模板等参数。
7

章节 07

技术挑战与解决方案:成本、上下文、质量的应对策略

Ciallo开发中解决三大挑战:

  1. Token计数与成本控制:以GPT-4o embedding token计数为基准,记录各阶段使用量并提供成本预估;
  2. 上下文长度限制:通过代码切片、分层摘要、迭代检索应对;
  3. 补丁质量不稳定:采用温度调优(如0.2)、多采样策略、后处理验证提升稳定性。
8

章节 08

应用场景、局限性与未来方向

Ciallo应用场景包括CI/CD流水线自动修复、代码审查辅助、遗留代码维护、教育研究平台。局限性有语言支持(当前主要Java)、大规模项目效率、复杂领域缺陷修复能力。未来方向:引入RAG技术、多智能体协作架构、强化学习优化提示链策略。