Dr. Claw系统架构解析:React、Express、WebSocket三层协同与多Agent流式调度原理
【免费下载链接】dr-clawA Super AI Lab with massive AI Doctors as Assistants. Best IDE for Research via AI Power.项目地址https://gitcode.com/gh_mirrors/dr/dr-claw点击查看免费下载Dr. Claw 是一款开源的全栈 AI 科研工作台支持 Claude Code、Codex、Gemini CLI、OpenRouter 等多家 AI 引擎协同工作。它的系统架构采用经典的 React 前端 Express 后端 WebSocket 实时通道三层设计并通过统一的多 Agent 流式调度层实现 7 种 AI 引擎的并行会话管理。本文将带你完整梳理这套架构的分工与数据流。三层架构总览各司其职Dr. Claw 的架构可以概括为一个入口、三条通道层核心技术职责关键入口前端React 18 Vite TailwindCSS聊天、研究看板、技能库、Git 面板等 UIsrc/App.tsx后端Express SQLite (better-sqlite3)REST API、认证、项目管理、技能路由server/index.js实时层ws (WebSocket)AI 流式输出、终端转发、会话状态同步server/index.js三者通过同一个 Node.js 进程协同Express 负责请求-响应类操作登录、项目列表、Git 提交WebSocket 负责长连接流式操作AI 逐字输出、终端输入输出前端通过 React Context 把两条通道统一封装给组件使用。React 前端层Provider 嵌套与懒加载前端入口 src/App.tsx 只有一棵简洁的 Provider 树I18nextProvider → ThemeProvider → AuthProvider → ProtectedRoute → AuthenticatedWorkspace这种嵌套保证了国际化、主题、认证状态在所有页面共享。工作区 src/components/app/AuthenticatedWorkspace.tsx 再叠加WebSocketProvider、TaskMasterProvider并挂载路由整个工作区组件本身也是懒加载的配合 src/utils/lazyWithRetry.tsx 的失败重试机制首次打开速度明显更快。WebSocket 连接管理的关键设计src/contexts/WebSocketContext.tsx 是前端实时通信的核心有三个值得学习的设计带 Token 的握手连接 URL 携带 JWT/ws?token...HTTPS 环境下自动升级为wss:见 buildWebSocketUrl消息队列防丢失AI 流式输出时消息到达极快React 状态更新可能跟不上。前端用一个messageQueueRef队列 setTimeout逐条排水drain保证每条消息都能触发一次渲染见 drainQueue断线重连与连接去重维护retryCountRef指数退避重连并在onopen中校验wsRef.current是否为最新 socket避免半开连接泄漏。会话历史加载则在 src/components/chat/hooks/useChatSessionState.ts 中实现了 LRU 消息缓存最多缓存 10 个会话切换会话标签时秒开这是多会话并行体验的关键。Express 后端层路由、认证与本地存储后端入口 server/index.js 在单进程内挂载了 20 多个 REST 路由覆盖项目管理、Git、MCP、技能、模型、计算节点、新闻等模块app.use(/api/projects, authenticateToken, projectsRoutes); app.use(/api/git, authenticateToken, gitRoutes); app.use(/api/skills, authenticateToken, skillsRoutes); app.use(/api/models, authenticateToken, modelsRoutes); app.use(/api/agent, agentRoutes); // 对外 Agent API所有/api/*路由先经过validateApiKey再叠加 JWT 中间件authenticateToken认证逻辑集中在 server/middleware/auth.js。数据存储选用本地SQLitebetter-sqlite3数据库初始化与迁移逻辑在 server/database/db.js支持通过DATABASE_PATH环境变量自定义位置并内置旧库自动迁移。另一个亮点是文件监听驱动的会话同步后端用 chokidar 监听~/.claude/projects、~/.codex/sessions等各引擎的会话目录见 PROVIDER_WATCH_PATHS任何 AI 工具在外部产生的新会话文件都会触发防抖广播让 Web 端侧边栏无刷新更新——这正是 Dr. Claw 能统一管理多家 AI 工具会话的基础。WebSocket 层一条通道服务三类流量Dr. Claw 只创建了一个WebSocketServerserver/index.js但通过消息类型type字段在同一连接上区分三类流量流量类别典型消息类型用途AI 会话claude-command、codex-command、gemini-command、abort-session发起/中止各引擎对话终端init、input、resizenode-pty 伪终端双向转发状态同步check-session-status、get-active-sessions、telemetry-settings查询活跃会话、埋点开关连接建立前会执行verifyClient校验 JWT未认证的连接直接被拒绝authenticateWebSocket。所有在线客户端保存在connectedClients集合中项目/会话变更时向全体客户端广播实现多标签页、多设备实时同步。多Agent流式调度一套管道接入7种AI引擎这是 Dr. Claw 架构中最值得拆解的部分。每种 AI 引擎对应一个独立的会话模块但都遵循同一个接口契约——启动函数(command, options, ws)AI 引擎调度模块接入方式Claude Codeserver/claude-sdk.jsClaude Agent SDK原生无子进程Cursorserver/cursor-cli.jsCLI 子进程Codexserver/openai-codex.jsCodex SDKGeminiserver/gemini-cli.js / server/gemini-api.jsCLI 或 REST API 双通道OpenRouterserver/openrouter.jsREST API本地 GPUserver/local-gpu.js本地推理Nano Claudeserver/nano-claude-code.js轻量内置引擎流式输出的三段式处理以 Claude 通道为例server/claude-sdk.js调度流程非常清晰捕获会话 ID首条消息带回session_id前端随即收到session-created事件侧边栏立即出现新会话逐条转发for await (const message of queryInstance)异步迭代器消费引擎输出每条消息经transformMessage归一化后以claude-response类型写入 WebSocket前端逐字渲染收尾事件回合结束时发送token-budgetToken 用量统计和claude-complete含退出码后台清理任务用Promise.allSettled延后执行不阻塞 UI 收尾。这套会话创建 → 流式转发 → 完成事件的协议对 7 种引擎完全一致前端因此无需为不同引擎写不同逻辑——换引擎就像换频道UI 无感知。双通道输出WebSocket 之外还有 SSE除了浏览器端的 WebSocketDr. Claw 还通过 server/routes/agent.js 暴露POST /api/agentREST 接口外部脚本可以用 API Key 触发任意引擎通过SSEServer-Sent Events接收流式结果甚至自动创建 Git 分支和 Pull Request。SSEStreamWriter与 WebSocket 的send接口签名一致因此同一套引擎代码可以无缝服务两种传输方式。一条消息的完整旅程把三层串起来你发出一条消息后发生的事情是前端聊天组件调用sendMessage({type: claude-command, command, options})经WebSocketProvider发出鉴权后端verifyClient在握手阶段已校验 JWT消息直接进入分发器调度分发器按type前缀路由到对应引擎模块claude-command→queryClaudeSDK并启动流式消费循环回流引擎输出逐条转换为claude-response经connectedClients精准回发给发起方同时向其他在线客户端广播会话状态变更落盘会话索引通过recordIndexedSession写入本地 SQLiteserver/utils/sessionIndex.js历史消息仍保留在引擎原生存储如~/.claude/projects由文件监听器兜底同步渲染前端消息队列逐条排水React 组件流式渲染文本、工具调用与 Token 预算。架构要点速查单进程多通道Express 与 WebSocketServer 共享一个 Node 进程状态活跃会话表、客户端集合无需跨进程同步架构简单且低延迟传输无关的引擎接口send()/end()/setSessionId()三个方法构成writer 契约WebSocket、SSE、响应收集器ResponseCollector都是它的适配器前后端解耦的状态同步REST 管 CRUDWebSocket 管实时文件监听管外部工具产生的会话三管齐下保证任意入口的状态最终一致桌面端零改造Electron 主进程electron/main.mjs只是把这套 Node 服务作为子进程拉起并加载到 BrowserWindow同一套代码同时服务于浏览器、PWA 与桌面应用。对新手而言Dr. Claw 的代码库是一个极佳的学习样本想学 React Context 与懒加载看 src/contexts/想学 Express 路由与 JWT 鉴权看 server/routes/想学 WebSocket 流式协议设计重点精读 server/index.js 的消息分发器和 server/claude-sdk.js 的调度循环即可。赞分享【免费下载链接】dr-clawA Super AI Lab with massive AI Doctors as Assistants. Best IDE for Research via AI Power.项目地址https://gitcode.com/gh_mirrors/dr/dr-claw点击查看免费下载相关推荐FIT 框架系统架构深度解析低代码编排、FEL 原语与 FIT 调度的三层协同设计FIT 框架系统架构深度解析低代码编排、FEL 原语与 FIT 调度的三层协同设计 本文基于 ModelEngine/fit framework 仓库的《Mo人工智能大模型AI 应用后端AI AgentRAG流程编排微服务Toonflow 决策层 Agent 调度机制解析六阶段制作流水线与三层 Agent 协作架构Toonflow 决策层 Agent 调度机制解析六阶段制作流水线与三层 Agent 协作架构 Toonflow 将小说/剧本 → 动画短剧的整个制作过程人工智能大模型AI 应用AI Agent媒体生成后端桌面应用Docker 部署 wvp-GB28181-pro首次构建 5~15 分钟交付带管理页的国标视频平台Docker 部署 wvp GB28181 pro首次构建 5~15 分钟交付带管理页的国标视频平台 用 Docker 部署 wvp GB28181 pro后端音视频前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Grafana Mimir 术语表深度解析:Blocks storage、Hash ring、WAL 等核心概念全解

Grafana Mimir 术语表深度解析:Blocks storage、Hash ring、WAL 等核心概念全解

时序数据库后端数据存储可观测性云原生 【免费下载链接】mimir Grafana Mimir provides horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus. 项目地址: https://gitcode.com/gh_mirrors/mimir/mimir 点击查看 免费下载 Gr…

2026/10/15 16:41:51 阅读更多 →
AI率从92%降到0%!六个步骤彻底“去AI化”改写文本

AI率从92%降到0%!六个步骤彻底“去AI化”改写文本

“AI率92%”这个数字,我太熟了。 前阵子我用AI辅助写了篇文章,初稿检测出来AI率高达92%,基本就是一台无情的打字机。后来我花了一晚上打磨,再查的时候,AI率直接压到了0%,而且查重也顺利通过。 整个过程&…

2026/10/15 16:41:51 阅读更多 →
JSON实战样本:6类可直接运行的生产级JSON示例

JSON实战样本:6类可直接运行的生产级JSON示例

简介:本资源是一份面向初学者与Web开发者的JSON格式实践学习包,聚焦数据交换核心技能的掌握与工程化应用。内容以典型JSON结构示例为切入点,覆盖键值对、嵌套对象、数组、布尔与null等基础语法,并配套Java环境下的完整解析与生成实…

2026/10/15 16:41:51 阅读更多 →

最新新闻

Seldon Core 2 实战:用 Pipeline 把 CIFAR10 图像分类器与异常检测、漂移监控打包为生产级推理服务

Seldon Core 2 实战:用 Pipeline 把 CIFAR10 图像分类器与异常检测、漂移监控打包为生产级推理服务

人工智能大模型MLOpsLLMOps模型推理服务云原生后端 【免费下载链接】seldon-core An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models 项目地址: https://gitcode.com/gh_mirrors/se/seldon-core 点击查看…

2026/10/15 17:32:52 阅读更多 →
树形DP实战:将功补过类问题的状态设计与转移方程

树形DP实战:将功补过类问题的状态设计与转移方程

1. 从标题拆解这道题到底在考什么 “将功补过”配上“树形DP”,这个组合一出来,有经验的选手基本就能嗅到味道了。这不是一道单纯的树上背包,也不是简单的最大独立集,它把“功”和“过”这两个对立的概念同时挂在树结构上&#xf…

2026/10/15 17:32:52 阅读更多 →
海波龙(Oracle 产品)实施商怎么选?7个评估维度+服务商能力对比

海波龙(Oracle 产品)实施商怎么选?7个评估维度+服务商能力对比

海波龙(Oracle 产品)实施商怎么选?7个评估维度服务商能力对比海波龙(Oracle 产品)选型时,企业往往把注意力放在产品模块和功能演示上,等到项目进入第二年,真正决定体验的却是当初挑的…

2026/10/15 17:32:52 阅读更多 →
STM32F103C8T6驱动SG90舵机:PWM源码与调试避坑指南

STM32F103C8T6驱动SG90舵机:PWM源码与调试避坑指南

简介:这份源码面向嵌入式初学者与需要快速验证舵机控制的开发者,围绕STM32F103C8T6如何驱动SG90舵机展开,解决从PWM信号生成到角度精确控制的实际问题。资源包共4个文件,包含2个C源文件、1个头文件与1张舵机接口示意图&#xff0c…

2026/10/15 17:32:52 阅读更多 →
ZLG Python二次开发实战:CAN总线数据采集与避坑指南

ZLG Python二次开发实战:CAN总线数据采集与避坑指南

简介:这份资源是面向嵌入式与物联网开发者的ZLG DTU系列Python二次开发示例包,重点围绕DTU 200UWGR及CAN-DTU系列无线数据传输单元,帮助解决官方demo在特定环境下无法直接运行、功能不足等问题。包内共124个文件,以98个xml配置与接…

2026/10/15 17:32:52 阅读更多 →
herdr-gpui Teleport 深度解析:带着未提交改动、运行中进程和 Agent 会话跨主机迁移工作树

herdr-gpui Teleport 深度解析:带着未提交改动、运行中进程和 Agent 会话跨主机迁移工作树

【免费下载链接】herdr-gpui Native client for Herdr on macOS, Linux, and Windows, built with Rust and GPUI. View terminal sessions, workspaces, Git worktrees, and agent activity through your local Herdr daemon. 项目地址: https://gitcode.com/gh_mi…

2026/10/15 17:31:51 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →