我用Claude Code + GLM4.7修前端Bug的翻车现场,1小时烧光5小时限额

本来想体验一把“vibe coding 省时间”,结果变成“vibe coding 省不了、还很贵”:折腾将近一小时,GLM 额度直接打满,Bug 还在。


背景:事情是怎么开始的

最近遇到一个前端 Bug,属于那种看起来不大、但很烦的类型:页面运行时报错,提示动态导入某个模块失败(报错里能看到类似 Failed to fetch dynamically imported module .../router/index.ts 这种信息)。

我想着正好试试工具链:Claude Code + GLM4.7。理想情况是:它读代码、跑命令、给修改方案,我负责点确认就行。

现实是另一回事。



结果:时间花了,额度没了,Bug 还没修好

简单总结一下这次的“账单”:

  • 时间:差不多 1 小时
  • token:累计 3000 万+
  • GLM 套餐:5 小时使用限额直接用光
  • 结果:依然没解决

过程中 Claude Code 做了很多事:读路由文件、尝试修改、清缓存、重启 dev server、反复验证……看起来很努力,但就是一直不收敛。

最让我难受的点其实不是“没修好”,而是:它是在持续消耗资源的前提下没修好。这跟我自己手动 debug 不一样——我自己卡住了,最多是浪费时间;它卡住了,是时间 + 额度一起烧。


为什么 Claude Code 这么吃 token?(我的体感原因)

我这次感觉 token 高,并不是我问了多少问题,而是它的工作方式决定的。

1)它不是“聊天”,更像一个一直在跑的 Agent

它会不断做这套循环:

  1. 读文件(读一堆)
  2. 给判断(往往还挺像那么回事)
  3. 改代码/跑命令
  4. 把新日志再丢回去继续推理

这套链路一旦跑起来,就很容易停不下来。

2)前端日志太长了,而且会反复进上下文

前端工具链输出本来就长:Vite/Webpack、HMR、各种 warning、stack trace……
你以为“就一段报错”,实际上它每次重启都会多出一坨新内容。

更关键的是:这些日志会被反复引用。上一轮的 log、下一轮的 log、它自己的总结、它提过的假设……都在累积。

3)“尝试式修复”很费钱

这类工具经常是这样的节奏:猜一个原因 → 改一下 → 跑一下 → 不行再换一个猜法。

如果方向一开始就偏了,那后面就是持续的“试错”,而试错在 Agent 模式下特别贵。

4)工具链/环境一旦不稳,token 会被“空转”吃掉

截图里还能看到一些类似 exit code 127/137 的失败信息。
这种问题往往跟脚本、权限、端口、内存、依赖环境有关。

我自己的经验是:只要验证环节不可靠,后面就很难收敛。因为它得不到稳定反馈,只能继续猜、继续换方案、继续跑,然后继续烧。


GLM4.7 是不是“能力不行”?

这个问题我纠结了一下。最后我更倾向于:不完全是模型能力问题,而是前端 Bug 本身太“现场”了

1)很多前端 Bug,不是“知道答案就行”

动态 import 失败这种,根因可能在很多地方:

  • 构建配置(Vite / Webpack)
  • base 路径、publicPath、路由 history 模式
  • tsconfig alias
  • 依赖冲突、缓存、HMR
  • 本地环境和启动方式差异

它不像一道算法题:你给足信息,模型就能直接解。
它更像“带着项目在现场排雷”,需要不断缩小范围、做最小复现、做二分定位。

2)模型想解决它,前提是你得给它“能定位”的素材

比如:最关键的 100 行报错、最小能复现的路由/页面、确定能跑通的验证命令。
如果这些东西不稳定(比如命令都跑不起来),模型就算再强,也只能在雾里摸。

所以我对 GLM4.7 的评价是:
它能做很多辅助工作,但在这种工程化、链路长、变量多的问题上,很容易卡住。


这次之后我对 vibe coding 的真实看法

我不想“唱衰”,因为它确实有爽点,但它也确实没到“全自动写代码”的程度。

优势:它能帮你把脏活累活干得很快

  • 快速扫代码、总结目录结构
  • 帮你写小 patch、补类型、补测试
  • 写脚本、写文档、写配置模板都很顺
  • 常见坑(比如 lint、ts 类型、简单构建问题)命中率不低

缺点:一旦进入死胡同,会比人手更贵

  • token 消耗不可控(尤其是带日志的多轮迭代)
  • 容易“修一个问题,改一堆地方”,最后你还得自己收拾
  • 对环境依赖很重:只要跑命令不稳定,它就容易乱
  • 它的“自信总结”有时候会让你误以为快到终点了,其实方向早偏了

目前我觉得还很难搞定的场景

  • 复杂工程化问题(monorepo、pnpm workspace、各种 bundler 插件链)
  • 偶发问题、竞态、缓存相关问题
  • 需要非常强业务上下文的 bug(表面报错,根因在业务状态)
  • 工具链本身就不稳定(127/137 这种都没解决前,后面基本白跑)

我现在会怎么用它(避免再烧一次)

这次翻车之后,我给自己立了几个“止损规则”,挺管用:

  1. 先让它做定位计划,不要直接开修
    让它先输出:最可能的 3 个根因 + 各自最小验证方式。
  2. 日志只给关键部分
    我现在会手动裁剪:只给首次报错点 + stack + 关键配置,不把整屏日志塞进去。
  3. 验证命令必须先跑通
    dev 起不来、脚本报 127/137,这种不先解决,后面全是空转。
  4. 每次改动小步提交
    一旦它开始“越改越多”,我能立刻回滚,不跟它一起沉没成本。
  5. 设预算上限
    比如 10 轮没有明显收敛,就暂停,换人类二分定位。

总结

这次体验给我的感觉很明确:

  • vibe coding 能加速,但它加速的是“尝试”,不是“必然解决”
  • 在前端工程这种复杂环境里,一旦方向错了,Agent 会把错误路线跑得非常完整——顺便把额度也跑完
  • 想让它真的变成生产力,关键不是“多问”,而是:控制输入、保证验证、让问题可收敛

都看到这了,欢迎大家一起讨论分享你们优秀的vibe coding经验,或是向我一样的翻车现场

Read more

FPGA教程系列-Vivado Aurora 8B/10B IP核设置

FPGA教程系列-Vivado Aurora 8B/10B IP核设置

FPGA教程系列-Vivado Aurora 8B/10B IP核设置 Aurora 8B/10B 是 Xilinx 开发的一种轻量级、链路层的高速串行通信协议。它比单纯的 GT(Transceiver)收发器更高级(因为它帮你处理了对齐、绑定、甚至流控),但比以太网或 PCIe 更简单、延迟更低。 手册看的脑袋疼,还是实操一下看看如何使用吧,可能很多部分都是官方写好的,不需要自己去弄,而实际使用可能就是修改一些参数就行了。 1. Physical Layer (物理层设置) 这一部分直接决定了底层的硬件连接和电气特性,必须严格按照板卡设计和对端设备来配置。 Lane Width (Bytes) [通道宽度]: 2 或 4。决定了用户逻辑接口(AXI-Stream)的数据位宽,也直接影响 user_clk 的频率。 * 2 Bytes:

国产FPGA厂家安路开发工具TD使用手册详细版

FPGA系统学习详细版资料包,整理超多资料,整理不易,链接随时有可能失效,先下载再学习 网盘链接:https://pan.baidu.com/s/1rDsLAXGj8WbX82teSkhuIw?pwd=1234 提取码: 123 国产FPGA安路TD(TangDynasty)工具使用方法全流程详解 TD(TangDynasty)是安路科技自研的FPGA/FPSoC集成开发环境,覆盖RTL输入→综合→布局布线→时序分析→比特流生成→下载调试全流程,支持Windows/Linux系统,适配EG、ELF、SF1、DR1等安路全系列芯片。以下从环境搭建、工程创建、设计输入、综合、约束、布局布线、仿真、下载调试、高级功能、常见问题等维度,提供最详细的操作方法。 一、TD工具安装与环境准备 1.1

ROS2机器人slam_toolbox建图零基础

系统:Ubuntu22.04 ROS2版本:Humble 雷达设备:rplidar_a1 一、安装必要的软件包 # 更新系统 sudo apt update # 安装slam_toolbox sudo apt install ros-humble-slam-toolbox # 安装RPLidar驱动 sudo apt install ros-humble-rplidar-ros # 安装导航相关包 sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup 二、配置RPLidar_A1 创建udev规则(让系统识别雷达) # 创建udev规则 echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}

FPGA小白学习日志二:利用LED实现2选1多路选择器

在上一篇文章中,主播利用炒菜的比喻帮大家介绍了LED工程的建立,所以在读这一篇文章前,大家可以简要回顾以下LED工程的建立流程。本篇内容,主播主要向大家介绍数据选择器工程的实现方法。   在开始之前,我们先来了解一下数据选择器是什么:所谓数据选择器,就是从多个输入的逻辑信号中选择一个逻辑信号输出,实现数据选择功能的逻辑电路就是数据选择器。我们用来打个比方,现在我们手中有两张电影票A和B,但这时我们是不知道到底哪张电影票是允许我们进入电影院的,这时候我们就要去问检票员,检票员说A,那就可以进;否则,B就可以进。通过这个比喻,我们就能理解数据选择器的大体思路了:这里的电影票A与B就相当于输入信号in1与in2,检票员就相当于数据选择信号sel(英文select),电影院就相当于输出信号out,注意这里的输出信号out只有一个。因此,我们就可以在Visio中设计出2-1数据选择器:                               同样,我们给出2-1数据选择器的真值表:                我们来分析以下这个真值表:当选择信号sel为0时,对应输入信号in