我给 Claude Code 装了个 skill,让它别再废话,生成的代码干净了一截(附开源仓库)

168 阅读6分钟

我给 Claude Code 装了个 skill,让它别再废话,生成的代码干净了一截(附开源仓库)

不知道你有没有被 AI 编程助手那些铺天盖地的“废话”和“过度设计”折磨过?

在用 Cursor 或是 Claude Code 写代码时,经常会遇到这种让人血压飙升的场景:你只是让它写一个极简的异步数据拉取逻辑,结果它不仅帮你写了核心函数,还附赠了二三十行用英文撰写的冗余 Docstring。

甚至,连 x = x + 1 这种大一新生都看得懂的代码,它都非要在旁边补上一行英文注释:# Increment x by 1

不仅如此,为了显示自己的“专业性”,AI 还特别喜欢给你搞“过度设计”——无端创造出三四个无用的抽象类、加上各种莫名其妙的 logger.info 和毫无意义的泛泛 try-except 包裹。这些啰嗦的代码和注释不仅污染了你干净的 Git Commit,还会因为冗长而稀释模型的注意力,引发莫名其妙的逻辑 Bug。

你不得不一次次手动去删除这些废话,或者在对话框里咬牙切齿地纠正:“把所有多余的英文注释都给我删掉,直接给我最精炼的代码!”然而下一次提问,它又旧病复发。

为什么 AI 编程工具会变成一个无法自拔的“啰嗦鬼”?


1. 为什么 AI 编程助手总是在“画蛇添足”?

要治好 AI 的“啰嗦病”,我们得先知道它是怎么染上的。大语言模型(LLM)的训练语料中包含了大量的教科书代码、开源项目教程和详细的教学博文。在这些语料中,为了教学需要,往往带有极其繁杂的中文或英文解说。

VS Code 中 AI 默认生成的代码,充满了各类无用英文注释和啰嗦设计

AI 在生成代码时,其概率预测机制会认为“带有丰富注释和接口封装的代码可读性更高”。这就导致它会天然倾向于选择最啰嗦的输出方式。

同时,大语言模型的机制是“逐 Token 生成”。它吐出的废话和重复性注释越多,不仅消耗的时间越长,而且白白浪费了你极其珍贵的上下文 Token 额度。对于每天高频调用的 Claude Code 而言,这烧掉的都是真金白银。


2. 降维打击:让 AI 保持克制的 ship-skill

为了让 AI 彻底闭嘴,只吐出可以直接投入生产环境的高质量、干练代码,我写了一个开源的 AI Agent Skill —— ship-skill

它本质上是一个针对大语言模型(LLM)的高强度规则约束模版。通过将一系列防御性的“反冗余、反过度注释、反过度设计”的 Prompt 规则注入到 AI Agent 的底层配置中,强行卡死 AI 的发散性注意力。

使用 npm command 命令行一键安装 ship-skill 规则

使用它非常简单,你不需要在每次提问时都去强调不要写注释。只需要在项目根目录下通过一条命令完成安装:

npx skills add EA-Studio-SHARK/ship-skill

安装程序会自动检测你本地正在使用的 AI 编程环境(例如 Cursor 的 .cursorrules 文件或是 Claude Code 的 .claudecode.json 规则链),并将这套极致干净的“开发军规”深度融入进去。


3. 实战对比:装上 ship-skill 前后的代码表现

让我们用同一个接口调用需求,测试一下应用该规则前后的真实代码对比。

改造前:AI 默认产出的“画蛇添足”版

面对一个简单的 Python 异步数据抓取需求,AI 默认会输出下面这样臃肿且带有冗长英文解说的代码:

# ========================================================
# Function: fetch_user_data
# Author: AI Assistant
# Description: Fetches user details asynchronously from API
# ========================================================
async def fetch_user_data(user_id: int) -> dict:
    # Log starting of the network request
    logger.info(f"Starting data fetch for user {user_id}")
    # Constructing the target URL
    url = f"https://api.example.com/users/{user_id}"
    # Open the async HTTP client session
    async with aiohttp.ClientSession() as session:
        # Perform HTTP GET request
        async with session.get(url) as response:
            # Check if status code is OK
            if response.status == 200:
                # Parse JSON data and return
                return await response.json()

改造后:装上 ship-skill 后的极简生产版

在项目规则中融入 ship-skill 约束后,AI 在面对同样的需求时,瞬间收敛了全部多余的废话:

async def fetch_user_data(user_id: int) -> dict:
    url = f"https://api.example.com/users/{user_id}"
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            if response.status == 200:
                return await response.json()
            response.raise_for_status()

应用 ship-skill 后,AI 直接产出的没有任何废话与啰嗦的干净代码

对比非常强烈。装上 Skill 后的代码不仅没有行行注释的噪音,还在最底层加入了防御性的 raise_for_status() 异常抛出逻辑。代码量减少了 60% 以上,可维护性极高,且完全不需要你做第二次人工清洗。


4. ship-skill 是如何工作的?

这套 Skill 的核心约束只做三件事:

  1. 代码即自解释:强制 AI 只有在遇到极其晦涩、包含奇淫巧技的算法时,才在关键行写单行注释;常规的控制流逻辑严禁出现任何解释文字。
  2. 拒绝脑补与过度设计:严禁 AI 自主创造没有被提需求的抽象类和包装函数,代码结构必须遵循最直接的实现路径。
  3. 零 Token 浪费:在输出结构上进行指令级优化,让 AI 抛弃所有“Sure, I can help you with that”之类的寒暄前言和总结废话,完成任务后立刻闭嘴。

自然语言默认流与应用 rules 约束流的对比


5. 如何获取和复现?

我已将这个规则库完全开源在 GitHub。如果你每天使用 Cursor 或者是 Claude Code,强烈建议你在你当前维护的项目中试一下。

GitHub 开源仓库 ship-skill 页面截图

除了 ship-skill 之外,为了让 AI 在国内开发场景和日常工作中更听话,我还开源了另外几个中文技术栈专用的 Agent 规则,它们同样支持一键在本地安装:

  • ai-skills-zh:让 AI 深度理解中国技术开发生态及特有的配置环境。
  • viral-content-skill:用于自动规范 AI 编写高质量中文开发爆文的结构排版。
  • ecom-listing-skill:自动卡死跨境电商文案的输出模版。

你可以根据需要在 GitHub 搜索并关注 EA-Studio-SHARK 组织。


最后想跟大家讨论一个有趣的话题:你平时在使用 AI 编程助手时,哪一种“啰嗦废话”或是过度设计的习惯让你最感到头疼?你是通过什么指令去约束它的?

欢迎在评论区留言讨论。想交流 AI 编程和 Agent 落地经验的同学,也可以私信我或在评论区留言,我会把我们的小群发给你。我们下期再见!