为什么要做成工作台
我更喜欢把 AI Agent 做成一个工作台,而不是一个只有输入框的聊天页面。聊天窗口适合临时问答,但内容创作、资料沉淀和工具调用需要更清楚的上下文。一个真正可用的 Agent 工作台,应该能同时看见对话、工具轨迹、素材库、历史记录和结构化结果。
ShayuAgent 的主线是「热点 / 网页 / 视频理解 -> 选题 / 总结 -> 素材沉淀」。这个链路听起来很长,但拆开之后并不神秘:输入层负责拿素材,推理层负责决定下一步,工具层负责调用外部能力,存储层负责把可复用的东西留下来。
四层拆分
第一层是前端工作台。React 和 Vite 负责把聊天区、Trace 面板、素材面板和工具目录组织起来。这里最重要的不是炫,而是让用户知道 Agent 正在做什么、做到了哪一步、有没有失败。
第二层是 Spring Boot 后端。后端承接登录、会话隔离、SSE 流式输出、工具调用记录和业务接口。AgentScope Java 被放在这一层,负责 ReAct 推理、工具注册和会话状态。
第三层是 MCP 工具服务。Python FastMCP 把热榜、网页正文抽取、视频解析、音乐搜索、翻译等工具独立出去。这样做的好处是工具可以单独升级,后端不需要把所有爬取逻辑和解析逻辑都塞进 Java 里。
第四层是数据层。MySQL 保存用户、会话、消息、阅读记录、选题记录和 AgentScope session。Agent 能不能长期变好,很大程度上取决于这些中间结果有没有被结构化沉淀下来。
我会坚持的边界
工作台不是把所有能力塞在一起,而是让每层边界清楚。前端不直接碰模型密钥,MCP 工具不负责用户权限,后端不把工具结果当成可信输入,数据库也不存无法追溯的黑盒内容。
我现在越来越觉得,Agent 项目最难的不是接一个模型,而是把「可观察、可回放、可维护」做出来。能看见工具调用链路,才能知道一次回答到底是模型想出来的,还是某个工具真的拿到了证据。
后续可以继续打磨
这套架构还可以继续往前走。比如给 Backend 和 MCP 之间加 OpenTelemetry,把每次工具调用的耗时和错误码串起来;再比如给 Prompt 模板、结构化输出 Schema 和工具权限做版本管理。
一个好用的 AI Agent 不应该只是聪明,它还要稳定、诚实、能解释自己的工作过程。这也是我做 ShayuAgent 时最想留下来的东西。