SH

Soloharness

概念 · 辨析 · Agent

← 返回概念辨析

Concept Contrast Fable

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

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

寓言

老木匠的两种帮手

小镇东头有间老木匠铺,门脸不大,但活儿做得精细。木匠姓陈,手艺是祖传的,从十六岁入行,现在已经四十多年了。

早年铺子里只有他一个人,砍砍削削都是自己来。后来生意好了忙不过来,便合计着找帮手。

第一个帮手是小铁锤。陈木匠把它挂在墙上,用的时候拿下来敲几下,松手就停。敲哪里、敲多重、敲几次,全部听陈木匠的指令。锤头砸下去,力道分毫不差,绝不会私自加力或者少敲一下。

第二个帮手是徒弟小周。小周是远房亲戚家的孩子,初中毕业来当学徒。陈木匠告诉他「把这根木料削成门框」,小周就会自己去找合适的刨子、量尺寸、画线、切削,最后扛着成品过来给师父看。中间哪一步慢了、哪一步做错了,陈木匠有时候要等看到了才能发现问题。

有一回,陈木匠让小铁锤帮忙把一根细木条钉进墙里。小铁锤叮咣几下就把钉子敲进去了,位置分毫不差。但是陈木匠一看,钉子穿透了后面藏着的电线管——他忘了先检查墙体结构。小铁锤不会自己判断,它只执行「敲」这个动作。

又有一回,陈木匠让小周去仓库里找一块合适的木板来做柜门。小周去了半天,回来的时候不仅搬来了木板,还把之前堆在角落的半成品柜子整理了一下,理由是「反正要经过那里,顺手就收拾了」。陈木匠哭笑不得——这徒弟是会主动干活,但有时候干的不是你想让它干的那件事。

陈木匠慢慢摸出了规律。小铁锤用起来省心,你指哪它打哪,但每个动作都要自己下命令,复杂一点的活拆成几十个步骤,一个都不能漏。小周上手以后能省很多口舌,但它会自己想办法,想法有时候对、有时候偏,当师父的要最后检查一遍成果。

再后来铺子又来了第三个帮手,是一台装了新系统的机器。别人告诉它「做十个柜门」,它自己查库存、挑木料、排工序、动手做,做完了还自动记录了工时。陈木匠站在旁边看着,突然觉得自己这辈子积累的手艺,好像可以变成一套指令教给机器,让机器替自己去跟客户打交道了。

这时他才明白:有一种帮手是「你动手,它跟着动」;还有一种帮手是「你动口,它想着动」。前者是把单一动作交出去,后者是把一个目标交出去。两种帮手都能干活,但花的精力、操的心、承担的风险,完全不是一回事。

浏览器工具

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

智能体

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

故事对应

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

落到项目里:怎么选

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