GUI 与前端
SuperAGI 相比裸框架的最大价值之一就是 GUI。今天讲 Next.js 前端怎么创建智能体、实时监控执行、逛工具市场——它是如何驱动整个后端的。
GUI 的角色
前端在 gui/(Next.js + TypeScript,仓库里有 gui/pages、gui/app、gui/public 等)。它的角色:让不写代码的人也能可视化地创建、配置、运行、监控智能体——通过调 Day 16 的 REST API 驱动后端。
就像生活中的电视遥控器:每个按键对应一条固定指令(界面动作 ↔ API 端点),遥控器本身完全不懂电视内部的电路(前端不懂智能体怎么跑)——它只负责把"你按了什么"翻译成信号发出去。今天全程用"遥控器和电视"来理解 GUI 和后端的关系。
gui/ 里也写了一份"智能体逻辑"(怎么循环、怎么调工具)。其实:前端零业务逻辑——你在 gui/ 里找不到任何 LLM 调用或循环代码,只有"组请求、发请求、渲染响应"。逻辑全在后端。POST /agents/create"变成"填个表单点按钮"、把"轮询 /agentexecutionfeeds"变成"实时滚动的思考流"。对用户,无需懂 API、无需写代码。这是 SuperAGI 作为"平台"(而非"框架/库")的关键——降低门槛、面向更广的用户。创建智能体界面
GUI 的"创建智能体"表单让你填:名字、目标(goals)、指令、选工具/工具包、选 LLM 模型、最大迭代数、工作流类型等——点提交就调 POST /agents/create(Day 16)。
{"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)拿来填下拉框的。实时监控
智能体运行时,GUI 展示它的"思考流"——每一步的 thoughts、调了什么工具、得到什么结果。这些来自 Day 02 的 Feed,通过 GET /agentexecutionfeeds 拿到。
轮询机制
GUI 用轮询(定期请求)而非 WebSocket 拿实时进度——每隔几秒调一次 /agentexecutionfeeds,把新的 feed 渲染出来。
T=0s GET feeds → 返回 2 条("我需要先搜索"、"调用 DuckDuckGoSearch")→ 渲染T=3s GET feeds → 返回 4 条(多了"搜到 5 条结果"、"开始总结")→ 追加渲染T=6s GET feeds → status=COMPLETED → 停止轮询就是每隔几秒问一次"有新内容吗",把增量贴到页面上——你看到的"实时滚动"其实是快速刷新拼出来的。
👨🏫 老师:主动推就是 WebSocket,但它要求双方一直保持一条"专线"(长连接)——断了要重连、多用户要管理一堆连接,工程上贵不少。
👶 小白:那轮询不浪费吗?每 3 秒发一个请求。
👨🏫 老师:智能体一步要跑几十秒,思考流是"秒级"更新——3 秒的延迟根本没人感觉到。用最便宜的方案满足真实需求,不为用不上的实时性付工程成本,这就是取舍。
轮询:前端定期问"有新进度吗"。简单(普通 HTTP 请求,不用维护长连接),代价是有延迟(轮询间隔)+ 额外请求。WebSocket(AutoGPT/OpenHands 用):服务器主动推,实时性更好,但要维护长连接。SuperAGI 选轮询——对"秒级更新的思考流"够用,实现更简单。这是个工程取舍:轮询简单但不够实时,WebSocket 实时但更复杂。没有绝对好坏,看需求——SuperAGI 认为智能体思考流不需要毫秒级实时,轮询足矣。
工具市场界面
GUI 有工具市场页面——浏览可用工具包、看详情/README、一键安装。这些调 Day 16 的 /toolkits/marketplace/* 端点,底层是 Day 12 的工具下载/登记链路。
/toolkits/get/install/{name} → 后端从 GitHub 下载、DB 登记(Day 12)→ 之后创建智能体时就能选这个工具包。可视化的工具市场让"给智能体加能力"像装 App 一样简单——这是 SuperAGI 生态的用户入口。人工审批交互
智能体配了需人工审批时,某步停在 WAITING_FOR_PERMISSION(Day 06/11)。GUI 检测到这个状态,显示"批准/拒绝"按钮,用户点击后调 /agentexecutionpermissions,智能体恢复运行。
WAITING_FOR_PERMISSION:它停在"我想给 500 人发邮件,批准吗?",你点"拒绝",事故变成一次未遂。敏感动作前强制停一下,是自主智能体上生产的安全带。前面反复讲的 Human-in-the-loop(人工审批),在 GUI 上就是:智能体要执行敏感操作(发邮件、删文件)时暂停,界面弹出"它想做 X,批准吗?",你点批准它才继续。这让你对"能自主行动的 AI"保有最终控制权——关键操作必须你点头。GUI 把"停下等人"这个后端机制(Day 06 的 WAITING_FOR_PERMISSION 状态)变成用户能操作的按钮。五个框架的 HITL 都需要这样的界面交互闭环。
为什么有 GUI(平台 vs 框架)
eino 是库(写代码用)、经典 AutoGPT 是脚本。SuperAGI 有完整 GUI——这是"平台"的标志。
今日小结 + 动手
🧠 今天你应该能回答
- 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