
从割裂的 HUMAN 与 McpAgent 机制,到统一的企业级协同工作平台 — 产品架构与设计构思
📑 目录
企业级协同工作经历了三次范式演进,每一次都伴随着"办理人"概念的扩展:
📈 协同范式演进
我们正处在 3.0 智能协同 的黎明期。在这个时代,一次审批可能需要人确认、Agent 巡检、LLM 分析三者会签;一次代码合可能需要人评审、自动化 Agent 执行测试、LLM 生成变更说明三者协同。传统的"待办列表只服务人"的假设已经失效。
在 3.0 时代,企业内部的协同系统往往同时存在两套并行的机制:
这两套机制在配置、路由、待办、UI 上完全割裂,导致一系列体验问题:
⚠️ 割裂带来的痛点
本方案的产品愿景是:让所有类型的协同任务在同一套框架下可见、可控、可协同。
具体而言,我们希望构建一个统一协同平台,使得:
McpAgent 采用 三层通讯架构,实现远程多机自治与 Agent 间协同。

图 1 · McpAgent 三层通讯架构 — L3 A2A 协议 / L2 事件桥接 / L1 REST 自治
McpAgentNode 启动后形成完整的自治闭环:
// 启动序列
启动 → registerToNetwork // 1. 向 AiServer 注册节点
→ login // 2. 获取 sessionId
→ reportSkills // 3. 上报已安装 Skill 列表
→ reportResourceStatus // 4. 上报 CPU/内存
→ joinSceneGroup // 5. 加入场景组
→ startHeartbeat (10s) // 6. 心跳保活
→ startResourceReporter (60s)
→ startCommandProcessor (1s poll)
// 运行期:远程命令异步处理
commandQueue.poll() →
INSTALL → SkillInstallProcessor.install()
UNINSTALL → SkillInstallProcessor.uninstall()
INVOKE → 本地 Skill 执行 → A2A 回调
REPORT → 状态同步
// 停止序列
停止 → leaveSceneGroup → deregisterFromNetwork → VfsSyncService.stopSyncAGENT_EVENT 节点执行时,通过 AgentEventConfig.audienceType 指定事件订阅范围:
受众模式 | 路由方式 | 典型场景 |
|---|---|---|
SAME_PROCESS | 内存回调 | 同流程实例内 Agent 协作 |
SCENE_GROUP | A2A 路由到场景组 | 项目内多 Agent 协同 |
CAPABILITY | 按 capabilityId 匹配 | 按能力自动发现 Agent |
AGENT | A2A 点对点 | 指定 AgentId 调用 |
BROADCAST | 全网广播 | 紧急通知/全局事件 |

图 2 · HUMAN 与 McpAgent 机制对比矩阵 — 优势互补但能力割裂
🔍 核心洞察
HUMAN 方案在待办管理、协同策略、办理人推导、UI 可见性上完善,但缺乏远程能力;McpAgent 方案在远程多机、A2A 协议上独有优势,但无待办、无协同策略、UI 割裂。两者正好互补,是统一的天然基础。
采用 四层统一模型,自下而上逐层抽象:

图 3 · 四层统一协同架构 — 自下而上逐层抽象,每层独立演进
扩展 ActivityExtensionConfig.performerList 结构,同时支持四种办理人类型:
{
"performerType": "USER | AGENT | LLM | REMOTE_MACHINE",
"performerId": "zhangsan | mcp-node-01 | gpt-4 | remote-studio-01",
"performerName": "张三 | NLP节点01 | GPT-4 | 远程工作室01",
// 远程通讯配置
"endpoint": "http://192.168.1.10:8099",
"protocol": "LOCAL | HTTP_REST | A2A | MCP_STDIO | MCP_SSE | LLM_API",
"auth": {
"type": "SESSION | TOKEN | API_KEY | NONE",
"credentials": "${vault:agent-cred-01}"
},
// 协同策略(与 HUMAN 对齐)
"delegateStrategy": "SINGLE | SIGN_OFF | OR_SIGN | SEQUENTIAL | CANDIDATE_POOL",
"candidateUsers": ["user1", "user2"],
"candidateGroups": ["patent-examiner"],
// 类型特化配置
"llmConfig": { "provider": "openai", "model": "gpt-4", "temperature": 0.7 },
"agentConfig": { "skillId": "patent_form_review", "timeout": 30000 },
// SLA 管理
"sla": {
"dueTime": "2026-07-22 18:00",
"priority": "HIGH | MEDIUM | LOW",
"escalation": { "onTimeout": "notify_manager", "escalateTo": "lisi" }
}
}在 AgentConfigDTO.java 中补齐 8 个字段,使其与 HUMAN 节点的 performerList 对齐:
字段 | 类型 | 用途 | 对应 HUMAN 字段 |
|---|---|---|---|
agentEndpoint | String | 远程 Agent 调用地址 | — |
protocol | String | 通讯协议 | — |
auth | Map | 认证配置 | — |
delegateStrategy | String | 协同策略 | performerList[].delegateStrategy |
performerList | List<Map> | 多办理人候选 | performerList |
candidateUsers | List<String> | 候选用户 | candidateUsers |
candidateGroups | List<String> | 候选组 | candidateGroups |
sla | Map | SLA 配置 | — |
新增 RouteToEngine.resolveUnifiedPerformer() 方法,按 performerType 统一分派:
public Map<String, Object> resolveUnifiedPerformer(ProcessInstance instance,
ActivityDefinition actDef) {
List<Map<String, Object>> performerList = extractPerformerList(actDef);
if (performerList == null || performerList.isEmpty()) {
return defaultUserPerformer(instance); // 默认当前用户
}
if (performerList.size() == 1) {
return performerList.get(0); // 单一办理人
}
// 多办理人:根据 delegateStrategy 决策
String strategy = (String) performerList.get(0).getOrDefault("delegateStrategy", "SINGLE");
switch (strategy.toUpperCase()) {
case "SIGN_OFF": // 会签:返回全部办理人
case "OR_SIGN": // 或签:候选池
case "SEQUENTIAL": // 顺序:返回序列
return buildMultiResult(strategy, performerList);
case "CANDIDATE_POOL":
return buildPoolResult(performerList);
default:
return performerList.get(0);
}
}在原 executeRouteTo 基础上增加 nextAssigneeUserId 参数,传递给 BPM 引擎:
public Map<String, Object> executeRouteToWithAssignee(ProcessInstance instance,
String fromActivityId,
String toActivityDefId,
String nextAssigneeUserId) {
// null 时回退到当前用户(向后兼容)
String resolvedAssignee = nextAssigneeUserId != null
? nextAssigneeUserId
: instance.getUserId();
// 委托给 RemoteWorkflowBridge → WorkflowClientServiceImpl.routeTo
// fillInUserID 会将 resolvedAssignee 写入 RightCtx.USERS / CONTEXT_WAITPERFORMER
return workflowBridge.routeTo(
remoteActivityInstId, toActivityDefId, resolvedAssignee);
}在 WorkflowClientServiceImpl.fillInUserID() 中补充 USERS / PERFORMERS / CONTEXT_WAITPERFORMER 字段:
✅ 向后兼容设计
仅在 ctx 未显式设置对应字段时才填充默认值(当前用户),避免覆盖外部传入的指定办理人。这意味着:
新建 UnifiedCollaborationService.java,将 Agent/LLM 任务也纳入 TodoService 管理,让用户在工作台可见所有类型的协同任务。
枚举 | 值 | 语义 |
|---|---|---|
PerformerType | USER | 人工用户(本地) |
AGENT | MCP Agent(远程多机) | |
LLM | LLM 模型 | |
REMOTE_MACHINE | 远程工作室 | |
DelegateStrategy | SINGLE | 单人办理 |
SIGN_OFF | 会签(全部完成) | |
OR_SIGN | 或签(任一完成) | |
SEQUENTIAL | 顺序办理 | |
CANDIDATE_POOL | 候选池认领 |

图 4 · 统一任务创建流程 — 按 performerType 分派,统一进 TodoService
工作台统一展示人/Agent/LLM 任务,用色彩区分类型,用图标点缀:

图 5 · 工作台三色任务卡 — 蓝(人)/橙(Agent)/紫(LLM)/黄(会签组)
🎨 视觉规范

使用 AtomicBoolean.compareAndSet(false, true) 实现抢先式完成,第一个完成者胜出,其他自动取消:
public boolean notifyOrSignTaskCompleted(String groupId, String winnerTodoId, String winnerAssigneeId) {
AtomicBoolean completed = orSignCompleted.get(groupId);
boolean isWinner = completed.compareAndSet(false, true);
if (isWinner) {
log.info("Or-sign winner: {}, todoId={}, assignee={}", groupId, winnerTodoId, winnerAssigneeId);
// TODO: 触发 routeTo 下一节点
// TODO: 取消同组其他 todo(status → CANCELLED)
orSignCompleted.remove(groupId);
}
return isWinner;
}第一个办理人完成后,从 metadata 中读取下一个办理人,自动创建新的 todo:

图 7 · 顺序办理流程 — 链式推进,每步完成后自动创建下一步
Agent 网络拓扑视图,展示远程多机节点状态:

图 8 · Agent 网络拓扑视图 — 多机多端节点状态可视化

图 9 · 跨机协作场景 — 人/Agent/LLM 混合办理,跨机器跨网络
实质审查节点配置 delegateStrategy: SIGN_OFF,3 个办理人并行:
回看整个方案的构思过程,我们遵循了三条设计哲学:
✨ 三条设计哲学
传统 BPM 系统的核心是工作流引擎 — 它回答"流程下一步走到哪里"。而 3.0 时代的协同平台需要回答更复杂的问题:
问题维度 | 传统工作流引擎 | 统一协同平台 |
|---|---|---|
下一步走到哪里 | ✅ transition 路由 | ✅ 继承 |
下一步谁来做 | ⚠️ 仅支持人 | ✅ 人/Agent/LLM/远程机器 |
多人如何协同 | ⚠️ 仅会签 | ✅ 会签/或签/顺序/候选池 |
任务在哪台机器 | ❌ 不关心 | ✅ endpoint + protocol |
用户是否可见 | ⚠️ 仅人工任务可见 | ✅ 所有任务统一可见 |
这个转变的本质是:把"办理人"从单一的人,扩展为一个可寻址、可调度、可协同的抽象实体。
四层架构的设计考虑了长期的可持续演进:
技术架构的最终价值在于用户体验。在这个方案下,一个项目经理的典型工作日是这样的:
👤 用户故事:项目经理的一天
早上打开工作台,看到 12 条待办:3 条人工审批(蓝色徽章)、5 条 Agent 巡检报告(橙色徽章,已完成 3 条)、2 条 LLM 分析任务(紫色徽章,正在生成)、2 条远程机构建任务(青色徽章,排队中)。
他不需要打开 Agent 管理台看巡检状态,不需要打开 LLM 对话窗看分析进度,不需要 SSH 到构建机看构建日志 — 所有协同任务在同一列表中可见、可控。
这就是 3.0 智能协同时代的工作台。
★ 多机多人多 LLM 协同统一方案 v1.2 · 2026-07-21 · 产品设计与架构构思
本文档由 ooderAge 工程团队编写 · 转载请注明出处
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。