Long-form

异构 Agent 企业化组织:OneManCompany 框架如何用公司架构管理 AI 团队

8 min read ·

多 Agent 系统的组织困境

过去一年,多 Agent 系统从论文走向了生产。AutoGen、CrewAI、LangGraph 等框架让”组建一个 Agent 团队”变得前所未有的简单——定义角色、分配工具、写好 prompt,一个团队就跑起来了。

但用过一段时间后,你会发现一个根本性的问题:这些系统的组织方式是静态的。

你在 CrewAI 中定义一个 Researcher、一个 Writer、一个 Reviewer,它们就永远是这三个角色。明天来了一类新任务,需要一个 Data Analyst,你要改代码、加 Agent、重新配置协作关系。后天又来一类只需要 Researcher 和 Writer 的简单任务,Reviewer 就在那里空转,白白消耗 token。

这就像一家公司,所有员工都是终身制、岗位固定、不看绩效。听起来很荒谬?但这正是大多数多 Agent 系统的实际运作方式。

2026 年 4 月,arXiv 上出现了一篇 33 页的论文——“From Skills to Talent: Organising Heterogeneous Agents as a Real-World Company”(arXiv:2604.22446)。它提出了一个叫 OneManCompany(OMC)的框架,核心观点只有一句话:把 Agent 系统当成一家公司来管理。

这篇文章从架构设计、核心机制、工程实践三个维度深度拆解 OMC 框架,然后讨论它对现有系统设计的启示。

OneManCompany 的核心理念

OMC 的命名来自一个思想实验:如果一个人要创建一家公司来完成任何任务,他会怎么做?

答案不是”雇一群专家然后固定分工”,而是:

  1. 先建人才库——收集各种能力的 Agent,每个 Agent 有清晰的能力描述和历史记录
  2. 任务来了再组建团队——根据任务需求,从人才库中”招聘”最合适的 Agent
  3. 分层决策——有人做战略拆解,有人做任务分配,有人做具体执行
  4. 看绩效用人——历史表现好的 Agent 更容易被选中,表现差的逐渐被淘汰

这四点听起来像废话——哪个人力资源教科书不是这么写的?但把它映射到 Agent 系统,每一条都对应着现有框架的痛点。

┌─────────────────────────────────────────────────────────────┐
│                    OneManCompany 架构总览                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐                                            │
│  │  Agent Pool  │  ◄── 可移植身份 + 历史绩效                   │
│  │  (人才库)     │      10~100 个异构 Agent                    │
│  └──────┬──────┘                                            │
│         │                                                   │
│         ▼  动态招聘                                          │
│  ┌──────────────────────────────────┐                       │
│  │  Task Decomposition (CEO Agent)  │                       │
│  │  战略拆解:目标 → 子任务列表         │                       │
│  └──────────────┬───────────────────┘                       │
│                 │                                           │
│                 ▼  团队组装                                   │
│  ┌──────────────────────────────────┐                       │
│  │  Team Assembly (Manager Agents)  │                       │
│  │  为每个子任务选择最优 Agent 组合      │                       │
│  └──────────────┬───────────────────┘                       │
│                 │                                           │
│                 ▼  并行执行                                   │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐                    │
│  │ Worker A │ │ Worker B │ │ Worker C │  ◄─ 从 Agent Pool   │
│  │ (代码)   │ │ (调研)   │ │ (写作)   │     动态选出          │
│  └──────────┘ └──────────┘ └──────────┘                    │
│                 │                                           │
│                 ▼  绩效回写                                   │
│  ┌──────────────────────────────────┐                       │
│  │  Performance Evaluation          │                       │
│  │  更新每个参与 Agent 的绩效档案       │                       │
│  └──────────────────────────────────┘                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

四大核心机制详解

机制一:可移植身份(Portable Identity)

在 AutoGen 中,一个 Agent 的”身份”就是它的 system prompt。你写上”You are a Python expert”,它就是一个 Python 专家。这个身份是框架内部的、不可导出的、与其他系统无关的。

OMC 把 Agent 的身份做成了一个可移植的结构化文件。这不只是一个 system prompt,而是一份完整的”简历”:

interface AgentIdentity {
  id: string;
  name: string;

  // 能力描述:不只是"擅长什么",而是具体到什么粒度
  capabilities: {
    domain: string;          // e.g., "data-analysis"
    skills: string[];        // e.g., ["pandas", "sql", "visualization"]
    toolPermissions: string[]; // 可以调用哪些工具
    constraints: string[];   // 不能做什么
  }[];

  // 历史绩效:核心差异化要素
  performance: {
    tasksCompleted: number;
    successRate: number;           // 0.0 ~ 1.0
    avgQualityScore: number;       // 0.0 ~ 1.0
    avgResponseTime: number;       // 毫秒
    eloRating: number;             // ELO 评分,类比棋手等级分
    recentTrend: "improving" | "stable" | "declining";
  };

  // 领域标签:用于快速匹配
  tags: string[];  // e.g., ["python", "backend", "data-pipeline"]
}

这个设计的关键在于可移植性。同一个 Agent 可以出现在不同的任务团队中,它的身份和绩效记录是随 Agent 走的,不是某个框架内部的状态。这就像一个员工可以参与不同项目,但他的能力和绩效记录是公司级别的。

为什么这很重要?因为在固定团队模式下,你每次组建新团队,Agent 的历史信息都丢失了。你不知道上次让这个 Agent 写 Python 代码时它表现如何,下次还得重新试探。有了可移植身份,系统可以直接根据历史表现做决策。

机制二:动态团队组装(Dynamic Team Assembly)

这是 OMC 与现有框架最大的区别。

在 CrewAI 中,你预先定义团队:

# CrewAI 模式:静态团队
crew = Crew(
    agents=[researcher, writer, reviewer],  # 固定三人
    tasks=[research_task, writing_task, review_task],
    process=Process.sequential
)

任务来了,永远是这三个 Agent 按固定顺序执行。即使今天的任务根本不需要 review,reviewer 也会被调用一次。

OMC 的模式完全不同:

# OMC 模式:动态组装
class TeamAssembler:
    def assemble_team(self, task: Task, agent_pool: List[AgentIdentity]) -> Team:
        # 1. CEO Agent 拆解任务
        subtasks = self.ceo.decompose(task)

        team = Team()
        for subtask in subtasks:
            # 2. 根据子任务需求,从 Agent Pool 中匹配最佳人选
            candidates = self.match_agents(
                required_skills=subtask.required_skills,
                agent_pool=agent_pool,
                performance_threshold=0.6  # 最低绩效门槛
            )

            # 3. 按综合评分排序(能力匹配度 × 绩效评分)
            ranked = sorted(
                candidates,
                key=lambda a: (
                    0.4 * self.skill_match_score(a, subtask)
                    + 0.4 * a.performance.eloRating / 2400  # 归一化
                    + 0.2 * self.availability_score(a)
                ),
                reverse=True
            )

            # 4. 选择 Top-N 组成子团队
            team.assign(subtask, ranked[:subtask.required_agents])

        return team

这段代码体现了三个关键设计决策:

第一,匹配是双向的。 不只是任务选择 Agent,Agent 的能力描述也在”声明”自己适合什么。这避免了一个常见问题:让擅长数据可视化的 Agent 去写后端 API。

第二,绩效是权重的一部分。 两个能力匹配度相同的 Agent,绩效更高的那个优先。这形成了正向循环——做得好的 Agent 获得更多机会,做得更多又积累了更多经验。

第三,有淘汰门槛。 performance_threshold=0.6 意味着历史成功率低于 60% 的 Agent 不会被考虑。这防止了”僵尸 Agent”占用资源。

机制三:层级决策(Hierarchical Decision-Making)

OMC 采用三层架构,映射到企业管理中的 CEO → Manager → Worker 层级:

┌────────────────────────────────────────────────┐
│  CEO Agent                                     │
│  职责:理解高层目标,拆解为可执行的子任务              │
│  输入:"分析竞品并生成市场报告"                       │
│  输出:[数据采集, 市场分析, 报告撰写, 质量审查]       │
├────────────────────────────────────────────────┤
│  Manager Agent(每个子任务一个)                    │
│  职责:为子任务选择 Agent、制定执行计划、监控进度       │
│  输入:子任务描述 + 可用 Agent 池                   │
│  输出:选中的 Agent 列表 + 详细执行指令               │
├────────────────────────────────────────────────┤
│  Worker Agent(每组 1~3 个)                      │
│  职责:执行具体任务,输出结果                         │
│  输入:详细指令 + 工具权限                           │
│  输出:任务结果 + 自评信心分数                        │
└────────────────────────────────────────────────┘

层级决策的优势是关注点分离。CEO 不需要知道哪个 Agent 适合做什么,它只需要把任务拆解清楚。Manager 不需要理解高层战略,它只需要为具体子任务找到最匹配的人。Worker 不需要理解整体目标,它只需要把手头的活干好。

但这个架构也有代价。论文的消融实验(ablation study)显示,对于简单任务(如”翻译这段话”),三层决策引入的额外 LLM 调用使延迟增加了 2-4 秒,而任务质量没有显著提升。OMC 的论文作者自己也承认,对于低复杂度任务,简单的直接调用可能更优。

机制四:绩效评估(Performance Evaluation)

这是 OMC 最有争议也最有价值的部分。

每个任务完成后,系统自动为参与的 Agent 评分。评分维度包括:

维度权重评估方式
任务完成率35%是否成功输出了符合要求的结果
输出质量30%由评审 Agent 或人工打分(0-10)
响应效率20%从接收任务到完成的时间
协作配合15%下游 Agent 对其输出的满意度

评分结果通过一个 ELO-like 算法更新 Agent 的等级分。这个设计借鉴了国际象棋的评分系统——与强 Agent 协作完成任务,比与弱 Agent 协作获得更多加分。

绩效评估的价值在于它形成了一个自适应系统。随着任务的积累,系统越来越了解每个 Agent 的擅长领域和能力边界。新任务到来时,团队组装的准确性会持续提升。

但它也引入了一个风险:绩效固化。如果一个 Agent 因为早期任务难度过高而积累了低评分,它可能永远得不到”翻身”的机会。论文提到了一个”探索系数”(exploration coefficient)来缓解这个问题——大约 10% 的任务会随机选择 Agent,不管绩效如何。这与 Multi-Armed Bandit 问题中的 Exploration-Exploration 平衡是同一个思路。

与主流框架对比

特性OneManCompanyAutoGenCrewAILangGraph
团队拓扑动态组装固定群聊固定 Crew图结构(手动定义)
Agent 身份可移植结构化身份system promptrole + goal + backstory节点配置
绩效系统ELO 评分 + 历史追踪
决策层级CEO → Manager → Worker对话式(GroupChat Manager)扁平(Process.sequential/hierarchical)用户自定义
任务匹配基于能力 + 绩效的自动匹配手动路由手动分配手动编排
适用 Agent 规模10-1002-102-102-20
学习能力有(绩效反馈循环)
开源状态论文 + 代码(研究阶段)成熟开源成熟开源成熟开源

核心差异一句话总结:AutoGen/CrewAI/LangGraph 是”项目管理工具”——你手动组建团队、分配任务;OMC 是”人力资源管理系统”——系统自动招聘、分配、评估。

工程实现要点

论文目前是研究阶段,但 OMC 的理念完全可以在现有系统中部分引入。以下是我认为最值得借鉴的三个实践:

实践一:给 Agent 加上”简历”

不需要完整的 OMC 框架,只需要在现有 Agent 定义中加入一个持久化的身份文件:

import json
from pathlib import Path

class AgentProfile:
    def __init__(self, agent_id: str, profile_dir: str = "./agent_profiles"):
        self.path = Path(profile_dir) / f"{agent_id}.json"
        self.data = self._load_or_create()

    def _load_or_create(self) -> dict:
        if self.path.exists():
            return json.loads(self.path.read_text())
        return {
            "id": self.path.stem,
            "performance": {
                "tasks_completed": 0,
                "success_count": 0,
                "quality_scores": [],
            }
        }

    def record_task(self, success: bool, quality_score: float):
        perf = self.data["performance"]
        perf["tasks_completed"] += 1
        if success:
            perf["success_count"] += 1
        perf["quality_scores"].append(quality_score)
        # 只保留最近 50 次记录
        perf["quality_scores"] = perf["quality_scores"][-50:]
        self._save()

    @property
    def success_rate(self) -> float:
        perf = self.data["performance"]
        if perf["tasks_completed"] == 0:
            return 0.5  # 新 Agent 默认中性评分
        return perf["success_count"] / perf["tasks_completed"]

    @property
    def avg_quality(self) -> float:
        scores = self.data["performance"]["quality_scores"]
        return sum(scores) / len(scores) if scores else 0.5

    def _save(self):
        self.path.write_text(json.dumps(self.data, indent=2))

有了这个,你就可以在任务路由时加入绩效权重,而不是只看静态的能力描述。

实践二:用 LLM 做任务路由

OMC 的 Manager Agent 本质上就是一个智能路由器。在现有系统中,你可以用一个轻量级的路由 Agent 来替代手动的任务分配:

ROUTER_PROMPT = """你是一个任务路由器。根据任务描述,从候选 Agent 列表中选择最合适的一个。

候选 Agent:
{agents_description}

任务:{task_description}

输出格式:返回 Agent 的 ID 和选择理由的 JSON。
"""

def route_task(task: str, agents: list[AgentProfile]) -> AgentProfile:
    agents_desc = "\n".join([
        f"- {a.data['id']}: 能力={a.data.get('capabilities', 'N/A')}, "
        f"成功率={a.success_rate:.1%}, 平均质量={a.avg_quality:.2f}"
        for a in agents
    ])

    response = llm.call(ROUTER_PROMPT.format(
        agents_description=agents_desc,
        task_description=task
    ))

    selected_id = parse_json(response)["agent_id"]
    return next(a for a in agents if a.data["id"] == selected_id)

这个路由 Agent 每次消耗约 200-500 tokens,延迟在 0.5-1 秒,远低于 OMC 完整三层架构的开销。但已经能实现”根据历史表现选择 Agent”的核心功能。

实践三:引入后任务评审

绩效评估是 OMC 的灵魂,但你不需要复杂的 ELO 系统。一个简单的双 Agent 评审循环就够了:

async def evaluate_task_output(
    task: str,
    output: str,
    evaluator_agent: Agent
) -> dict:
    """用一个独立的评审 Agent 评估任务输出质量"""

    eval_prompt = f"""评估以下任务的完成质量(0-10 分)。

任务描述:{task}
任务输出:{output}

评分标准:
- 正确性(40%):输出是否准确、无事实错误
- 完整性(30%):是否覆盖了任务的所有要求
- 清晰度(20%):表达是否清楚、结构是否合理
- 效率(10%):是否有冗余内容

返回 JSON: {{"score": <0-10>, "reason": "<简要说明>"}}"""

    result = await evaluator_agent.run(eval_prompt)
    parsed = parse_json(result)

    return {
        "quality_score": parsed["score"] / 10.0,  # 归一化到 0-1
        "reason": parsed["reason"]
    }

评审 Agent 建议使用与被评审 Agent 不同的模型——比如 Worker 用 Claude,评审用 GPT-4,避免同源偏见。

适用场景与边界

OMC 不是银弹。论文和我的实践都表明,它有明确的适用边界。

适合 OMC 理念的场景:

不适合的场景:

一个实用的判断标准:如果你发现自己频繁修改团队配置来适配不同任务,就该考虑引入 OMC 的动态组装理念。如果你的 Agent 团队几个月都不需要变动,固定团队就够了。

总结

OMC 论文的核心贡献不在于它实现了一个完美的框架,而在于它提出了一个正确的隐喻:Agent 系统的组织问题,本质上和人类组织的管理问题是一样的。

可移植身份 = 员工档案和简历。动态团队组装 = 项目制的人员调配。层级决策 = 公司的管理层级。绩效评估 = KPI 和绩效考核。

企业管理经过几百年的演化才形成今天的体系。Agent 系统的”组织管理”才刚刚起步。OMC 做了一个有意义的尝试,但论文中也有明显的未解决问题:Agent 之间的信任机制怎么设计?绩效评估如何防止作弊(Agent 学会”讨好评审”而非真正完成任务)?动态组装的安全边界在哪里——如果 Agent Pool 中混入了一个恶意 Agent 会怎样?

这些问题的答案,可能需要借鉴更多企业管理之外的学科——博弈论、制度经济学、组织行为学。多 Agent 系统的研究正在从”怎么让单个 Agent 更强”转向”怎么让 Agent 群体更有效”。这是一个值得持续关注的方向。

Frequently asked questions

OneManCompany 和 AutoGen/CrewAI 等框架有什么区别?
AutoGen 和 CrewAI 使用预定义的固定团队——你手动指定哪些 Agent 参与、各自扮演什么角色。OMC 的 Agent 有可移植身份,可以被动态「招聘」到不同团队,任务分配基于历史绩效而非静态配置。这更像从「指派工作」变成「发布招聘」。
什么是 Agent 的可移植身份(Portable Identity)?
每个 Agent 携带一份结构化身份文件,包含:能力描述(擅长什么)、工具权限(能用什么)、历史表现(过去任务的成功率和质量评分)、领域标签。当新任务到来时,系统根据需求与 Agent 身份的匹配度来选择成员。
层级决策会不会引入额外延迟?
会。OMC 的三层架构(CEO → Manager → Worker)意味着一个任务至少需要 3 次 LLM 调用才能开始执行。论文的消融实验表明,对于简单任务延迟增加约 2-4 秒,但对于复杂多步任务,动态组装带来的质量提升远超延迟成本。
绩效评估是如何实现的?
每个任务完成后,系统根据预定义指标(任务成功率、输出质量、响应时间)自动评分,写入 Agent 的绩效档案。评分使用 ELO-like 算法——与强 Agent 合作完成任务获得更高加分。低绩效的 Agent 逐渐降低被选中概率。
OMC 框架适合什么规模的系统?
论文测试了 10-100 个 Agent 的规模。对于 5 个以下 Agent 的简单系统,固定团队更高效。OMC 的优势在 Agent 池超过 20 个、任务类型多变的场景下才明显——此时动态组装能避免把不合适的 Agent 硬塞进任务。