OpenDots 架构全景:AG-UI、TanStack AI 与 CopilotKit Threads 如何串联常驻智能体
OpenDots 架构全景AG-UI、TanStack AI 与 CopilotKit Threads 如何串联常驻智能体【免费下载链接】OpenDotsYour always-on AI coworkers that move between text, calls, and Slack.项目地址: https://gitcode.com/gh_mirrors/op/OpenDotsOpenDots 是一个自托管的 AI 智能体工作区模板让常驻智能体Dot在文字聊天、语音通话和 Slack 之间无缝切换。它的架构由三块积木咬合而成AG-UI协议负责把智能体的消息、工具调用和状态流式推送给前端界面TanStack AI负责模型流式输出与服务端工具执行CopilotKit ThreadsIntelligence负责把对话变成可持久化、可回放的常驻线程。本文带你用一张图看懂这三者如何串成一条完整的智能体流水线。一张图看懂 OpenDots 智能体架构OpenDots 的数据流可以抽象成一条单向管道再回灌到持久化层浏览器React SDK→ AG-UI → CopilotKit Runtime → DotAgent → TanStack AI → 模型同时 Runtime ↔ ThreadsIntelligence双向读写对话。理解这条链路的关键在于分清三个角色谁说话前端 React SDK、谁传输AG-UI 事件流、谁思考TanStack AI 模型。下面逐个拆解。AG-UI把智能体接到界面的协议AG-UI 是 OpenDots 的神经末梢。它定义了流式消息、工具调用和智能体状态如何在后端与前端组件之间传递。智能体的每一次动作——浏览网页、读取文件、执行命令——都以 AG-UI 事件的形式实时出现在聊天窗口内无需刷新。核心实现在 DotAgent它继承自 AG-UI 客户端的AbstractAgent其run()方法返回一个事件流Observable把底层模型的每一步产出包装成标准 AG-UI 事件向上传递。前端则由 Chat.tsx 通过useAgent订阅这条流agent.messages逐帧更新工具调用通过CopilotChatToolCallsView渲染成卡片形成边跑边看的实时体验。TanStack AI驱动对话与工具执行如果说 AG-UI 负责传话TanStack AI 就负责动脑。在 dot-agent.ts 中DotAgent内部用 TanStack AI 的chat()构建智能体循环配合openaiCompatibleText适配器对接任意 OpenAI 兼容模型。工具系统是关键纽带。OpenDots 的服务端工具网页读取、Space 页面、Dot 计算机通过 tanstack-tools.ts 桥接为 TanStack AI 的toolDefinition().server(execute)让模型既能说也能做。AG-UI 输入则通过convertInputToTanStackAI转成模型可消费的格式——这一步正是三个技术栈的交汇点AG-UI 事件 → TanStack AI 消息 → 模型输出 → 再转回 AG-UI 事件。CopilotKit Threads让对话常驻可回放常驻是 OpenDots 的灵魂。普通聊天关掉就没了而 OpenDots 的对话是持久线程。这由 platform.ts 中的CopilotKitIntelligence与CopilotRuntime完成创建线程createThread()为每个 Dot 对话分配唯一 ID见 createConversation。读取历史getThreadMessages()拉取最近消息供服务端续写上下文见 history。服务端续跑语音与定时任务不依赖浏览器而是用 headless.ts 的runThreadTurn直接连回 Runtime让智能体在原线程里继续工作。前端侧App.tsx 用CopilotKitProvider包裹整个应用并指向/api/copilotkit运行时每个线程以chat-${thread.id}作为本地 Agent 标识实现一条对话 一个常驻上下文。三者如何串成一条流水线把上面三块拼起来一条完整请求是这样流动的用户在 Chat.tsx 发送消息 →copilotkit.runAgent()。请求经 AG-UI 进入 platform.ts 的handle()先做作用域校验再交给 Runtime。CopilotRuntime调度对应 Dot 的 DotAgent。DotAgent用TanStack AI跑模型与工具循环产出 AG-UI 事件流。事件回流前端渲染同时Threads把整轮对话持久化供下次或语音/定时任务续用。人类审批human-in-the-loop 卡片架构还有一个亮点人在环human-in-the-loop。当智能体准备保存页面时Chat.tsx 的useHumanInTheLoop会挂起工具调用弹出批准并保存 / 拒绝卡片等待你的决定后智能体才继续。这同样走 AG-UI 事件通道——一个工具调用可以被暂停为一次用户决策体现了协议对交互式流程的支持。小结三块积木一个常驻智能体角色技术职责传输AG-UI流式消息、工具调用、状态同步到界面思考TanStack AI模型流式输出 服务端工具执行记忆CopilotKit Threads对话持久化、可回放、服务端续跑OpenDots 没有发明新轮子而是把AG-UI 的传输能力、TanStack AI 的执行能力、CopilotKit Threads 的持久化能力精准咬合才让一个Dot真正做到文字、通话、Slack 全渠道常驻、随时续接。想动手改造可从 dot-agent.ts 与 platform.ts 入手它们是整条链路的两个枢纽。【免费下载链接】OpenDotsYour always-on AI coworkers that move between text, calls, and Slack.项目地址: https://gitcode.com/gh_mirrors/op/OpenDots创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考