上周我做了一个实验卸掉 Claude Code不碰 Codex回到纯手写代码的状态坚持一整周。不是为了证明什么而是因为有一天写代码的时候我发现自己连一个Array.reduce的回调参数顺序都想不起来了——以前闭着眼都能写。这件事吓到我了。为什么要做这个实验先交代背景。我从今年初开始用 Claude Code 做主力开发工具中间还穿插用 OpenAI 的 Codex到现在差不多半年。半年里我的开发效率确实提升了很多。需要一个新组件在终端里用自然语言描述一下Claude Code 直接生成整个文件。写单元测试一句给这个模块补全测试用例批量搞定。遇到不熟的 API不用翻文档直接问它。甚至重构、调试、写文档它都能一条龙做完。但上周三我在没有联网的高铁上写一个很简单的数据处理函数时const totalorders.reduce((// 我停在这里了我脑子一片空白。reduce的回调第一个参数是累加器还是当前元素来着第二个参数呢初始值放在哪以前这些东西是肌肉记忆不需要思考。但那一刻没有 Claude Code 帮我补全我居然卡住了。我不是不会写代码了但我正在失去不依赖 AI 也能写代码的能力。这让我非常不安。于是我决定关掉所有 AI 编程工具纯手写一周看看到底退化到了什么程度。实验规则卸载 Claude Code CLI不用 Codex、Copilot 或任何 AI 编程 Agent编辑器只保留 VS Code 原生功能变量补全、import 路径等非 AI 补全可以查文档但不能用 ChatGPT / Claude 问代码问题时间完整的一个工作周周一到周五当周正好有一个中等复杂度的需求给后台管理系统加一个数据导出功能支持 CSV 和 Excel 格式带筛选条件和分页导出。不算简单但也不是什么高难度的活。Day 1像回到了 2023 年第一天最大的感受是——慢。不是慢一点是那种我怎么连这个都要想一下的慢。写一个 React 表单组件以前在终端里跟 Claude Code 说一句帮我写一个带验证的注册表单30 秒整个文件就出来了。现在我需要手动写useState的声明手动写onChange处理函数手动写onSubmit的preventDefault手动写表单验证逻辑每一步都不难但合在一起就是慢。以前 Claude Code 半分钟就能生成一整个组件现在我手写了四十分钟。更让我焦虑的是我发现自己频繁地去看之前的代码——不是因为需要理解业务逻辑而是因为我忘了某个工具函数的参数怎么传。比如项目里封装的请求函数// 我记得大概是这样但参数顺序记不清了 const resawait request(/api/export,{method:POST, // 第二个参数是 config 还是 data 来着 // headers 在哪一层});半年前我是写这个封装的人。半年后我需要翻源码才能确认用法。Day 1 产出平时一天能完成的量只做了大概 60%。Day 2-3最痛苦的阶段第二天和第三天是最难熬的。不是因为不会写而是因为大脑在不断做一件事抵抗打开 AI的冲动。每次遇到一个需要想两秒的地方我的第一反应不是思考而是想切到终端敲claude。这个反应是无意识的就像你想查东西时手会自动伸向手机一样。用 Claude Code 和 Codex 这种 Agent 型工具养成的习惯更可怕——因为它不只是帮你补全一行而是帮你做完一整件事。你甚至不需要想代码结构直接用自然语言描述需求就行。这意味着一旦离开它你不只是打字变慢是连怎么拆解任务都要重新适应。我数了一下Day 2 一天里我有37 次想打开 AI 的冲动。其中大概15 次是因为忘了某个 API 的用法可以查文档解决12 次是因为懒得写样板代码以前直接让 Claude Code 整个文件生成7 次是遇到了真正需要思考的问题这些才是有价值的思考3 次是想让 AI 帮我写正则表达式正则确实该用工具有意思的发现37 次冲动里只有 7 次是真正需要AI 帮助的。其他 30 次本质上是懒和习惯。到第三天下午一件事情开始发生——我的手指开始记起来了。写useEffect的时候不再需要想参数顺序。写fetch的时候then链自然地流出来。写 CSS Flex 布局的时候不再纠结justify-content和align-items哪个是横向哪个是纵向。这些东西并没有丢失它们只是被 AI 的即时补全盖住了——你不需要从记忆里取出它们所以它们的检索路径变弱了。但它们还在。Day 2-3 产出恢复到平时的 70-75%。Day 4-5一个意外的发现到第四天一件出乎意料的事情发生了。我写的代码质量变高了。不是主观感受是客观指标。我比较了两份代码AI 辅助写的导出模块一个月前的类似需求asyncfunctionexportData(filters,format){const dataawait fetchAllData(filters);if(formatcsv){const csvdata.map(rowObject.values(row).join(,)).join(\n);downloadFile(csv,export.csv,text/csv);}elseif(formatexcel){const wbXLSX.utils.json_to_sheet(data);const workbookXLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, wb,Sheet1);XLSX.writeFile(workbook,export.xlsx);}}手写的导出模块这周typeExportFormatcsv|excel;interface ExportOptions{filters: FilterParams;format: ExportFormat;pageSize?: number;onProgress?:(percent: number)void;}asyncfunctionexportData({filters, format, pageSize1000, onProgress}: ExportOptions){const totalCountawait fetchCount(filters);const pagesMath.ceil(totalCount / pageSize);const allData: ExportRow[][];for(let page1;pagepages;page){const chunkawait fetchPage(filters, page, pageSize);allData.push(...chunk);onProgress?.(Math.round((page/pages)*100));}const exporterexporters[format];exporter(allData);}const exporters: RecordExportFormat,(data: ExportRow[])void{csv:(data){const headersObject.keys(data[0]).join(,);const rowsdata.map(rowObject.values(row).map(v${String(v).replace(//g, )}).join(,));downloadFile([headers,...rows].join(\n),export.csv,text/csv);}, excel:(data){const wsXLSX.utils.json_to_sheet(data);const wbXLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws,Data);XLSX.writeFile(wb,export.xlsx);},};区别在哪分页导出 进度回调数据量大时不会一次性拉全部数据撑爆内存。AI 生成的版本直接fetchAllData一万条数据就卡了。CSV 值的转义处理手写版本处理了引号转义AI 版本没有——导出的 CSV 如果数据里有逗号就会错列。类型安全手写版本有完整的 TypeScript 类型约束AI 版本全是any。可扩展性用exporters对象替代if-else加新格式只需要加一个 key。为什么手写反而质量更高因为当你手写的时候你会思考。AI 补全的速度太快了快到你来不及想这里需要考虑什么边界条件。Claude Code 和 Codex 更夸张——你连代码都不用看说一句帮我写个导出功能整个文件就出来了。你扫了一眼“嗯能跑”就过了。但手写的时候你被迫慢下来。慢下来就会想数据量大了怎么办有没有特殊字符类型安全吗以后要加新格式怎么扩展速度是代码质量的敌人。AI 让你太快了。Day 4-5 产出恢复到平时的 85%但代码质量明显更高。我的结论1. AI 造成的不是能力退化而是能力休眠那些 API 参数顺序、语法细节并没有从你脑子里消失。它们只是因为长期不被调用检索速度变慢了。关掉 AI 三天后大部分都回来了。但如果一个初级开发者从第一天就完全依赖 AI 写代码他可能根本没有建立过这些记忆。这才是真正危险的情况。2. AI 补全在加速编码的同时也在加速跳过思考写代码最有价值的部分不是敲键盘是想清楚要怎么写。AI 把敲键盘的时间压缩到了接近零但副作用是连思考的窗口也一起压缩了。3. 我不会戒掉 AI但我改变了用法实验结束后我重新装回了 Claude Code。但我做了两个调整调整一核心逻辑手写样板代码用 AI。涉及业务判断、数据处理、状态管理的代码我会手写。表单、列表、CRUD 这种重复性高的代码继续让 Claude Code 或 Codex 生成。调整二每周保留半天无 AI 编程时间。就像运动员不能只靠器械训练一样程序员也需要定期徒手写代码保持基础能力不退化。最后我不是劝你关掉 AI。2026 年了不用 AI 写代码确实会被淘汰。但我建议你试一下关掉 AI纯手写一天代码。不需要一周就一天。看看你会不会像我一样在reduce的参数顺序上卡住。如果卡住了——不用慌你的能力还在。但这是一个信号提醒你该偶尔脱离辅助练一练了。你有多久没有不靠 AI 写过完整的代码了评论区说说。
用了半年 Claude Code 后,我尝试关掉它写了一周代码——结果比想象中严重
发布时间:2026/6/25 14:42:03
上周我做了一个实验卸掉 Claude Code不碰 Codex回到纯手写代码的状态坚持一整周。不是为了证明什么而是因为有一天写代码的时候我发现自己连一个Array.reduce的回调参数顺序都想不起来了——以前闭着眼都能写。这件事吓到我了。为什么要做这个实验先交代背景。我从今年初开始用 Claude Code 做主力开发工具中间还穿插用 OpenAI 的 Codex到现在差不多半年。半年里我的开发效率确实提升了很多。需要一个新组件在终端里用自然语言描述一下Claude Code 直接生成整个文件。写单元测试一句给这个模块补全测试用例批量搞定。遇到不熟的 API不用翻文档直接问它。甚至重构、调试、写文档它都能一条龙做完。但上周三我在没有联网的高铁上写一个很简单的数据处理函数时const totalorders.reduce((// 我停在这里了我脑子一片空白。reduce的回调第一个参数是累加器还是当前元素来着第二个参数呢初始值放在哪以前这些东西是肌肉记忆不需要思考。但那一刻没有 Claude Code 帮我补全我居然卡住了。我不是不会写代码了但我正在失去不依赖 AI 也能写代码的能力。这让我非常不安。于是我决定关掉所有 AI 编程工具纯手写一周看看到底退化到了什么程度。实验规则卸载 Claude Code CLI不用 Codex、Copilot 或任何 AI 编程 Agent编辑器只保留 VS Code 原生功能变量补全、import 路径等非 AI 补全可以查文档但不能用 ChatGPT / Claude 问代码问题时间完整的一个工作周周一到周五当周正好有一个中等复杂度的需求给后台管理系统加一个数据导出功能支持 CSV 和 Excel 格式带筛选条件和分页导出。不算简单但也不是什么高难度的活。Day 1像回到了 2023 年第一天最大的感受是——慢。不是慢一点是那种我怎么连这个都要想一下的慢。写一个 React 表单组件以前在终端里跟 Claude Code 说一句帮我写一个带验证的注册表单30 秒整个文件就出来了。现在我需要手动写useState的声明手动写onChange处理函数手动写onSubmit的preventDefault手动写表单验证逻辑每一步都不难但合在一起就是慢。以前 Claude Code 半分钟就能生成一整个组件现在我手写了四十分钟。更让我焦虑的是我发现自己频繁地去看之前的代码——不是因为需要理解业务逻辑而是因为我忘了某个工具函数的参数怎么传。比如项目里封装的请求函数// 我记得大概是这样但参数顺序记不清了 const resawait request(/api/export,{method:POST, // 第二个参数是 config 还是 data 来着 // headers 在哪一层});半年前我是写这个封装的人。半年后我需要翻源码才能确认用法。Day 1 产出平时一天能完成的量只做了大概 60%。Day 2-3最痛苦的阶段第二天和第三天是最难熬的。不是因为不会写而是因为大脑在不断做一件事抵抗打开 AI的冲动。每次遇到一个需要想两秒的地方我的第一反应不是思考而是想切到终端敲claude。这个反应是无意识的就像你想查东西时手会自动伸向手机一样。用 Claude Code 和 Codex 这种 Agent 型工具养成的习惯更可怕——因为它不只是帮你补全一行而是帮你做完一整件事。你甚至不需要想代码结构直接用自然语言描述需求就行。这意味着一旦离开它你不只是打字变慢是连怎么拆解任务都要重新适应。我数了一下Day 2 一天里我有37 次想打开 AI 的冲动。其中大概15 次是因为忘了某个 API 的用法可以查文档解决12 次是因为懒得写样板代码以前直接让 Claude Code 整个文件生成7 次是遇到了真正需要思考的问题这些才是有价值的思考3 次是想让 AI 帮我写正则表达式正则确实该用工具有意思的发现37 次冲动里只有 7 次是真正需要AI 帮助的。其他 30 次本质上是懒和习惯。到第三天下午一件事情开始发生——我的手指开始记起来了。写useEffect的时候不再需要想参数顺序。写fetch的时候then链自然地流出来。写 CSS Flex 布局的时候不再纠结justify-content和align-items哪个是横向哪个是纵向。这些东西并没有丢失它们只是被 AI 的即时补全盖住了——你不需要从记忆里取出它们所以它们的检索路径变弱了。但它们还在。Day 2-3 产出恢复到平时的 70-75%。Day 4-5一个意外的发现到第四天一件出乎意料的事情发生了。我写的代码质量变高了。不是主观感受是客观指标。我比较了两份代码AI 辅助写的导出模块一个月前的类似需求asyncfunctionexportData(filters,format){const dataawait fetchAllData(filters);if(formatcsv){const csvdata.map(rowObject.values(row).join(,)).join(\n);downloadFile(csv,export.csv,text/csv);}elseif(formatexcel){const wbXLSX.utils.json_to_sheet(data);const workbookXLSX.utils.book_new();XLSX.utils.book_append_sheet(workbook, wb,Sheet1);XLSX.writeFile(workbook,export.xlsx);}}手写的导出模块这周typeExportFormatcsv|excel;interface ExportOptions{filters: FilterParams;format: ExportFormat;pageSize?: number;onProgress?:(percent: number)void;}asyncfunctionexportData({filters, format, pageSize1000, onProgress}: ExportOptions){const totalCountawait fetchCount(filters);const pagesMath.ceil(totalCount / pageSize);const allData: ExportRow[][];for(let page1;pagepages;page){const chunkawait fetchPage(filters, page, pageSize);allData.push(...chunk);onProgress?.(Math.round((page/pages)*100));}const exporterexporters[format];exporter(allData);}const exporters: RecordExportFormat,(data: ExportRow[])void{csv:(data){const headersObject.keys(data[0]).join(,);const rowsdata.map(rowObject.values(row).map(v${String(v).replace(//g, )}).join(,));downloadFile([headers,...rows].join(\n),export.csv,text/csv);}, excel:(data){const wsXLSX.utils.json_to_sheet(data);const wbXLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws,Data);XLSX.writeFile(wb,export.xlsx);},};区别在哪分页导出 进度回调数据量大时不会一次性拉全部数据撑爆内存。AI 生成的版本直接fetchAllData一万条数据就卡了。CSV 值的转义处理手写版本处理了引号转义AI 版本没有——导出的 CSV 如果数据里有逗号就会错列。类型安全手写版本有完整的 TypeScript 类型约束AI 版本全是any。可扩展性用exporters对象替代if-else加新格式只需要加一个 key。为什么手写反而质量更高因为当你手写的时候你会思考。AI 补全的速度太快了快到你来不及想这里需要考虑什么边界条件。Claude Code 和 Codex 更夸张——你连代码都不用看说一句帮我写个导出功能整个文件就出来了。你扫了一眼“嗯能跑”就过了。但手写的时候你被迫慢下来。慢下来就会想数据量大了怎么办有没有特殊字符类型安全吗以后要加新格式怎么扩展速度是代码质量的敌人。AI 让你太快了。Day 4-5 产出恢复到平时的 85%但代码质量明显更高。我的结论1. AI 造成的不是能力退化而是能力休眠那些 API 参数顺序、语法细节并没有从你脑子里消失。它们只是因为长期不被调用检索速度变慢了。关掉 AI 三天后大部分都回来了。但如果一个初级开发者从第一天就完全依赖 AI 写代码他可能根本没有建立过这些记忆。这才是真正危险的情况。2. AI 补全在加速编码的同时也在加速跳过思考写代码最有价值的部分不是敲键盘是想清楚要怎么写。AI 把敲键盘的时间压缩到了接近零但副作用是连思考的窗口也一起压缩了。3. 我不会戒掉 AI但我改变了用法实验结束后我重新装回了 Claude Code。但我做了两个调整调整一核心逻辑手写样板代码用 AI。涉及业务判断、数据处理、状态管理的代码我会手写。表单、列表、CRUD 这种重复性高的代码继续让 Claude Code 或 Codex 生成。调整二每周保留半天无 AI 编程时间。就像运动员不能只靠器械训练一样程序员也需要定期徒手写代码保持基础能力不退化。最后我不是劝你关掉 AI。2026 年了不用 AI 写代码确实会被淘汰。但我建议你试一下关掉 AI纯手写一天代码。不需要一周就一天。看看你会不会像我一样在reduce的参数顺序上卡住。如果卡住了——不用慌你的能力还在。但这是一个信号提醒你该偶尔脱离辅助练一练了。你有多久没有不靠 AI 写过完整的代码了评论区说说。