jscpd Skill:让 AI 编程 Agent 拥有代码「查重」能力的开源利器

jscpd:让 AI 编程 Agent 拥有代码”抄袭检测”能力的开源利器

在 AI 编程时代,Claude Code、Codex 等 Agent 能替你写代码,但它们自己有时候也会重复造轮子——或是不自觉地复制一段已有实现。jscpd(又名 jscpd v5)正是为解决这一痛点而生:它是一个代码复制粘贴检测器,支持 224+ 编程语言,内置 AI 报告器、Agent SkillMCP 服务器,让 AI 编程助手在生成代码前就能”查重”,从根本上减少重复代码的产生。

功能与设计原则

jscpd 核心基于 Rabin-Karp 字符串匹配算法,在代码库中精确定位重复代码块。它的设计原则是轻量、极速、与 AI 工作流无缝衔接——不依赖重型运行时(v5 Rust 版为自包含二进制)、报告输出专为 LLM 优化(比标准报告少约 79% token)。

认可度

  • GitHub Star:6,011(截至 2026-08-17)
  • Forks:254
  • 编程语言:TypeScript(核心 v4)/ Rust(高性能引擎 v5)
  • 支持格式:224 种语言和框架
  • 近期更新:2026-08-16 刚推送提交,仍在活跃维护
  • AI 能力:内置 AI 报告器(Token 效率提升 79%)、两个专用 Agent Skill、一个 MCP Server

链接

GitHub:https://github.com/kucherenko/jscpd

原作者

Oleksandr Kucherenko(GitHub @kucherenko),长期维护代码质量工具链的独立开发者,jscpd 项目自 2013 年起活跃至今。

介绍

jscpd 最早是一个面向人类的代码重复检测 CLI 工具,在 2024-2026 年间逐步演进为 AI-Agent 时代的原生工具。

核心能力一:极速 Rust 引擎(v5)

v5 版本用 Rust 完全重写,引入 --workers 并行化处理,在真实项目中实现 24-37 倍速度提升——小项目(548 文件)快 34 倍,中等项目(9000 文件)快 37 倍,超大项目(17000 文件/900MB)仍快 24 倍。全平台提供预编译二进制(macOS arm64/x64、Linux arm64/x64、Windows x64),无需 Node.js 运行时。

核心能力二:专为 AI 管道设计的报告器

--reporters ai 是 jscpd v5 的杀手级功能。它用公共路径前缀压缩技术,将 LLM 可读的克隆报告从约 21,800 字符压缩到约 4,500 字符(Token 减少约 79%)。配合 --summary 还能输出”重构热点”概览——按 Token/行数/大小/复杂度列出最需重构的文件和目录,AI Agent 可以直接据此制定重构计划。

核心能力三:Agent Skill 与 MCP Server

jscpd 附带两个 SKILL.md 格式的 Agent Skill:jscpd(教 AI 如何调用 jscpd)和 dry-refactoring(引导 AI 读克隆报告 → 选抽取策略 → 执行重构 → 验证消除的完整流程)。同时提供 jscpd-server,一个 MCP 协议实现,将检测能力以工具形式暴露给 AI 助手——无需手动运行 CLI,AI 随时可直接调用。

特点

  • 支持 224 种语言:涵盖所有主流语言,以及 Vue SFC、Svelte、Astro、Markdown 等特殊格式
  • Rust 引擎 24-37 倍提速:v5 版告别 Node.js 依赖,全平台自包含二进制
  • AI 报告器节省 79% Token:为 LLM 管道设计的紧凑输出,直接塞进 Prompt 不超量
  • 两个专用 Agent Skill:开箱即用,Claude Code / Codex / OpenClaw 安装后直接说”帮我查重”即可
  • MCP Server 集成:作为 MCP 工具暴露检测能力,AI 在编辑器内按需调用
  • Git Blame 集成:v5 支持 --blame --reporters console-full,对比重复代码的作者责任
  • CI/Pre-commit 友好:官方 GitHub Action 和 pre-commit hook 配置,开箱即接流水线

使用方法

安装(任意平台,一条命令)

# 推荐:Rust 引擎(极速,24-37x)
npm install -g jscpd@5

# 或者:Nix
nix run github:kucherenko/jscpd -- /path/to/code

# 或者:Homebrew
brew install jscpd

基本检测

jscpd /path/to/project

AI 报告(供 LLM 使用)

jscpd --reporters ai /path/to/project
# 输出约 4500 字符,~1100 Token

带重构热点的摘要

jscpd --reporters ai --summary /path/to/project

MCP Server(AI 编辑器内调用)

npm install -g jscpd-server
jscpd-server /path/to/project --port 3000

然后在 Claude Desktop 等 MCP 客户端配置:

{
  "mcpServers": {
    "jscpd": {
      "type": "streamable-http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

Agent Skill 安装(Claude Code / Codex / OpenClaw)

# 安装 jscpd Skill
npx skills add kucherenko/jscpd --skill jscpd

# 安装 dry-refactoring Skill
npx skills add kucherenko/jscpd --skill dry-refactoring

使用场景与人群

适用场景

  • AI 编程 Agent(Claude Code / Codex / OpenClaw)生成代码前的自我查重
  • 大型代码库的重构热点识别(哪个文件/目录重复率最高)
  • CI 流水线强制卡重率,防止重复代码进入主干
  • 团队代码审查时快速定位复制粘贴来源
  • Pre-commit Hook 拦截高频复制的代码提交

目标用户

  • 使用 AI 编程助手的开发者(想让 AI 避免重复造轮子)
  • 工程团队负责人(需要量化代码重复率、识别重构优先级)
  • DevOps/平台工程师(配置自动化 CI 卡重流程)
  • AI Agent 开发者(构建内置代码质量检测能力的编程助手)

输入与输出案例

案例 1:CLI 扫描 → AI 报告

$ jscpd --reporters ai /path/to/src

src/utils/auth.ts:10-25 ~ helpers.ts:40-55
src/utils/auth.ts 30-45 ~ 80-95
src/utils/auth.ts:10-25 ~ api/routes.ts:5-20
---
23 clones · 4.2% duplication

比标准 console 报告(约 5400 Token)缩减到约 1100 Token,直接塞进 Claude 的 Prompt 不超量。

案例 2:重构热点摘要

$ jscpd --reporters ai --summary --no-tips /path/to/src

Summary by tokens (321 files, 129 folders):
files (tokens/lines/size/cx/dup%):
src/core/files.ts 2052/363/11.4K/80/0.0%
...
folders (files/tokens/lines/size):
src/core 8/5264/843/26.5K

AI 读完这份摘要,就知道应该优先重构 src/core 目录——文件多、Token 大、复杂度高,是重构投入产出比最高的地方。


GitHub: https://github.com/kucherenko/jscpd

评论区

0 条评论

登录后可评论。

Skill超级捕获手 13 阅读