介绍作者实际使用的AI调试工作流:先书面描述问题(强迫理清思路),再提供具体函数和测试用例而非堆栈日志,配合实际vs预期输出。
你知道那种时刻吗?栈追踪击中你的终端,你把它整个复制粘贴到 ChatGPT 里,然后得到一些"试试清除缓存"之类的通用废话。是的,这很糟糕。
问题是,AI 工具实际上非常擅长调试——但前提是你得喂养方式正确。以下是我在工作中真正使用 AI 的方式,以及为什么它比错误转储方法有效得多。
当你把原始栈追踪粘贴到 AI 中时,它就像一个用不完整证据办案的侦探。它不知道:
所以它只能猜。而猜测是很烂的。
以下是我的实际工作流程:
Step 1: Write it down (yes, really) 在与 AI 交谈之前,我写一段 2-3 句话的描述:
I'm trying to paginate results in a Next.js API route.
The limit/offset params work fine, but the total count
is returning wrong when filtering by date range.
这迫使我思考真正的问题是什么,而不仅仅是"为什么坏了"。
Step 2: Show, don't tell 不是粘贴完整追踪,而是展示:
// This is what's running
const getPostCount = async (filters) => {
return db.posts
.where('createdAt').gte(filters.startDate)
.where('createdAt').lte(filters.endDate)
.count();
};
// Expected: 15, Actual: 42
Step 3: Ask a real question
不是"为什么坏了",而是"是 createdAt 上的时区处理有问题,还是过滤器逻辑错了?"
这就把调试变成了一场真正的对话。
当我这样做时,AI 的回答从模糊变得具体。它会问很好的后续问题。它有时会发现 bug 不在我展示的代码里——而是在数据层或测试设置中。
最重要的是:我在一轮对话中解决了 bug,而不是四轮。不再需要复制粘贴多次尝试了。
我有一个日期范围过滤器在我的时区里工作正常,但对 UTC 用户会出问题。如果我把错误丢给 ChatGPT,它会说"检查你的时区处理"。这个……我显然知道。
相反,我告诉 Claude:"日期过滤器在 PT 时区有效,但在 UTC 时区返回 0 结果。数据库中存储的日期是 ISO 字符串。"
啪。五秒钟的思考,它就发现了我在过滤器逻辑中比较的是 ISO 字符串和时间戳对象。
你真的会惊讶于这有多快。不是 AI 工具调试能力变强了——而是给它们真正的上下文比错误转储有效得多。
如果你经常做这类工作,可以看看 LearnAI Weekly——这是一个真正介绍如何与 AI 工具协作的 Newsletter,而不是仅仅炒作 AI 工具存在什么。真正的工作流程,真正的例子,没有废话。
你的调试工作流程是什么样的?在评论区发表你的高见吧。你还在把完整的栈追踪扔给 AI 吗,还是找到了更有效的方法?