本文最后更新于 2026-05-19,文章内容可能已经过时。

Keras之父说Agent是"盲松鼠"——但你可能用错了方向来理解这句话

让我猜一个场景:你让Agent帮你修一个bug,它信心满满地开始改。

第一次:失败,重试。第二次:失败,换个方向。第三次:改了另一个地方,原来的bug还在。第十次:你已经不确定哪里是它改的、哪里是你改的了。两个小时后,你关掉终端,手动把代码回滚,从头来过。

这不是Agent不够强。是你给错了任务。

---

一、fchollet说了什么,为什么值得认真对待

François Chollet,Keras的作者,现在在Google DeepMind做研究。他不是那种会随便发帖蹭热度的人——他搞出过ARC基准(Abstraction and Reasoning Corpus),专门用来测AI的真实推理能力,而不是记忆能力。

他对代码Agent的评价是这样的(原文大意):

"代码Agent的工作方式更像是一只撞墙的盲松鼠——它不断尝试,偶尔撞到橡子。成功率的提升来自于更高频的尝试,而不是更好的推理。"

这句话在AI圈引发了不少争议。有人觉得他在黑Agent,有人觉得他是在"凡尔赛"。但如果你认真读他的上下文,会发现他的判断相当克制——他不是在说Agent没用,他在描述一种结构性局限

这个区别很重要。否定一个工具是情绪,描述一个工具的边界是认知。

---

二、拆解比喻背后的3个判断

判断1:Agent的成功高度依赖"反馈密度"

Agent能收敛,前提是它能快速知道自己有没有撞对。

跑单元测试是个好例子:测试通过/失败,反馈即时、清晰、可量化。Agent在这类环境里表现不错,因为它的随机搜索有了明确的"校准信号"。

但换一个任务——"帮我优化这个模块的架构"——反馈在哪里?没有测试,没有明确的成功标准,Agent只能按自己的"理解"走。这时候它不是在推理,是在猜。

反馈越模糊,Agent就越像真正的盲松鼠。

判断2:Agent优化的是"通过测试",不是"解决问题"

这是一个微妙但关键的区别。

在SWE-bench(一个用真实GitHub Issue测试Agent解决代码问题能力的基准)上,主流代码Agent的解决率大约在30%到50%之间浮动,顶尖模型在某些子集上能到更高。但这个数字有个隐藏前提:任务有明确的测试用例,Agent知道"通过测试=成功"。

问题是,现实工作里大量任务没有这种干净的验收标准。Agent在开放性任务上容易做出"看起来对"但实际走偏的输出——它满足了表面要求,但没有真正理解你的意图。

判断3:试错成本被严重低估

在demo里,Agent跑20次失败没什么感觉。在生产环境里,这意味着:

  • Token消耗:每次尝试都在烧钱,复杂任务一次完整的Agent循环可能消耗数万token
  • 时间延迟:多轮循环叠加,一个"应该5分钟搞定"的任务可能跑半小时
  • 错误传播链:Agent在第3步犯了一个小错,第7步才暴露,这时候回溯成本极高

这三个成本加在一起,在生产环境里会被放大成真实的业务损失。

---

三、两类任务的判断框架

在交给Agent之前,先问自己两个问题:反馈可不可以量化?容错空间够不够?

用这两个维度,可以画出一个简单的判断矩阵:

                    反馈可量化

┌──────────────┼──────────────┐

│ │ │

容错空间 │ ★ 最适合 │ ⚠️ 谨慎用 │

充足 │ Agent的 │ 需要强约束 │

│ 黄金区域 │ │

├──────────────┼──────────────┤

│ │ │

容错空间 │ ⚠️ 勉强可 │ ✗ 不适合 │

有限 │ 但要监控 │ Agent的 │

│ │ 危险区域 │

└──────────────┴──────────────┘

反馈不可量化

✅ 适合Agent的任务(黄金区域)
  • 批量单元测试生成:给定函数签名和功能描述,生成测试用例。反馈清晰(测试跑不跑得通),容错空间大(测试不对删掉重来)。
  • 批量格式转换:把100个JSON文件转成CSV,或者把一批Markdown文档统一格式。成功标准明确,单个失败不影响整体。
  • 爬取+结构化整理:抓取数据,按模板整理成表格。每条结果可以独立验证,整体容错高。
❌ 不适合Agent的任务(危险区域)
  • 核心业务逻辑的修改:牵一发动全身,错误传播链长,回滚成本高。Agent的随机性在这里是灾难。
  • 有依赖链的架构决策:选数据库、定接口规范、设计模块边界——这些决策的影响会在后续几个月持续显现,Agent没有这个时间维度的感知。
  • 需要上下文一致性的长文档写作:Agent在长上下文里容易"失忆",前后矛盾,风格漂移。你花在校对上的时间可能比自己写还多。

---

四、Prompt层面能做什么——给Agent装护栏

既然Agent的本质是在一个空间里随机搜索,Prompt工程师能做的是缩小这个搜索空间,让随机性在你能接受的范围内发生。

三个核心手段:强制输出格式、设定中间检查点、要求自报置信度。

下面是三个可以直接复用的Prompt模板:

模板1:代码生成任务
## 角色设定

你是一个严格的代码生成器,只输出可执行代码,不输出解释。

任务

[在这里描述具体任务]

约束

1. 每次只修改一个函数,不得跨文件修改

2. 修改前先输出:【修改位置】【修改原因】【预期影响范围】

3. 如果你对某个修改的置信度低于80%,停止并输出:【需要人工确认】+你的疑问

4. 输出格式:先输出diff,再输出完整修改后的代码块

禁止行为

  • 不得删除已有注释
  • 不得修改函数签名(除非任务明确要求)
  • 不得在一次回复中做超过3处修改
模板2:信息整理任务
## 任务

将以下内容整理成结构化表格:

[输入内容]

输出格式(严格遵守)

| 字段1 | 字段2 | 字段3 | 置信度 |

规则

  • 置信度列填写:高/中/低
  • 置信度"低"的条目,在表格后单独列出,注明疑问点
  • 如果某个字段信息缺失,填写"N/A",不得推测填写
  • 整理完成后输出:【共处理X条】【低置信度X条】【缺失字段X处】
模板3:多步骤规划任务
## 任务

[描述目标]

执行要求

在开始执行之前,先输出完整计划:

1. 列出所有步骤(编号)

2. 标注每个步骤的前置依赖

3. 标注每个步骤的风险点

4. 等待我确认计划后再执行

执行过程中:

  • 每完成一个步骤,输出:【步骤N完成】【实际结果】【与计划的偏差】
  • 如果遇到计划外情况,停止并输出:【遇到阻塞】【当前状态】【建议选项A/B/C】

不得跳过的检查点

[列出你认为关键的节点,Agent必须在这里停下来等你确认]

这三个模板的本质逻辑是一样的:不是让Agent更聪明,而是把它的随机性关在一个更小的笼子里。

📌 这三个模板可以直接在支持System Prompt的API接口里使用。如果你还在用官方网页端,调控灵活度会受限——建议直接接API,自己控制temperature、system prompt和输出格式。国内访问稳定、支持主流模型(包括GPT-5系列、Claude Opus 4.6、Deepseek R1等)的接口:[api.884819.xyz](https://api.884819.xyz),新用户注册即送体验token,国产模型完全免费,按量付费,没有月租。

---

五、启动Agent之前,先问自己这5个问题

在你把任务交出去之前,花30秒过一遍这个清单:

┌─────────────────────────────────────────────────┐

│ Agent任务启动前自检清单 │

├─────────────────────────────────────────────────┤

│ │

│ □ 1. 这个任务有没有清晰的"完成"标准? │

│ (测试通过?格式符合?数量达到?) │

│ │

│ □ 2. 如果Agent做错了,我能快速发现吗? │

│ (有验证机制?有diff对比?) │

│ │

│ □ 3. 如果Agent做错了,回滚成本可以接受吗? │

│ (删掉重来?还是要花几小时排查?) │

│ │

│ □ 4. 这个任务的上下文,Agent能在一次会话 │

│ 里完整保持吗? │

│ (超长文档?跨文件依赖?历史决策?) │

│ │

│ □ 5. 我自己有没有想清楚目标? │

│ (如果我说不清楚,Agent肯定也做不对。) │

│ │

│ ✅ 5个都是"是"→ 放心交给Agent │

│ ⚠️ 有1-2个"否"→ 加Prompt约束后再试 │

│ ❌ 有3个以上"否"→ 自己做,或拆解后再交 │

│ │

└─────────────────────────────────────────────────┘

---

结语:撞的不是天花板,是错误的期待

回到fchollet的比喻。

盲松鼠不是废物。在一片橡子密集的树林里,盲松鼠的随机搜索效率可能比你想象的高得多。问题在于,我们经常把它扔进一片没有橡子的沙漠,然后抱怨它找不到食物。

Agent是杠杆,不是替代品。 它放大你的执行力,但前提是你得先想清楚目标,选对任务,装好护栏。

fchollet的盲松鼠,撞的不是Agent的天花板,撞的是我们对它的错误期待。

搞清楚这个边界,才是真正会用AI的人。

---

【下篇预告】

fchollet的批评指向了一个更深的问题:Agent在"规划"上的缺陷,本质上是当前LLM对"因果关系"理解的局限。

给Agent加"思维链",有时候反而会让结果更差——这个反直觉的现象背后,是什么在作怪?

下一篇我们聊:为什么思维链不是万能药,以及GPT-5、Claude Opus 4.6和Gemini 3.1 Pro在规划类任务上的真实差距到底在哪里。

不是模型评测,是帮你选对工具的决策指南。

---

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#AI Agent #Prompt技巧 #代码Agent #fchollet #人工智能 #8848AI #AI工具 #LLM应用