当前位置: 首页 > 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.gsyq.cn/news/1548943.html

相关文章:

  • Windows批处理文件遍历:如何高效获取纯文件名(不带路径)
  • 【Qt】界面优化:绘图API
  • 深度解析:Android超大图片加载的性能优化与内存管理实战指南
  • 2026年6月头部电力管源头厂家口碑推荐,非开挖管道/九孔格栅管/通信波纹管/PVC塑料管,电力管厂家推荐分析 - 品牌推荐师
  • cyancat-开源数据库管理工具
  • 广州亨得利维修正品配件保障:2026年粤海天河城大厦官方直营中心权威公示,原厂配件溯源全流程与假冒零件识别指南 - 劳力士官方售后中心
  • 094、 PCIE动态链路速度与宽度控制:一次深夜调试的启示
  • AI原生开发时代,程序员的核心能力正在被重定义
  • 大润发购物卡回收正规平台排行榜出炉,新手必看避坑指南 - 京顺回收
  • 2026年夏邑全屋整装怎么选?博迪装饰16年口碑、零增项、自有工人体系深度评测 - 精选优质企业推荐官
  • 2026年6月旋转接头生产厂家汇总:旋转接头、回转接头、密封叠环定制采购指南 - 海棠依旧大
  • mysql主从数据同步方案的探讨,解决数据不一致问题
  • 北京股权代持执行案件律师:股权代持被执行怎么办?3类争议焦点与司法裁判规则 - 品牌2026
  • PDF解密软件口碑榜:7条品牌口碑深度拆解 - 资讯速览
  • 2026年 陕西西南智能仓储服务/管理系统最新推荐榜单:数字化与自动化智能仓储实力厂家精选 - 品牌发掘
  • 3步搭建Python车牌识别系统:从零到实战的完整指南
  • CIO方法论15_数智化商业模式创新_从效率提升到价值创造
  • 中国黄金集团联合培养,东北大学资源与土木工程学院黄金班学子直通行业头部企业 - 品牌2026
  • 全国婚介行业品牌排行榜 2026:红婆网实力上榜 - 品研笔录
  • 深入解析P4080DS:多核SoC架构、SerDes高速接口与嵌入式系统开发实战
  • ReadCat:打造纯净阅读体验的完整开源解决方案
  • 石家庄黄金回收哪家靠谱?2026本地门店五星打分实测 - 奢侈品回收测评
  • 5090算力卡创建实例问题分析
  • Windows JDK 多版本管理方案
  • go java web开发 Java老手转Go开发:不是SpringBoot不香,是这玩意儿太爽了
  • AWQ+ PagedAttention双剑合璧,开源LLM生产部署性能调优完全指南
  • 9.三个修饰符
  • 2026海口品牌首饰回收门店实力排名测评:四大维度横向实测,本地变现避坑指南 - 薛定谔的梨花猫
  • 昇腾多机训练中HCCL通信问题的分析与解决
  • 商业空间灯光选型,避开这四点比看参数更重要——五家商业照明品牌推荐 - 资讯速览