Files
socaichat/doc/uigoto/GPTui.md
T
gongzhiyongandClaude Sonnet 4.6 0a2b339550 feat: implement Generative UI — Agent Workspace + workspace_card SSE protocol
## Backend
- Add workspace_card SSE event protocol: {id, name, props, merge}
- Add _extract_llm_text / _maybe_emit_workspace_card helpers in chat.py
- Refactor all tools to dual-output format: {llm_text, ui: {name, props}}
  - kb_search → KnowledgeResultCard
  - ticket_list/detail → TicketSummaryCard / TicketDetailCard
  - web_search → SearchResultCard
  - generate_document → DocumentResultCard
  - sandbox_run → SandboxResultCard
- Update SYSTEM_PROMPT: instruct LLM not to repeat tool data (UI shows it)

## Frontend
- Three-column layout: sidebar + chat + Agent Workspace (360px right panel)
- WorkspaceSession state model with ActivityNode + WorkspaceCard
- New components/workspace/: AgentWorkspace, ActivityTimeline, WorkspaceCardRenderer
- 6 card components: Knowledge/Ticket/Search/Document/Sandbox/ErrorCard
- GeminiChat: workspace state management, SSE routing for workspace_card events
- GeminiMessage: replace TracePanel with lightweight activity summary line
- lib/api.ts: add WorkspaceSession/ActivityNode/WorkspaceCard types

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 02:57:09 +08:00

2.5 KiB

GPTui

结论 1:按当前项目继续改,能不能做到接近 langgraphjs-gen-ui-examples 的效果?

能。

但前提是目标不能继续停留在当前这版 trace panel,而要升级成更接近 LangGraph generative UI 的交互:

  • 不是只在消息里挂一个执行过程折叠区
  • 而是让 agent 输出的事件驱动 UI 渲染
  • tool / state / result 不只是文本,而是驱动卡片、侧边栏、嵌入式交互组件
  • 最终形态应是:chat + agent activity + generative UI component

也就是说,当前项目不是不能做,而是目前只做到轻量 trace MVP,还没有进入 generative UI 这一层。

如果继续沿现有项目演进,理论上可以做到接近 langgraphjs-gen-ui-examples 的效果,但需要补一层明确的 UI 渲染契约,例如:

  • 后端输出结构化 UI schema / UI event
  • 前端根据 schema 决定渲染哪种组件
  • tool 结果不只进消息正文,还能驱动独立的 UI 容器
  • chat 区与右侧面板 / 卡片式区域协同渲染

所以结论是:

  • 按当前项目继续改,能做到接近那个效果
  • 但需要把目标从 status + tool trace + answer 升级为 generative UI
  • 现在本地代码还没到那个层级

结论 2:直接去改 https://github.com/langchain-ai/langgraphjs-gen-ui-examples,兼容当前后端,能不能改成功?

可以改成功。

但我判断,这条路不如在现有项目里演进划算。

原因是这个示例仓库默认假设的基础设施和当前项目并不一致:

  • 它默认是 LangGraph.js
  • 配套 Agent Chat UI / LangGraph Server 的交互方式
  • 有自己的一套 graph/server 协议与 generative UI 组件约定

而当前项目实际是:

  • Python 后端
  • 自己的 SSE 协议
  • 自己的 React 前端组件结构
  • 当前只实现到文本流 + tool trace + status 的轻量形态

所以如果硬把 langgraphjs-gen-ui-examples 改造成兼容当前后端,本质上需要改的是:

  • 前端 transport 层
  • 事件协议适配层
  • UI 渲染契约
  • graph/tool 输出结构

这不属于“小改兼容”,而是“借它的 UI 思路,重新接你自己的后端协议”。

所以更准确的判断是:

  • 技术上可以改成功
  • 但不是最低成本路线
  • 最合理的方式,是参考它的交互设计与生成式 UI 思路,在当前项目里重做一层 generative UI 适配

最终结论:

  • 现有项目继续改,能做出接近它的效果,而且这条路更合理
  • 直接改那个示例项目去兼容当前后端,也能成,但会更别扭,成本更高