Claude Code:代码简化插件
Claude的代码简化插件,可以用于自动重构 AI 生成代码以提高清晰度和可维护性。
当你深入代码库时,你会发现它:一个构造函数在自己的构造过程中将对象作为参数传递给回调。代码能工作——JavaScript 闭包确保了这一点——但每个新开发者阅读它时都会花 10 分钟来弄明白为什么。
这样的代码会积累。不是 bug,而是困惑。技术上可行但使代码库更难理解、维护和扩展的模式。
如果你有一个代理能发现这些模式并清理它们呢?一个理解你项目约定并自动重构以提高清晰度的代理?
这就是代码简化插件所做的。它是 Claude Code 团队在 Anthropic 内部使用的相同工具,用于保持其自身代码库的清洁。 尝试过的开发者看到令牌使用量减少 20-30%,代码显著更清晰。
1、代码简化器解决的问题

AI 生成的代码有一个冗长问题。不是 Claude 写出糟糕的代码——而是它倾向于过于彻底。这种彻底性会带来维护负担。
当你与 AI 编码助手合作一小时时,你可能会生成数十个函数、几个新模块和数百行代码。大多数都能工作。但会出现一些不必要地复杂化的模式:
- 嵌套的三元运算符节省了一行但要花五分钟理解
- 你以为需要但从未使用的工具类
- 隐藏重要逻辑的过于紧凑的单行代码
- 难以遵循的深度嵌套条件
- 构造函数中混杂的回调配置
这些模式不会破坏任何东西。它们只是让代码更难处理。
代码简化插件通过作为专门的清理代理运行来解决这个问题。它不是通用 linter——而是一个理解你项目约定并重构以提高清晰度的 AI,同时保留确切的功能。
2、代码简化器的工作原理:核心原则
代码简化代理在 Opus 上运行,这是 Anthropic 最有能力的模型。它专注于当前会话中最近修改的代码,除非你明确要求它审查更广泛的范围。
其核心,该代理遵循五个关键原则,这些原则共同使其可靠且实用:
2.1 保留功能
这是首要规则。简化器从不改变代码所做的事情——只改变它如何做。如果你的函数返回特定值、处理某些边界情况或产生特定副作用,所有这些都完全保持不变。
这个约束使代码简化器安全运行,而不必担心破坏东西。该代理针对清晰度优化,而不是可能引入微妙 bug 的巧妙重构。
2.2 应用项目标准
该代理读取你的 CLAUDE.md 文件——你记录编码标准的配置文件——并遵循你建立的模式:
// code-simplifier 将应用你 CLAUDE.md 中的标准,如这些:
- 使用带有适当导入排序和 .js 扩展的 ES 模块
- 对于命名函数,优先使用 function 关键字而不是箭头函数
- 为顶级函数使用显式返回类型注解
- 遵循带有显式 Props 类型的适当 React 组件模式
- 使用适当的错误处理模式(尽可能避免 try/catch)
- 保持一致的命名约定
这是关键——代理不是应用通用偏好。而是应用你项目的约定。
2.3 增强清晰度
这里发生大部分魔力。该代理寻找机会:
- 减少不必要的复杂性和嵌套 — 将深度嵌套的条件扁平化为顺序流程
- 消除冗余代码和抽象 — 删除你不需要的那三个工具类
- 改进变量和函数名称 — 更具描述性、直观的命名
- 整合相关逻辑 — 将属于一起的东西分组
- 删除不必要的注释 — 代码应尽可能自文档化
- 避免嵌套三元运算符 — 优先使用 switch 语句或 if/else 链
至关重要的是,该代理选择清晰度而不是简洁性。目标不是最小行数代码——而是可读、可维护的代码。
2.4 保持平衡
该代理知道何时停止。它积极避免:
- 减少清晰度的过度简化* 难以理解的过于巧妙的解决方案* 将太多关注点组合到单个函数或组件中* 删除改善代码组织的帮助性抽象* 优先考虑"更少行数"而不是可读性(例如嵌套三元、密集单行)* 使代码更难调试或扩展
这种平衡使代码简化器实用。它不会产生乍一看不错但痛苦处理的简洁、巧妙的代码。
2.5 聚焦范围
默认情况下,该代理只触碰当前会话中最近修改的代码。这防止它意外重构你未处理的代码库部分。
你可以明确要求它审查更广泛的范围——如"清理整个文件"或"简化服务文件夹中的所有代码"——但默认是保守的,专注于你最近的工作。
要理解代码简化器内部如何工作,你需要理解 Claude Code 的插件系统和代理架构。
3、插件结构
Claude Code 插件是扩展,为你的开发环境添加自定义斜杠命令、专门代理、钩子和 MCP 服务器。代码简化插件遵循标准结构:
code-simplifier/
├── .claude-plugin/
│ └── plugin.json # 插件元数据(名称、描述、作者)
├── agents/ # 专门代理
│ └── code-simplifier.md # 带有系统指令的代理定义
└── README.md # 文档
plugin.json 文件包含基本元数据:
{
"name": "code-simplifier",
"version": "1.0.0",
"description": "代理,在保留功能的同时简化并优化代码以提高清晰度、一致性和可维护性",
"author": {
"name": "Anthropic",
"email": "support@anthropic.com"
}
}
4、代理定义
插件的真正智能存在于代理定义文件中——一个定义代理行为的 markdown 文档。代码简化代理定义有三个关键部分:
Frontmatter — 基本配置:
---
name: code-simplifier
description: 简化并优化代码以提高清晰度、一致性和可维护性,同时保留所有功能。除非另有指示,否则专注于最近修改的代码。
model: opus
---
这告诉 Claude Code:
- 代理的名称(你用它调用的名称)
- 它做什么(出现在 UI 中的描述)
- 使用哪个模型(Opus 用于最大推理能力)
系统指令 — 指导代理行为的核心指令。这里详细定义了五个原则——保留功能、应用项目标准、增强清晰度、保持平衡、聚焦范围。
系统指令还定义代理的优化过程:
你的优化过程:
1. 识别最近修改的代码部分
2. 分析提高优雅度和一致性的机会
3. 应用项目特定的最佳实践和编码标准
4. 确保所有功能保持不变
5. 验证优化后的代码更简单且更可维护
6. 仅记录影响理解的重要更改
自主操作 — 该代理设计为主动操作。它监控代码写入或修改,并立即提供简化,而不需要你每次都明确请求。

这使得代码简化插件变得超级容易变得更框架特定。
5、代理循环
当你调用代码简化代理时,它在类似于其他 Claude 代理的循环中操作:
- 收集上下文 — 读取最近修改的文件,分析项目结构,并理解当前状态
- 识别机会 — 找到可以在保留功能的同时简化的模式
- 应用重构 — 遵循五个核心原则进行更改
- 验证工作 — 确保功能保留且代码更清洁
- 重复 — 继续直到所有最近修改的代码已被审查
这个循环允许代理高效处理大型代码库,同时维护质量。
6、代码简化器实战
让我们看看代码简化代理实际做什么的具体示例。这些不是假设的——它们是 Claude Code 团队实际遇到并简化的模式。
示例 1:解耦构造与配置
这是启发代码简化插件的示例——AgentSessionManager 中的混乱代码:
// BEFORE: 混乱 - agentSessionManager 在其自身构造过程中作为参数传递
const agentSessionManager = new AgentSessionManager(
issueTracker,
(childSessionId) => {
// Handle child session creation
logger.info(`Created child session: ${childSessionId}`);
return childSessionId;
},
async (parentSessionId, childSessionId) => {
// This works due to JavaScript closure semantics, but it's confusing
// We're passing agentSessionManager to a callback during its own construction
await this.handleResumeParentSession(parentSessionId, childSessionId, agentSessionManager);
},
this.procedureAnalyzer,
this.sharedApplicationServer,
);
运行代码简化代理后:
// AFTER: 清晰 - 构造与回调配置分离
const agentSessionManager = new AgentSessionManager(
issueTracker,
this.procedureAnalyzer,
this.sharedApplicationServer,
);
agentSessionManager.setParentSessionCallbacks(
(childSessionId) => {
logger.info(`Created child session: ${childSessionId}`);
return childSessionId;
},
async (parentSessionId, childSessionId) => {
await this.handleResumeParentSession(parentSessionId, childSessionId, agentSessionManager);
},
);
发生了什么变化?
- 识别混乱模式 — 构造函数通过回调接收其自身实例作为参数
- 引入 setter 方法 —
setParentSessionCallbacks()以解耦构造与配置 - 删除不必要的注释 — 关于 JavaScript 闭包的 8 行解释性注释不再需要
- 使代码线性读取 — 创建 → 配置 → 使用
结果?相同功能,显著更好的可读性。重构触及多个文件,所有 257 个测试继续通过。
示例 2:避免嵌套三元
AI 生成的代码经常过度使用嵌套三元运算符来保持紧凑。代码简化代理偏好清晰度:
// BEFORE: 紧凑但难以跟随
const getStatusColor = (status) => status === 'active' ? 'green' : status === 'pending' ? status === 'overdue' ? 'red' : 'orange' : 'yellow' : 'grey';
代码简化后:
// AFTER: 显式且易于理解
function getStatusColor(status) {
switch (status) {
case 'active':
return 'green';
case 'pending':
return 'yellow';
case 'overdue':
return 'red';
default:
return 'grey';
}
}
代理选择 switch 语句而不是嵌套三元的原因:
- 每个 case 都显式且可读
- 添加新状态很简单
- 默认 case 清晰可见
- 没有解析嵌套条件的认知开销
示例 3:扁平化嵌套条件
深度嵌套条件会带来心理负担。代码简化器将其扁平化:
// BEFORE: 深度嵌套
function validateUser(user) {
if (user) {
if (user.email) {
if (user.email.includes('@')) {
if (user.email.includes('.')) {
return true;
}
}
}
}
return false;
}
代码简化后:
// AFTER: 扁平化和显式
function validateUser(user) {
if (!user) {
return false;
}
if (!user.email) {
return false;
}
if (!user.email.includes('@')) {
return false;
}
if (!user.email.includes('.')) {
return false;
}
return true;
}
倒转方法(失败情况的早期返回)更容易推理,因为:
- 每个条件都可以独立检查
- 你从上到下阅读而不是跟踪嵌套深度
- 添加新验证规则很简单
7、安装和工作流程
让代码简化器运行大约需要 30 秒。
你有两个选项:
选项 1:从任何终端直接安装
claude plugin install code-simplifier
选项 2:从 Claude Code 会话中
首先,确保你有官方 Anthropic 插件市场:
/plugin marketplace update claude-plugins-official
然后安装插件:
/plugin install code-simplifier
重要: 安装后,重启你的 Claude Code 会话以激活插件。该代理不会实时加载,所以你需要在退出并开始新会话后,它才会出现在你的可用子代理中。
8、何时使用代码简化器
8.1 长时间编码会话后
我们有过太多这样的,对吧?
这是主要用例。在 Claude 实现功能一小时后,让它运行代码简化器:
"Run code-simplifier agent on the changes we made today"
Claude 将分析所有最近修改的文件并一次性清理它们。
8.2 创建拉取请求前
在打开 PR 前运行简化器以确保你的代码符合质量标准:
"Use code-simplifier to review and clean up these changes before we create the PR"
这会在进入代码审查前捕获过度工程。
8.3 复杂重构后
当你在多个文件间进行广泛更改时,简化器可以确保一致性:
"Use code-simplifier to normalise the patterns in the files we just refactored"
8.4 清理 AI 生成代码
如果你大量使用 Claude Code 并怀疑积累了复杂性,简化器可以审计并清理:
"Analyse the recent changes with code-simplifier and suggest improvements"
8.5 最佳实践
- 定期运行它 — 不要等到代码变得一团糟。每次重大编码会话后运行简化器。
- 审查更改 — 简化器很好,但并非万无一失。提交前始终审查它更改的内容。
- 设置你的 CLAUDE.md — 你在 CLAUDE.md 中给出的指导越多,简化器就能更好地匹配你的模式。
- 与版本控制一起使用 — 始终在 git 跟踪目录中运行简化器,这样你就可以审查并在需要时恢复更改。
- 与其他工作流程结合 — 代码简化器与以下配合良好:计划模式(先计划,实现,然后简化)、代码审查代理、 测试运行器(简化后运行测试以验证没有破坏)
9、令牌效率益处
一个被低估的益处:简化的代码在未来会话中使用更少令牌。
当 Claude 读取你的代码库以理解上下文时,冗长代码更快填满上下文窗口。通过保持代码简单:
- Claude 可以在相同令牌预算中读取更多代码库
- 后续会话更便宜
- 上下文窗口延伸更远
定期使用代码简化器的开发者报告令牌消耗减少 20-30%。这直接转化为较低的 API 成本。
// 冗长 AI 生成代码:~250 令牌
function processUserData(userData, options = {}) {
const result = {
processed: false,
data: null,
errors: []
};
if (userData && userData.id && userData.email) {
try {
const processedData = {
id: userData.id,
email: userData.email.toLowerCase().trim(),
timestamp: Date.now(),
...options
};
result.data = processedData;
result.processed = true;
} catch (error) {
result.errors.push(error.message);
}
}
return result;
}
// 代码简化后:~180 令牌(28% 减少)
function processUserData(userData, options = {}) {
if (!userData?.id || !userData?.email) {
return { processed: false, data: null, errors: [] };
}
return {
processed: true,
data: {
id: userData.id,
email: userData.email.toLowerCase().trim(),
timestamp: Date.now(),
...options
},
errors: []
};
}
简化版本删除了不必要的中间状态(result 对象)、冗余条件检查和冗长结构——同时做完全相同的事情。
10、代码简化器与手动审查的比较
你可能会想:"我不能自己审查代码吗?"
你可以。但以下是代码简化器做的人类经常不做的事情:
- 一致性 — 它到处应用相同标准,每次都一样
- 速度 — 它在几秒内分析数千行
- 无疲劳 — 审查 20 个文件后不会疲劳
- 客观性 — 对巧妙解决方案没有情感依附
- 模式知识 — 它立即知道数十种简化模式

字面意思是无疲劳。
代码简化器不是取代人工代码审查——而是增强它。先运行简化器,然后人类审查简化的代码。
11、开始使用
准备好在自己的代码库上尝试代码简化器了吗?
# 安装插件
claude plugin install code-simplifier
# 重启 Claude Code,然后调用代理
> "Use the code-simplifier agent to clean up the changes we just made"
该插件是开源的。你可以在这里查看完整代理定义。
原文链接:Inside Claude's Code-Simplifier Plugin: How Anthropic Keeps Its Own Codebase Clean
汇智网翻译整理,转载请标明出处