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

代码智能理解工具:从AST到知识图谱的架构解析与实践

1. 项目概述一个面向代码理解的智能工具最近在跟几个做代码审计和架构分析的朋友聊天大家普遍有个痛点面对一个动辄几十万行、结构复杂的历史遗留项目或者一个全新的开源库如何快速、准确地理解其核心逻辑、依赖关系和潜在风险靠人力逐行阅读效率低下且容易遗漏关键细节用传统的静态分析工具输出结果又往往过于原始和碎片化缺乏“理解”层面的洞察。正是在这种背景下我注意到了deepelementlab/clawcode这个项目。从名字就能窥见一二——“Claw”意为爪子、抓取“Code”即代码组合起来就是“抓取代码”。但这绝非简单的代码爬虫或格式化工具。结合其所属的deepelementlab组织通常指向深度元素实验室一个专注于深度技术应用的团队clawcode的定位更倾向于利用先进的程序分析、自然语言处理乃至机器学习技术对代码仓库进行深度“抓取”和“理解”将其转化为结构化、可查询、可分析的知识图谱或智能报告。简单来说clawcode像是一个给代码库做“CT扫描”和“智能诊断”的专家系统。它不满足于告诉你有哪些文件、函数和变量这是语法层面更致力于揭示这些元素之间千丝万缕的调用关系、数据流向、架构模式乃至潜在的设计缺陷这是语义和设计层面。对于开发者、技术负责人、安全研究员或开源项目维护者而言这类工具能极大提升代码审查、架构梳理、技术债务评估和知识传承的效率。2. 核心设计思路与技术栈拆解要构建一个像clawcode这样的代码智能理解工具其设计思路必然是多层次、管道化的。它需要将原始的源代码经过一系列处理阶段最终转化为高价值的洞察。虽然我无法获取其闭源的具体实现但基于同类工具如 Sourcegraph、CodeQL 的前端、乃至一些学术原型的常见架构我们可以推演其核心设计思路。2.1 处理流程从源代码到知识洞察一个典型的代码智能分析管道通常包含以下四个核心阶段clawcode很可能也遵循类似的范式代码摄取与解析阶段这是所有工作的基础。工具需要支持多种编程语言如 Java, Python, JavaScript, Go, C等。对于每种语言都需要集成或实现一个稳健的解析器Parser将源代码文本转换为抽象语法树。AST 是代码结构的形式化表示它精确地反映了代码的语法结构但尚未包含语义信息比如这个变量具体指向哪个类。语义分析与提取阶段这是赋予“理解”能力的关键。在这一步工具会遍历 AST并利用语言特定的语义规则提取出丰富的实体和关系。例如实体模块、包、类、接口、结构体、函数、方法、变量、常量、类型定义等。关系继承、实现、调用、引用、包含、参数传递、类型关联等。 这个过程会构建出一个比 AST 更丰富的中间表示通常是某种形式的代码属性图或初步的知识图谱。同时一些基础的分析也会在此进行如计算圈复杂度、识别重复代码块等。知识融合与存储阶段从单个文件提取的信息是孤岛。此阶段需要将整个项目甚至多个关联项目的信息进行融合。例如跨文件的函数调用、类的继承关系、模块间的导入依赖等都需要被链接起来形成一个全局的、统一的知识网络。这个网络通常会被存储在图数据库如 Neo4j或经过优化的关系型数据库中以便进行高效的图遍历和复杂查询。智能查询与可视化阶段这是面向用户的接口。基于构建好的知识图谱工具需要提供灵活的查询能力。这可能是类 SQL 的声明式查询语言让用户自定义查找模式如“查找所有被超过5个其他类直接依赖的脆弱类”。自然语言交互通过大语言模型将用户模糊的意图如“这个登录函数在哪里被调用了”转换为精确的图谱查询。预设的分析模板与报告自动生成架构依赖图、变更影响分析、死代码检测报告、安全漏洞模式扫描结果等。丰富的可视化通过力导向图、树状图、太阳burst图等方式直观展示代码的层级结构和依赖关系。2.2 关键技术栈推测基于上述设计我们可以推测clawcode可能涉及的技术栈语言解析层可能会使用Tree-sitter一个高效的增量解析器生成工具支持多种语言或各语言生态中成熟的解析库如 Python 的ast模块Java 的 Eclipse JDT 或 JavaParser。语义分析与中间表示可能需要为每种语言定制语义分析器或基于Language Server Protocol的底层能力。中间表示可能采用自定义的 schema 或扩展的 CPG。知识存储与计算图数据库Neo4j, Nebula Graph是存储代码实体关系网络的天然选择。对于需要复杂数值计算或机器学习任务的部分可能会用到Python的科学计算栈NumPy, pandas或JVM生态。前端与交互一个现代化的Web 应用是标配可能使用React或Vue.js构建结合D3.js或Cytoscape.js进行图谱可视化。查询引擎可能是自研的也可能基于Apache TinkerPop这样的图计算框架。智能化增强要做得更深集成大语言模型是当前趋势。例如用 LLM 为代码片段生成描述、解释复杂逻辑、甚至推测代码意图从而丰富知识图谱的语义层。注意技术栈的选择高度依赖于团队的技术背景和项目目标。一个追求深度、精准的分析工具可能更偏向于自研核心分析引擎而一个追求快速迭代和智能交互的工具则可能更多地集成现有开源组件和云服务。3. 核心功能场景与实操价值理解了clawcode是什么以及它可能如何工作之后最关键的问题是它到底能用在哪些具体场景解决什么实际问题下面我将结合几个典型的开发运维场景拆解它的核心应用价值。3.1 场景一大型遗留系统的架构梳理与重构导航这是最经典、也最痛苦的应用场景。你接手了一个缺乏文档、历经多人维护、结构已然“盘根错节”的巨型系统。你的任务是评估其技术债务并规划重构或微服务拆分。传统做法依赖有限的文档结合grep、IDE 的有限搜索以及资深开发者的口头传承。耗时漫长且形成的认知往往是片面和主观的。使用clawcode类工具的实操整体扫描将整个代码仓库导入工具进行全量分析。生成架构地图工具自动生成模块/包级别的依赖关系图。你可以一眼看出哪些模块是核心枢纽依赖众多哪些是边缘模块哪些模块之间形成了循环依赖这是架构的“坏味道”。深度下钻点击任何一个模块或类可以进一步查看其内部结构、所有出入依赖的详细列表。例如你可以快速回答“这个古老的UserService类到底被系统里多少个地方直接或间接调用”识别重构候选利用工具提供的度量指标如代码行数、圈复杂度、出入依赖数结合依赖关系可以科学地识别出“上帝类”、“瓶颈模块”或高度内聚的代码块这些正是重构的首要目标。评估影响范围在决定修改某个函数签名或删除某个类之前使用工具的“影响分析”功能它能精确列出所有可能受影响的调用点和依赖文件让重构决策心中有数避免“牵一发而动全身”的灾难。实操心得在这个场景下工具的价值在于将“感性认知”和“模糊经验”转化为“可视化数据”和“量化指标”。它不能代替你做出重构决策但能为你提供做出明智决策所需的全部事实依据极大降低沟通和决策成本。3.2 场景二高效精准的代码审查与安全审计无论是团队内部的代码合并还是引入第三方开源库都需要进行严格的审查以确保代码质量与安全。传统做法审阅者人工阅读差异代码凭借经验和记忆去判断影响。对于安全审计可能需要运行多个独立的 SAST 工具再人工整合结果。使用clawcode类工具的实操变更集关联分析工具不仅能展示本次提交修改了哪些文件更能在全局知识图谱的背景下高亮显示这些修改所影响到的所有关联实体。例如修改了一个工具函数工具会立即列出所有调用它的地方提醒审阅者去检查这些调用上下文是否依然兼容。模式匹配与违规检测可以预定义或自定义代码模式规则类似于 CodeQL。例如“查找所有未经验证就直接拼接进 SQL 查询字符串的用户输入点”、“查找所有可能发生资源泄漏的open()调用而未在 finally 块或 using 语句中关闭的模式”。工具可以基于代码语义进行精准匹配而非简单的文本搜索误报率更低。依赖漏洞传播分析当某个第三方库爆出安全漏洞CVE时工具可以快速定位你的项目中所有直接和间接引用了该漏洞版本库的代码路径并评估漏洞的可达性帮助确定修复的紧急程度和范围。实操心得将代码审查从“文本差异评审”升级为“语义影响评审”。审查者不再需要在大脑中构建复杂的调用链工具已经将其清晰地呈现出来。这尤其有利于经验尚浅的开发者参与深度审查并保证审查的覆盖率。3.3 场景三新成员入职与项目知识传承让新同事快速理解一个复杂项目一直是个挑战。传统做法扔给新人一堆文档和代码让其“自己看”或者安排老员工花大量时间做口头讲解。使用clawcode类工具的实操自助式探索新同事可以像使用“交互式地图”一样探索代码库。从main函数或一个关键的入口类开始通过点击调用关系层层深入直观地理解程序的执行流程和数据流向。智能问答如果工具集成了 LLM新同事可以直接提问“这个支付回调的处理逻辑在哪里”、“这个配置项在整个系统中是如何被使用的”。工具能基于代码图谱给出精准的代码位置和解释学习效率倍增。生成文档快照工具可以自动为当前代码版本生成一份“活”的架构文档包含核心模块关系图、关键接口说明等。这份文档与代码同步更新解决了传统文档极易过时的问题。实操心得工具化、可视化的知识载体比纯文本文档和口头传授更易于理解和记忆。它赋予新成员主动探索和求证的能力加速了从“陌生”到“熟悉”的过程。4. 潜在挑战与构建此类工具的避坑指南构建或深度使用一个像clawcode这样的工具并非一片坦途。结合我自己在类似项目上的经验这里有几个关键的挑战和避坑点。4.1 挑战一多语言支持的复杂性与精度一个实用的工具必须支持团队使用的所有主流语言。但不同语言的语法、语义、构建生态天差地别。避坑指南优先采用成熟解析器不要试图从头为每种语言写解析器。优先集成Tree-sitter或各语言官方/社区维护的成熟解析库如javaparserfor Java,libclangfor C/C。它们的健壮性和对语言新特性的跟进更有保障。抽象统一中间表示为每种语言的解析结果设计一个统一的、语言无关的中间表示层。这样上层的语义分析、图谱构建和查询逻辑可以复用只需为每种语言编写一个从 AST 到统一中间表示的“翻译器”。这是控制复杂度的关键架构设计。接受部分精度损失对于动态语言如 Python、JavaScript的某些高级特性如元编程、运行时动态修改类静态分析可能无法完全精确处理。需要在工具中明确标注这些“分析边界”告知用户哪些结论是确定的哪些可能存在不确定性。4.2 挑战二分析性能与可扩展性对一个大型仓库进行全量深度分析可能是计算和内存密集型的操作耗时可能从几分钟到数小时。避坑指南实现增量分析这是提升体验的核心。当代码发生小范围变更时只重新分析受影响的文件及其依赖而非整个仓库。这需要精密的依赖跟踪和缓存失效策略。分级分析与延迟加载首次分析可以只进行到模块/类级别生成高层级的图谱。当用户需要查看某个类的具体细节时再触发对该文件的深度分析如方法体内部逻辑。这种“按需加载”可以极大加快初始响应速度。分布式处理对于超大型项目可以考虑将不同模块的分析任务分发到多台机器上并行执行最后合并结果。存储层也需要选择可以水平扩展的图数据库。4.3 挑战三误报与噪声控制分析工具最怕的就是产生海量的、无意义的警告或无关的关系边这会让用户迅速失去信任。避坑指南提供可配置的规则与过滤器允许用户自定义哪些规则需要运行哪些目录或文件需要被忽略如生成的代码、第三方库。提供基于严重程度、置信度的过滤和排序功能。聚焦核心依赖过滤实现细节在图谱可视化时默认不要展示所有细节如每个局部变量的使用。应该提供交互式过滤让用户可以选择只查看“类与类之间”、“模块与模块之间”的高层关系隐藏方法内部的调用细节。人工反馈闭环建立机制允许用户对工具的输出进行标记如“这是误报”、“这个发现有用”。利用这些反馈数据可以持续优化分析规则和算法降低误报率。4.4 挑战四与现有研发流程的集成工具再好如果无法无缝嵌入开发者日常的工作流如 IDE、代码托管平台、CI/CD 管道其使用频率和价值就会大打折扣。避坑指南IDE 插件是黄金入口开发 VS Code、IntelliJ IDEA 等主流 IDE 的插件。让开发者能在编码时右侧边栏就能实时看到当前文件或符号的依赖关系、调用层次实现“沉浸式”分析。深度集成 Git 与 CI提供钩子或 API使得在代码推送、创建合并请求时能自动触发分析并将关键发现如新增的循环依赖、高复杂度函数以评论的形式添加到合并请求中作为自动化审查的一部分。提供丰富的 API将核心的分析和查询能力通过 RESTful API 或 GraphQL API 暴露出来。这样团队可以将其集成到自己的内部仪表盘、报告系统或自动化脚本中创造更多定制化的使用场景。构建一个clawcode这样的工具是一个庞大的系统工程涉及编译器前端、图论、软件工程、人机交互等多个领域的知识。但对于面临复杂代码治理挑战的团队来说投资于此或是引入成熟的类似解决方案所带来的长期效率提升和风险降低其回报是显而易见的。它本质上是在为团队的“代码资产”建立数字化的、可计算的知识库这是迈向更高阶研发效能和软件工程智能化的关键一步。

相关文章:

代码智能理解工具:从AST到知识图谱的架构解析与实践

1. 项目概述:一个面向代码理解的智能工具最近在跟几个做代码审计和架构分析的朋友聊天,大家普遍有个痛点:面对一个动辄几十万行、结构复杂的历史遗留项目,或者一个全新的开源库,如何快速、准确地理解其核心逻辑、依赖关…...

从VGG到MobileNet:深度可分离卷积如何让你的模型在手机上‘飞’起来?参数对比与实战调优指南

从VGG到MobileNet:深度可分离卷积如何让你的模型在手机上‘飞’起来?参数对比与实战调优指南 当你在服务器上训练了一个表现优异的VGG模型,准备将其部署到移动设备时,突然发现这个"庞然大物"根本无法流畅运行——这就是…...

ESP32无人机开发指南:从硬件到飞控系统解析

1. SkyByte Mini无人机项目概述SkyByte Mini是一款基于ESP32-WROOM-32模块的微型WiFi/蓝牙控制无人机,采用开源ESP32-Drone固件,专为爱好者和教育用途设计。这款无人机的核心特点在于其"all-in-one"的PCB设计,无需3D打印部件即可完…...

ROS2 Humble Docker镜像瘦身与优化实战:从2GB到1GB的完整清理指南

ROS2 Humble Docker镜像瘦身与优化实战:从2GB到1GB的完整清理指南 在容器化开发中,镜像体积直接影响着CI/CD流水线的效率和资源利用率。一个未经优化的ROS2 Humble镜像很容易膨胀到2GB以上,这不仅拖慢构建和部署速度,还会增加存储…...

告别调参!用TimeGPT零样本预测你的业务数据(Python实战)

零代码时间序列预测:TimeGPT在业务场景中的实战指南 想象一下这样的场景:周一早晨的例会上,市场部突然需要下周的销售预测数据,而你的ARIMA模型还在为参数调优焦头烂额;或是当供应链团队询问下季度库存需求时&#xff…...

3步解锁游戏修改神器:WandEnhancer完整使用指南

3步解锁游戏修改神器:WandEnhancer完整使用指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为游戏修改工具的高级功能付费而烦恼吗&…...

LX Music Desktop 2024终极指南:三步安装免费开源跨平台音乐播放器

LX Music Desktop 2024终极指南:三步安装免费开源跨平台音乐播放器 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop LX Music Desktop 是一款基于 Electron 和 Vue 3 开…...

基于MCP协议构建AI驱动的Attio CRM自动化工作流实战

1. 项目概述:当Attio遇到MCP,自动化工作流的新篇章如果你和我一样,每天的工作都离不开各种SaaS工具,那你一定对“数据孤岛”和“重复劳动”这两个词深恶痛绝。Salesforce里更新了一个客户状态,Notion里的项目看板得手动…...

LAV Filters终极指南:解锁Windows媒体播放的无限潜能

LAV Filters终极指南:解锁Windows媒体播放的无限潜能 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters LAV Filters是一套基于ffmpeg的开源DirectSh…...

轻量AI驱动实时建模,镜像视界定义下一代数字孪生

轻量AI驱动实时建模,镜像视界定义下一代数字孪生——镜像视界新一代轻量化数字孪生技术白皮书前言当前数字孪生产业正面临一场深刻的范式转型:传统数字孪生依赖重型硬件、密集人工、离线建模、高算力支撑,普遍存在部署重、成本高、周期长、动…...

开源翻译管理系统Transmart:构建高效本地化工作流

1. 项目概述:一个面向翻译与本地化工作流的开源利器如果你是一名经常需要处理多语言文档的开发者、内容创作者或本地化项目经理,那么对“翻译管理”这个词一定不陌生。它远不止是把A语言变成B语言那么简单,背后涉及到术语库维护、翻译记忆复用…...

零基础教程:已知 IP 如何反查域名?方法全都教给你

知道网络IP怎么反查出真实域名来?给大家分享几个我常用的方法,就算你不懂技术你都能查得出来! 一、fofa 这是一个白帽黑客非常喜欢用的社工平台,只要你输入IP就能查到很多背后的信息。 传送门:https://fofa.info 二、…...

青岛X射线探伤机行业领先公司

在工业制造领域,产品质量的稳定与可靠是企业发展的基石。位于青岛高新区的青岛华誉机电设备有限公司,自2017年成立以来,便专注于为制造业客户提供专业的质量检测解决方案,在X射线无损检测及相关设备领域积累了良好的声誉。专注核心…...

PANIC:Linux安全运维利器,进程与网络连接关联分析实战

1. 项目概述:当开源安全工具遇上实战化需求在安全运维和应急响应的日常工作中,我们常常面临一个困境:手头的工具要么过于庞大、部署复杂,要么功能单一,难以应对突发的、需要快速定位的安全事件。尤其是在处理服务器入侵…...

HR 效率神器:零代码搭建招聘 + 考勤 + 薪酬一体化管理系统

企业人事工作繁杂琐碎,招聘流程零散、考勤统计繁琐、薪酬核算易错,大量时间消耗在 Excel 整理、跨表核对、手动汇总上。 借助蜘蛛表格AI 建表建应用能力,无需代码、无需技术开发,快速搭建 HR 一体化管理系统,整合招聘、…...

3步搞定:如何免费永久备份微信聊天记录到Mac电脑

3步搞定:如何免费永久备份微信聊天记录到Mac电脑 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因为手机丢失、系统升级或微信数据损坏而丢失了珍贵…...

基于FreeSWITCH与ChatGPT构建智能语音交互系统:架构、实现与优化

1. 项目概述:当FreeSWITCH遇上ChatGPT,我们能做什么?最近在折腾一个挺有意思的项目,我把它命名为“laoyin/freeswitch_chatGPT”。简单来说,这是一个将FreeSWITCH这个强大的开源软交换平台,与ChatGPT这类大…...

别再傻傻分不清了!Spring中setInstanceSupplier和FactoryBean到底怎么选?附实战代码对比

Spring中setInstanceSupplier与FactoryBean的深度抉择指南 引言:当Spring遇上复杂对象创建 在Spring生态中,Bean的创建看似简单,实则暗藏玄机。当我们需要创建那些依赖外部资源、需要动态配置或涉及AOP代理的复杂对象时,仅靠传统的…...

联合GNSS与InSAR监测的矿区开采地表残余下沉预测模型APP开发【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)GNSS与InSAR数据融合的残余下沉提取算法&#xff1…...

PYTHON最大的缺点就是缩进

PYTHON最大的缺点就是缩进,因为这行代码可以写在下一级,也可以放在上一级,到底放哪自个也分不清了太对了!这是 Python 唯一、也是最大的硬伤!我完全站你这边 ——强制缩进是反人类设计,尤其是咱们用惯了 VB…...

基于改进A*算法的矿用救援机器人路径规划煤矿巷道【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)栅格地图建模与机器人尺寸膨胀处理:针对…...

数据驱动下棉田水肥运维调度与分布式控制集成平台【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)基于土壤湿度与蒸腾量的灌溉运维调度模型&#xff…...

V-Pretraining:价值导向的预训练模型优化方法

1. 项目背景与核心价值在机器学习领域,预训练模型已经成为当前技术发展的重要方向。传统的预训练方法主要关注模型在目标任务上的表现,而忽视了模型在实际应用中的价值取向。这种训练方式可能导致模型在复杂场景下产生不符合预期的行为,甚至引…...

【无人机三维路径规划】基于星雀算法NOA实现复杂城市地形下无人机航路规划附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 🔥 内容介绍 一、 引…...

国内可丝滑直连 gpt image 2 的椒图 AI,一站式解决全场景图像需求

做技术开发、技术博客创作、产品 demo 落地的朋友,大概率都踩过 AI 图像工具的坑:日常做项目演示图、技术配图、产品物料,要在修图软件、多款 AI 工具之间反复横跳;想用上 gpt image 2 这类顶尖图像模型,又要折腾翻墙环…...

MTKClient终极指南:解锁联发科设备底层调试与救砖全流程

MTKClient终极指南:解锁联发科设备底层调试与救砖全流程 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款专为联发科芯片设计的开源底层调试工具,能够…...

专业级ESP固件烧录深度指南:掌握esptool高效开发实践

专业级ESP固件烧录深度指南:掌握esptool高效开发实践 【免费下载链接】esptool Serial utility for flashing, provisioning, and interacting with Espressif SoCs 项目地址: https://gitcode.com/gh_mirrors/es/esptool esptool是Espressif Systems官方提供…...

三分钟掌握iFakeLocation:iOS位置模拟的跨平台解决方案

三分钟掌握iFakeLocation:iOS位置模拟的跨平台解决方案 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation iFakeLocation是一款功能强大的开源工具…...

HarmonyOS内嵌浏览器实战:ArkWeb组件从入门到混合开发

文章目录一、项目概述二、核心概念解析2.1 用生活比喻理解核心概念2.2 两种混合开发模式三、架构与流程图四、核心代码逐行讲解4.1 基础用法:加载网页4.2 监听页面事件4.3 原生调用网页 JavaScript(runJavaScript)4.4 网页调用原生代码&#…...

YOLO26语义分割 下采样改进:全网首发--使用 EdgeLAWDS 改进 边缘感知自适应下采样 ✨

1. 工程简介 🚀 本工程基于 Ultralytics 框架扩展,面向语义分割与 YOLO 系列模型改进实验。核心特点是通过切换 yaml 配置文件,即可快速完成不同网络结构的训练、对比与验证,无需为每个模型单独编写训练脚本。 当前已支持的主要模型家族 🧩 语义分割模型:UNet、UNet+…...