当前位置: 首页 > news >正文

2026山东大学项目实训4月7日

一、问题背景

在 CodeGuard AI 项目早期,系统已经可以把 PR 变更交给 AI 分析,但很快遇到一个工程问题:如果模型只返回一段自然语言文本,系统后续很难继续处理。

自然语言回答可以阅读,但不能稳定落库,也不方便前端按文件、严重程度和状态展示,更无法支撑质量门禁、评论草稿和审计追踪。一个真正的审查平台不能只把 AI 回答贴出来,而要让 AI 输出成为后端可以治理的数据。

二、我的思路

我把 AI 审查结果抽象成结构化 Finding。每个问题都必须包含文件路径、行号、标题、严重程度、问题分类、描述、修复建议、证据、证据来源和置信度。

这样 AI 输出就从“能看的一段话”变成了“能被系统继续处理的数据对象”。

三、关键代码与实现讲解

最核心的是先定义 AI 输出的结构。

class GeneratedFinding(BaseModel): path: str title: str severity: str category: str description: str suggestion: str | None = None line: int | None = None end_line: int | None = None source: str = "llm" rule_id: str | None = None skill_id: str | None = None evidence: str | None = None evidence_source: str | None = None evidence_line: int | None = None confidence: float | None = None

这段结构的重点不是字段多,而是每个字段都对应后续链路中的一个动作。

pathline用来决定评论能否定位到具体文件和行;severitycategory用来支撑前端分组和质量门禁风险计算;rule_idskill_id用来追溯问题来源;evidenceevidence_sourceevidence_lineconfidence则为后续 verifier 做二次校验提供依据。

一次审查还需要整体总结,所以我又把 summary 和 findings 组合成统一输出。

class GeneratedSummary(BaseModel): overview: str strengths: list[str] = Field(default_factory=list) concerns: list[str] = Field(default_factory=list) next_steps: list[str] = Field(default_factory=list) class LLMReviewOutput(BaseModel): findings: list[GeneratedFinding] summary: GeneratedSummary

这样前端进入审查任务详情页时,不需要直接面对一堆零散评论,而是可以先看到整体结论,再展开具体问题。

四、为什么这样做

结构化 Finding 是后续所有能力的基础。如果没有统一结构,系统只能展示 AI 文本,不能做治理。

有了结构化 Finding 以后,后端可以落库,前端可以筛选和分组,质量门禁可以计算风险,评论中心可以生成草稿,规则引擎可以继续调整严重程度和建议内容,审计日志也能追踪问题来源。

五、实际效果

这一阶段完成后,CodeGuard AI 不再是简单的 AI 问答页面,而是开始具备审查平台的数据基础。

AI 生成的问题可以被保存、过滤、去重、排序、确认和发布。后续的技能执行、上下文分析、候选校验、规则治理和评论草稿,都是基于这套结构继续往下做的。

六、小结

这一阶段让我意识到,AI 审查系统的关键不是让模型说得更多,而是让模型说出的内容能被系统稳定处理。

结构化 Finding 把 AI 输出从“能看”变成了“能管”,这是整个审查链路能够继续扩展的前提。

http://www.jsqmd.com/news/1037039/

相关文章:

  • MC68336/376微控制器架构解析:TPU、QADC与SIM模块的嵌入式实战
  • RAG+多智能体在金融分析中的实盘落地方法论
  • 2026西岛登岛攻略:三亚湾海岸线必吃舟记渔港海鲜 - 资讯速览
  • 2026哈尔滨长途搬家哪家靠谱?跨城搬迁公司测评,鑫福庆9.8分稳居行业首位 - 热点速览
  • 【计算机毕业设计案例】基于 Django 的用户行为协同过滤音乐播放平台的设计与实现 基于 Django 的智能化协同过滤音乐推荐客户端系统(程序+文档+讲解+定制)
  • Windows批处理文件遍历:如何高效获取纯文件名(不带路径)
  • 如何像Python一样编译C++代码
  • AI科技热点日报 | 2026年06月18日
  • 成都锦江区名包回收实测!片区门店筛选,二手名包高价变现 - 开心测评
  • 朝阳家装口碑怎么选?2026 正规家装企业综合测评指南 - 装修新知
  • 2026年 精密慢走丝加工厂推荐榜:附近厂家技术实力与微米级精度口碑之选 - 品牌发掘
  • 2026 合肥正规名表回收商家完整名单(上门 + 到店均可) - 企业推荐官【官方】
  • 逆向实战:从零破解网易云音乐评论接口加密参数
  • 雅琪诺“礼服工艺”的技术体系解析:从裁剪到定型的全流程精工标准
  • 【Qt】界面优化:绘图API
  • 2026年旋转接头厂家推荐榜单:高温/高压/高速旋转接头,蒸汽导热油及液压水用旋转接头优质品牌选型指南 - 品牌发掘
  • 2026 年 6 月最新|自动涂胶系统 / 涂胶供料系统 / 涂胶计量系统 / 涂胶分配系统厂家实测排名 权威榜单推荐 - 商业新知
  • 深度解析:如何利用Waifu2x-Extension-GUI实现多媒体内容超分辨率增强
  • 深度解析:Android超大图片加载的性能优化与内存管理实战指南
  • 2026常州光谱测金仪器科普指南,无损检测精准识别黄金纯度 - 奢侈品回收测评
  • 2026年6月头部电力管源头厂家口碑推荐,非开挖管道/九孔格栅管/通信波纹管/PVC塑料管,电力管厂家推荐分析 - 品牌推荐师
  • 2026高速冷冻离心机高品质制造厂商:全流程质检保障离心转速精度 - 品牌推荐大师
  • 网课记笔记写论文刷题,哪些学生平板推荐能覆盖全部学习场景? - 资讯速览
  • 高效eUICC管理架构解析:企业级智能卡管理实战指南
  • Java 异常 详解
  • 05 | 一不小心就死锁了,怎么办?
  • 基于Springboot2+vue2的高校办公室行政事务管理系统
  • cyancat-开源数据库管理工具
  • 百度网盘下载神器pdown:免登录高速下载终极指南
  • JavaScript 的异步管家:彻底搞懂 Promise 原型方法