乐于分享
好东西不私藏

AI Agent 避坑指南:三个月实战踩坑与架构演进

AI Agent 避坑指南:三个月实战踩坑与架构演进

> 本文整理自 YouTube 视频转录,作者分享了独立开发 AI 视频生成 Agent 三个月中经历的架构迭代与深层思考。

一、背景:一个真实的 AI Agent 项目

作者开发了一款自动生成讲解视频的 AI Agent(视频中的动画效果均由该 Agent 生成)。三个月间,历经多次架构推倒重来,深刻体会到”教科书方案”与”真实工程”之间的巨大鸿沟。

> 行业每天都在往前冲:context engineering → skill → harness engineering……

> 但你自己写的 Agent 却慢、笨、不稳定,不断跑偏。

> 每次看到新架构,总以为”这次能解决所有问题”,用上之后却发现事情没有变化,甚至更差。

二、第一版架构:Plan & Execute 三层结构

2.1 初始设计

采用业界流行的 Plan & Execute 架构,思路直接:

【第一版架构】

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

│       Main Agent            │

│  (负责编排 / Orchestration)│

└──────────┬──────────────────┘

           │ 分发任务

    ┌──────┴──────┐

    ▼             ▼

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

│ Design │   │ Coding │

│Sub-Agent│  │Sub-Agent│

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

流程说明:

用户提交任务

Main Agent 进行整体规划(Orchestration Layer)

根据任务类型,将子任务分发给 Design Sub-Agent 或 Coding Sub-Agent

Sub-Agent 执行具体工作并返回结果

Main Agent 汇总输出

2.2 暴露的两个核心问题

问题 现象描述

小改动成本太高 改一行代码,仍需走完整流程:主 Agent → Sub-Agent → 执行,架构太重

主 Agent 越权 本应只负责编排,但它忍不住自己下场修改代码;提示词约束无效

> 💡 根本误区:把”Plan & Execute”这种工作方式,错误翻译成了一种系统架构形态(必须有 Planner、必须有 Executor、必须切得工整)。

三、第一次架构重构:Skill 替代 Sub-Agent

3.1 Skill 是什么?

Skill = 提示词的动态注入:在 Agent 需要某种能力时,将对应的 Skill(规则/提示词)注入到当前上下文,而不是新起一个 Sub-Agent。

3.2 改造流程对比

【改造前:Sub-Agent 架构】

用户任务

  │

  ▼

Main Agent(规划)

  │

  ├──→ Design Sub-Agent(独立上下文)──→ 设计结果

  │         ▲ 需要额外传递上下文信息

  └──→ Coding Sub-Agent(独立上下文)──→ 代码结果

问题:通信成本高,上下文传递复杂

【改造后:Skill 注入架构】

用户任务

  │

  ▼

Main Agent(单一上下文)

  │ 需要设计能力时

  ├──→ 注入 Design Skill ──→ 继续执行

  │ 需要编码能力时

  └──→ 注入 Coding Skill ──→ 继续执行

优势:天然继承上下文,无通信成本

3.3 改造效果

✅ 整体性能未下降,复杂任务反而有提升

✅ Token 开销变小

✅ 架构被”压平”,更简单、更顺滑

✅ 无需额外设计上下文传递机制

> 💡 核心结论:原来的 Sub-Agent 从一开始就是冗余设计,Skill 只是暴露了这个问题,而不是”替代”了 Sub-Agent。

四、Long Running Task:记忆系统的加入

4.1 真实问题的升级

从”跑通小任务”到”连续生成100段代码且质量不降”,这是完全不同量级的挑战——类比双十一高并发与普通电商访问的区别。

4.2 加入 To-Do List 记忆系统

【Long Running Task 执行流程(加入 To-Do List)】

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

│              Agent 执行循环               │

│                                          │

│  Step 1:读取 To-Do List,确认当前步骤    │

│      ↓                                   │

│  Step 2:执行当前步骤任务                 │

│      ↓                                   │

│  Step 3:输出结果                        │

│      ↓                                   │

│  Step 4:更新 To-Do List(标记已完成)    │

│      ↓                                   │

│  Step 5:重申下一步任务(Restatement)    │

│      ↓                                   │

│  重复循环,直到所有步骤完成               │

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

4.3 仍然出现的三个问题

即使有了 To-Do List,依然出现:

问题 现象 根因

步骤被合并/跳过 后期把多段代码合并生成,像在”赶工” 上下文焦虑

规则开始失效 前期认真遵守的 Skill 规则,后期当空气 Skill 被上下文”埋掉”

输出同质化 后期代码越来越像前面的复制改写 模型模仿前置上下文

五、核心机制:注意力分布与 Restatement

5.1 LLM 的注意力分布规律

【大语言模型上下文注意力分布示意】

注意力强度

    ▲

    │

高  │ ████                              ████

    │ ████  System Prompt               ████  最新输出附近

    │ ████                              ████

中  │        ░░░░░░░░░░░░░░░░░░░░░░░░

    │        ░  中间段(随长度增加注意力越弱)░

低  │        ░░░░░░░░░░░░░░░░░░░░░░░░

    └──────────────────────────────────────→

    开头                                结尾

    (System Prompt)              (最新生成内容)

一键获取完整项目代码

关键结论:

注意力最强:System Prompt 开头 + 当前输出附近

注意力最弱:上下文中间段(越长越弱)

规则失效 ≠ 规则没写进去,而是被”埋掉”看不见了

5.2 Restatement 机制

Restatement = 把重要信息不断重新放回”注意力高地”

【Restatement 工作原理】

每次生成后:

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

  │  …前99步的输出内容…              │  ← 注意力弱区

  │                                     │

  │  [当前步骤重申]:                   │

  │  – 现在做到第 X 步                  │  ← 注意力强区

  │  – 下一步是:XXX                    │  ← 注意力强区

  │  – 关键规则提醒:[Skill核心规则]    │  ← 注意力强区

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

                 ↓ 继续生成

> 💡 To-Do List 真正的价值不是”记录”,而是每步都在做 Restatement。

> 静静放在开头、后续不再提的 To-Do List,基本没有作用。

5.3 两类信息的分类管理

信息类型 特征 放置位置 原因

静态规则 全局适用、不变(代码风格、输出格式) System Prompt 始终可见,常驻注意力高地

动态信息 计划、To-Do List、阶段 Skill 上下文尾端(不断追加) 避免破坏 KV Cache;确保实时可见

5.4 KV Cache 与 System  Prompt 修改的代价

【KV Cache 机制说明】

正常情况(只追加新内容):

  [缓存✓] [缓存✓] [缓存✓] | [新增内容,只算新增部分]

                              ↑ 成本低

修改了 System Prompt(改动前面内容):

  [失效✗] [失效✗] [失效✗] [失效✗]  全部重新计算

  ↑ 成本高,应避免频繁修改

5.5 Restatement 内容的完整性

记忆系统不只需要 To-Do List,还需要:

【完整的 Restatement 内容结构】

每步执行后,重申内容包括:

  ├── To-Do List(当前进度 + 下一步)

  ├── 关键 Findings(本次执行的重要发现)

  ├── Plan(整体计划的关键约束)

  └── 阶段 Skill 核心规则(周期性重申)

作用:

  “告诉模型下一步是什么”+ “告诉模型下一步怎么做”

一键获取完整项目代码

六、第二次架构重构:Sub-Agent 回归(上下文隔离)

6.1 新问题:不该看到的被看到

前面的问题是”该看到的信息没被注意到”,现在的问题反转了:

模型会模仿已有代码的写法,输出越来越同质化

创意任务需要每段代码有独立思考,但共享上下文让模型”照抄前面”

> 这两个方向的问题,仅靠 Restatement 解决不了。

6.2 Sub-Agent 回归:上下文隔离

【第二次重构:精准上下文注入的 Sub-Agent】

Main Agent(持续运行)

  │

  │ 需要生成第 N 段代码时

  ▼

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

  │          Sub-Agent(新鲜上下文窗口)      │

  │                                          │

  │  注入内容(精准控制):                  │

  │  ✅ To-Do List(当前进度)               │

  │  ✅ Skill 关键规则(本次任务规则)       │

  │  ✅ Plan/Findings(必要背景)            │

  │  ❌ 前 N-1 段代码结果(屏蔽!)         │

  │                                          │

  │  → 独立思考,输出第 N 段代码             │

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

6.3 新旧 Sub-Agent 的本质区别

对比维度 第一版 Sub-Agent 重构后 Sub-Agent

存在理由 架构层次分离(强迫症式) 上下文隔离(必要的)

去掉后效果 系统变得更轻更好 系统变得更差

核心价值 无(冗余) 给局部任务提供干净的上下文

与 Restatement 关系 无关 结合使用:注入需要的,屏蔽不该有的

七、架构演进全貌

【AI Agent 架构演进路线】

第一版(Plan & Execute 三层)

  Main Agent

    ├── Design Sub-Agent

    └── Coding Sub-Agent

  问题:重、越权、通信成本高

       ↓

第一次重构(Skill 注入,压平架构)

  Main Agent(单一上下文)

    ├── 注入 Design Skill

    └── 注入 Coding Skill

  解决:通信成本,架构简化

  新问题:长任务不稳定(100步后失控)

       ↓

加入记忆系统(To-Do List + Restatement)

  Main Agent

    ├── To-Do List(步骤追踪)

    ├── Findings(执行发现)

    ├── Plan(全局计划)

    └── 周期性 Skill 规则重申

  解决:规则失效、上下文焦虑

  新问题:输出同质化(创意丧失)

       ↓

第二次重构(Sub-Agent 回归,上下文隔离)

  Main Agent(持续上下文)

    └── Sub-Agent(按需调用,精准注入上下文)

        ✅ 注入:进度 + 规则 + 背景

        ❌ 屏蔽:前序代码结果

  解决:输出同质化,创意保留

八、核心方法论总结

8.1 三大核心认知

Plan & Execute 是工作方式,不是架构形态

不要把它翻译成”必须有 Planner 和 Executor 两个组件”

注意力管理 > 信息堆砌

重要的信息放到模型注意力能看到的地方(开头 + 结尾),而不是塞更多内容

架构设计要解决真实问题

Sub-Agent 的存在要有必要性(上下文隔离),而不是为了看起来”高级”

8.2 工程实践清单

AI Agent 工程实践 Checklist

上下文管理:

  □ 静态全局规则 → System Prompt

  □ 动态信息(计划/进度/阶段规则)→ 追加到上下文尾端

  □ 避免频繁修改 System Prompt(KV Cache 代价)

记忆系统:

  □ To-Do List:每步执行后重申进度和下一步

  □ Findings:记录执行过程中的重要发现

  □ Plan:保留全局计划约束

  □ 关键 Skill 规则:周期性重申,不仅告知”做什么”还告知”怎么做”

Sub-Agent 使用原则:

  □ 需要上下文隔离时才用(不是为了架构好看)

  □ 精准控制注入内容:该有的要有,不该有的屏蔽

  □ 与 Restatement 结合:注入重要状态信息

Skill 使用:

  □ 提示词动态注入,避免冗余 Sub-Agent

  □ 如需 Sub-Agent,与 Restatement 结合使用

九、一句话提炼

> 真实的 AI Agent 工程,不是把新名词用上就能解决问题,而是要搞清楚每个症状背后的根本原因,再针对性地设计机制去解决它。

————————————————

版权声明:本文为CSDN博主「郭龙_Jack」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/guolong1983811/article/details/160523991