ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

让 Coding Agent 自己发现代码坏味道:从感知到质量闭环的实践指南

让 Coding Agent 自己发现代码坏味道:从感知到质量闭环的实践指南 Sensez让 coding agent 自己发现代码里的“坏味道”如果你所在团队近半年已经开始引入 AI 编程助手写业务代码你大概率会经历这样一幕代码评审的时候一眼扫过去代码功能是对的测试也过了但总有一种说不上来的别扭。某个工具类里塞了三层 if 嵌套某个方法写了 200 行还没拆某个新模块和旧模块重复实现了一个早就存在的解析逻辑。你让 AI 把代码改简洁一点它改完确实简了但连带着把别的模块注释也删了测试还挂了两条。这种情况多了之后我开始意识到一个问题代码气味不只是一个静态代码质量问题它本质上是一个“感知”问题。人写代码的时候闻到坏味道会下意识调整但 coding agent 生成代码的时候它并不知道这段代码在真实工程上下文里“闻起来”有多刺鼻。Sensez 这个项目让我比较兴奋的点正是它把注意力从“事后扫描”转移到了“让 agent 自己学会感知”。这篇文章不打算只做项目介绍我想从实际工程痛点出发把下面几件事讲清楚为什么 coding agent 会源源不断制造代码气味传统代码质量工具在“AI 生成代码”场景下缺了什么Sensez 这类思路真正改变的是哪一环如果今天你想给自己的 coding agent 加上“气味感知”能力可以怎么落地以及这里面的坑、边界和度量方式。如果你正在做 AI 辅助编程工具的选型或者在团队里负责 AI 生成代码的质量治理这篇文章值得一次读完。1. 为什么 coding agent 会成为“代码气味生产线”先讲一个普遍的工程现象。很多团队最初引入 coding agent 时最关心的是它能写多少代码、能省多少时间。但跑了几个月之后大家发现代码库里多了很多“看起来没问题、维护起来想骂人”的代码。我把这类代码归纳成几个典型模式复制粘贴式扩展。Agent 在理解上下文不充分的情况下最容易做的事情就是仿照已有代码再写一份。它看到某个模块里有个“时间格式化工具类”它不会去查这个类是否已有公共方法而是直接生成一个新的“日期处理工具类”。于是代码库里出现大量命名相似、职责重叠的重复类。表面抽象。Agent 知道代码规范要求“封装复用”但它对业务领域的理解是有限的。它可能把三个风马牛不相及的东西抽象到一个接口里名字叫 CommonUtil。表面看它做了抽象实际上这个抽象没有任何约束力后续维护者根本不知道这个接口该不该用。深水区逻辑单仓化。Agent 倾向于在一个方法里把完整逻辑写完因为它需要保证上下文连贯。在生成单元测试时它也倾向于为这个 200 行的方法写一个覆盖所有分支的大测试。结果是功能测试覆盖率很高但代码的可读性、可测试性变得极差。这些问题的共同点是它们不是语法错误也不是功能缺陷而是面向未来的维护负担。传统 IDE 不会报错编译器不会警告甚至大部分测试都能通过。但它们会让下一次迭代变得昂贵。Coding agent 之所以容易成为“代码气味生产线”根本原因有三个第一prompt 或任务描述里通常只有用户需求的“今目标”没有代码库的“长期约束”。你让 agent 实现一个日期范围选择器它不会主动去遵守“统一使用公司内部的 DateRange 对象”这个团队规范除非你明确告诉它。第二coding agent 的回馈信号里没有“代码气味”这一项。单元测试通过、编译通过、lint 通过它会认为任务完成。但代码气味不是错误它不会让 agent 在生成过程中产生任何“不适感”。第三代码气味的代价有滞后性。这次提测时你多花了 20 分钟接受这个 if 嵌套但三个月后同事要在里面加一个状态需要再花半天时间理清楚。coding agent 本身不会承担这个滞后成本只有团队在承受。所以你会发现传统代码评审机制在 AI 生成代码时代正在失效。人 review AI 代码时很容易产生“它写的能用就行”的心理预期尤其是当代码量很大时评审者根本没有精力去逐行审视气味。这是一个真实的管理学问题审查资源有限而生成的代码量在膨胀。因此Sensez 把目光放在“让 coding agent 自己识别代码气味”这个方向从战略上是正确的它把质量控制从“外部事后检查”前移到“生成过程自觉”。2. 代码气味与 coding agent 的天然矛盾我们需要先给代码气味做一个清晰的边界。代码气味Code Smell这个词最早由 Kent Beck 和 Martin Fowler 在《重构》中系统提出指的是代码中那些暗示深层设计问题的表面特征。它本身不是 bug但往往预示着未来的 bug、维护困难和扩展成本。常见的代码气味包括但不限于代码气味典型表现对项目的影响重复代码同一逻辑在多处复制修改时容易漏改行为分叉过长方法一个方法包含多个职责难测试、难复用、难读过大的类类承担了过多不相关职责违反单一职责原则数据泥团多个字段总是同时出现应潜在地抽象成对象依恋情结方法过度使用其他类的数据封装被破坏发散式变化一个类因为多个原因被修改模块边界划分错误霰弹式修改修改一个功能需要改动很多类耦合度过高基本类型偏执过度使用原始类型替代对象类型安全缺失代码注释过多用注释解释本应重构的代码真实意图被掩盖不恰当的亲密两个类过度使用彼此私有细节追溯成本高人为什么能识别这些气味因为我们有经验、有直觉、有上下文。看到一段代码我会下意识地想这个逻辑以前是不是见过这个类是不是太臃肿了这个命名为什么和业务语义对不上但 coding agent 没有这些感觉。它的工作方式是接受一个任务描述在上下文中检索相关代码然后生成一个看起来符合模式的结果。这意味着一个天然矛盾代码气味通常需要“跨文件”“跨模块”“跨时间”的信息整合而 coding agent 的上下文窗口和检索机制往往不足以支撑这种整合。举个例子。假设项目里已经存在一个PaymentStatus枚举用来表示支付状态。业务代码里也有统一的转换方法。你让 agent 新增一个“退款状态展示”功能它大概率会在新模块里重新定义一个枚举RefundStatus。如果只看当前任务上下文这个枚举完全没有问题但站在整个项目的层面这两个枚举要么可以合并要么应该继承同一套基础状态否则后续每次 UI 展示都要写两套转换逻辑。这个矛盾说明仅仅在编码时给 agent 更多规范是不够的它需要的是一套能让它在生成过程中“感知”到代码气味的机制。Sensez 的思路是在这里切入的。3. 传统代码质量工具到底缺了什么在 Sensez 之前我们通常用几类工具来管理代码质量静态代码分析工具比如 SonarQube、ESLint、Checkstyle。这类工具能发现重复代码、过长的函数、明显的坏味道。它们的优点是确定性强、规则明确缺点是它们是“静态”的不理解项目历史和业务上下文经常报出大量低优先级问题导致团队慢慢忽略它们。代码评审工具比如 GitHub Review、Gerrit。这类工具依赖人来发现代码气味。问题是人力评审带宽有限AI 生成代码的量在增加评审质量会稀释。LLM 评审工具比如 CodeRabbit、CodeReviewer出现得比较快。这类工具用大模型做代码评审能从语义层面分析代码但仍然是一种事后反馈。这些工具共有的一个缺陷是它们都假设代码已经写完然后再去检查。一旦代码进入 review 阶段修改成本已经产生了。如果 agent 生成的代码带着复杂的气味进入评审评审者要么接受坏味道进入主干要么提出修改意见然后让 agent 再改一轮这个“生成—评审—修改”的循环会消耗大量时间和 token。真正的瓶颈不是“能不能发现问题”而是“问题能不能在更早阶段被避免”。你想想人工开发时如果 IDE 实时提示类型错误、拼写错误你会立刻修正而当代码审查才发现“这个函数太长”你就需要重新组织逻辑、重跑测试、再次提审这个过程至少多花一小时。Sensez 想做的事情本质上是把“代码气味检测”放到 agent 生成代码这个环节里让 agent 在提交代码之前就知道这段代码存在什么问题。从材料提供的项目标题来看Sensez 强调的是 “helping coding agents catch their own code smells”关键词是“catch their own”。它不是在取代 SonarQube也不是在取代人工评审而是改变 agent 的工作流从“写代码”到“感知代码”。这也意味着一个更大的趋势过去的代码质量工具是面向“人”的而新一代工具开始面向“AI 开发者”做设计。它们需要更好地理解模型生成代码的方式更好地告诉模型“这段代码在真实项目里看起来是什么样”。4. Sensez让 agent 在生成阶段就感知气味从客观事实来看Sensez 目前处于早期项目阶段还没有形成完整的开源生态和官方文档体系。我需要先声明这篇文章不会去编造它的具体版本号、API 文档或实测数据。我们能做的是基于它的标题、核心思路和当前 AI 工程实践分析这类工具的技术方向并设计一套可落地的接入思路。从项目标题看Sensez 的核心理念是让 coding agent 在生成代码的过程中“自己发现”代码气味并通过反馈闭环促使它修正。这包含三个技术要素第一气味识别能力。它需要识别代码库中存在的代码气味比如重复、混淆、过度复杂度、命名不当等。这个识别可以由一组静态分析规则来完成也可以通过 LLM 来分类识别。第二反馈注入机制。识别出气味后它需要把建议注入到 agent 的生成流程中。这可能是通过 prompt 指导、工具返回值或者通过中间层拦截生成结果要求 agent 进行重构。第三持续学习能力。因为每个团队的代码库不同有的偏向服务端 Java有的偏向前端 TypeScript有的有特定的领域驱动设计风格所以气味识别规则需要能随着 agent 的生成和用户反馈而更新。从实际工程落地角度看Sensez 这类工具真正困难的不是“识别气味”而是“如何去影响 agent 的行为”。这里有一个核心难点你不能只告诉 agent “不要再写过长方法了”它不会记住这种抽象原则。你需要给它具体的、可执行的反馈比如“这个函数有 180 行超过团队标准 80 行请拆分为 3 个方法”或者“你刚才生成了 PaymentStatus 的重复定义项目中已有类似枚举请直接引用”。用人类教学来类比你不能只教一个实习生“代码要优雅”你得告诉他“这个类做的事情太多把支付状态逻辑拆到单独的类去”。所以 Sensez 这类工具的技术架构大概率会包含三层底层代码分析引擎。扫描工作区文件计算重复度、圈复杂度、方法长度、依赖方向等指标形成气味报告。中间层上下文构建器。把气味报告和生成代码的上下文拼接成 agent 能理解的反馈消息包含文件路径、行号、严重程度、重构建议。顶层工作流接入模块。与 coding agent 的执行循环集成在每次生成前后触发气味检查并决定是否要求 agent 自我修正。从工程决策角度看这里需要想清楚的是一个取舍是“实时拦截”还是“事后提示”实时拦截牺牲速度agent 每生成一段代码就要停下来跑一次分析T1 延迟会明显影响“流式生成”体验。事后提示速度快但反馈可能被忽略。更稳妥的设计是“分层介入”生成前检查相关上下文中是否已有类似实现避免重复定义提交前做一个快速气味汇总提示 agent 自查进入评审前做一个完整报告供人类参考。这种分层设计的优势在于你既可以保证 agent 的快节奏也能在关键节点施加质量控制。5. 落地思路为 coding agent 搭建“气味感知”工作流虽然 Sensez 还处于早期但它的理念完全可以在当前技术条件下落地。我可以根据自己的工程实践给你一套不依赖特定厂商的“气味感知”接入方案。这套方案的核心思路是给 coding agent 加一个中间检查层让它不能只凭 prompt 和上下文就生成代码而必须先过一遍“气味雷达”。我以一个伪代码的形式展示这个思路。假设你使用的是一个类似 Claude Code 或 Cursor Agent 的命令行 coding agent你可以封装一个sensez-lint脚本来做代码气味检查。这里的命令名、输出格式属于设计示例你可以根据实际项目的技术栈替换。# 示例封装一个代码气味检查脚本 # 文件路径scripts/sensez-lint.sh #!/bin/bash # 简化版代码气味检查扫描最近修改的代码文件 # 使用通用静态分析工具如 ESLint、Checkstyle、golangci-lint 等 自定义规则 CHANGED_FILES$(git diff --name-only --cached | grep -E \.(java|py|js|ts)$) if [ -z $CHANGED_FILES ]; then echo No code files changed, skip smell check. exit 0 fi echo Running code smell check on: echo $CHANGED_FILES # 这里以 Java 项目为例实际请根据项目语言替换 # ./gradlew checkstyleMain # 或者使用 sonar-scanner # 接下来用 LLM 做一次轻量级气味评审 # 将改动文件拼接成上下文调用大模型 API 进行气味分类 python3 scripts/smell_review.py $CHANGED_FILES exit 0这个脚本只是一个入口真正的逻辑在smell_review.py里。# 文件路径scripts/smell_review.py 设计说明 - 接收一个或多个代码文件路径作为参数 - 读取文件内容 - 通过大模型对代码进行气味识别 - 输出结构化建议包括文件路径、行号、气味类型、修复建议 - 本脚本不执行自动修改只输出建议具体命令和接口以实际项目为准 import sys import json from pathlib import Path # TODO: 替换为你的实际 LLM 调用方式OpenAI SDK、Claude SDK、内网模型网关等 # 注意这里仅展示流程逻辑不假设任何真实 SDK 存在 def call_llm_for_smells(code: str): 向大模型询问代码中存在的 code smells。 prompt f你是一名资深代码审查专家。请分析下面这段代码指出其中存在的代码气味code smells 例如重复代码、过长方法、过大的类、数据泥团、依恋情结、霰弹式修改、基本类型偏执等。 请按 JSON 格式输出 {{ smells: [ {{ type: LongMethod, line_start: 10, line_end: 45, message: 这个方法超过 80 行包含多个职责建议拆分, suggestion: 将第 10-25 行提取为私有方法 validateOrder第 26-40 行提取为 calculateDiscount }} ] }} 待分析代码{code}# 这里需要替换为真实的大模型接口调用 # 示例中不直接调用只返回一个空结果 return {smells: []} def main(file_paths): for path_str in file_paths: path Path(path_str) if not path.exists(): continue code path.read_text(encodingutf-8) result call_llm_for_smells(code) print(fFile: {path}) print(json.dumps(result, ensure_asciiFalse, indent2)) if __name__ __main__: main(sys.argv[1:])这段代码要说明的不是具体实现而是它的工作流第一步拿到待检查的代码文件。第二步把代码内容送给大模型。第三步大模型返回结构化的气味报告。第四步将报告反馈给 coding agent要求它有针对性地修改。真正精妙的地方在于你可以把这份气味报告作为新的上下文重新喂给 coding agent要求它在修改前先解释“为什么这样改能消除气味”。这一步可以有效防止 agent 做表面修改或机械重构。所以你的完整工作流看起来是这样的coding agent 完成一个任务生成了代码。代码进入气味检查层生成结构化报告。气味报告被拼接进 promptagent 收到反馈“你需要修复以下 code smells文件 X 中的某某方法过长……”agent 基于反馈生成修改计划。代码再次接受检查直到气味报告通过阈值或人工介入。这个循环就是 Sensez 理念的核心也是你可以立刻在现有工具链上做的升级。6. 反馈闭环的关键如何编写“气味描述”让 agent 能理解不少团队在网上看到“用大模型做自动 code review”的方案后自己也试过但效果普遍一般。接待过的最常见反馈是“我让 LLM 帮我 review 代码它识别出的问题大而空什么‘建议提高代码可维护性’这跟没说一样。”这个问题不在 LLM 能力而在你给它的反馈格式。要让 coding agent 能基于代码气味报告真正修改代码报告必须满足三个条件定位准确、解释具体、修改路径明确。先说定位准确。反馈里不能只说“这个文件存在重复代码”而必须给出“文件中第 42-60 行与 /src/main/java/com/example/util/DateUtils.java 第 15-33 行逻辑重复”。有了精确定位agent 就能提取两份代码做对比。再说解释具体。反馈不能只说“方法过长”而要说“方法包含 5 个职责校验订单、计算折扣、装载库存、生成收据、发送通知。建议拆为 5 个方法”。具体到职责清单agent 就能照此拆分。最后是修改路径明确。反馈里应给出重构的意图比如“将订单状态流转逻辑抽取到 OrderStateMachine 类而不是在 OrderService 中维护状态机”。这里给 agent 指明了设计方向它才不会跑偏。下面是一个我推荐的反馈模板。假设你通过 Sensez 或自己封装的分析层得到了气味报告将结果转换成用于 prompt 的文本代码气味反馈 文件src/main/java/com/example/order/OrderService.java 气味类型LongMethod过长方法 严重程度medium 位置方法 calculateFinalAmount第 120-210 行 问题描述 该方法同时处理了优惠计算、税费计算、运费计算和余额抵扣。 每当业务规则变化时该方法都会因为多个原因被修改发散式变化。 重构建议 1) 将优惠计算抽取到 DiscountCalculator 类 2) 将税费计算抽取到 TaxCalculator 类 3) 将运费计算抽取到 ShippingCostCalculator 类 4) calculateFinalAmount 只负责按顺序调用上述组件并聚合结果。 请根据上述建议修改代码并补充必要的单元测试。当你把这段文本接在 agent 的消息后面它就知道接下来该做什么了。重点不是让 agent 成为重构大师而是让它具备“按图索骥”的能力。这里有一个很多人忽略的技巧反馈内容中的“行号”不要依赖一次扫描的结果。因为 agent 在读反馈之后修改代码时行号会变。更稳妥的做法是把“函数名 方法签名”作为定位锚点而不是行号。比如“方法 calculateFinalAmount 中”这样即使代码发生偏移agent 也能找到对应逻辑。再补充一个我自己用的比较顺手的小技巧如果代码库很大不要一次性把所有代码气味都抛给 agent。按照影响维度分组一次只让它处理一个气味类别。比如这次只处理“重复代码”下次再处理“过长方法”。这样做的原因是coding agent 的上下文窗口是有限的。如果一次让它处理 10 个不同类型的重构它很可能会顾此失彼甚至为了消除某些气味而引入新的质量问题。所以实践上我比较推荐这样的顺序第一轮修复最严重的重复代码 第二轮拆分最长的方法 第三轮消除数据泥团每一轮都重新生成代码重新扫描形成增量式的重构循环。采集到这一步Sensez 这类工具的定位也就更清晰了它不是要替你做所有代码审查而是把代码气味映射成 agent 可以执行的“修改指令”。7. 如何度量 coding agent 的“气味控制”效果落地过程中一个必须面对的问题是怎么证明这套机制有效如果你的团队引入 coding agent 之后还要人工再花大量时间 review效率可能不升反降。我不建议你只看“代码气味数量下降”这个单一指标因为代码量本身也在变化。更合理的是一组配套指标。先定义一个核心指标气味密度。气味密度 代码气味数量 / 业务代码总行数或千行代码数这个指标比绝对数量更有意义。如果一个功能项目自然增长到 1 万行气味数量从 10 涨到 15不一定是变差但如果气味密度显著下降说明 agent 的生成质量确实在提升。第二个指标是气味逃逸率。这个指标说的是虽然 agent 生成时会检查气味但真正进入主干分支前通过了人类评审的 MR 里仍然存在的气味数量。你可以每周从合并进主干的代码中抽取样本人工或借助 SonarQube 统计气味数量除以合并代码总数。它的意义在于衡量你的“气味感知层human review”整体效果。只要气味逃逸率在下降就说明大部分气味被拦截在提测之前了。第三个指标可以被叫做agent 气味修正率。这个指标统计agent 在收到气味反馈后是否正确修复了目标问题而不是只改了表面措辞。比如项目里有 20 个 MR 被 agent 开发其中 12 个 MR 收到了“方法过长”反馈agent 成功把长方法拆成了多个方法修正率高就是 100%如果只改了注释格式则不算。实际执行中修正率的判断需要一点人工抽样。但我发现一个省力的方法让 agent 在修改完成后用一句话说明它做了什么重构然后由人类评审者根据说明和代码 diff 判断是否真的消除了这个气味。我把这套指标整理成一张表方便你直接复制到团队文档里指标名称计算方式衡量目标合理参考趋势气味密度气味总数 / 千行代码代码库整体气味水平持续下降气味逃逸率进入主干的合并代码中仍存在的气味 / 合并代码总数质量门禁的拦截效果稳定下降agent 气味修正率成功修正的气味数量 / 收到反馈的气味数量agent 理解并执行重构建议的能力逐步上升这三个指标组合在一起你才能回答清晰的问题引入 Sensez 这类机制后agent 生成的代码是不是真的变干净了还是只是把 review 成本转移到了其他地方从实际经验看如果只上线静态扫描而不引入反馈闭环气味检测往往变成了纯粹的报告agent 仍然在生成气味人类仍然在 review 阶段花时间。只有形成闭环让 agent 在生成阶段就收到可执行的气味反馈质量才能真正前置。8. 常见误区与落地建议结合我见过的实践案例下面这些坑比较典型。误区一把气味检测当成 command 按钮而不是工作流的一部分。很多团队只是在 CI 里加了一个“神奇”代码审查步骤生成了报告却没人看agent 也不会基于报告修改代码。结果报告只是又一个“低价值通知”。正确做法是把报告接入到 agent 的反馈循环里。简单说就是 agent 在生成完代码后自己会收到反馈然后重新修改。比 CI 报告更前置也更有效。误区二给 agent 的气味反馈是通用模板。如果你把一个大而全的 code review prompt 复制给 agent它往往返回“提高代码可维护性”之类的空洞建议。用户想要 agent 修正“重复代码”agent 却说“建议使用策略模式”然后改了十倍没用的代码。好的反馈必须带具体证据。至少要包含文件路径、方法名、重复代码的位置、建议的拆分策略。前面给出的反馈模板结构上值得借鉴。误区三期望一次把所有气味都消灭。代码气味是动态存在的代码库越大气味越多。对于一个大型 legacy 系统你用 agent 同时修复上千个重复代码大概率会引入新 bug。更稳妥的策略是按模块、按气味类型逐步治理。先挑两个高价值代码气味类型试点跑通反馈循环后再扩大范围。误区四给 agent 的权限过大。这一点我在安全边界部分还会展开。如果一个 coding agent 可以自由修改任意文件来消除气味它有可能会为了消除“重复代码”而去修改公共工具类导致全项目回归。所以agent 的修改范围需要做边界约束一般限定在不影响公共接口的前提下。误区五忽略“人为评估”这个环节。Sensez 这类工具再怎么强大也只是辅助识别和辅助修改。代码最终是否进入主干还是需要有人来做决策。真正有价值的不是让 agent 完美而是让人和 agent 之间形成一种高效的互动agent 负责大范围候选修复人负责判断边界和风险。我给团队的落地建议是先在小范围内试点选择一个中等复杂度的微服务模块统计 baseline 气味密度然后开启反馈闭环两周后再统计一次。对比前文那三个指标判断这套机制是否值得全团队铺开。9. 围绕 Sensez 展开安全边界与生产环境注意事项使用 Sensez 或类似的让 agent 自动修改代码质量的工具有几点安全边界必须重视否则容易把质量工具变成事故源。最小权限原则。coding agent 在消除代码气味时它需要读取代码库这个时候权限范围一定要严格限制在目标模块内。只给它对你选定的业务模块下相关文件的读写权限不要给它整个仓库的自由操作权限。一旦它发现全项目存在重复代码可能会试图进行全局重构这就是灾难的开始。测试门禁必须前置。任何由 agent 自己完成的代码修改都不应该直接进入主干。在它生成修改代码后必须先通过静态分析、单元测试和集成测试再由人工 review 决定是否合并。如果没有测试覆盖的旧模块不建议让 agent 做大面积的自动重构。回滚方案。在当前 Agent 工具链包括 Sensez 这类插件里做配置修改时必须保留上一次配置的快照。一旦发现 agent 修改行为失控能快速回滚到上一个稳定版本。审计日志。建议要求工具记录哪些文件被修改了、修改的原因是什么来自哪一条气味反馈、修改前后的 diff。这个审计日志一来方便追踪回归问题二来也能帮助你判断 agent 反馈闭环的有效性。关注模型幻觉。在使用大模型做气味识别的工具时它可能把不存在的问题视为问题比如它会把正常的三元表达式误判为“缺乏可读性”。所以不建议自动执行全部修改建议而是把气味报告作为“候选清单”让人或规则筛选后再交给 agent 执行。这一部分如果非要总结一句那就是工具可以自动发现问题但授权要最小化、变更要有门禁、结果要有审计。10. 对未来的判断与进一步实践如果你把 Sensez 这个项目放到更大的行业背景来看能发现一个清晰的趋势AI 时代代码质量工具的用户正在从“人”悄然替换成“agent”。过去我们设计 lint 工具的规则是为了让人类开发者尽快发现问题。但现在 coding agent 已经能生成项目的大段代码它们需要有更精准的、面向自身生成流程的质量反馈。传统工具像“贴在人身上的便利贴”Sensez 这类工具想做的是“装进 agent 脑子里的传感器”。这个方向的想象空间很大。它不止可以识别代码气味还可以识别架构漂移、领域模型一致性、接口设计不兼容等问题。未来 coding agent 可能不是在写完代码后才被 review而是在生成过程中就始终带着质量约束这条“风筝线”。对开发者而言现在比较实际的做法是不要把目光只盯在某个具体工具上而是先把“代码气味的感知—反馈—修正”闭环建立起来。如果你在团队里用的是 Claude Code、Cursor、Codex 这类 Coding Agent可以先用脚本封装一层气味审查把报告映射成 agent 可理解的结构化反馈然后在小模块里跑通循环最后再衡量气味密度、逃逸率和修正率。这里的关键不是你能让 agent 一次性写出完美代码而是建立一种机制让 agent 每次生成代码时都知道“质量感知”是一个硬约束而不是可有可无的装饰。Sensez 给了我们一个很好的方向而这个方向的落地其实可以从你自己的工作流开始。
返回列表