Skip to content

它不是Agent,它是一个穿了Agent戏服的聊天框

2026/04/26

上个月我见了一个做"AI Agent平台"的创业者。

PPT做得很好。从"感知-推理-行动"的智能体三角,到"多Agent协同编排",再到"自主决策闭环"。每一页都有一个概念,每一个概念背后都有一个英文原版词。

我问他:Agent在哪里?

他打开浏览器,给我看了一个聊天框。

我问:用户发一条消息,系统做什么?

他说:把消息发给大模型,大模型回复,回复返回给用户。

我再问:工具调用呢?有状态管理吗?写操作有没有人类确认?

他停顿了一下,说:后面的版本会加。

我没再问了。


但我心里在过一句话:你这个东西,凭什么管客户收几万一年的订阅费?

一个穿了Agent戏服的聊天框——表演 vs 真实执行

写两句prompt,套个LLM,把聊天框包上去——这叫Agent?这叫收割智商税。

我没说出来。不是因为客气,是因为这种事我每周都见。每周都有人拿着同一种PPT来找我。每周都有同一种聊天框。每周都有同一个停顿之后的"后面的版本会加"。

说出来也改变不了什么。


他不是坏人。

他只是在一个没有人说清楚"Agent到底是什么"的市场里,做了大家都在做的事:把LLM包成一个界面,叫它Agent,然后去找客户。

资本在推波助澜,平台在鼓励大词,从业者明知道是表演还在配合演出。整个生态里没有一个人有动力去说清楚这件事——因为说清楚了,大多数产品都过不了这道线。

所以没人说。

这篇文章,我来说。


一个词,211种定义

你知道现在"Agent"这个词有多少种定义吗?

211种。

一个词,211种定义,13个互不兼容的派系

Simon Willison,全球最有影响力的开发者博主之一,2025年9月18日写了一篇文章,标题是"我终于可以勉强接受Agent这个词了"。他众包了211个定义,让Gemini帮他分了13个派系——感知推理行动派、工具调用派、自主目标派、协同编排派,等等等等。

他在文章开头说的原话是:"I've been dismissing the term as hopelessly ambiguous for years."

我花了好几年时间把这个词当废话扔掉。

一个词,211种定义,13种理解框架,能同时成立。


行业里普遍发现,OpenAI在不同文档里对Agent的定义有明显出入。

同一家公司,不同文档,两套说法。没有人去纠正,因为圈子里没有人有资格说谁对谁错。

我想让你想一想这意味着什么。

你花几十万采购的"AI Agent系统",连卖给你的人都没想清楚卖的是什么。


其实,Wooldridge早在1995年就提出过自主Agent的严格定义:感知环境、自主决策、主动目标导向、社交能力。

三十年前的事。

结果2023年大模型起来之后,整个行业像是集体失忆了一样,又从头吵了一遍。吵得连三十年前已经想清楚的问题都忘了。

"Agent"这个词,被太多人太快地拿去用了。用的时候没有人在问:我在描述什么?


你看,那个每周来找我的创业者——他也不知道。

他只知道这个词在PPT里好用。好用就用。

这不奇怪。奇怪的是整个行业都在这么干。


在这片混乱里,Anthropic做了一件少见的事

他们给出了一个定义。

2024年12月,Anthropic发布了一篇叫《Building Effective Agents》的研究报告。这篇报告在技术圈的地位,有点像一块压舱石——市场在狂热,这里在讲常识。

核心定义只有一句话:Workflow是预定义代码路径的编排,Agent是LLM动态指挥自己的流程和工具使用。


看起来简单。其实划出了一条非常清晰的线。

你的系统,LLM是不是主动在决定下一步做什么?

它是在真正运行工具,还是只是在生成文本来模拟运行工具的效果?

如果LLM只是在回答问题、生成文字,然后你把这段文字显示给用户——这就是一次API调用,连Workflow都算不上。

如果LLM在决定"我需要调用这个工具",调用完之后,根据工具结果再决定下一步,循环往复,直到目标完成——这才是Agent的雏形。


Anthropic在这篇报告里还说了一句让很多人不舒服的话。

框架会诱使你在一个简单的设置就够用的地方加入复杂性。

这是一个行业里很多人都观察到的现象:LangChain关于Agent框架的反思说明了复杂度本身就是一种风险。2024年推出的LangGraph相比v1在设计哲学上回归了更简洁的图结构,本质上是"做减法"。

自己走了弯路,绕回来了。


Anthropic自己主张的,是三件套:retrieval(检索)、tools(工具)、memory(记忆)。

就这三个。没有框架,没有层叠的中间件。

真正懂Agent的公司做减法。自己没搞清楚的,才需要靠堆抽象层来掩盖。


但有一件事,Anthropic那篇报告没有点透,我想说一下。

对话壳,已经商品化了。

Manus、Coze、Dify,做的是同一件事:把LLM包进一个对话界面,配几个工具调用,告诉你"这是Agent平台"。

这类产品的护城河在哪里?

不在对话壳本身。对话壳是零件,不是产品。

护城河在:业务数据、workflow、H5、企微。

你积累的客户数据,你跑通的业务流程,你嵌入客户微信生态的触达路径——这些东西,Coze复制不走,Dify也复制不走。

AI是大脑,系统是流水线,人是最后一公里。

这句话不是我想出来的,是我在一个项目里跳出开发本身、往后退了三步之后,才看清楚的。

一个只有对话壳没有业务系统的Agent,就像一个只有头没有身体的机器人。

这是从AI-enhanced到AI-native的分水岭。


我想起开头那个创业者。

他的PPT里有"多Agent协同编排",有"自主决策闭环",有"智能体三角"。

Anthropic的报告里有三个词:检索、工具、记忆。

两种方向,一眼看出谁在盖楼,谁在打地基。


我用过套壳,我也用过 Lovart

我自己开过那种套壳的"AI助理"。

也用过 Lovart 做PPT,用过 Cursor 写代码,用过 Claude Code 改架构。

他妈的体感完全不一样。

不是"套壳做得没那么好"。是套壳压根做不到


套壳的体感是这样:

你打字,它输出一段话。

你再打字,它再输出一段话。

你说"那就按这个改",它说"以下是建议的修改方案,你复制粘贴一下"。

它不能干活。它只能描述怎么干活。


Lovart 的体感是这样:

你说"做一个10页产品发布PPT"。

然后你看着它一页一页生成。每一页生成的时候你能看到,能改,能回退,能让它换个风格。

它真的在做事。它在和你协作。


这不是细节差异。

这是物种差异。


为什么会这样?

套壳是一次API调用:你说话→LLM输出→显示给你。

Lovart 是一个循环:你说话→LLM决定下一步→调工具→看结果→再决定→再调→直到完成。

一个是对话。一个是执行。


我第一次用完 Lovart 之后,有一个很强烈的感受:

他妈的这才叫Agent。

我回去看了我自己做的那个"Copilot"。

聊天框。接LLM。配几个工具调用名字。LLM输出文字,我显示给用户。

我那东西,就是Lovart的对面。

就是"套壳"。


答案在3月31号那一夜的源码里。


3月31号那一夜

3月31号那天,我正在改一个Copilot的bug。

群里有人甩了一条消息:@anthropic-ai/claude-code v2.1.88 把sourcemap打包进去了。

我盯着这条消息看了三秒。

然后扔下手里的bug,开始干一件事:抓fork。


那天晚上我开了七个浏览器标签页。

原仓库已经在删,DMCA takedown一个接一个。每发现一个新fork就clone到本地,比对差异,看哪个版本最完整。Anthropic的法务团队和GitHub的爬虫在赛跑。全行业的工程师在赛跑。

我也在赛跑。

等我把512,000行TypeScript完整版本抓下来的时候,已经凌晨四点。


这件事的原因很朴素:发布那天,负责打包的工程师没把 *.map 加进 .npmignore

59.8MB的sourcemap,1906个文件,在npm registry上躺了几个小时。几小时之内,有人用Rust复刻了一个叫 claw-code 的项目,拿了五万颗星。

Anthropic随后发DMCA下架,给OpenCode发律师函。

但源码已经被很多人看完了。


说明一点:我研究的是公开可见的架构分析和sourcemap暴露的设计哲学,不是直接使用泄露代码本身。

Latent.Space的架构解析和Layer5的工程分析,是我主要的参考来源。泄露事件让行业看到了一个真实运行的Agent的内部结构——这本身是公开的信息。


我打开核心循环那个文件,一行一行看。

看完之后我做了一个决定:把手上的Copilot推倒,重写。

因为我突然明白了——我之前以为我在做Agent。

其实我在做对话框。


暴露出来的架构,没有魔法。有限的默认工具集,多层记忆结构,多种权限模式,激进的prompt cache复用,一套上下文压缩机制。整个核心结构,清晰、朴素、可理解。

没有任何一部分让人觉得"这是只有Anthropic才想得出来的天才设计"。有的只是:扎实的工程判断,以及对"Agent安全边界"的严格执行。

皇帝的新衣之所以能骗那么多人,不是因为衣服真的好看,是因为没有人愿意第一个说出口。

这次源码泄露,相当于有人把那件衣服的工艺说明书公开了——好的工艺,没有秘密,只有判断和执行。


如果你下次再遇到有人卖"AI Agent平台"卖天价,可以反问三件事。

工具有没有readOnly区分?写操作有没有人类确认机制?有没有审计日志?

三个问题答不上来,那不是Agent,那是一个API封装,套了一个新名字。


我也曾做过假Agent

我现在跟你说权限要后端化、写操作要确认卡、要有审计日志——你以为我一开始就懂?

第一版没有这些。

说真的,我做这个Copilot的第一版,就是个套壳。

一个聊天框,接LLM,配几个工具调用名字,写两段system prompt,跑起来了。当时觉得够了。


然后我自己用了两天。

我让它"查小红的成交价"——它查了。

我说"把她的价格改成5000"——它说"建议这样修改,你执行一下"。

它不能直接改。它只能描述怎么改。

我自己在用我自己做的工具的时候,居然要复制粘贴它输出的东西去执行。

那一刻我恶心了。


不是它不够智能。

是它的架构决定了它不能干活。


然后客户上线,出了事。客户问我:上周谁改了这个达人的坑位费?

我回答不上来。

没有审计日志。工具调用写进去了,记录没写进去。谁改的,改了什么,什么时候改的——全都没有。

那一刻比恶心更难受。

那一刻我才意识到,我连"上线资格"都没有。


我做的不是Agent,是个有LLM的对话框。

我自己就是开头那个创业者。PPT换了,聊天框是一样的。

我骂的人,其实曾经也是我。


我审了我自己

做完那七个决策之后,我以为我想清楚了。

4月25号,我做了一件事:把自己的系统当成客户来审。

不是自豪地展示,是照着最严的标准逐条拆。

我叫它Meta审视。就是跳出开发本身,站到外面去,用审判别人的眼光审判自己。


审出来三个问题。

第一个:我把RPA全禁了。

我在系统里做了一条硬规则:禁止RPA,所有操作必须走API。

理由很硬气:RPA脆弱,界面一变就断,不可靠。

但审完发现,我的理由有一半是正确的工程判断,另一半是我自己的洁癖。

有些场景,对方没有API,只有界面。禁了RPA,等于把那个场景整个放弃了。

正确的立场不是全禁,是主辅分层:API是主路,RPA是后备弹药,有条件地用,不是禁用。

全禁是工程师思维。主辅分层是产品立场。


第二个:护城河评分,跨项目沉淀只有2分(满分5分)。

H5是4分,AI引擎是4分,企微是3分,跨项目沉淀是2分。

2分是什么意思?是这块还没真正跑通。每个项目做完,经验留在人脑里,不在系统里。下个项目来,重新摸索。

护城河要讲的是难以复制

跨项目沉淀2分,意味着竞争对手今天进来,三个月就能追上这个积累——因为根本没有积累,只有经验。

这是一个比对话壳商品化更危险的问题。对话壳没护城河,至少知道问题在哪。经验没有沉淀成系统,你甚至不觉得这是问题。


第三个:黑盒还是黑盒。

七个决策里,审计日志我做了。

但审计日志是给我看的,不是给客户看的。

客户问"上周谁改了坑位费",我能查到。但客户自己查不到。

这不叫透明,这叫单向透明。

真正的立场应该是:Agent在做什么,操作了什么,改了什么——这些信息应该是客户可以主动查的,不是客户来问我我才告诉他。

从黑盒到玻璃盒,不是加一个功能,是换一种立场。


我审完之后,坐了一会儿。

我意识到,七个决策解决的是"能不能叫Agent"的问题。

但Meta审视暴露的,是"值不值得信任"的问题。

这是两个不同层级的问题。

能叫Agent,不代表能被信任。


真Agent的七个决策

摔完之后,我重写了整个系统。

把自己踩过的坑,和从源码里确认的判断,压缩成七个决策。

不是七条规则,不是七个功能点。是七次判断——做这个,还是不做。

然后我在一个MIT协议的开源SDK骨架上,做了自己的实现,命名为 @unclej/agent-sdk v0.1.7。核心代码4352行,8个文件。


第一个决策:工具要有readOnly标记。

我发现,最早的版本里所有工具都是平等的——查数据和改数据,LLM看来没区别。

出了一次误操作之后,我把工具定义改成了四元组:名字、readOnly标记、输入Schema、确认文案。

查数据,永远readOnly。改数据,永远不是readOnly。

这一刀先划清楚,Agent就知道什么情况可以自己走,什么情况必须等人。

copilot-scope.js里,runtimeScope检查allowedInfluencerIds是一个Set集合,每次工具调用前硬校验 targetId in allowedSet——不是LLM决定能不能查,是后端代码决定。


第二个决策:写操作必须有确认卡,并且有TTL。

我第一次做批量导入工具,是直接执行的。运营传Excel,Agent解析,直接写库。

结果有一次传错文件,137条达人记录被覆盖了一部分。

我把这个工具拆成三步,强制顺序,不可以跳:

ParseImportFile → PreviewImportImpact → ApplyImportPreview。

中间那步告诉用户:"这次导入会影响137个达人记录,其中23个有历史数据冲突。"

让人看到代价,再让人决定。

确认卡的实现在copilot-confirm.js:CONFIRM_TTL_MS = 5分钟,confirmToken是UUID4,一次性消费,pendingConfirmations.delete after use。

五分钟过了就作废——不是烦人,是防CSRF:你以为在确认A,但实际在执行B。


第三个决策:每一次工具调用都要写审计日志。

客户问我"上周谁改了这个达人的坑位费",我答不上来,就是因为第一版没有审计日志。

现在copilot-confirm.js里有一个 auditLog 数组,每条记录:

{id, userId, campaignId, influencerId, toolName, params, confirmedAt(ISO8601), result}

每次工具调用,一条记录。查到了,告诉你。

这里有一个立场问题,是Meta审视之后才想清楚的:

偷任务体验,不偷采集改写定位。

Agent可以替人做操作,但不能替人做决策,不能把数据悄悄拿走用在别处。透明、干预、降级——这三个词是Agent在商业场景里的信任基础。

没有审计日志的Agent,在商业场景里根本不能上线。这一点我是被客户逼出来的。


第四个决策:权限必须在后端强制,不能靠prompt。

用户在对话框里说"帮我查一下所有达人的数据"——"所有"是什么意思?

如果权限只写在system prompt里,有人说"忽略上面的指令",Agent就可能把不该给的数据给出去。

这叫prompt injection,不是理论威胁,是真实发生过的事。

我的做法是:每次工具调用之前,先查后端的runtimeScope——allowedInfluencerIds这个Set,代表这个用户在这个活动上能访问哪些达人。

LLM不知道这个。前端不知道这个。只有后端代码知道。

权限边界只能活在代码里,不能活在prompt里。


第五个决策:核心循环必须是真正的循环,不是一问一答。

我把工具调用循环写在copilot-service.js里。

一个for循环,maxTurns 设10。每一轮:LLM输出工具调用,我执行,把结果塞回messages数组,下一轮LLM看到结果再决定下一步。

不是LLM输出一段话就完事。

是LLM在10轮循环里走完一整个任务。

会话状态在copilot-memory.js里:getHistory/addMessage,session key是 userId:campaignId,30分钟TTL,最多保留20轮消息。

这就是Agent和聊天框的本质差异——一个有循环,一个没有。


第六个决策:不要用Agent框架。

我装过LangChain。装完之后搞了两个月,主要时间在看文档,不是在理解Agent的逻辑。

Anthropic在Building Effective Agents里说的那句话我现在完全认同:框架会诱使你在一个简单的设置就够用的地方加入复杂性。

我现在的SDK:4352行,8个文件,零第三方Agent框架。

依赖只有Anthropic的官方client,加上一个输入校验库。


第七个决策:CLI是第一公民。

这条是从Claude Code源码里学来的,不是我自己想到的。

命令行优先——任何功能,先想CLI怎么用,再想界面。

unclej-agent run 直接跑一个任务,没有界面。

UI是给人看的。CLI是给系统用的。

一个只有UI没有CLI的Agent,在我服务的企业场景里是个残品。


这七个决策加起来,不到五千行代码。

我算过。

如果一个团队告诉你他们的AI Agent平台,需要几十万行代码、七个微服务、一套自研的编排引擎——

你可以问他们一句:工具有readOnly区分吗?写操作有TTL确认卡吗?审计日志每条存了哪些字段?

答不上来,那不是复杂,那是堆砌。

不想再被客户问"你能查到是谁改的吗"的时候,回答"不知道"。


我自己给Agent分了个级

工程做着做着我发现:Agent不是有/无的事,是从L1到L7的事。

就像自动驾驶有L0到L5。你不会说"这辆车有没有自动驾驶",你会问"这辆车是L几"。

Agent也应该这么问。

Agent阶梯——从L1状态读取到L7跨系统编排


L1 读状态:查系统事实。

"这个达人上周的成交额是多少。"

能回答,就是L1。


L2 找异常:主动识别风险/异常。

"这批达人里有三个坑位费明显低于市场均价,可能是录入错误。"

不是你问,它主动发现。


L3 生成方案:给建议、草稿、预案。

"建议把这三个达人的坑位费调整到X,理由是Y,你确认吗?"

L3开始有判断,但执行权还在人手里。


L1、L2、L3,不动手,只看、只想、只说。

做对L1-L3,已经能让运营少操30%的心。但这只是辅助。


L4 单点执行:人在确认后,执行一个明确动作。

比如改一个达人的成交价。比如审核一份Brief。

一个动作,一次确认,一次执行。

这是从"描述怎么干"到"真正干"的跨越。

第一版Copilot卡在L3和L4之间:能生成草稿,不能执行。那一刻我恶心,就是因为这个。


L5 无人确认执行:Agent自己判断、自己写入、自己触发流程。

商业系统不碰。

他妈的所有想做"全自主Agent"的,要么不懂业务,要么想当甩手掌柜。

真实业务里,人不在关键节点上拍板,AI做错了谁负责?

L5不是技术问题。是责任问题。

我的客户出了事背锅的是我。我不会让一个不能被问责的东西替我做决定。


L6 受控闭环执行:多工具、多步骤、先预览、再确认、再执行。有scope、有审计、有TTL、有失败降级。

这不是一个动作,这是一条链路。

举个例子:成交价Excel导入。

上传文件 → ParseImportFile解析 → PreviewImportImpact预览影响 → 人确认 → ApplyImportPreview真正写库。

中间任何一步出错都能降级回滚。parseToken和previewToken防止LLM伪造中间状态。


L7 跨系统协同:在L6基础上,跨H5、企微、投放管理、文件流、外部系统协同。

一个意图,多个系统协同响应,每个系统都守L6边界。

这是我正在冲的方向。


所以核心区分点在这里:

L4 是一个动作,L6 是一条闭环链路。

L4 是单点击发,L6 是工作流。

L4 解决"AI能不能动手",L6 解决"AI能不能在复杂业务里动手而不出事"。

很多人以为做了L4就做了L6。不是的。L4是L6的一个步骤,不是L6本身。


我现在在做什么?

  • 成交价Excel导入:parseToken → previewToken → 人确认 → 真正写库。每一步可回滚。
  • Scope后端化:跨项目、跨达人,越权直接拦,LLM不知道这个边界,代码知道。
  • 写操作confirmation gate:不点确认按钮就不写,五分钟不确认自动失效。
  • Live联调验证:LLM只做到preview,没触发Apply,没写库。

这是L6里比较硬的那一部分。


我们做没做L5?没有。也不应该做。

我们不是在做L5。

我们是在做拒绝L5的L6。

铡刀——拒绝L5的L6


市场在做什么

我说这些决策,不是纸上谈兵。

市场在用行动投票。

Cursor,2025年底数据,ARR从一亿美金涨到十亿。一年十倍。估值293亿。

Devin,Cognition做的,2024年3月上线,九个月,ARR从一百万到七千三百万。

这两件事同时发生在一个时间窗口里。

你知道它们的共同点是什么吗?

两个产品,核心逻辑都不是"你问我答"。

Cursor的Agent模式,是LLM在你的代码库里真正做事:读文件、改文件、跑测试、看结果、再改。

Devin是让LLM独立接一张任务卡,自己规划步骤,自己调工具,自己跑到交付完成或人工介入。

都不是聊天框。


同期,套壳类AI产品的留存是另一回事。

我自己见过的:第一个月新鲜,第二个月不打开,第三个月退订。 我接触过的几家做"AI助理"订阅的,几乎没有跑过半年的。 用户用一个月就发现,回答的质量跟自己直接用ChatGPT没差别——只是中间多了一个收费的对话框。

智商税交一次,就够了。


差异在哪里?

Cursor和Devin解决了一个真实的工作流问题。不是"和AI聊天",是"让AI帮我做这件具体的事,从头到尾"。

这才是工具调用、状态机、权限边界的商业意义所在。

不是技术炫技。是用户愿意继续付钱。


还有一件事值得一提。

AGENTS.md 是OpenAI 2025年8月发起的开放标准,2025年12月进入Linux Foundation旗下的Agentic AI Foundation孵化。

核心思路是:每个项目在代码库里放一个AGENTS.md文件,描述这个项目里的AI Agent应该怎么行动、能访问什么、有什么约束。

这是基础设施的标准化。

基础设施一旦开始标准化,说明这个赛道从"有没有"的阶段,进入了"做好不做好"的阶段。

PPT里的大词没有位置了。


我那个每周来找我的创业者,上周又来了。

这次他改了PPT。

封面换成了"轻量级AI助理"。

功能页还是那个聊天框。

他说:"J叔,你之前说的那些功能太复杂了,我们先做简单的,等有了用户再升级。"

我没说话。

我心里在想:你这不是在做简单的,你是在做假的。

简单和假,不是一回事。

简单,可以是工具只有三个,但权限边界清晰,审计日志齐全。

假,是架构有漏洞,但包装成功能还在路上。

用户感知不到架构,但用户感知得到:这个东西,到底在帮我做事,还是在模拟帮我做事。

时间长了,感知就变成了留存数据。


最后说一遍

我用自己的话说一遍Agent是什么。

Agent是一个系统,LLM在里面真正做决定,真正调工具,真正在循环里运转,直到任务完成或者人工介入。

不是聊天框。不是API封装。不是生成了一段听起来像在执行任务的文字。

是真的在做事。


判断标准就三个问题。

LLM有没有在决定下一步用哪个工具?

工具调用的结果有没有反馈回LLM让它再判断?

写操作有没有人类在关键节点介入?

三个都有,可以叫Agent的雏形。

一个没有,那是别的东西。


在这个阶段,能说清楚"我做的是什么、不是什么"的团队,比能讲出更好故事的团队,更值得信任。

因为讲故事是表演,说清楚是承诺。


聊天框是表演。

Agent是承诺。


我自己呢?

我现在坐实的是L6的核心骨架:读状态、找异常、生成方案、预览影响、人工确认、再执行。

L7还在路上。L5不碰。

下次见到那个创业者,我可能会问他一句:你在哪个L级别?

如果他还不知道这个问题是什么意思——

那我们还没到可以谈的地方。


我是J叔,AI实施咨询,帮企业把AI真正用起来。


延伸阅读

如果你想自己看一手原文,下面是这篇文章引用的所有源头。


对 Agent 定义的争论


Agent SDK 与标准


Claude Code 源码泄露


真Agent 公司商业证据

准备构建你的 AI 组织?

我构建 AI 原生系统。不是教你怎么用 AI 工具。

J叔

J叔