首页/新闻资讯/正文详情

拆解Codeg多智能体委托实现:codeg-mcp伴生进程如何通过stdio MCP+UDS调度子Agent

发布时间:2026/9/25 22:35:13 来源:云帆数科 栏目:资讯中心
拆解Codeg多智能体委托实现:codeg-mcp伴生进程如何通过stdio MCP+UDS调度子Agent
拆解Codeg多智能体委托实现codeg-mcp伴生进程如何通过stdio MCPUDS调度子Agent【免费下载链接】codegCollaborative multi-agent AI coding workspace: aggregate sessions from Claude Code, Codex, OpenCode, Pi, Grok Build, etc. Desktop app, self-hosted server, or Docker.项目地址: https://gitcode.com/gh_mirrors/co/codegCodeg是一款协作式多智能体 AI 编码工作区其核心能力之一是多智能体委托Multi-Agent Delegation父 Agent 的 LLM 可以调用内置 MCP 工具把子任务派发给 Claude Code、Codex、OpenCode、Pi 等不同类型的 Agent 执行。本文拆解这套机制的实现——codeg-mcp 伴生进程如何通过stdio MCP 协议 UDSUnix Domain Socket调度子 Agent并顺带讲清异步任务、取消与恢复的完整链路。一、先看 Codeg 的多智能体协作界面Codeg 把来自不同 CLI Agent 的会话聚合成一个统一工作区委托出去的子 Agent 会话会以子线程卡片形式内嵌在父对话中右上角还有子 Agent 覆盖层可查看。任务看板同样支持可视化追踪每个委托任务的进展二、整体架构stdio 与 UDS 各管一段委托链路在 src-tauri/src/acp/delegation/mod.rs 的模块文档里有一张非常清晰的示意图父 LLM ─┐ │ ToolUse(delegate_to_agent, ...) ▼ 父 Agent CLI ──stdio──► codeg-mcp每次启动注入的伴生二进制 │ │ UDS / 命名管道token 鉴权 ▼ DelegationBroker委托代理核心 │ ▼ ConnectionManager 生成子 ACP 会话 │ │ 子会话 TurnComplete ▼ 父 LLM ◄── MCP tool_result ◄── 子 Agent 的最终输出两段通道各司其职stdiocodeg-mcp 是一个标准的 MCP Server父 Agent CLI如 Claude Code把它当作普通 MCP 工具调用走 stdin/stdout 的换行分隔 JSON-RPC 2.0支持并发分发notifications/cancelled可以截胡进行中的tools/call。协议实现在 src-tauri/src/acp/delegation/companion.rs二进制入口是 src-tauri/src/bin/codeg_mcp.rs。UDS伴生进程与 codeg 主进程之间走本机短链路——Unix 上是Unix Domain SocketWindows 上退化为命名管道并携带每次启动时主进程铸造的共享 token鉴权。主进程侧的接收端在 src-tauri/src/acp/delegation/listener.rs负责校验 token、把parent_connection_id解析为活跃的 ACP 连接后交给 Broker。为什么不用更省事的方案代码注释给出了答案transport.rsLLM 下发的task参数里可能包含换行符stdio 侧因为 Content-Length 头太复杂才用换行分隔而内部 UDS 可以做得更讲究。帧格式长度前缀一请求一响应UDS 帧格式非常朴素小端u32字节长度 对应长度的 UTF-8 JSON一问一答伴生进程每次tools/call都重新建连。用多几次 connect 换来一条极易测试、且无需复用的链路——因为从 LLM 视角看父会话同一时间只会发起一次委托调用并发由 Broker 在更高层处理。所有消息类型由带标签的BrokerMessage枚举表达call发起委托、status查询状态/长轮询、cancel_task取消、resume_task恢复、cancelfire-and-forget 的 MCP 取消通知。完整定义见 src-tauri/src/acp/delegation/transport.rs。⚠️ 注意一个版本约束codeg-mcp 与主进程 listener始终打包在同一发布产物里所以这条内部协议不带版本字段——旧版伴生进程对接新版 listener 是不受支持的状态宁可显式报 JSON-RPC 错误也不允许静默错乱。三、codeg-mcp 暴露的 6 个工具伴生进程按--features特性组开关最多暴露 6 个 MCP 工具companion.rs工具 schema 编译期嵌入 tool_schema.json工具作用说明delegate_to_agent发起委托异步立即返回task_id确认get_delegation_status查询结果支持轮询/长轮询可批量cancel_delegation取消任务按task_id精确停止resume_delegation恢复中断任务复用原task_id续跑不重复执行ask_user_question向用户提问阻塞等待多选卡片答复check_user_feedback拉取用户插话获取轮次中途的纠偏备注其中只有delegate_to_agent在 Broker 侧注册了真正的取消句柄取消状态/取消/反馈类往返只是抑制响应而对委托调用则能真正叫停子会话。四、DelegationBroker异步委托的心脏Broker 是整个模块最核心的协调单元src-tauri/src/acp/delegation/broker.rs。设计上有几个关键点1. 全异步无阻塞 oneshotdelegate_to_agent在子会话建立完成后就返回一个task_id确认ack结果通过get_delegation_status长轮询收集。运行中的任务只是runningmap 里的一条记录终态事件会原子地把它迁入completed缓存并唤醒长轮询等待者。2. 长轮询有边界get_delegation_status的wait_ms省略 立即快照显式0 无限期阻塞直到终态正数 有界等待且监听器侧设了60 秒硬上限listener.rs防止单次 MCP 调用把伴生进程的往返无界挂死。3. 结果缓存与兜底子 Agent 输出不存进 codeg 的数据库Broker 在内存里按父会话缓存终态文本单条上限 256 KiB每父会话总预算 512 MiBFIFO 淘汰。被淘汰的任务在查询状态时回落到数据库查终态状态完整输出则始终可以在子会话里查看。4. 取消的级联MCP 侧的notifications/cancelled→ 伴生进程按external_handle转发BrokerMessage::Cancel→ Broker 按句柄取消。当父会话整体消亡用户取消、断连时生命周期订阅者调用cancel_by_parent向该父会话的所有运行中子会话扇出取消 断连。而普通end_turn不会取消子会话——它们继续在后台跑这正是异步设计的意义所在。5. resume唯一的非一次性例外被取消、或崩溃遗留的in_progress任务可以经resume_delegation复活按记录的 agent 会话 id 重新挂接子连接复用原task_id与原父侧tool_use_id严格是续跑而非二次执行该工具不接受新的任务文本。五、伴生进程的取消竞态处理MCP 2024-11-05 / 2025-11-25 取消规范下的完整时序值得细看companion.rs伴生进程收到tools/callJSON-RPCid X铸造不透明的external_handle登记X → (handle, cancel_tx)后发起 UDS 往返若notifications/cancelled到达弹出登记项、触发cancel_tx并向 Broker 发送BrokerMessage::Cancel正在进行的tools/call任务观察到取消后放弃 UDS 读取按规范抑制响应若往返先于取消完成登记项正常移除迟到的取消通知静默忽略。六、前端把委托状态读回来线上传输的形状依赖宿主差异所以前端解析做了大量防御性设计参数可能被中继包裹在arguments/params/args等键下甚至双重 JSON 编码结果可能是裸文本、完整CallToolResult、Codex 的{result, error}信封或Wall time:…\nOutput:\njson包装——解析链逐层剥离src/lib/delegation-card.ts。关键区分ack 与 outcome异步委托下父工具的输出其实只是运行中确认若把它当结果渲染卡片会过早亮起 ok 徽章parseToolOutput。状态解析优先级waiting子会话卡在权限确认 实时绑定 持久化 meta 错误通道 运行中 ack 终态结果实现在 resolveDelegationStatus供内联消息流卡片与右上角覆盖层共用同一套逻辑避免两处漂移。工作台伴生工具task_progress、task_complete、create_automation等的解析在 src/lib/codeg-mcp-tool.ts把每次调用真正关心的那一个参数会话 id、进度文案、结论判定提炼成单行展示。工作区内的分屏布局也方便父/子会话对照查看七、关键源码导航想深入阅读建议按这条路径走模块路径架构总览含链路图src-tauri/src/acp/delegation/mod.rs异步 Brokersrc-tauri/src/acp/delegation/broker.rs伴生进程 MCP 协议src-tauri/src/acp/delegation/companion.rsUDS 帧格式与消息src-tauri/src/acp/delegation/transport.rs主进程监听端src-tauri/src/acp/delegation/listener.rs套接字生命周期服务src-tauri/src/acp/delegation/service.rs前端委托卡片src/lib/delegation-card.ts前端状态上下文src/contexts/delegation-context.tsx此外src-tauri/tests/delegation_e2e_uds.rs 提供了基于真实 UDS 的端到端测试是理解协议细节的最佳活文档。八、小结Codeg 的多智能体委托把三个关注点切得很干净stdio MCP让任何支持 MCP 的 Agent CLI 无需改造即可会委托协议标准、宿主差异由解析层吸收UDS token伴生进程与主进程间的最小化、可鉴权、可测试的本机链路异步 Brokertask_idack 长轮询 取消级联 中断恢复让派活这件事既不打断父 LLM 的回合又可追踪、可叫停、可续跑。这套设计对任何想实现Agent 调 Agent的项目都是不错的参考样板——如果你正在做类似的多智能体系统值得先读 delegation 模块 的文档注释十分钟就能建立完整心智模型。【免费下载链接】codegCollaborative multi-agent AI coding workspace: aggregate sessions from Claude Code, Codex, OpenCode, Pi, Grok Build, etc. Desktop app, self-hosted server, or Docker.项目地址: https://gitcode.com/gh_mirrors/co/codeg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

GEOFlow AI标题库使用指南:掌握10万条分批生成、恢复与智能去重
GEOFlow AI标题库使用指南:掌握10万条分批生成、恢复与智能去重

GEOFlow AI标题库使用指南:掌握10万条分批生成、恢复与智能去重 【免费下载链接】GEOFlow Open-source GEO content engineering and multi-site distribution platform with AI quality inspection, illustrated admin help, hosted sites, browser-assisted publi… · 2026/9/25 22:35:07

使用PHP将Word文件转换为PDF文件的三种方式
使用PHP将Word文件转换为PDF文件的三种方式

最近工作中遇到了需要把word文件转换为pdf文件功能,尝试了几种方式,在此记录一下,供大家参考。环境准备:服务器:CentOS 7.8PHP:7.2一、 使用 PHPWord Dompdf(纯 PHP,无需系统软件&a… · 2026/9/25 22:34:28

企业微信数据与智能专区 SDK 实战指南:会话记录获取与消息统计(Senparc.Weixin.Work DataIntelligenceApi)
企业微信数据与智能专区 SDK 实战指南:会话记录获取与消息统计(Senparc.Weixin.Work DataIntelligenceApi)

后端即时通讯金融科技 【免费下载链接】WeiXinMPSDK 微信全平台 .NET SDK, Senparc.Weixin for C#,支持 .NET Framework 及 .NET Core、.NET 10.0。已支持微信公众号、小程序、小游戏、微信支付、企业微信/企业号、开放平台、JSSDK、微信周边等全平台。 … · 2026/9/25 22:34:09

张勇律师满意度怎么样,客户认可吗
张勇律师满意度怎么样,客户认可吗

宁波本地深耕婚姻家事领域二十余年,浙江宇邦律师事务所张勇律师专注为宁波全域当事人提供离婚纠纷、财产分割、抚养权争议、遗产继承等专业婚姻家事法律服务,以专业务实的方案维护当事人合法权益。 核心实力拆解 执业资质与平台支撑张勇律师毕业于北京大… · 2026/9/25 23:07:59

PaddleOCR图片旋转矫正实战:方向分类器提升OCR识别率的完整方案
PaddleOCR图片旋转矫正实战:方向分类器提升OCR识别率的完整方案

简介:一套基于PaddleOCR的图片旋转矫正代码包,面向图像预处理、文档数字化与OCR流程优化场景,帮助开发者快速解决因拍摄角度、扫描偏差等造成的图片歪斜问题。压缩包共包含45个文件,涵盖Python脚本、预训练的ONNX模型、测试图片、… · 2026/9/25 23:07:52

exit code 0是假胜利?一文搞懂进程退出码与排障方法
exit code 0是假胜利?一文搞懂进程退出码与排障方法

写代码这几年,几乎每天都会在开发工具下方看到一行绿色的小字:Process finished with exit code 0。第一次见到它的时候我还是个刚学编程的小白,心里想的是:这行字到底什么意思?是程序没问题了,还是它在跟我… · 2026/9/25 23:07:20

中文法律大模型实战:从基座选择到RAG增强的部署避坑指南
中文法律大模型实战:从基座选择到RAG增强的部署避坑指南

简介:LexiLaw是一款面向中文法律领域微调的大语言模型资源包,基于ChatGLM-6B架构,针对法律条款解读、案例分析、法规咨询等任务优化。适合法律科技开发者、NLP研究者和法律专业学生快速搭建智能问答原型,解决通用模型在法律场景下… · 2026/9/25 23:07:07

Teigha4 .NET读写DWG:不装AutoCAD也能解析图纸
Teigha4 .NET读写DWG:不装AutoCAD也能解析图纸

简介:Teigha(原名OpenDwg/DWGdirect)是脱离AutoCAD环境读写DWG文件的经典开发库,本资源面向.NET平台二次开发人员,以VB.net和C#双语言源码演示了不启动AutoCAD即可提取图形数据的实现思路。压缩包共165个文件、约61.5M… · 2026/9/25 23:06:34

统信UOS内网离线安装Flash插件全流程与避坑指南
统信UOS内网离线安装Flash插件全流程与避坑指南

简介:针对统信UOS内置浏览器无法加载Flash插件、且内网环境阻碍在线安装的问题,这份资源打包了一套离线安装与排错方案,主要面向政企运维人员、UOS普通用户及系统管理员,帮助恢复旧式Flash网页内容的正常显示。资源包共6个文件&am… · 2026/9/25 23:06:34

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

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

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

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

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码