313. Agent:什么是智能体(篇二:案例篇)

20260723_7.webp|936

素材

篇一:概念篇:Agent:什么是智能体(篇一:概念篇)
篇二:案例篇:拆解我们正在使用的 ChatGPT 桌面客户端。

篇一先讲概念,篇二再用我每天深度使用的 ChatGPT 做案例,与这些概念一一对应。

下面拆解我们正在使用的 ChatGPT

就从 ChatGPT 改写这篇文章 Agent:什么是智能体(篇二:案例篇)开始:

313. Agent:什么是智能体(篇二:案例篇) 图表 1

普通回答停在“建议怎么写”。 Agent 要让文件真的发生变化,并证明改对了。

先看全貌:四个部分怎样配合

篇一把 Agent 压成四个部分。放进这次任务:

核心部分在 ChatGPT 中负责什么
Model,大脑理解目标,决定下一步
Context,工作台放入本轮需要的目标、规则、文件和工具结果
Tools,手脚读取文件、运行命令、搜索网页、修改环境
Runtime / Harness,运行系统组装 Context、执行工具、保存状态、处理权限和验收

313. Agent:什么是智能体(篇二:案例篇) 图表 2

还可以从三层诊断问题:

层次核心问题这次任务里的例子
Prompt任务怎么说是补充旧文,还是重写为案例篇
Context这一轮给模型看什么当前文章、项目规则、官方资料、报错
Harness整个系统怎样跑搜索文件、执行补丁、回填错误、检查结果

Prompt 是 Context 的一部分。Harness 每一轮组装 Context,再把模型的决定变成行动。

第一层:一句话进入系统,会变成一张工作单

界面上只有一个输入框,模型收到的却不只是用户消息:

  • 当前目标和验收条件。
  • 项目目录和相关文件。
  • Thread 中仍然有效的历史。
  • AGENTS.md 和命中的 Skill。
  • 可用工具与权限。
  • 最近的工具结果和报错。

313. Agent:什么是智能体(篇二:案例篇) 图表 3

Context 不是整个仓库和全部历史。它是这一轮最相关的工作材料

  • 太少,模型会猜
  • 太多,重点会被淹没

第二层:模型做决定,Runtime 做执行

模型主要产生两类结果:

  1. 生成内容。
  2. 生成工具调用意图。

313. Agent:什么是智能体(篇二:案例篇) 图表 4

例如,模型可以提出:

text
工具:exec_command
参数:搜索编号 313 的笔记

这只是一张申请单。Runtime 还要检查工具、参数和权限,执行后再把成功结果或错误放回 Context。

模型负责决定下一步。Runtime 负责让下一步真实发生。

这只是根据官方产品行为与通用 Agent 架构做的工程抽象

第三层:AGENTS.md 管长期规则,Skill 管具体工序

模型会写 Markdown,却不知道这个项目的规矩。例如,下面的都是我的一些要求:

  • os/notes 是长期笔记真源。
  • 教程结尾必须有“考考你”和“参考”。
  • 修改文件要保留用户已有改动。
  • 用户没要求时,不能提交或推送。

这些规则来自两处:

机制大白话这次任务里的作用
AGENTS.md项目合同规定长期边界、权限和协作方式
Skill专项工序卡规定这类教程怎样读取、改写和验收

313. Agent:什么是智能体(篇二:案例篇) 图表 5

官方文档说明,处理项目时会从项目根目录走到当前工作目录,沿途读取 AGENTS.md;越靠近当前目录的规则越具体。

Skill 的价值,是把反复验证过的做法按需放进任务,不让用户每次重写一大段 Prompt。

第四层:失败结果会推动下一轮决定

这次任务真的失败过

ChatGPT 最初按旧文件名读取篇二,终端返回:

text
No such file or directory

因为我改名文章标题名称,改为 “xxx,篇二:案例篇

它没有继续猜路径,而是用 rg --files 搜索稳定编号 313,找到当前文件后继续。

313. Agent:什么是智能体(篇二:案例篇) 图表 6

错误在这里不是终点,而是新的 Observation

行动结果进入 Context,模型据此重新决定下一步。

这就是最小 Agent Loop。Agent 的关键能力不是永远不犯错,而是看见真实结果后会不会转弯

第五层:Tools 让 ChatGPT 接触真实环境

工具大白话适合做什么
文件与补丁读文件、改文件代码和文档修改
Shell使用终端搜索、构建、测试、Git 检查
Web Search查询外部资料最新文档、发布记录和事实核对
Browser操作网页页面流程、DOM、Console、Network
Computer Use看屏幕并点击没有 API、必须操作图形界面的任务
Appshots拍下当前窗口给 Context 一张准确的现场照片
Plugins / MCP连接外部服务读取数据或执行外部动作

313. Agent:什么是智能体(篇二:案例篇) 图表 7

工具数量不是关键。关键是边界清楚、结果可靠、错误可读,高风险动作会停下来。

前端开发为什么需要 Browser 和 Computer Use

只改代码、不打开页面,像修完汽车却不点火

Browser 可以检查 DOM、CSS、Console、Network 和性能信息。Computer Use 可以操作必须通过鼠标、键盘和屏幕完成的流程。

313. Agent:什么是智能体(篇二:案例篇) 图表 8

有稳定 API 或 Plugin 时,优先使用结构化工具;只有界面本身才包含答案时,再用 Computer Use。

第六层:Context、State、Thread 和 Project 各管一层

长任务不能靠模型无限记忆。

概念保存什么
Context Window这一轮真正送给模型的信息
State任务进行到哪里,刚发生了什么
Thread一项任务跨多轮的消息和状态
Project多个任务共享的目录、文件、规则和来源

313. Agent:什么是智能体(篇二:案例篇) 图表 9

Project 像工作间,Thread 像一张工单,Context 像这一刻铺在桌上的材料

文件、Git、项目规则和工具结果保存在模型之外。Runtime 每一轮重新筛选并组装 Context,长任务才可以暂停、恢复和继续

第七层:运行环境决定动作发生在哪里

环境大白话适合什么
Local在当前桌面直接施工人和 Agent 一起修改当前项目
Worktree开一个隔离工位并行尝试,避免污染当前工作区
Cloud交给远程工位后台或远程执行

这次任务运行在 Local:

text
/Users/liguwe/832

所以文件修改会直接出现在当前工作树。

313. Agent:什么是智能体(篇二:案例篇) 图表 10

多 Agent 本质上是多条独立循环。每个任务有自己的 Thread、Context 和 State;需要同时改仓库时,再用 Worktree 隔离文件现场。

难点不在多开几个模型,而在任务拆分、环境隔离、结果汇总和冲突处理。

关于 worktree ,可以参考 精读:一个人如何管理几十个 AI 程序员?

第八层:安全有三道关

安全机制管什么
Guardrails / 任务规则这个动作该不该做
Sandbox技术上能访问哪些文件、网络和程序
Approval高风险或越界动作由谁批准

313. Agent:什么是智能体(篇二:案例篇) 图表 11

Ask for approval 模式允许常规的 Workspace 读写和本地命令,越过范围时会停下来。
Full access 放开的范围更大,风险也更高。

但技术上能做,不代表任务已经授权。这次只允许改文章,没有要求提交、推送或公开发布,所以 ChatGPT 必须停在改写和验证。

第九层:Skill、Plugin、MCP 解决三个问题

名称解决什么类比
Skill这类任务应该怎样做工序卡
Plugin怎样安装和分发一组能力工具包
MCP外部工具和资料怎样接入 Agent标准插口

313. Agent:什么是智能体(篇二:案例篇) 图表 12

这次任务只需要 new-note Skill 和现有工具。只有任务需要访问当前尚未接入的外部系统时,才需要相应 Plugin 或 MCP 连接。

第十层:Goal 管长任务,人负责纠正和签字

普通问答、一次小修改、几轮内能完成的任务,使用普通 Thread 就够了。

Goal 适合这类任务:

  • 需要运行几十轮甚至更久。
  • 中途可能暂停,之后还要继续。
  • 下一步取决于文件、测试或网页的真实结果。
  • 必须持续保存进度,并反复验证是否完成。

例如:升级大型仓库的依赖并修完全部测试、迁移几十个前端页面并逐页验收、收集大量资料后生成完整研究报告。

Goal 不是“更聪明的模型”,而是 Runtime 管理长任务的一种方式。它至少要写清三件事:

Goal 的组成解决什么问题用本文举例
Outcome最终环境要变成什么样得到一篇以 ChatGPT 为案例的 Agent 教程
Constraints执行过程中不能越过哪些边界使用当前资料、大白话、保留核心、不擅自提交
Verification用什么证据判断真的完成检查正文、链接、Mermaid、编号和 diff

Constraints 约束条件、限制条件

313. Agent:什么是智能体(篇二:案例篇) 图表 13

这次文章改写可以在普通 Thread 中完成。上面的表格只是用这个熟悉的任务,说明 Goal 应该怎样定义。

Goal 可以暂停、恢复和修改,但不会自动扩大权限。

人也一直在循环里:追加要求、纠正方向、批准高风险动作、检查 diff,并决定是否继续。这篇文章从概念篇和案例篇的拆分,到案例改成 ChatGPT,再到现在删掉啰嗦内容,就是连续的人类反馈。

313. Agent:什么是智能体(篇二:案例篇) 图表 14

Human-in-the-loop 不是失败补丁,而是 Agent 产品的正常组成。

第十一层:Trace 和 Eval 负责证明“真的完成”

模型内部怎样想,不是验收证据。真正有用的是可观察的过程和结果:

概念这次任务里的证据
Trace读了哪些文件、调用了什么工具、哪里报错、补丁改了什么
OutputChatGPT 最后的完成说明
Outcome文件确实变化,目标内容存在,没有越权操作
Eval编号、围栏、链接和 diff 检查

313. Agent:什么是智能体(篇二:案例篇) 图表 15

最终回复类似接口返回 200 OK。文件、diff 和检查结果才是数据库里的真实状态。

Review 面板还可能同时展示用户原有的未提交修改。Agent 必须区分本次修改、已有修改和无关文件,不能把整个 diff 都算成自己的成果。

从前端视角看,界面是一张监督控制台

Agent 产品不只需要输入框和流式文字,还要让用户看见并控制五类状态:

313. Agent:什么是智能体(篇二:案例篇) 图表 16

前端至少要回答:Agent 正在做什么、碰了什么、怎样暂停、怎样恢复、结果怎样审查,以及多个任务怎样避免互相污染。

把这次任务连成一张时序图

下面的官方网站代表 ChatGPT 的官方文章和教程

313. Agent:什么是智能体(篇二:案例篇) 图表 17

从用户视角看,是“我提要求,它改文章”。

从系统视角看,是多轮“决定—执行—观察—再决定”。

源码:把主循环压成伪代码

下面不是 OpenAI 内部源码,只是把前面的产品行为翻译成 JavaScript:

js
async function runAgent(task) {
  const state = await loadThreadState(task.threadId);

  for (let turn = 0; turn < state.maxTurns; turn += 1) {
    const context = await buildContext({
      goal: task.goal,
      project: task.project,
      instructions: await loadProjectRules(),
      skills: await loadRelevantSkills(task),
      tools: await listAllowedTools(),
      history: state.history,
      observations: state.recentObservations,
    });

    const next = await model.decide(context);

    if (next.type === "final") {
      const evidence = await verifyOutcome(task, state);

      if (evidence.passed) {
        return { answer: next.answer, evidence };
      }

      state.addObservation(evidence);
      continue;
    }

    const action = await permissions.check(next.toolCall);
    const result = await tools.execute(action);

    state.addObservation(result);
    await saveThreadState(state);
  }

  throw new Error("超过最大轮数,停止并交给人处理");
}

真正难的不是 for 循环,而是怎样选择 Context、设计工具、限制权限、保存 State、处理错误并验证 Outcome。

模型决定智力上限。Runtime 决定这份智力能否稳定落到真实世界。

最后:把 ChatGPT 还原成 Agent 系统

前面的能力可以拆成三张图。

Agent 怎样完成一轮行动

313. Agent:什么是智能体(篇二:案例篇) 图表 18

模型决定下一步,Runtime 执行,再把环境结果送回下一轮。

Runtime 靠什么管理任务

313. Agent:什么是智能体(篇二:案例篇) 图表 19

这些能力负责保存进度、限制边界,并让人看见和干预执行过程。

系统怎样判断真的完成

313. Agent:什么是智能体(篇二:案例篇) 图表 20

Agent 说“完成”只是 Output。真实环境通过 Eval,才算完成。

最后压成一句话:

ChatGPT 把模型放进真实项目,给它 Context、工具、状态和权限,让它根据行动结果持续工作,再把过程和证据交给人验收。

模型是大脑,Tools 是手脚,Runtime 是神经系统,Project 是工作间,Thread 是工单,Sandbox 是围栏,Approval 是门卫,Trace 和 Eval 是验收记录。

考考你

ChatGPT 为什么不只是一个模型?

模型只决定下一步。完整 Agent 还需要 Context、Tools、Runtime、State、权限、执行环境和验收。

Tool Call 为什么不等于工具执行?

Tool Call 只是模型给出的工具名和参数。Runtime 还要校验权限、真正执行,并把结果放回 Context。

怎样判断问题出在 Prompt、Context 还是 Harness?

目标不清先查 Prompt;材料错误或缺失先查 Context;动作没执行、结果没回填或没验收先查 Harness。

Context、State、Thread 和 Project 有什么区别?

Context 是本轮输入,State 是当前进度,Thread 保存一项任务的连续记录,Project 保存多个任务共享的工作环境。

Guardrails、Sandbox 和 Approval 各管什么?

Guardrails 判断该不该做,Sandbox 限制技术访问范围,Approval 让人批准高风险或越界动作。

Skill、Plugin 和 MCP 怎样区分?

Skill 提供做法,Plugin 打包和分发能力,MCP 连接外部工具与资料。

什么时候值得使用 Goal?

任务需要运行很多轮、保存进度、暂停恢复,并持续根据真实结果验收时。普通问答和小修改使用普通 Thread 即可。

为什么多 Agent 通常需要 Worktree?

不同 Worktree 隔离文件现场,避免多个 Agent 在同一工作区互相覆盖。它解决环境冲突,不增加模型智力。

怎样判断 ChatGPT 真的完成了任务?

检查 Outcome:目标文件是否改变、diff 是否符合范围、验证是否通过、高风险动作是否保持未执行。最终回复本身不是完成证据。

参考