当 AI 替你写了太多代码,你的编程能力还剩多少?

5 阅读4分钟

我让 AI Agent 帮我做了一个"戒断 AI"的编程训练工具。是的,这件事本身就够讽刺的。

一个尴尬的现实

先说个大背景:现在这行大家都很忙。项目排期一个接一个,日常开发几乎全靠 AI 辅助来赶进度,根本没时间手搓代码。更现实的是,AI 的普及让管理层对效率的预期也水涨船高——你要是还在那一行行手写,领导第一反应不是"你很扎实",而是"你怎么这么慢"。

整个行业都在逼你用 AI,但没人关心你用着用着,自己的底层能力在悄悄退化。

我是一名大模型算法工程师,日常工作跟 LLM 打交道。Cursor、Copilot、Claude Code 这些 AI 编程工具我用得比谁都溜。

但最近我发现一个让我不安的事情:当我关掉所有 AI 辅助,面对一个中等难度的 bug,我需要比以前更长的时间才能定位问题。

Tab 键已经形成了肌肉记忆。写代码时下意识就等补全。遇到报错第一反应是丢给 AI 而不是自己读 traceback。

我相信这不只是我一个人的问题。

前段时间看到一个帖子说得好:"AI 编程助手是类固醇。短期增肌,长期萎缩。" 虽然有点极端,但确实点到了痛处 —— 如果你从来不在没有 AI 的情况下编程,你怎么知道自己的真实水平?

所以我做了 CodeForge

CodeForge 是一个 CLI 工具,核心理念很简单:

用真实开源项目的已解决 bug 来做编程训练。

不是 LeetCode 那种算法题,不是人造的编程练习。而是从 Flask、FastAPI、Scrapy、httpx、requests、thefuck 这些你可能天天在用的项目里,抓取真实的、已经被修复的 bug,让你在完全没有 AI 辅助的情况下尝试修复,然后对比真实的修复方案。

为什么用真实 bug?

算法题训练的是"解题能力",但工程师日常面对的是"在几万行代码里找到那个不对的地方,然后用最小改动修好它"。这是完全不同的能力:

  • 阅读理解能力:快速理解陌生代码库的结构和逻辑
  • bug 定位能力:从症状出发,逐步缩小范围
  • 最小修改原则:不是重写,而是精准手术
  • 边界情况思维:真实 bug 往往藏在边界条件里

这些能力,正是 AI 编程助手最容易让你退化的部分。

工作流程

# 1. 获取一个挑战
forge challenge --difficulty easy

# 2. 开始(自动 clone 仓库,checkout 到 bug 存在的 commit)
forge start --id httpx-url-quoting

# 3. 先写思考日志(强制你在动手前想清楚)
forge think

# 4. 在代码里找 bug,修复它
# (在 ~/.codeforge/workspaces/<id>/repo/ 目录下)

# 5. 提交方案
forge submit

# 6. 对比真实修复方案
forge compare

# 7. AI 评判你的方案(支持 Claude/GPT/DeepSeek,也可以手动)
forge review

关键设计:

forge think 是必须的。 提交前必须写思考日志。这一步强迫你在动手之前先理清思路——这恰恰是依赖 AI 后最先丢失的习惯。

forge compare 才是真正的学习环节。 你的方案和真实开发者的方案放在一起对比,差距一目了然。很多时候你会发现:真实修复就改了 3 行,而你改了 30 行。或者反过来,你的方案其实更优雅。

forge hint 有代价。 可以拿提示,但每个提示扣 0.5 分。

当前题库

18 道题,来自 6 个知名 Python 开源项目:

项目数量示例
Scrapy8gzip 响应检测函数无法识别带参 Content-Type、LocalCache 无容量限制时崩溃
FastAPI4HTTPBearer optional 模式异常、jsonable_encoder 丢弃 custom_encoder
thefuck3
Flask1send_file 类型注解兼容性
httpx1query parameter percent-encoding
requests1TLS 连接池复用导致验证绕过

难度分布:12 道 easy + 6 道 medium。

所有题目都来自 BugsInPy 数据集 —— 501 个真实 Python bug 的学术数据集,每个 bug 都有精确的 commit 定位和测试用例。

技术栈

很精简:

  • Python CLI:Typer + Rich(美观的终端 UI)
  • Git 操作:自动 clone、checkout 到指定 commit
  • AI 评判:支持 Anthropic / OpenAI / OpenRouter API
  • 零依赖模式:没有 API key 也能用,forge review --export 导出文本,手动粘贴给任意 AI

安装和使用

git clone https://github.com/EricZane0102/codeforge.git
cd codeforge
pip install -e .
forge init
forge challenge --difficulty easy

就这么简单。

最后

我不是在说"别用 AI 写代码"。我自己天天用,而且会继续用。

我想说的是:定期在没有 AI 辅助的情况下写代码,就像运动员定期做基础体能训练一样,是保持能力的必要投入。

CodeForge 就是为这个目的设计的。每周花 1-2 小时,挑两个 bug 修一修,保持手感。


GitHub: github.com/EricZane010…

Star 一下?题库会持续扩充(BugsInPy 还有 483 个 bug 没用上呢)。

也欢迎 PR 提交新的挑战题目,YAML 格式,门槛很低。