← 返回概念辨析

Concept Contrast Fable

用来做事的东西和替我做事的东西

看文档或讨论区,常遇到「tool」和「agent」混着用。有人说「装个插件当工具」,有人说「设个agent来跑流程」。表面都是「帮我做事」,但仔细想想,这两种东西帮我做事的方式完全不同。搞错了,买错了,写出来的代码就会到处是坑。

寓言

老木匠的两种帮手

老木匠有两种帮手。第一种是刨子、锯子和墨斗,手握上去,它们把人的力气放大。第二种是成年的徒弟,木匠交代“明早前修好东桥栏杆”,徒弟会量尺寸、选木料、请人抬梁,遇到坏木还会回来请示。

村长起初把两种帮手都叫“省事的东西”。他买了十把新刨子,要求木匠第二天独自修完三座桥。刨子很锋利,可没人握住它们时,木板仍躺在院里。

村长又把新徒弟当成会动的刨子,只吩咐“去削木头”。徒弟削了一夜,桥却没有修好,因为没人告诉他目标、范围、优先顺序和验收方式。

第一次补救,村长给每把刨子贴上用途:粗刨、细刨、修边。木匠干活快了些,但遇到桥基歪斜,刨子不会判断该停工还是改图。

第二次补救,他给徒弟列了长长动作清单。徒弟照着做,发现旧栏杆下藏着腐木,清单没有这一项,只好站在桥边等到天黑。

老木匠最后把话说清:器具需要人来选择和推动,适合完成明确动作;徒弟接的是一段责任,必须知道目标、边界、可用器具、何时回问、怎样交付。

从那以后,村里买器具时看它能不能被人顺手调用;派徒弟时先写清任务和责任。两者都能帮忙,差别在于谁握着判断,谁承担过程。

后来村长再采购时,会先问自己要买哪一种省事。若只是让木匠切得更快,他买好器具;若要把东桥修好,他找能接活的人,并给他材料、权限和验收口径。工具增强人的动作,接活的人承接一段过程,这个差别决定了整套安排。 老木匠还提醒村长,若把徒弟当器具,就不会给他目标和回问通道;若把器具当徒弟,就会期待它自己判断。许多失败并非帮手不好,而是一开始认错了帮手的类型。 后来村里的合同也写得更清:买器具写用途,托付工作写结果和责任。 这句话后来被写进新人的手册里,提醒大家先看现场代价,再谈省力。

浏览器工具

在浏览器环境里预定义的、可被调用的函数或功能模块。调用时传入具体参数,它执行特定操作并返回结果。调用方需要把任务拆解成最小步骤,每一步都下明确的指令。

智能体

被赋予一个目标后,能够自主规划步骤、调用工具、感知环境变化并调整行为的系统。它不只需要「做什么」,更需要一个「做到什么」的描述。

故事对应

  • 老木匠的铺子 → 一个需要完成任务的系统或项目
  • 小铁锤 → browser-tool(工具)
  • 徒弟小周 → agent(智能体)
  • 「把这根木料削成门框」 → 一个目标描述(goal)
  • 「敲一下」 → 一个具体动作指令(action)
  • 钉子穿透电线管 → tool 执行了指令但没有理解上下文导致的问题
  • 小周顺便收拾半成品 → agent 自主决策产生的非预期行为
  • 「做十个柜门」的机器 → 更高层的 agent,能够调用多个子工具完成复合任务

落到项目里:怎么选

如果你的任务能被拆成固定步骤、每一步的输入输出都很明确,用 tool 更靠谱——它不会偷懒,不会绕路,更不会在某一步突然「发挥」。如果你的任务是一句话目标、涉及多个可能的路径、需要根据中间结果动态调整,用 agent 更省事——但你要接受它不一定完全按你设想的方式达成,接受最后检查这一步省不掉。实际项目中经常两者配合:agent 负责规划和大方向,tool 负责执行那些已经被验证过的标准化操作。