jscpd Skill:让 AI 编程 Agent 拥有代码「查重」能力的开源利器
jscpd:让 AI 编程 Agent 拥有代码”抄袭检测”能力的开源利器
在 AI 编程时代,Claude Code、Codex 等 Agent 能替你写代码,但它们自己有时候也会重复造轮子——或是不自觉地复制一段已有实现。jscpd(又名 jscpd v5)正是为解决这一痛点而生:它是一个代码复制粘贴检测器,支持 224+ 编程语言,内置 AI 报告器、Agent Skill 和 MCP 服务器,让 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 大、复杂度高,是重构投入产出比最高的地方。
评论区
登录后可评论。