📍 词元二号站 开源解码 从一次 API 调用到工业级智能体:AI Agent 架构的成长路线图与踩坑复盘

从一次 API 调用到工业级智能体:AI Agent 架构的成长路线图与踩坑复盘

摘要:一篇写给开发者的 AI Agent 架构实操长文。用亲身踩坑的方式,拆解一个智能体如何从单次 API 调用,一步步被真实问题逼着成长为复杂系统:何时该用 workflow、何时才需要对话式 Agent、如何做框架选型、系统提示词、工具、上下文工程与隔离、记忆系统、内存外存、以及可观测性,并给出清晰的判断顺序,帮你避开"过度设计"这个最大的坑。
字号 100%
行距 2.05
当前可见 60% 的内容
本文由 辛梓煜@词元2号站(www.ciyuanerhao.com)撰写,转载请注明出处。

快速摘要

做 AI Agent 最容易犯的错,不是架构太简单,而是一开始就太复杂。一个能用一次 API 调用解决的问题,别上 Agent;一个步骤固定、中间不需要人插手的长流程,用 workflow(比如 n8n、Dify 这类链式编排)就够了,也别上 Agent;只有当"人必须参与判断"或者"功能多到没法为每个需求单独做一个按钮"时,你才真正需要一个对话式的 Agent。真正的架构不是一步到位设计出来的,而是被一个个具体问题逼着长大的:先跑通最小版本 → 提示词从最简单写起 → 遇到能力缺口才加工具 → 上下文塞爆了才做隔离 → 需要传递不可改动的长内容才引入记忆系统 → 系统复杂到没法调试了才把运行全过程存成 trace。顺序永远是"走到这一步、发现不用不行了,再用"。把 Anthropic 那两篇关于上下文工程和长任务的文章当成毕业设计图纸可以,但别拿着图纸在第一天就照着施工——那样你连第一根梁都立不起来。

这套判断标准,我是拿自己做视频 AI Agent 一路踩坑换来的。想看完整拆解、每一步到底卡在哪、又该怎么破,往下翻。


一、先把话说清楚:AI Agent 为什么不能照搬传统软件的设计习惯

我一开始是带着一个特别"工程师"的直觉进场的:既然本质上还是在做系统设计,那我把架构提前规划得越完备,系统不就越稳吗?这个想法放在传统后端里一点毛病没有。你做一个部署模块,把容器编排、服务拆分、异常兜底提前想清楚,最多就是前期慢一点,不会出什么大乱子,因为传统软件是确定性的——同样的输入,进同样的函数,出同样的结果。

但大模型这套东西不吃这一套。我后来才想明白一个挺反直觉的点:一个基于大模型的 Agent 本身就是非确定性系统(同样一句话问它,两次的回答、走的路径都可能不一样)。你在一个非确定性系统上面,再精心地搭一层复杂架构,等于是在不确定性上面又叠了一层不确定性。两层不确定性一叠加,系统的行为你根本预测不了,出了问题你也定位不了。

举个我自己干过的蠢事。我最初只是想把一段话压缩成一句话,这么点事,我却直接给它套了个 plan-and-execute(先规划、再执行)的模式。本来一次 API 调用就能收工,被我拆成了"先生成计划、再逐步执行"。任务本身没变复杂,可链路先复杂了。结果不是模型不行,是我一上来就把路走窄走绕了。

所以辛梓煜想先立一个基调:AI Agent 的成长,跟盖楼不一样。盖楼是图纸先画全再动工;Agent 更像养一棵树——你得先让它活下来,再根据它长歪的地方一根一根去修枝。整篇文章其实只讲一件事:一个小到不能再小的问题,是怎么被一步步逼着,长成一套复杂的工业级系统的;以及这条路上,到底是哪个具体的节点、哪个具体的痛点,才真正需要你给它加上对应的那层架构。


二、第一性原则:一个 API 调用能解决的,就别上 Agent

先讲讲我的真实起点。我做内容其实很早就在用 AI 了,而且用得特别朴素。比如起标题,我就是把稿子丢进去,让它一口气给我十个候选,我挑一个顺眼的;再比如做封面,我让它生成一个视觉主体,剩下的文字我自己排。这类活儿,说白了就是一次 API 调用(把输入丢给模型、拿一次回复,一来一回就结束)的事。

如果为了这么点事,我专门搭一个 Agent,配上一堆工具、给它做记忆、做多轮规划——那就是给蚊子装火箭助推器。看着酷,纯属没必要。

这里其实对应了 Anthropic 在那篇《Building effective agents》里反复强调的一个心法:先找最简单能跑通的方案,只有在确实需要的时候才往上加复杂度。他们把这类最基础的东西叫"增强版大模型"(augmented LLM)——就是一个大模型,配上检索、工具、记忆这几样最朴素的能力。对相当多的应用来说,把单次调用配上检索和几个示例,就已经够用了。

所以第一条原则非常简单,也非常残酷:

如果你的问题一个 API 调用能解决,不要用 Agent。不要为了用 Agent 而用 Agent。

我把不同复杂度的任务,和它们真正该用的方案,整理成一张表,方便对号入座:

任务特征

典型例子

该用的方案

千万别做的事

单步、输入输出一次搞定

起标题、写摘要、翻译一段话

一次 API 调用

套多轮 Agent

多步但流程固定、中间不用人管

一键剪辑、批量转格式

Workflow 链式编排

上对话式 Agent

流程里必须有人参与判断

审美调优、反复改风格

对话式 Agent

硬堆一堆按钮

功能选项指数级膨胀

什么都想"一键"一下

对话式 Agent(统一入口)

每个需求加一个按钮

这张表后面几节会一格一格地展开。你会发现,Agent 的成长路线,本质就是这张表从上往下走一遍的过程。

2.1 先问一句:这事真的需要"智能体"吗

我后来养成了一个习惯,每次冒出"要不要做成 Agent"的念头时,先逼自己回答一个问题:**这件事,真的需要模型自己拿主意吗?**如果答案是"不需要,步骤我心里清清楚楚",那它就不该是 Agent,顶多是个把大模型当成其中一环的普通程序。很多人跳过了这个自问,纯粹是被"用上智能体显得高级"这种心理推着走的——包括当初的我。

多提一句成本的账。业内一个大致的经验值是:一个 Agent 消耗的 token,大概是普通聊天调用的四倍上下;如果你还上了多智能体,那可能就是十几倍。这意味着你每往"更智能"的方向迈一步,账单都会跟着往上跳一档。所以"能不能不上 Agent"不是抠门,是对系统的负责。

2.2 从"增强版大模型"这块积木讲起

再往下拆,其实所有 Agent 系统最底层的那块积木,就是前面说的"增强版大模型":一个裸模型,加上三样东西——检索(能从一堆资料里找出相关的那部分)、工具(能调用外部能力)、记忆(能记住该记的东西)。现在的模型已经能主动地用这几样:自己生成搜索词、自己挑合适的工具、自己判断哪些信息值得留下。

关键在于,这三样不是一次性全上,而是缺什么补什么。你会在后面几节看到:工具是在第七节"遇到能力缺口"时才补的,记忆是在第十节"要传不可改的长内容"时才补的。一开始,你手里可能只有一个裸模型加一次检索,这就够你把第一版跑起来了。积木要一块一块往上垒,别一上来就想搭成城堡。


三、多步骤 ≠ Agent:先搞懂 Workflow 和 Agent 的分界线

后来我有了新需求。剪片子的时候我发现一件特别琐碎的事:录的时候难免有语气词、有些地方说得磕巴。剪辑其实就是在花时间给自己擦屁股。我自然就想,能不能让 AI 把这种重复啰嗦的地方自动剪掉。

问题到这儿就升级了。这已经不是一次 API 调用能搞定的了,它是一整条链路:先把视频转成带时间戳的字幕 → 根据字幕判断哪些片段要剪 → 生成一份剪辑方案 → 回头去驱动音视频轨道。这是个不折不扣的多步骤问题。

但请记住一句话:**多步骤 ≠ Agent。**这里藏着第二个特别容易踩的坑。很多人一看到"多步骤",条件反射就是"那我上 Agent"。不一定。

因为这条链路有个决定性的特征:中间过程不需要用户介入。你可以想象它最自然的用法——用户上传视频,点一下"一键剪辑",拿到剪好的成品。输入是确定的,中间步骤是固定的,输出是一次性交付的。这种情况下 Agent 反而是多余的。它本质上是个确定性任务,哪怕它很长、步骤很多、中间穿插了好几次 AI 调用,它也依然只是一条流程

这时候正确的选择是 workflow(工作流)那种链式结构。用可视化的工作流工具就完全够了——比如 n8n(一个靠拖拽节点连线来搭自动化流程的平台,拖几个节点就能把一串 API 串起来),比如 Dify(面向大模型应用的编排平台)。它们最适合的场景就是这种:步骤可预测、能提前把控制流写死、不需要对话、不需要多轮、也不用让用户中途插嘴。

这正好对得上 Anthropic 对两者下的定义。它把 workflow 和 Agent 做了一个架构上的关键区分:

  • Workflow:大模型和工具,是被预先写好的代码路径编排起来的。控制流在你手里,路是你铺的。
  • Agent:大模型自己决定下一步用哪个工具、怎么走、什么时候算做完。目标和护栏是你定的,但每一个分支不是你写死的。

后来 Anthropic 干脆把 Agent 提炼成一句更简单的话:大模型在一个循环里自主地使用工具。

给你一个判断指标,屡试不爽:

如果用户不需要在中间反复参与,那你大概率不需要对话式 Agent。

用一张流程图对比一下这两条路,差别一眼就出来了:

flowchart TD
    A[用户提交任务] --> B{中间需要人反复介入吗?}
    B -->|不需要| C[Workflow 链式编排]
    C --> C1[步骤1 固定]
    C1 --> C2[步骤2 固定]
    C2 --> C3[步骤3 固定]
    C3 --> D[一次性交付结果]
    B -->|需要| E[对话式 Agent]
    E --> E1[模型自主决定下一步]
    E1 --> E2{要不要调工具?}
    E2 -->|要| E3[调用工具后回到判断]
    E3 --> E1
    E2 -->|够了| F[阶段性交付 等人确认]
    F --> E1

左边这条路,是从头跑到尾、中间不停;右边这条路,是可以被人切开的——这个区别,第五节还会专门再挖一层。

3.1 别小看"确定性流程"这条路

我想替 workflow 这条路多说两句,因为它经常被低估。工程师群体里有种审美倾向:觉得"写死的流程"很土,"能自己思考的智能体"才酷。可真放到生产环境里,恰恰是那种"土"的确定性流程,扛住了绝大多数的活儿。原因很简单——它可预测、好排查。一条链式流程出了问题,你能顺着"输入 → 某个节点 → 输出"一路走下去,像在一间灯火通明的屋子里找东西。而一个放飞自我的 Agent 出了问题,你面对的是一片会自己重新排列的森林,日志里全是"嗯,这个好像不太对"之类的模型自言自语,定位一个 bug 能把你熬到天亮。

举个通用化的例子。假设你要做一个"把一批产品图统一加水印、压缩、再改名归档"的活儿。这里面每一步都固定:读图 → 加水印 → 压缩 → 按规则重命名 → 存进对应目录。哪怕中间某一步你想让模型帮忙判断一下"这张图属于哪个分类",它也依然是一条确定的流水线——你完全可以用 workflow 把它串起来,一键跑完。要是给这么个活儿配一个对话式 Agent,让它每张图都"思考"一番该怎么处理,那纯属自找麻烦:更慢、更贵、还更不稳。

一句话收尾这一节:**判断该不该上 Agent,看的不是"步骤多不多",而是"路要不要模型自己临场决定"。**步骤再多,只要路是提前铺好的,它就还是 workflow。


四、真正需要对话式 Agent 的两个信号

那到底什么时候,才轮到对话式 Agent 上场?我用自己踩过的一个坑来回答。

当时我做了个功能,叫"一键生成特效",本来想复制"一键剪辑"的爽感:点一下按钮,它就吐给我一套满意的动画效果。现实很快给了我一巴掌——它大概率不会一次就生成到我满意。有时候风格不对,有时候节奏不对,有时候我就想微调一个小细节。

这类任务的性质,和"一键剪辑"根本不一样。剪辑是道对错题,语气词剪没剪掉,一目了然。可特效设计常常是道审美题:没有唯一正确答案,甚至有时候是模型能力本身够不着,需要人去指导它、教它、陪它反复试、反复改。

如果这时候你还死磕"按钮"这条路,会发生什么?你会被迫不停加按钮:一键重做、一键改风格、一键换配色、一键套模板、一键再来一张……每冒出一种新诉求,你就得新增一个按键。加到最后,你的产品会长成一个飞机驾驶舱——密密麻麻全是按钮,用户看着就晕,你自己也维护不动。

到这一步,你才天然地需要一个通用入口——一个能用自然语言表达任意意图的地方,也就是对话。所以,你真正需要狭义上那种"对话式 Agent"的场景,基本就两个信号:

4.1 信号一:流程里人必须参与

不管是被动的(模型能力还够不到,需要人来兜底、来纠偏),还是主动的(这事儿本身依赖人的偏好和审美),只要"人必须在回路里",对话就有了存在的意义。

4.2 信号二:功能选项多到前端指数级膨胀

当你发现自己没法、或者不想为每一种功能都单独做一个前端入口的时候,一个统一的对话入口,就是那个能收敛复杂度的解法。

这两个信号,只要中一个,Agent 才算真的"该上"了。辛梓煜的经验是:在没中这两条之前,任何"上 Agent 会更高级"的冲动,都值得压一压。


五、框架选型:链长 ≠ 后端重,先别被"重型架构"迷了眼

确定要上 Agent 之后,我又立刻犯了个特别典型的错:一开始就想挑一个最强、最完整、号称能 cover 一切情况的框架。那些看起来简单的方案我一概看不上。

脑子里的幻觉是这样的:我这个问题很复杂 → 所以我需要一条很长很长的链 → 所以我必须上最硬核的后端编排框架。

后来我才发现,这里其实混淆了两个概念。**链长,并不等于你必须用复杂的调度系统。**我把两种"长链"搞混了:

  • Workflow 的长链:你点一下按钮,它从头跑到尾,十步二十步连续执行,中间不停。这种链你当然要认真考虑任务分发、失败重试、队列调度、并发恢复——因为它真的会在后端一口气横着跑到底。
  • 对话式 Agent 的长链:它是一种可以被人切开的长链。它可以每跑完一步停一下,或者跑几步停一下,跟用户确认、交互,再继续。整体看它还是一条长流程,但每一次真正连续执行的片段,其实可以很短

想明白这层,你就会发现:很多时候你根本不需要一上来就搭一个"能连续跑 20 步、还得扛住各种异常"的重型调度系统。

所以我最后选了一个看起来平平无奇的方案——AI SDK(一套 TypeScript 的工具库,主打把大模型的流式输出、工具调用这些能力,用很少的代码接进 Web 应用里)。它集成度高、上手快。有人觉得它不够"万能",但它有个巨大的优点:能让你先把东西跑起来。

这里顺手把当下几种常见选择的定位摆一摆,帮你少走弯路:

方案

定位

强在哪

什么时候别用它

AI SDK(Vercel)

轻量工具库、流式 UI、工具调用循环

上手快、集成度高、先跑起来最省事

需要复杂状态机、断点续跑、重编排时会吃力

LangGraph

图结构的编排运行时

分支、循环、持久化状态、长任务、可恢复

问题很简单、纯线性流程时属于杀鸡用牛刀

n8n / Dify

可视化工作流

拖拽连线、非技术同学也能上手

需要"在运行时动态判断"的分支时会僵

一个业内挺有共识的做法是:前端用 AI SDK 做流式交互,后端如果确实需要重编排,再叠 LangGraph 这类框架——组合使用,而不是一上来就把最重的那套全端上。

5.1 复杂架构还会"诱导你瞎设计"

选重型框架还有个隐藏的坑:它会引诱你闭门造车。当你手里握着一个很唬人的编排框架,你会忍不住在还没跑通任何东西之前,就开始画节点:这事该拆成哪几个 step、哪个节点负责什么、数据怎么在节点之间流转……听起来特别专业,问题是——你连"这个问题模型到底能不能解决"都还不知道。

这地方其实有两重不确定性叠在一起:第一,这个问题模型本身能不能搞定;第二,你这套架构会不会反过来干扰它。所以辛梓煜的建议很朴素:

就算你选了复杂框架,也请先用它最简单的用法跑一遍,把这个问题的 baseline(基准线,也就是"什么都不加、模型裸跑能到什么水平")跑出来。知道任务的底线在哪之后,再决定要不要加节点、要不要上更复杂的编排。

别被后端迷了双眼。"先跑起来"永远比"一步到位做到完美"更重要。

5.2 "先跑起来"到底是一种什么心态

我得强调,"先跑起来"不是让你糊弄、不是让你写烂代码。它是一种把不确定性尽早暴露出来的策略。你越早让系统真实地跑一次,就越早知道:这个问题模型到底能不能解决、瓶颈卡在哪、你脑子里那套架构设想到底是帮忙还是添乱。这些答案,一行架构图都给不了你,只有真实运行才能给。

我自己的教训是:那段最"高效"的时期,恰恰是我什么架构都没画、就抱着一个最小方案闷头跑的时候。反而是我坐下来认真画节点图、设计数据流转的那几天,产出的东西最后大半被推翻了——因为我画的全是猜的。等我真跑了一遍,才发现好几个"我以为很难、专门为它设计了复杂节点"的环节,模型裸着就能过;而好几个"我以为很简单、没当回事"的地方,反而是真正的深坑。

所以在框架选型这一关,辛梓煜的建议就一句:**先用最轻的方式跑通一个能用的版本,让真实的运行结果来告诉你下一步该往哪儿加复杂度。**架构不是设计出来的,是被真实反馈一点点校准出来的。


六、系统提示词:从最小可用版本开始,一句一句往上加

把 AI SDK 跑起来之后,下一关自然就是写系统提示词(system prompt,也就是你给模型定的"角色设定 + 行为规则"那段话)。我又光速踩了个典型的坑:我想把 prompt 也一步到位写到最强。

我当时到处搜成熟项目的提示词,那种被传来传去、号称"效果炸裂"的还嫌不够,我还专门去翻某些知名项目泄露出来的系统提示词,心想别人写得这么狠,我照着抄总不会差吧。结果两秒钟翻车:第一,效果没更好;第二,token 消耗直接爆炸。

举个例子,我只是想让它帮我出个视觉设计方案。我不给复杂 prompt,就一句"你是个视觉设计师,给我一个方案",它反而能给我一个挺快、挺能用的结果。可当我把那一大坨专业提示词一股脑砸进去,它开始拆步骤、规划流程、一板一眼地执行——最后更慢,还不一定更好。

这件事,Anthropic 在《Effective context engineering for AI agents》里讲得很到位。它提出提示词要写在一个**"合适的高度"**(right altitude),是两个极端之间的黄金区:

  • 一个极端:把复杂又脆的 if-else 逻辑硬编码进提示词,想精确控制每一个行为。结果就是又脆又难维护。
  • 另一个极端:写得太笼统、太高层,或者默认模型跟你共享了一堆它其实并不知道的背景。

正确的姿势是先在最好的模型上跑一个最小提示词,看它怎么表现,然后盯着它失败的地方,再有针对性地补清晰的指令和示例。

这跟我自己摸出来的手感完全一致,我的做法是:

第 1 版 prompt:几乎不加限制,就给个角色,让它自由发挥,看它会怎么做
      ↓ 观察它在哪儿掉链子
第 2 版:针对具体的失败,补一条约束(比如"输出要按这个格式")
      ↓ 再观察
第 3 版:想让某部分多想一点,就补一句思考引导
      ↓
第 N 版:给几个高质量示例,让它照着示例的调性往外输出

关于示例,还有个反直觉的点:别把你能想到的所有边界情况都塞进 prompt。堆一长串规则,不如精选几个有代表性的典型示例——对模型来说,一个好例子胜过千言万语。只要这个 Agent 能跟着你的指令走,你一句一句往上加,它都能照做,那系统提示词这一关,其实就算过了。


七、它做不好,往往不是提示词的锅,而是能力缺口——该加工具了

过了提示词这关,你会撞上一个很现实的问题:很多时候它做不好,根本不是提示词写得不够好,而是这个任务需要的能力它压根就没有。

还是拿动效设计举例。我期待它能参考一下网上正在流行的一些设计风格,可问题是——它拿不到这些数据。它的知识是训练时截止的那一刻定格的,它没长眼睛去看今天的网页。这种时候你把提示词改出花来都没用,这不是"写法"问题,是"能力"缺失。

所以正确的动作不是继续折腾系统提示词,而是加工具(tool,也就是让模型能调用的外部函数或接口,比如联网搜索、执行代码):

  • 我希望它能参考网上的信息 → 它就必须会搜索
  • 我希望它写的代码是能跑的 → 它就必须能验证(比如把代码跑一遍、看结果对不对)。

当你把三四个工具加上去之后,会有一个很明确的体感:它开始像一个 Agent 了。它会自己想清楚该用哪个工具,甚至开始把工具串起来用——搜完资料顺手就去写代码、写完代码顺手就去验证。这就是所谓的"涌现":工具和工具之间出现了 1 + 1 > 2 的效果。

值得留意的是,走到这一步,我们其实还没有做任何复杂架构,没有引入规划、没有搞多智能体,系统提示词也还是最基础的版本。就靠"裸模型 + 几个好用的工具",能力就已经上了一个大台阶。

举个"工具串起来"的具体画面。假设我给动效 Agent 配了三个工具:一个搜索工具、一个写代码工具、一个跑代码验证的工具。当我说"帮我做一个当下比较流行的加载动画"时,它自己会串成这样一条链:

[思考] 我不知道现在流行什么加载动画,先搜一下
   → 调用「搜索工具」,拿到几种当前常见的加载动画风格
[思考] 有素材了,选一个骨架清晰的方案来实现
   → 调用「写代码工具」,生成动画代码
[思考] 光生成不算数,得确认它真能跑
   → 调用「验证工具」,把代码跑一遍
[发现] 报了个错,某个属性写错了
   → 回到「写代码工具」,改掉,再验证
[通过] 交付

注意,这条链不是我写死的——我没告诉它"第一步搜、第二步写、第三步验证",是它自己根据当前情况一步步决定的。这就是我说的"像个 Agent 了"的那种手感。

Anthropic 那篇文章也专门提醒过工具设计的坑:工具集不是越多越好。最常见的翻车方式之一,就是工具太多、功能重叠、边界模糊。一个朴素的检验标准——**如果连人类工程师都说不清某个场景到底该用哪个工具,那就别指望 AI 能分得清。**工具要少而精,每个都自成一体、职责清晰、返回的信息还得省 token。输入参数也要写得明白无歧义,别让模型去猜你这个参数到底想要什么。

再补一个新手常踩的坑:加工具的时候忍不住把每个工具的说明写得又臭又长,恨不得把所有边界情况都写进去。结果这些说明本身就把上下文撑爆了——这正好是下一节要讲的东西。工具的说明,也要遵循"少而准"的原则。


八、上下文失控:注意力预算与"上下文腐烂"

加工具那段时间,做 Agent 的体验只能用"爽"来形容。你每加一个工具,它就明显聪明一点,之前做不了的能做了,之前很勉强的现在居然能跑通了。你会忍不住继续加、继续加、继续加。

然后你会进入一个非常诡异的阶段。不是偶尔失败,而是这个 Agent 的表现持续性地变差:成功率开始下滑,准确率忽高忽低,有时候连人话都开始听不懂。而且你能明显感觉到——它不是不会做,是越做越乱

这地方不是模型退化了,是你的**上下文(context,也就是每次喂给模型的那一整段信息:系统提示词 + 工具说明 + 历史对话 + 各种中间产物)开始失控了。**工具一多,每个工具背后都拖着一大段说明;任务复杂了,输入本身也更长;再加上历史对话、代码、图片各种信息一股脑塞进去——太多、太散,模型的注意力被平均地稀释掉了。

Anthropic 把这个现象讲得很透。它们借了一个研究里的概念叫**"上下文腐烂"(context rot):随着上下文里 token 数量的增加,模型从里面准确回忆信息的能力反而会下降**。不同模型衰减的快慢不一样,但这个趋势在所有模型上都存在。原因和 Transformer 架构有关——每个 token 都要和其余每个 token 建立关联,n 个 token 就有 n² 对关系,上下文越长,注意力就被摊得越薄。

所以正确的心智模型是:**把上下文当成一种有限资源,而且是边际收益递减的资源。**模型和人一样有"注意力预算",每多塞一个 token,就从这个预算里扣掉一点。

到这一步,我们才真正需要那篇文章的核心——上下文工程(context engineering)。它本质上只干一件事:

在做某一类任务的时候,只让模型看到它真正需要看到的东西。

用 Anthropic 的原话精神来概括,就是:找到那个最小的、信噪比最高的 token 集合,让它最大化地提升你想要的结果出现的概率。注意,"最小"不等于"最短"——该给的背景还得给足,关键是别掺进无关的噪音。

8.1 上下文预算,到底被谁吃掉了

抽象的话讲完,来看点具体的。你可以把每一次喂给模型的上下文,想象成一个有限的"预算盘子",盘子里堆的东西大致是这么几类:

占用上下文的东西

常见问题

该怎么办

系统提示词

抄来的模板太长、规则堆一堆

砍到最小可用,只留真正影响行为的

工具说明

工具多、每个说明都又臭又长

精简工具集,说明也要短而准

历史对话

越滚越长,早期内容早没用了

该压缩就压缩,该清就清

中间产物

大段代码、图片、工具返回的原始结果

存到外部,只在上下文里留个"指针"

你会发现,真正把预算吃光的,往往不是任务本身,而是这些"周边"。同样一个任务,一个把周边收拾得干干净净的上下文,和一个塞满了历史垃圾和冗余说明的上下文,模型的表现能差出一大截。

8.2 一个最省力的第一刀:清掉用过的工具结果

如果你不知道从哪儿开始给上下文"瘦身",有一个几乎零风险的起手式:**把已经用过、深埋在历史里的工具返回结果清掉。**道理很直白——一个工具在很早以前被调用过、结果也用完了,模型为什么还需要反复看到那一大坨原始返回?这类内容清掉,基本不会丢关键信息,却能省下可观的预算。Anthropic 把这类做法归到"压缩"(compaction)这个大思路下:当对话快撑到上下文上限时,把内容做一次高保真的总结,再用这份总结开一个新的上下文窗口继续跑,保留架构决策、没解决的 bug、关键实现细节,丢掉那些冗余的工具输出和废话。用户那头感觉不到断裂,模型这头却轻装上阵了。


九、上下文隔离:设计和写代码,是两类需要不同"食材"的任务

上下文工程听起来抽象,落到我这个视频 Agent 上,就特别具体。当我想设计某种视频效果时,这件事其实内含了两类性质完全不同的任务

9.1 两类任务,两种胃口

  • 第一类是"设计"。它关心用户的意图、视觉风格、版式元素、整体氛围。它需要大量开放、可发散的信息,然后对这些信息做分析和归纳。
  • 第二类是"写代码",把设计好的东西落地实现。它关心的是明确的接口、清晰的结构、输出的格式和正确性。它需要的是尽量少、尽量精确的信息。

这俩的"胃口"是相反的:一个要广、要杂、要能联想;一个要窄、要准、要没干扰。

9.2 混在一起会怎样

如果你把这两件事塞进同一个上下文里,任务小的时候可能还能凑合跑。可任务一复杂,设计那堆发散信息会开始扰乱代码生成的准确性,代码那些琐碎细节又会拖慢设计的判断——两个任务开始互相污染上下文,系统得花大量算力去把它俩理清楚。

只有当"不同任务明显需要不一样的上下文"这件事成立时,上下文隔离才真正有了意义。这时候你才该开始考虑:要不要有一个顶层的规划者(planner),它掌握全局信息,负责调度;下面挂几个执行者(executor / subagent,只负责某个专项的子智能体)。设计的 subagent 只碰设计相关的内容,代码的 subagent 只碰代码的内容,而且这俩通过规划者的控制,各自只看到自己那一小撮必要信息

这正是 Anthropic 讲的"子智能

🔒
🔒 以下内容仅对更高等级用户组开放,请升级您的账户等级以查看完整内容。
您当前:游客 · 可见 60% 内容 · 升级至 注册用户 可见 70%
👀
游客
可见 60%
✓ 当前
👤
注册用户
可见 70%
社区精英
可见 100%
🛡️
社区守护
可见 100%
仅解锁本文,永久有效。如需PDF珍藏版,请联系站长获取。 当前单篇价格 ¥5
✏️ 发表评论

请先登录后发表评论

前往登录
📊 站点统计
今日发布0 篇
文章总数106 篇
昨日发布4 篇
本月发布14 篇
建站时间38 天
🔍 搜索
📅 日历
« 2026 » « 08 »
     12
3456789
10111213141516
17181920212223
24252627282930
31      
站点公告

联系站长

微信:wyxs1638
AIGC技术社区
致力于解码 AIGC前沿技术 与经验分享
纯粹的技术交流社区

💡 欢迎您的建议与反馈,让社区变得更好

快速通道
联系站长
站长微信二维码
AI交流群
AI交流群二维码