Day 18 / 共 20 天 · 第 4 周 平台/异步/生态

GUI 与前端

SuperAGI 相比裸框架的最大价值之一就是 GUI。今天讲 Next.js 前端怎么创建智能体、实时监控执行、逛工具市场——它是如何驱动整个后端的。

📍 你在整门课的位置 · 第 4 周 平台/异步/生态
D16 API D17 Celery D18 GUI(API 的图形外壳) D19 部署 D20 收官
L01

GUI 的角色

🤔 GUI 是不是又实现了一套逻辑?和后端会不会重复? 不会。GUI 一行业务逻辑都不重写——它不知道怎么跑循环、不碰数据库。它只干一件事:把你在页面上的操作翻译成对 Day 16 那些 API 的调用。所有"聪明"都在后端。

前端在 gui/(Next.js + TypeScript,仓库里有 gui/pagesgui/appgui/public 等)。它的角色:让不写代码的人也能可视化地创建、配置、运行、监控智能体——通过调 Day 16 的 REST API 驱动后端。

💡 一句话本质 GUI = 后端 REST API 的"图形遥控器"。填表单=组请求,点按钮=发请求,滚动的思考流=轮询响应的渲染。理解了"每个界面动作 ↔ 哪个 API",就理解了整个前端。
就像生活中的电视遥控器:每个按键对应一条固定指令(界面动作 ↔ API 端点),遥控器本身完全不懂电视内部的电路(前端不懂智能体怎么跑)——它只负责把"你按了什么"翻译成信号发出去。今天全程用"遥控器和电视"来理解 GUI 和后端的关系。
⚠️ 小白常误以为:前端 gui/ 里也写了一份"智能体逻辑"(怎么循环、怎么调工具)。其实:前端零业务逻辑——你在 gui/ 里找不到任何 LLM 调用或循环代码,只有"组请求、发请求、渲染响应"。逻辑全在后端。
GUI (Next.js) 📝 创建表单 [提交] ▶ 运行按钮 📜 思考流(滚动) ✅ 批准/拒绝 后端 REST API (D16) POST /agents/create POST /agentexecutions/add GET /agentexecutionfeeds ⟳ POST …permissions 界面动作 ↔ API 一一对应,前端不含业务逻辑
GUI 把每个界面动作翻译成一次 Day 16 的 API 调用——它是后端能力的"图形遥控器"。
GUI = 后端能力的可视化外壳 后端的一切能力(创建智能体、跑、看进度、装工具)都通过 REST API 暴露(Day 16)。GUI 就是这些 API 的图形化外壳——把"调 POST /agents/create"变成"填个表单点按钮"、把"轮询 /agentexecutionfeeds"变成"实时滚动的思考流"。对用户,无需懂 API、无需写代码。这是 SuperAGI 作为"平台"(而非"框架/库")的关键——降低门槛、面向更广的用户。
L02

创建智能体界面

GUI 的"创建智能体"表单让你填:名字、目标(goals)、指令、选工具/工具包、选 LLM 模型、最大迭代数、工作流类型等——点提交就调 POST /agents/create(Day 16)。

📝 表单字段 → 请求体(一一对应) 界面上你:填名字「调研助手」、目标框写「调研 AI 新闻并总结」、工具下拉勾 DuckDuckGoSearch、模型选 gpt-4、迭代拉到 15。点提交,前端组装成:
{"name":"调研助手","goal":["调研 AI 新闻并总结"],"tools":[7],"model":"gpt-4","max_iterations":15}
正是 Day 16 AgentConfigInput 的形状——表单就是这个 Pydantic 模型的可视化输入器。
读法:表单字段一一对应后端 AgentConfigInput(Day 16)——goal/tools/model/max_iterations…用户在界面上勾选,前端组装成请求发给后端。工具列表、模型列表、工作流列表都是前端调对应 API(如 /organisations/{id}/agent_workflows/llm_models)拿来填下拉框的。
L03

实时监控

智能体运行时,GUI 展示它的"思考流"——每一步的 thoughts、调了什么工具、得到什么结果。这些来自 Day 02 的 Feed,通过 GET /agentexecutionfeeds 拿到。

"看着 AI 干活"的价值 自主智能体是个"黑盒"——它自己循环,你不知道它在干嘛。实时监控把黑盒打开:你看到它每一步的思考("我需要先搜索…")、动作(调用了 DuckDuckGoSearch)、结果。好处:① 能及时发现它跑偏、手动停止(省钱);② 能理解它的推理过程;③ 出问题能调试。可观测性对自主智能体是刚需——你得能"看见"它在想什么、做什么。Feed 的三重作用(记忆/展示/审计,Day 02)在这兑现"展示"。
L04

轮询机制

GUI 用轮询(定期请求)而非 WebSocket 拿实时进度——每隔几秒调一次 /agentexecutionfeeds,把新的 feed 渲染出来。

📝 轮询看起来是什么样 T=0s GET feeds → 返回 2 条("我需要先搜索"、"调用 DuckDuckGoSearch")→ 渲染
T=3s GET feeds → 返回 4 条(多了"搜到 5 条结果"、"开始总结")→ 追加渲染
T=6s GET feeds → status=COMPLETED → 停止轮询
就是每隔几秒问一次"有新内容吗",把增量贴到页面上——你看到的"实时滚动"其实是快速刷新拼出来的。
👶🏫 对话:为什么不用更"高级"的 WebSocket? 👶 小白:轮询听起来好笨,一遍遍地问。为什么不让服务器有新内容时主动推给我?
👨‍🏫 老师:主动推就是 WebSocket,但它要求双方一直保持一条"专线"(长连接)——断了要重连、多用户要管理一堆连接,工程上贵不少。
👶 小白:那轮询不浪费吗?每 3 秒发一个请求。
👨‍🏫 老师:智能体一步要跑几十秒,思考流是"秒级"更新——3 秒的延迟根本没人感觉到。用最便宜的方案满足真实需求,不为用不上的实时性付工程成本,这就是取舍。
轮询 vs WebSocket(和 AutoGPT/OpenHands 对比) 轮询就像遥控器世界里的"自己盯屏幕":遥控器(GUI)发出指令后,电视不会反过来"哔"一声通知你——你只能每隔几秒抬头看一眼屏幕上的进度条(GET feeds);WebSocket 则像电视装了提醒音,有变化主动响。
轮询:前端定期问"有新进度吗"。简单(普通 HTTP 请求,不用维护长连接),代价是有延迟(轮询间隔)+ 额外请求。WebSocket(AutoGPT/OpenHands 用):服务器主动推,实时性更好,但要维护长连接。SuperAGI 选轮询——对"秒级更新的思考流"够用,实现更简单。这是个工程取舍:轮询简单但不够实时,WebSocket 实时但更复杂。没有绝对好坏,看需求——SuperAGI 认为智能体思考流不需要毫秒级实时,轮询足矣。
L05

工具市场界面

GUI 有工具市场页面——浏览可用工具包、看详情/README、一键安装。这些调 Day 16 的 /toolkits/marketplace/* 端点,底层是 Day 12 的工具下载/登记链路。

用户在市场界面点"安装某工具包" → 前端调 /toolkits/get/install/{name} → 后端从 GitHub 下载、DB 登记(Day 12)→ 之后创建智能体时就能选这个工具包。可视化的工具市场让"给智能体加能力"像装 App 一样简单——这是 SuperAGI 生态的用户入口。
L06

人工审批交互

智能体配了需人工审批时,某步停在 WAITING_FOR_PERMISSION(Day 06/11)。GUI 检测到这个状态,显示"批准/拒绝"按钮,用户点击后调 /agentexecutionpermissions,智能体恢复运行。

🤔 错误驱动:如果没有这个机制,会出什么事故? 想象一个配了邮件工具的"客户跟进智能体",某步 LLM 产生幻觉,决定"给全部 500 个客户发一封道歉邮件"——没有审批机制,它下一秒就真发出去了,你是在客户回复轰炸中才知道的。有了 WAITING_FOR_PERMISSION:它停在"我想给 500 人发邮件,批准吗?",你点"拒绝",事故变成一次未遂。敏感动作前强制停一下,是自主智能体上生产的安全带。
HITL 的界面落地 这就像遥控器上的"确认键":调音量随便按(普通操作直接执行),但"恢复出厂设置"这种大动作,电视会弹出"确定吗?"等你再按一次 OK——大动作必须二次确认。
前面反复讲的 Human-in-the-loop(人工审批),在 GUI 上就是:智能体要执行敏感操作(发邮件、删文件)时暂停,界面弹出"它想做 X,批准吗?",你点批准它才继续。这让你对"能自主行动的 AI"保有最终控制权——关键操作必须你点头。GUI 把"停下等人"这个后端机制(Day 06 的 WAITING_FOR_PERMISSION 状态)变成用户能操作的按钮。五个框架的 HITL 都需要这样的界面交互闭环。
L07

为什么有 GUI(平台 vs 框架)

eino 是库(写代码用)、经典 AutoGPT 是脚本。SuperAGI 有完整 GUI——这是"平台"的标志。

GUI 带来什么?降低门槛:非程序员也能建智能体(填表单,不写代码);② 可视化运维:看进度、管理多个智能体、逛市场;③ 协作:团队共享平台。代价:更重的技术栈(Next.js 前端 + 一堆服务,Day 04)、更多维护。SuperAGI 和 AutoGPT Platform 都选择"平台化"(带 GUI)——目标用户更广(含非程序员),但工程复杂度高。eino/CrewAI 是"框架/库"——面向开发者,更轻。没有对错,是不同定位。
L08

今日小结 + 动手

🧠 今天你应该能回答

  • GUI 的角色?为什么说它是"后端能力的可视化外壳"?
  • 创建智能体表单对应后端什么?
  • 实时监控的价值?数据来自哪(Feed)?
  • 轮询 vs WebSocket 的取舍?SuperAGI 为什么选轮询?
  • GUI 有 vs 没有(平台 vs 框架)的取舍?

✋ 动手

# 前端结构
ls gui/ | head
ls gui/pages 2>/dev/null | head
# 前端调的后端接口(Day 16 回顾)
grep -rn 'agentexecutionfeeds\|agents/create\|toolkits/marketplace' gui/ 2>/dev/null | head
明天预告 · Day 19部署与配置——config.yaml 详解、docker 变体(GPU/本地 LLM)、生产部署考量、如何接本地开源模型。
← Day 17 Celery Day 19 · 部署与配置 →