Skip to main content

没有工具会怎样?ChatGPT 的局限

最好的老师是"失败"


为什么要讲失败案例?

前面三篇文章,我们从理论上理解了:

  • 什么是智能(完整闭环)
  • Agent 的本质(完整能力)
  • 五大机制的原理(为什么能放大)

但"理论"不够深刻。

最深刻的理解来自"失败"。

这一部分,我们通过 5 个真实的失败案例,让你体会:

  • 没有工具 → 只能"说",不能"做"
  • 没有循环 → 只能"一次性",不能"优化"
  • 没有上下文 → 只能"通用",不能"专业"
  • 没有 System Prompt → 只能"随机",不能"可控"
  • 没有压缩 → 只能"短期",不能"长期"

体验过"失败",才能真正理解"成功"。


案例 1:用 ChatGPT 重构代码

任务

重构 query.ts(2330 行),提取 5 个函数:

  1. queryLoop() - 处理循环逻辑
  2. executeTools() - 执行工具
  3. handleResponse() - 处理响应
  4. shouldCompact() - 判断是否压缩
  5. buildMessages() - 构建消息

ChatGPT 的流程

第 1 轮(2 分钟)

你:帮我重构 query.ts,提取 5 个函数

ChatGPT:
好的,我建议提取以下函数:

1. queryLoop() - 处理循环逻辑
[给出代码示例 50 行]

2. executeTools() - 执行工具
[给出代码示例 30 行]

3. handleResponse() - 处理响应
[给出代码示例 40 行]

4. shouldCompact() - 判断是否压缩
[给出代码示例 20 行]

5. buildMessages() - 构建消息
[给出代码示例 30 行]

你可以这样重构...

问题

  • ❌ ChatGPT 没有读取文件(不知道原始代码)
  • ❌ 给出的是"通用示例",不是"针对你的代码"
  • ❌ 你需要手动复制粘贴

第 2 轮(5 分钟)

你:(复制 query.ts 的前 500 行)
你:这是我的代码,帮我提取第一个函数

ChatGPT:
好的,根据你的代码,queryLoop 应该这样提取:
[给出代码]

你可以替换第 100-150 行...

问题

  • ❌ 文件太大(2330 行),你只能复制一部分
  • ❌ ChatGPT 看不到完整代码
  • ❌ 你需要手动修改文件

第 3 轮(3 分钟)

你:(手动修改文件,提取第一个函数)
你:(运行测试)
你:测试失败了,错误是:
TypeError: queryLoop is not defined

ChatGPT:
这是因为你没有导出 queryLoop 函数。
你需要在文件末尾添加:
export { queryLoop }

问题

  • ❌ ChatGPT 看不到你的修改
  • ❌ 你需要手动复制错误信息
  • ❌ 你需要手动再次修改

第 4-10 轮(20 分钟)

重复:
- 你手动修改
- 你运行测试
- 你复制错误
- ChatGPT 给建议
- 你再手动修改
...

总结

  • ⏱️ 时间:30 分钟
  • 🔄 来回轮次:10 轮
  • 😓 体验:累、烦、容易出错
  • 成功率:60%(可能最后还是有问题)

Agent 的流程

完整过程(2 分钟)

你:重构 query.ts,提取 5 个函数

Agent:
[Read] 读取 query.ts(2330 行)
[分析] 识别可提取的函数
[Edit] 提取 queryLoop()(第 100-150 行)
[Edit] 提取 executeTools()(第 200-250 行)
[Edit] 提取 handleResponse()(第 300-350 行)
[Edit] 提取 shouldCompact()(第 400-420 行)
[Edit] 提取 buildMessages()(第 500-550 行)
[Edit] 更新函数调用
[Bash] 运行测试
✅ 测试通过

总结

  • ⏱️ 时间:2 分钟
  • 🔄 来回轮次:1 轮(自动完成)
  • 😊 体验:省心
  • 成功率:95%

对比分析

维度ChatGPTAgent差距
时间30 分钟2 分钟15 倍
来回轮次10 轮1 轮10 倍
手动操作10 次0 次
成功率60%95%1.6 倍
体验省心质的差别

为什么差距这么大?

因为 ChatGPT 没有工具

  • ❌ 看不到代码(没有 Read 工具)
  • ❌ 改不了代码(没有 Edit 工具)
  • ❌ 运行不了测试(没有 Bash 工具)
  • ❌ 看不到结果(没有反馈)

Agent 有工具

  • ✅ 能看代码
  • ✅ 能改代码
  • ✅ 能运行测试
  • ✅ 能看结果

案例 2:用 ChatGPT 调试 Bug

任务

测试失败,找出原因并修复。

ChatGPT 的流程

第 1 轮(2 分钟)

你:为什么测试失败?

ChatGPT:
测试失败可能有以下原因:
1. 变量未初始化
2. 类型不匹配
3. 异步问题
4. 依赖缺失
5. 环境配置错误

你可以检查...

问题

  • ❌ ChatGPT 没有运行测试(不知道具体错误)
  • ❌ 只能"猜测"可能的原因
  • ❌ 你需要手动检查每个可能

第 2 轮(3 分钟)

你:(手动运行测试)
你:(复制错误信息)
你:错误是:
TypeError: Cannot read property 'name' of undefined
at executeTools (query.ts:250)

ChatGPT:
这是因为 tool 对象是 undefined。
你需要检查:
1. tool 是否正确传入
2. tools 数组是否为空
3. 是否有空值过滤

问题

  • ❌ ChatGPT 看不到代码(不知道第 250 行是什么)
  • ❌ 只能"猜测"原因
  • ❌ 你需要手动检查

第 3 轮(3 分钟)

你:(复制第 250 行附近的代码)
你:这是第 250 行:
const toolName = tool.name

ChatGPT:
问题是 tool 可能是 undefined。
你需要添加检查:
if (!tool) return

或者:
const toolName = tool?.name

问题

  • ❌ ChatGPT 看不到 tool 是从哪里来的
  • ❌ 建议可能不对(可能不是 tool 的问题)
  • ❌ 你需要手动修改

第 4-8 轮(15 分钟)

重复:
- 你手动检查
- 你复制代码
- ChatGPT 猜测
- 你手动修改
- 你运行测试
- 还是失败
...

总结

  • ⏱️ 时间:20 分钟
  • 🔄 来回轮次:8 轮
  • 😓 体验:像"盲人摸象"
  • 成功率:30%(可能最后还是没找到)

Agent 的流程

完整过程(1 分钟)

你:修复测试失败

Agent:
[Bash] 运行测试
错误:TypeError: Cannot read property 'name' of undefined
at executeTools (query.ts:250)

[Read] 读取 query.ts 第 240-260 行
发现:第 250 行 const toolName = tool.name
但 tool 可能是 undefined

[Grep] 搜索 "executeTools" 的调用
发现:第 180 行 executeTools(response.tools)
但 response.tools 可能是 undefined

[Read] 读取第 180 行附近代码
发现:没有检查 response.tools 是否存在

[Edit] 添加检查:
if (!response.tools) return

[Bash] 再次运行测试
✅ 测试通过

总结

  • ⏱️ 时间:1 分钟
  • 🔄 来回轮次:1 轮(自动完成)
  • 😊 体验:像"专家诊断"
  • 成功率:90%

对比分析

维度ChatGPTAgent差距
时间20 分钟1 分钟20 倍
来回轮次8 轮1 轮8 倍
能看到错误质的差别
能看到代码质的差别
能验证修复质的差别
成功率30%90%3 倍

案例 3:用 ChatGPT 写测试

任务

query.ts 写单元测试,覆盖率 80%+。

ChatGPT 的流程

第 1 轮(3 分钟)

你:帮我为 query.ts 写测试

ChatGPT:
好的,这是测试代码:

import { query } from './query'

describe('query', () => {
test('should call API', async () => {
// ...
})

test('should execute tools', async () => {
// ...
})

// ... 10 个测试
})

问题

  • ❌ ChatGPT 没有读取 query.ts(不知道具体实现)
  • ❌ 给出的是"通用测试",不是"针对你的代码"
  • ❌ 可能测试不了关键逻辑

第 2 轮(5 分钟)

你:(复制 query.ts 的部分代码)
你:这是我的代码,帮我写测试

ChatGPT:
好的,根据你的代码:
[给出测试代码]

问题

  • ❌ 你只能复制部分代码(文件太大)
  • ❌ ChatGPT 看不到完整逻辑
  • ❌ 测试可能不完整

第 3 轮(3 分钟)

你:(手动创建测试文件)
你:(复制粘贴测试代码)
你:(运行测试)
你:测试失败了,错误是:
ReferenceError: callAPI is not defined

ChatGPT:
你需要 mock callAPI 函数:
jest.mock('./api', () => ({
callAPI: jest.fn()
}))

问题

  • ❌ ChatGPT 不知道你的测试框架(可能不是 Jest)
  • ❌ 不知道 callAPI 的位置
  • ❌ 你需要手动调整

第 4-10 轮(20 分钟)

重复:
- 你手动修改测试
- 你运行测试
- 你复制错误
- ChatGPT 给建议
- 你再手动修改
...

总结

  • ⏱️ 时间:30 分钟
  • 🔄 来回轮次:10 轮
  • 📊 覆盖率:60%(不完整)
  • 成功率:50%(可能有测试跑不过)

Agent 的流程

完整过程(2 分钟)

你:为 query.ts 写测试,覆盖率 80%+

Agent:
[Read] 读取 query.ts
[分析] 识别关键函数和逻辑分支
[Read] 读取测试框架配置(发现是 Vitest)
[Write] 创建 query.test.ts
[写入] 15 个测试用例,覆盖:
- queryLoop 的循环逻辑
- executeTools 的工具执行
- handleResponse 的响应处理
- shouldCompact 的压缩判断
- 错误处理
- 边界情况
[Bash] 运行测试
✅ 15/15 通过
[Bash] 检查覆盖率
✅ 覆盖率 85%

总结

  • ⏱️ 时间:2 分钟
  • 🔄 来回轮次:1 轮
  • 📊 覆盖率:85%
  • 成功率:95%

对比分析

维度ChatGPTAgent差距
时间30 分钟2 分钟15 倍
覆盖率60%85%1.4 倍
测试质量通用针对性强质的差别
能运行验证质的差别
成功率50%95%1.9 倍

为什么 ChatGPT 这么"笨"?

不是 ChatGPT 笨,而是它没有工具

ChatGPT 的限制

1. 看不到代码

  • 你需要手动复制粘贴
  • 文件太大,只能复制部分
  • 看不到完整上下文

2. 改不了代码

  • 只能"建议"怎么改
  • 你需要手动执行
  • 容易出错

3. 运行不了测试

  • 不知道改完是否正确
  • 你需要手动运行
  • 来回反馈慢

4. 看不到结果

  • 不知道执行结果
  • 无法调整策略
  • 只能"盲目建议"

Agent 的优势

1. 能看代码

await tools.Read({ file_path: "query.ts" })
// 返回:完整的 2330 行代码

2. 能改代码

await tools.Edit({
file_path: "query.ts",
old_string: "const x = 1",
new_string: "const x = 2"
})
// 返回:"Edit successful"

3. 能运行测试

await tools.Bash({ command: "npm test" })
// 返回:测试结果(通过/失败)

4. 能看结果

// 每个工具调用都有返回值
// Agent 能看到结果,调整策略

效率对比总结

三个任务的平均数据

维度ChatGPTAgent差距
平均时间27 分钟2 分钟13.5 倍
平均轮次9 轮1 轮9 倍
手动操作10 次0 次
平均成功率47%93%2 倍

智能差距

ChatGPT

  • 只有"理解"和"决策"
  • 没有"感知"和"行动"
  • 没有"反馈"和"调整"
  • 智能分数:100 分

Agent

  • 有"理解"和"决策"(LLM)
  • 有"感知"和"行动"(工具)
  • 有"反馈"和"调整"(循环)
  • 智能分数:1000+ 分

差距:10 倍+


关键洞察

1. 工具不是"锦上添花",而是"必需品"

没有工具,AI 只能"建议",不能"执行"。

就像:

  • 没有手的天才 vs 有手的天才
  • 瘫痪的专家 vs 健全的专家

工具 = 从"顾问"到"执行者"

2. "看不到"="做不了"

ChatGPT 最大的问题不是"不够聪明",而是"看不到":

  • 看不到代码
  • 看不到错误
  • 看不到结果

没有感知,就没有智能。

3. 手动操作 = 效率杀手

ChatGPT 需要你:

  • 手动复制代码
  • 手动修改文件
  • 手动运行测试
  • 手动复制结果

每次手动操作都是"效率黑洞"。


下一篇预告

现在你体验了"没有工具"的痛苦。

但还有一个问题:

如果有工具,但只执行一次,会怎样?

下一篇文章会讲:《没有循环会怎样?一次性执行的失败》

包括:

  • Claude Code 早期版本的问题
  • 3272 次压缩失败的真实案例
  • 为什么需要"多轮循环"

关键要点

  1. ChatGPT 不是"笨",而是"没有工具"
  2. 没有工具 = 只能"建议",不能"执行"
  3. 效率差距:10-20 倍
  4. 成功率差距:2 倍
  5. 体验差距:质的差别(累 vs 省心)
  6. 工具 = 从"顾问"到"执行者"

记住:工具不是"可选项",而是"必需品"。


字数:约 4200 字
阅读时间:约 11 分钟