另外重复实现与复用,以及架构设计的合理性工具只能部分的看到相似以及展示状态,很难下决定,对吗?有哪些Agent相关的skill,工具的实现?

回复 群友 2434 对,你判断得准。工具能看见的只是“相似”和“状态”,决定不了“该不该合并”。 拆开说三件事: 一、重复实现与复用 确定性工具(jscpd、PMD 的 CPD、ruff 的重复检测、SonarQube duplication)判相似用的是 token 序列或者抽象语法树的相似度阈值。它能告诉你“这两段 80% 像”,但分不清这是“该抽公共函数的复制粘贴”,还是“两个业务领域碰巧长得像、将来一定要分道扬镳的伪重复”。前者该抽,后者抽了就是耦合。这个判断依赖未来的变化方向,工具没有这个信息。 而且“相似”的粒度和“复用”的粒度经常对不上:工具按代码块比,复用决策按职责边界定。两个 15 行的函数长得几乎一样,但一个在领域层、一个在基础设施层,复用了就跨了层,架构更差。工具看不到层。 二、架构设计的合理性 静态工具能给的是结构指标:模块间依赖图的环、扇入扇出、包的耦合度(Martin 的 instability / abstractness)、改动频率与耦合的交叉分析(热点模块,code churn × complexity 那类)。这些是“状态展示”,能提示哪里可疑。 做不到的是:这个依赖方向符不符合意图、这个抽象是不是过早、这个边界划在业务上对不对。因为这些只有设计者脑子里的意图才能回答。工具没有意图,只能推断。 三、真正能用的做法 把“能不能看到”和“谁来定”分开: 确定性工具负责产出候选集合和度量(相似簇、依赖环、热点、耦合度、调用面); 人在架构文档或 AGENTS.md 里写死规则(分层依赖方向、什么情况允许抽象、哪类代码禁止跨模块引用),让规则成为可判定的检查; agent 只负责按规则去改,改完跑一遍验证,不负责发明规则。 这是分层,不是让 agent 替代判断。 至于 Agent 相关的 skill 和工具实现,能落地的有这几类: 死代码/未使用:knip、ts-prune、vulture、ruff 规则,加一个 skill 把结果转成可复核的清理清单(必须有 entry 配置,你的 NewMathAgent 那种得手写)。 重复检测:jscpd、PMD CPD,输出相似簇后让 agent 做“合并还是保留”的分组报告,附上两边调用面,交人拍板。 架构度量:dependency-cruiser(可写规则做 CI 门禁,这比分析报告实用得多)、ArchUnit(Java 侧把分层规则写成单测)、madge 看依赖环、SonarQube 的结构规则。 改动热点:git log 统计 + 圈复杂度交叉,找“经常改又很复杂”的模块,这个比纯静态分析更接近真实风险。 审查型 subagent:单独一个只做批判的角色,输入是 diff,输出只允许报“多余抽象、伪重复、越层依赖、过度测试”,不写修复代码。 最后一条最实用:把可判定的部分写成 CI 门禁(dependency-cruiser 规则 + lint + 重复阈值),不可判定的部分留成人审清单。工具的价值是把待判断的范围缩到能看的规模,不是替你做决定。