惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Security @ Cisco Blogs
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
F
Full Disclosure
博客园 - 【当耐特】
C
CERT Recently Published Vulnerability Notes
Engineering at Meta
Engineering at Meta
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Threatpost
I
Intezer
V2EX - 技术
V2EX - 技术
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The Hacker News
The Hacker News
小众软件
小众软件
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
N
News | PayPal Newsroom
MyScale Blog
MyScale Blog
AI
AI
Vercel News
Vercel News
Spread Privacy
Spread Privacy
美团技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
V
Vulnerabilities – Threatpost
Schneier on Security
Schneier on Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
Help Net Security
Help Net Security
Hacker News: Ask HN
Hacker News: Ask HN
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 热门话题
U
Unit 42
L
LangChain Blog
Recent Announcements
Recent Announcements

Steve Sun

【译文】我们现在是工厂工程师,不是产品工程师 【译文】循环工程的艺术 【译文】请不要搞个 【译文】自主长时运行编程 Agent 【译文】/goal + 损失函数:如何用一条指令在 30 小时内蒸馏一个产品 我怎么用 Hermes Agent 写代码 【译文】运行一个 AI-native 的工程团队 【译文】运行一个 AI-native 的工程团队 【译文】你可以直接这么说 【译文】你可以直接这么说 如何设计一个智能体(AI Agent) 【译文】为什么你的"AI-First"策略很可能是错的 【译文】为什么你的"AI-First"策略很可能是错的 记忆的层级,和 AI 智能体的记忆管理 AI Agent 工具对比:MCP 为什么只是个过渡产物 AI Agent 工具对比:MCP 为什么只是个过渡产物 外部化的J人 外部化的J人 Omarchy 一些中文环境下的设置 Omarchy 一些中文环境下的设置 AI Agent + 产品经理 = 产品测试工程师 AI Agent + 产品经理 = 产品测试工程师 遇到 Linux 系统 Kernel Panic 了该如何应对 遇到 Linux 系统 Kernel Panic 了该如何应对 如何与「老登」相处 Cursor等AI编程工具的背后原理 为什么不应该让AI生成单元测试
如何设计一个智能体(AI Agent)
Steve Sun · 2026-05-26 · via Steve Sun

AI 智能体(Agent)很有可能是未来AI软件设计的范式,所以对于大部分开发者、刚接触 vibe coding 的非技术人员,了解它的设计方式和背后的原理,就能在未来设计新时代的应用软件时更得心应手。

本文试图用通俗易懂的语言,让你理解什么是 AI Agent,它解决了什么问题,以它为基础设施,有哪些协议和工具将在未来派上用场。

本文目标读者:

  • Vibe coding 人群(快速做原型、边做边改)
  • 程序员
  • 刚接触编程的非技术用户

从第一性原理出发:Agent 框架到底在解决什么问题

模型很强,但不可靠

大模型(LLM)会“猜”,不会“保证”。 所以你不能把它当确定性程序(同样输入一定同样输出)。

需要解决的问题:

  • 如何让不稳定输出进入可控流程
  • 如何在失败时知道失败在哪里

现实中的任务结果往往不是一个简单的答复,而是一个完整的流程产出物

真实任务往往是:

  • 读信息
  • 做决策
  • 调用工具
  • 根据工具结果继续决策
  • 最终产出文档、代码或者其他

这意味着 Agent 的设计目标不仅局限在“一问一答”,而是一套“循环决策系统”。

用户不想等到最后才看到结果

在和AI交互过程中,用户通常希望:

  • 过程可见(streaming,流式显示)
  • 可以打断(abort,中止当前任务)
  • 可以中途追加指令(steer,在执行任务过程中给予引导)

所以系统必须天然支持实时交互,而不是一次性黑盒执行。

上下文会越来越大,成本会越来越高

对话越长,输入越大,速度越慢,费用越高,甚至会超限。 必须有“压缩历史、保留关键信息”的机制。

一个内核要服务多种交互方式

同一个 Agent 要能跑在:

  • 终端界面(TUI,Terminal UI,终端交互界面)
  • 远程调用(RPC,Remote Procedure Call,远程过程调用)
  • 未来可能的 Web 或 App

所以"智能内核"和"界面层"必须解耦(彼此独立,不绑死)。


从问题到需求,再到设计

需求清单

一个可用 Agent 框架至少要满足:

  1. 可循环:支持“思考 -> 调工具 -> 再思考”
  2. 可观察:每一步都能被 UI 或日志系统看到
  3. 可控制:能暂停、取消、插队、续跑
  4. 可恢复:失败后可重试,可继续上一次会话
  5. 可扩展:能加新工具、新模型、新前端
  6. 可治理:对成本、上下文、权限有边界

端到端流程图

以问题驱动需求,需求驱动设计的方式,我们就可以得出下面的流程图:

flowchart TD A[用户提出目标] --> B[Agent 理解当前任务] B --> C[是否需要工具?] C -- 否 --> D[直接给出答案] C -- 是 --> E[生成工具调用请求] E --> F[执行工具] F --> G[拿到工具结果] G --> H[结果是否足够?] H -- 否 --> B H -- 是 --> D D --> I[流式返回给用户] I --> J[用户可中断/追加要求] J --> B

这个图表达的是:

  • Agent 是闭环系统,不是单次函数。
  • “工具”是能力放大器,不是附属品。
  • 用户在回路内,而不是回路外

整体架构图

graph LR subgraph Interaction Layer[交互层] UI1[TUI/CLI] UI2[RPC/API] UI3[Web/App] end subgraph Runtime Layer[运行时层] SESSION[会话编排器] POLICY[策略中心: 重试/压缩/预算] end subgraph Core Layer[核心层] LOOP[Agent 决策循环] STATE[状态管理] EVENTS[事件总线] end subgraph Capability Layer[能力层] TOOLS[工具系统] MODEL[模型适配层] MEMORY[记忆与上下文管理] end UI1 --> SESSION UI2 --> SESSION UI3 --> SESSION SESSION --> LOOP SESSION --> POLICY LOOP <--> STATE LOOP --> EVENTS LOOP <--> TOOLS LOOP <--> MODEL POLICY <--> MEMORY MODEL --> LLM[外部模型服务]

组件图(理解“谁负责什么”)

flowchart LR USER[用户] ORCH[会话编排器] CORE[Agent Core] ADAPTER[模型适配器] TOOLRUN[工具执行器] OBS[观察与事件] USER <--> ORCH ORCH <--> CORE CORE <--> ADAPTER CORE <--> TOOLRUN CORE --> OBS OBS --> ORCH

职责拆分:

  • 会话编排器:处理用户输入、会话状态、重试和压缩策略。
  • Agent Core:只做“思考循环”和“状态推进”。
  • 模型适配器:屏蔽不同模型供应商差异。
  • 工具执行器:统一执行本地或远程工具。
  • 观察与事件:把过程变成可见信号给 UI/日志系统。

落地这些设计,必备协议和基础设计模式是什么

这一节是完成上面设计的“最小必需品”。需要从协议、设计模式角度考虑引入哪些工程实践。(好比盖摩天大楼,需要先定义好用什么材料、哪些通用的工程设计可以拿来就用、如何让建筑结构从力学上经得起时间验证)。

这些协议目前大部分由开发者按需设计实现,但是在不远的未来,很可能逐个出现标准规范。

必备协议(不全就会失控)

  1. 消息协议(Message Protocol)
  • 统一描述用户消息、助手消息、工具结果。
  1. 事件协议(Event Protocol)
  • 统一描述开始、更新、结束、错误、工具执行状态。
  • 目的:让 UI 和日志看到“过程”,不是只看到“结论”。
  1. 工具协议(Tool Contract)
  • 工具名、参数结构(Schema,字段规则)、执行返回格式必须固定。
  1. 流式协议(Streaming Contract)
  • 支持增量输出(delta,分段输出),保证用户实时反馈。
  1. 取消协议(Cancellation Contract)
  • 任意环节都应响应中止信号,避免“停不下来”。
  1. 错误协议(Error Contract)
  • 失败必须结构化(可机器处理),不能只靠字符串报错。

需要理解的基础设计模式

对于没有编程经验的读者,下面的一些编程基础设计模式,需要你先从其他资料中理解。

  1. 状态机(State Machine)
  • Agent 每一步都有状态转移(例如:等待输入 -> 生成输出 -> 工具执行 -> 回到生成)。
  1. 发布-订阅(Pub/Sub,发布与订阅)
  • Core 发事件,UI/日志订阅事件。
  • 好处:核心逻辑不依赖具体界面。
  1. 适配器(Adapter)
  • 把不同模型接口包装成统一调用方式。
  1. 策略模式(Strategy)
  • 重试策略、工具并发策略、压缩策略可替换。
  1. 管道与过滤(Pipeline)
  • 输入预处理 -> 模型调用 -> 工具执行 -> 后处理,是可插拔链路。
  1. 幂等与可恢复(Idempotency/Recoverability)
  • 同一操作重复执行不应产生灾难性副作用,失败后能恢复。

以 PI Agent 为例:设计理念与架构

前面是“通用 Agent 框架设计”。现在落到最近很火的极简框架 PI Agent

一起来看看这个框架是如何设计 Agent 的。

设计理念

  1. 内核最小化
  • Core 只负责循环、状态、事件、工具编排。
  1. 外围可插拔
  • 模型、工具、重试、上下文处理都可替换。
  1. 过程优先于结果
  • 先保证过程可见、可控,再追求“聪明输出”。
  1. 会话优先于请求
  • 把 Agent 当长期会话系统,不当单次 API 调用。

Agent Core 逻辑流程图

flowchart TD START[开始一次会话回合] --> TURN[开启 turn] TURN --> CALL[调用模型并流式接收输出] CALL --> CHECK{输出里有工具调用?} CHECK -- 否 --> STOPCHECK{是否停止?} CHECK -- 是 --> TOOL[执行工具批次] TOOL --> MERGE[把工具结果写回上下文] MERGE --> STOPCHECK STOPCHECK -- 停止 --> END[结束并发出结束事件] STOPCHECK -- 继续 --> NEXT[进入下一回合] NEXT --> TURN

Agent Core 组件关系图

graph TD CORE[Agent Core] S[State 状态存储] L[Loop 回合循环] E[Events 事件发射] T[Tool Executor 工具执行] M[Model Stream 模型流调用] Q[Queue 消息队列: steer/followUp] CORE --> S CORE --> L L --> M L --> T L --> E L --> Q T --> E M --> E E --> S

这个结构的价值是:

  • 交互层只看事件,不碰核心状态。
  • 模型替换不会改循环骨架。
  • 工具扩展不会破坏核心控制流。

小结

Agent 架构不是“让模型更聪明”,而是“让不确定的模型在可控系统里稳定工作”。

你可以把它记成这个公式:

$$ \text{可用 Agent} = \text{模型能力} \times \text{工程控制能力} $$

其中工程控制能力主要来自:

  • 循环设计
  • 协议设计
  • 事件可观察性
  • 可恢复与可扩展性

从目前的趋势看,这大概率将是下一代应用软件的基础范式。