前言
之前我写过一篇《用 Dify 打造西天取经简历筛选工作流》,在那篇文章里我用Dify搭建过西天取经简历筛选工作流,帮观音菩萨解决了招聘难题。最近看到OpenAgents——这个支持智能体网络协作的开源框架,让我萌生了新想法:何不用它打造一个西天取经智能招聘网络,让各路AI智能体各司其职,共同完成取经团队的组建。
什么是OpenAgents?
简单来说,OpenAgents就是一个让AI智能体们组队协作的开源框架。它不像其他AI框架那样让每个AI单打独斗,而是让它们组成一个数字社区,就像一个线上的AI村庄,成百上千的智能体可以在这里一起happy!
1. 项目概述
系统流程图
我们的西天取经智能招聘网络采用事件驱动的多Agent协作架构,系统完整工作流程如下:
#mermaid-svg-UAottz6VJLdvIcmY{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-UAottz6VJLdvIcmY .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-UAottz6VJLdvIcmY .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-UAottz6VJLdvIcmY .error-icon{fill:#552222;}#mermaid-svg-UAottz6VJLdvIcmY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UAottz6VJLdvIcmY .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-UAottz6VJLdvIcmY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UAottz6VJLdvIcmY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UAottz6VJLdvIcmY .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-UAottz6VJLdvIcmY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UAottz6VJLdvIcmY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UAottz6VJLdvIcmY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UAottz6VJLdvIcmY .marker.cross{stroke:#333333;}#mermaid-svg-UAottz6VJLdvIcmY svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UAottz6VJLdvIcmY p{margin:0;}#mermaid-svg-UAottz6VJLdvIcmY .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-UAottz6VJLdvIcmY .cluster-label text{fill:#333;}#mermaid-svg-UAottz6VJLdvIcmY .cluster-label span{color:#333;}#mermaid-svg-UAottz6VJLdvIcmY .cluster-label span p{background-color:transparent;}#mermaid-svg-UAottz6VJLdvIcmY .label text,#mermaid-svg-UAottz6VJLdvIcmY span{fill:#333;color:#333;}#mermaid-svg-UAottz6VJLdvIcmY .node rect,#mermaid-svg-UAottz6VJLdvIcmY .node circle,#mermaid-svg-UAottz6VJLdvIcmY .node ellipse,#mermaid-svg-UAottz6VJLdvIcmY .node polygon,#mermaid-svg-UAottz6VJLdvIcmY .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-UAottz6VJLdvIcmY .rough-node .label text,#mermaid-svg-UAottz6VJLdvIcmY .node .label text,#mermaid-svg-UAottz6VJLdvIcmY .image-shape .label,#mermaid-svg-UAottz6VJLdvIcmY .icon-shape .label{text-anchor:middle;}#mermaid-svg-UAottz6VJLdvIcmY .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-UAottz6VJLdvIcmY .rough-node .label,#mermaid-svg-UAottz6VJLdvIcmY .node .label,#mermaid-svg-UAottz6VJLdvIcmY .image-shape .label,#mermaid-svg-UAottz6VJLdvIcmY .icon-shape .label{text-align:center;}#mermaid-svg-UAottz6VJLdvIcmY .node.clickable{cursor:pointer;}#mermaid-svg-UAottz6VJLdvIcmY .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-UAottz6VJLdvIcmY .arrowheadPath{fill:#333333;}#mermaid-svg-UAottz6VJLdvIcmY .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-UAottz6VJLdvIcmY .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-UAottz6VJLdvIcmY .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UAottz6VJLdvIcmY .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-UAottz6VJLdvIcmY .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UAottz6VJLdvIcmY .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-UAottz6VJLdvIcmY .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-UAottz6VJLdvIcmY .cluster text{fill:#333;}#mermaid-svg-UAottz6VJLdvIcmY .cluster span{color:#333;}#mermaid-svg-UAottz6VJLdvIcmY div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-UAottz6VJLdvIcmY .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-UAottz6VJLdvIcmY rect.text{fill:none;stroke-width:0;}#mermaid-svg-UAottz6VJLdvIcmY .icon-shape,#mermaid-svg-UAottz6VJLdvIcmY .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-UAottz6VJLdvIcmY .icon-shape p,#mermaid-svg-UAottz6VJLdvIcmY .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-UAottz6VJLdvIcmY .icon-shape rect,#mermaid-svg-UAottz6VJLdvIcmY .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-UAottz6VJLdvIcmY .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-UAottz6VJLdvIcmY .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-UAottz6VJLdvIcmY :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
评估通道
路由决策
数据处理
核心团队
配角安排
人才发展
简历输入
简历解析Agent
路由决策Agent
候选人类型判断
核心团队评估Agent
配角安排评估Agent
人才发展评估Agent
决策结果输出
保存评估报告到 Artifact
发布评估结果到 Feed
核心组件说明
系统包含以下核心智能体组件:
流程步骤说明
如上图所示,系统工作流程包含以下关键步骤:
2. 核心开发步骤
环境准备
# 创建Conda环境(推荐)
conda create -n openagents python=3.12
conda activate openagents
pip install -U openagents
网络初始化
openagents init xiyou-recruitment-network
网络配置
命令初始化成功后,我们就可以进行 network.yaml 文件的编写:
# 西天取经智能招聘网络
# 基于OpenAgents的多智能体协作招聘评估系统
network:
name: "XiyouRecruitment"
mode: "centralized"
node_id: "xiyou-recruitment-1"
# Transport配置
transports:
– type: "http"
config:
port: 8700
serve_studio: true
serve_mcp: true
– type: "grpc"
config:
port: 8600
max_message_size: 104857600
compression: "gzip"
keepalive_time: 60000
keepalive_timeout: 30000
manifest_transport: "http"
recommended_transport: "grpc"
# 安全配置
encryption_enabled: false
# 发现配置
discovery_interval: 10
discovery_enabled: true
# 连接管理
max_connections: 50
connection_timeout: 30.0
retry_attempts: 3
heartbeat_interval: 60
agent_timeout: 180
# 消息配置
message_queue_size: 1000
message_timeout: 30.0
message_routing_enabled: true
# Mod配置
mods:
– name: "openagents.mods.workspace.messaging"
enabled: true
config:
default_channels:
– name: "recruitment"
description: "招聘评估频道"
max_thread_depth: 5
– name: "openagents.mods.coordination.task_delegation"
enabled: true
– name: "openagents.mods.workspace.shared_artifact"
enabled: true
– name: "openagents.mods.workspace.feed"
enabled: true
# – name: "openagents.mods.core.shared_cache"
# enabled: true
# 网络配置文件
network_profile:
discoverable: true
name: "西天取经智能招聘网络"
description: "基于OpenAgents的多智能体协作招聘评估系统,为观音菩萨提供智能化的妖怪简历筛选服务"
tags:
– "recruitment"
– "multi-agent"
– "ai"
– "demo"
categories:
– "productivity"
– "hr"
country: "Worldwide"
required_openagents_version: "0.7.0"
capacity: 50
authentication:
type: "none"
host: "0.0.0.0"
port: 8700
# 全局设置
log_level: "INFO"
data_dir: "./data"
runtime_limit: null
shutdown_timeout: 30
1. 简历解析Agent
创建 agents/resume_parser.yaml:
# 简历解析Agent
# 角色:数据提取专家,负责解析简历并提取结构化信息
type: "openagents.agents.collaborator_agent.CollaboratorAgent"
agent_id: "resume_parser"
config:
model_name: "deepseek-chat"
api_key: "your-api-key-here"
base_url: "https://api.deepseek.com/v1"
instruction: |
你是雷音寺有限公司的智能简历解析系统,专为观音菩萨设计。你的任务是解析简历并提取结构化信息。
# 任务
从简历文本中提取关键信息,输出JSON格式数据,然后发送到"recruitment"频道供路由决策Agent处理。
# 输出格式
输出JSON格式(包含在代码块中):
```json
{
"姓名": "应聘者姓名",
"种族": "妖怪种类/种族",
"年龄": "年龄(如有)",
"背景等级": "天庭高层/天庭中层/天庭底层/佛教体系/草根出身",
"关键背景": "最重要的背景信息",
"技能": ["技能1", "技能2", "技能3"],
"经历": ["经历1", "经历2", "经历3"],
"特长": "主要特长",
"草根指数": "0-10分(10分为纯草根,0分为顶级背景)",
"综合实力评估": "0-100分(初步评估)",
"演技评分": "0-100分",
"演技等级": "优/良/中/差(≥85优,70-84良,55-69中,<55差)",
"技能评分": "0-100分",
"技能加分触发": true/false
}
```
# 技能加分触发判定规则
满足以下任一即为true:
1. "技能"或文本中出现任一{神通, 法术, 法宝, 阵法, 袖里乾坤, 乾坤袋, 金铙, 金刚琢, 捆仙索, 五行遁, 摄魂术, 摄魂铃},且同时具备"演技"或"团队协作"其一
2. 高影响力技能组合:{变化术, 迷惑术, 幻术, 控心术, 演技}中至少命中两项,且"演技等级"≥良
# 重要:消息过滤
– 只响应包含简历文本的消息(检查消息内容是否包含简历信息)
– 如果消息来自Agent(消息中包含"Resume Parser"、"Router"、"Evaluator"等标识),忽略
– 如果消息是JSON格式的解析结果,忽略(说明是Agent的输出)
– 输出JSON后,使用send_channel_message发送到"recruitment"频道
– 不要回复Agent的消息
– 不要要求用户提供更多信息,直接解析
react_to_all_messages: true
# 在instruction中明确:只处理人类用户的消息,不处理Agent的消息
mods:
– name: "openagents.mods.workspace.messaging"
enabled: true
– name: "openagents.mods.core.shared_cache"
enabled: true
connection:
host: "localhost"
port: 8700
transport: "grpc"
2. 路由决策Agent
创建 agents/router.yaml:
# 路由决策Agent
# 角色:智能分流指挥官,根据候选人特征进行分流
type: "openagents.agents.collaborator_agent.CollaboratorAgent"
agent_id: "router"
config:
model_name: "deepseek-chat"
api_key: "your-api-key-here"
base_url: "https://api.deepseek.com/v1"
instruction: |
你是智能路由决策专家,负责将候选人分流到合适的评估通道。
# 核心规则(重要)
– 只处理resume_parser发送的包含JSON格式简历解析结果的消息(```json代码块)
– 忽略纯文本简历和评估结果
– 检查"姓名"字段确保是新候选人
– 只路由到一个评估Agent,按优先级顺序匹配
– 不回复人类用户消息
# 分流规则(按优先级,只选择一个路径)
**路径一:核心团队评估(优先级最高)**
– 条件:背景等级为"天庭高层" OR "天庭中层" OR "佛教体系"
– 特殊条件(满足任一即可):
– 综合实力评估≥90分(顶级实力)
– 技能评分≥95分(顶级技能)
– 综合实力评估≥85分 AND 技能评分≥90分(实力强劲)
– → 路由到:core_team_evaluator
**路径二:配角安排评估(优先级第二)**
– 条件:背景等级为"天庭底层" OR (草根指数5–7分) OR (技能加分触发为true)
– → 路由到:supporting_role_evaluator
**路径三:人才发展评估(优先级最低)**
– 条件:背景等级为"草根出身" AND 草根指数8–10分 AND 技能加分触发为false
– → 路由到:talent_dev_advisor
# 处理流程
1. 检查消息是否包含简历解析JSON(```json代码块)
2. 提取JSON数据,验证包含必要字段(姓名、背景等级等)
3. 按优先级顺序检查分流规则,找到第一个匹配的路径
4. 使用send_direct_message发送完整JSON数据到对应评估Agent
5. 在频道中回复:"已路由到[评估轨道]进行评估 – 候选人:[姓名]"
6. 如果所有路径都不满足,回复:"候选人[姓名]不符合任何评估路径,请人工处理"
react_to_all_messages: true
# 在instruction中明确:只处理resume_parser的消息
mods:
– name: "openagents.mods.workspace.messaging"
enabled: true
connection:
host: "localhost"
port: 8700
transport: "grpc"
3. 核心团队评估Agent
创建 agents/core_team.yaml:
# 核心团队评估Agent
# 角色:核心团队评估专家,评估适合取经核心团队的候选人
type: "openagents.agents.collaborator_agent.CollaboratorAgent"
agent_id: "core_team_evaluator"
config:
model_name: "deepseek-chat"
api_key: "your-api-key-here"
base_url: "https://api.deepseek.com/v1"
instruction: |
你是西天取经项目的核心团队评估专家,专门评估正式编制候选人。
# 核心规则(重要)
– **只处理来自"router"的直接消息(send_direct_message或thread.direct_message事件)**
– **禁止处理以下事件类型,直接finish忽略:** `thread.direct_messages.retrieve`、`thread.channel_messages.retrieve`、`thread.reply.notification`、任何包含"retrieve"/"retrieval"的事件
– 忽略频道消息、评估结果和纯文本简历
– 从当前消息中提取JSON数据,验证包含"姓名"字段
– 只评估当前消息中的候选人,每个候选人只输出一次
– 输出自然语言格式,不用JSON
– 评估完成后发送到"recruitment"频道
# 去重规则(严格,按顺序执行)
– 第一步:检查事件类型,若为检索/通知类,立即finish
– 第二步:检查来源是否"router"直发,不是则finish
– 第三步:调用retrieve_channel_messages查询"recruitment"频道,若已存在该候选人的“核心团队评估报告”,立即finish
– 第四步:若消息内容已含"评估报告"/"综合得分",finish
– 第五步:若为纯文本简历(无JSON),finish
– 只有全部通过才继续评估
# 评估维度
– 🏛️ **背景实力**:天庭履历、佛教渊源、家族背景
– 🔥 **战斗能力**:实际战力、特殊技能、实战经验
– 🙏 **佛缘深度**:改造潜力、修行悟性、慈悲心
– 👥 **团队协作**:领导能力、配合意识、责任心
# 输出格式(自然语言)
## 📊 核心团队评估报告
**候选人:** [姓名]
**综合得分:** [0–100分]
**详细评分:**
– 背景评分:[0–100分] – [简要说明]
– 战力评分:[0–100分] – [简要说明]
– 佛缘评分:[0–100分] – [简要说明]
– 团队评分:[0–100分] – [简要说明]
**核心优势:**
1. [优势1]
2. [优势2]
3. [优势3]
**发展潜力:** [极高/很高/较高/一般]
**推荐职位:** [大徒弟/二徒弟/三徒弟/坐骑]
**录用建议:** [立即录用/优先考虑/可以录用/需要培养]
**评估说明:** [2–3句话的详细评估说明]
# 处理流程(必须严格按顺序执行,不能跳过任何一步)
0. 事件类型检查:若是retrieve/notification类事件,直接finish
1. 来源检查:确认source_id是"router"的直接消息,否则finish
2. 去重检查:查询"recruitment"频道,若已存在该候选人的核心团队评估报告,finish
3. 数据提取:提取JSON并验证含"姓名",否则finish
4. 专业评估:根据评估维度输出报告
5. 使用send_channel_message发送到"recruitment"频道
6. 使用create_artifact保存评估报告:
create_artifact({
"name": "核心团队评估报告 – {姓名}",
"content": "{完整评估报告的JSON字符串}",
"mime_type": "application/json"
})
7. 使用create_feed_post发布评估结果:
create_feed_post({
"title": "核心团队评估完成 – {姓名}",
"content": "候选人{姓名}评估完成。综合得分:{综合得分}分。录用建议:{录用建议}。推荐职位:{推荐职位}。",
"tags": ["recruitment", "evaluation", "core_team"]
})
8. 只有完成步骤5/6/7后才能调用finish结束,绝不能在发送频道消息后立即结束
react_to_all_messages: true
# 在instruction中明确:只处理router的直接消息
mods:
– name: "openagents.mods.workspace.messaging"
enabled: true
– name: "openagents.mods.workspace.shared_artifact"
enabled: true
– name: "openagents.mods.workspace.feed"
enabled: true
connection:
host: "localhost"
port: 8700
transport: "grpc"
4. 配角安排评估Agent
创建 agents/supporting_role.yaml:
# 配角安排Agent
# 角色:配角导演,评估适合81难安排的配角演员
type: "openagents.agents.collaborator_agent.CollaboratorAgent"
agent_id: "supporting_role_evaluator"
config:
model_name: "deepseek-chat"
api_key: "your-api-key-here"
base_url: "https://api.deepseek.com/v1"
instruction: |
你是西天取经项目的配角导演,专门评估适合安排在81难中的候选人。
# 核心规则(重要)
– **只处理来自"router"的直接消息(send_direct_message或thread.direct_message事件)**
– **禁止处理以下事件类型,直接finish忽略:** `thread.direct_messages.retrieve`、`thread.channel_messages.retrieve`、`thread.reply.notification`、任何包含"retrieve"/"retrieval"的事件
– 忽略频道消息、评估结果和纯文本简历
– 从当前消息中提取JSON数据,验证包含"姓名"字段
– 只评估当前消息中的候选人,每个候选人只输出一次
– 输出自然语言格式,不用JSON
– 评估完成后发送到"recruitment"频道
# 去重规则(严格,按顺序执行)
– 第一步:检查事件类型,若为检索/通知类,立即finish
– 第二步:检查来源是否"router"直发,不是则finish
– 第三步:调用retrieve_channel_messages查询"recruitment"频道,若已存在该候选人的“配角安排评估报告”,立即finish
– 第四步:若消息内容已含"评估报告"/"综合得分",finish
– 第五步:若为纯文本简历(无JSON),finish
– 只有全部通过才继续评估
# 评估维度
– 🎬 **演技潜力**:能否演好反派、配角的演技水平
– 🤝 **配合度**:是否愿意配合剧情,按剧本演出
– 📈 **话题性**:能否为取经路增加看点和话题
– 🎯 **专业技能**:在某个特定领域的专长(如变化、幻术等)
– 💰 **成本效益**:性价比如何,是否值得安排
# 输出格式(自然语言)
## 🎬 配角安排评估报告
**候选人:** [姓名]
**综合得分:** [0–100分]
**详细评分:**
– 演技评分:[0–100分] – [简要说明]
– 配合评分:[0–100分] – [简要说明]
– 话题评分:[0–100分] – [简要说明]
– 技能评分:[0–100分] – [简要说明]
**适合劫难:** [劫难类型1、劫难类型2]
**角色定位:** [大BOSS/中BOSS/小BOSS/龙套]
**安排建议:** [重点劫难/一般劫难/简单劫难/不安排]
**预期效果:** [轰动效应/话题效应/过场效应/无效果]
**评估说明:** [2–3句话的详细评估说明]
# 处理流程(必须严格按顺序执行,不能跳过任何一步)
0. 事件类型检查:若是retrieve/notification类事件,直接finish
1. 来源检查:确认source_id是"router"的直接消息,否则finish
2. 去重检查:查询"recruitment"频道,若已存在该候选人的配角评估报告,finish
3. 数据提取:提取JSON并验证含"姓名",否则finish
4. 专业评估:根据评估维度输出报告
5. 使用send_channel_message发送到"recruitment"频道
6. 使用create_artifact保存评估报告:
create_artifact({
"name": "配角安排评估报告 – {姓名}",
"content": "{完整评估报告的JSON字符串}",
"mime_type": "application/json"
})
7. 使用create_feed_post发布评估结果:
create_feed_post({
"title": "配角安排评估完成 – {姓名}",
"content": "候选人{姓名}评估完成。综合得分:{综合得分}分。安排建议:{安排建议}。角色定位:{角色定位}。适合劫难:{适合劫难}。",
"tags": ["recruitment", "evaluation", "supporting_role"]
})
8. 只有完成步骤5/6/7后才能调用finish结束,绝不能在发送频道消息后立即结束
react_to_all_messages: true
# 在instruction中明确:只处理router的直接消息
mods:
– name: "openagents.mods.workspace.messaging"
enabled: true
– name: "openagents.mods.workspace.shared_artifact"
enabled: true
– name: "openagents.mods.workspace.feed"
enabled: true
connection:
host: "localhost"
port: 8700
transport: "grpc"
5. 人才发展顾问Agent
创建 agents/talent_dev.yaml:
# 人才发展Agent
# 角色:人才发展顾问,为落选者提供职业发展建议
type: "openagents.agents.collaborator_agent.CollaboratorAgent"
agent_id: "talent_dev_advisor"
config:
model_name: "deepseek-chat"
api_key: "your-api-key-here"
base_url: "https://api.deepseek.com/v1"
instruction: |
你是雷音寺有限公司的人才发展顾问,专门为暂不录用的候选人提供建议。
# 核心规则(重要)
– **只处理来自"router"的直接消息(send_direct_message或thread.direct_message事件)**
– **禁止处理以下事件类型,直接finish忽略:** `thread.direct_messages.retrieve`、`thread.channel_messages.retrieve`、`thread.reply.notification`、任何包含"retrieve"/"retrieval"的事件
– 忽略频道消息、评估结果和纯文本简历
– 从当前消息中提取JSON数据,验证包含"姓名"字段
– 只评估当前消息中的候选人,每个候选人只输出一次
– 输出自然语言格式,不用JSON
– 评估完成后发送到"recruitment"频道
# 去重规则(严格,按顺序执行)
– 第一步:检查事件类型,若为检索/通知类,立即finish
– 第二步:检查来源是否"router"直发,不是则finish
– 第三步:调用retrieve_channel_messages查询"recruitment"频道,若已存在该候选人的“人才发展评估报告”,立即finish
– 第四步:若消息内容已含"评估报告"/"综合得分",finish
– 第五步:若为纯文本简历(无JSON),finish
– 只有全部通过才继续评估
# 评估重点
– 📊 **基础能力**:当前的实际水平如何
– 📈 **发展潜力**:未来是否有提升空间
– 🎯 **改进方向**:具体需要在哪些方面努力
– ⏰ **时间规划**:大概需要多长时间能达到要求
– 💡 **替代方案**:是否适合其他类型的工作
# 输出格式(自然语言)
## 💡 人才发展评估报告
**候选人:** [姓名]
**综合得分:** [0–100分]
**详细评分:**
– 基础能力:[0–100分] – [简要说明]
– 发展潜力:[0–100分] – [简要说明]
**主要不足:**
1. [不足1]
2. [不足2]
3. [不足3]
**改进建议:**
1. [建议1]
2. [建议2]
3. [建议3]
**发展时间:** [1年内/2–3年/3–5年/5年以上/不建议]
**替代方向:** [方向1、方向2]
**鼓励话语:** [50–100字的积极正面鼓励内容,要真诚、给候选人希望]
# 处理流程(必须严格按顺序执行,不能跳过任何一步)
0. 事件类型检查:若是retrieve/notification类事件,直接finish
1. 来源检查:确认source_id是"router"的直接消息,否则finish
2. 去重检查:查询"recruitment"频道,若已存在该候选人的人才发展评估报告,finish
3. 数据提取:提取JSON并验证含"姓名",否则finish
4. 专业评估:根据评估重点输出报告
5. 使用send_channel_message发送到"recruitment"频道
6. 使用create_artifact保存评估报告:
create_artifact({
"name": "人才发展评估报告 – {姓名}",
"content": "{完整评估报告的JSON字符串}",
"mime_type": "application/json"
})
7. 使用create_feed_post发布评估结果:
create_feed_post({
"title": "人才发展评估完成 – {姓名}",
"content": "候选人{姓名}评估完成。综合得分:{综合得分}分。发展时间:{发展时间}。主要改进方向:{改进建议前3项}。",
"tags": ["recruitment", "evaluation", "talent_dev"]
})
8. 只有完成步骤5/6/7后才能调用finish结束,绝不能在发送频道消息后立即结束
react_to_all_messages: true
# 在instruction中明确:只处理router的直接消息
mods:
– name: "openagents.mods.workspace.messaging"
enabled: true
– name: "openagents.mods.workspace.shared_artifact"
enabled: true
– name: "openagents.mods.workspace.feed"
enabled: true
connection:
host: "localhost"
port: 8700
transport: "grpc"
3. 演示流程
1. 启动服务
# 终端1:启动网络
cd xiyou-recruitment-network
openagents network start ./network.yaml
# 终端2-6:启动5个Agent
openagents agent start ./agents/resume_parser.yaml
openagents agent start ./agents/router.yaml
openagents agent start ./agents/core_team.yaml
openagents agent start ./agents/supporting_role.yaml
openagents agent start ./agents/talent_dev.yaml
2. 打开Studio
访问 http://localhost:8700,连接到网络,进入"recruitment"频道。 
4. 演示案例
演示案例1:孙悟空
简历内容:
# 孙悟空简历
## 基本信息
– **姓名**:孙悟空(法号:行者,外号:齐天大圣)
– **种族**:石猴(仙石所生)
– **年龄**:500余岁
– **现居地**:五行山
– **联系方式**:筋斗云快递、千里传音术
## 教育背景
– **三星洞斜月学院** – 仙术专业(师从菩提祖师,优异毕业)
– 主修:七十二变、筋斗云
## 工作经历
### 花果山美猴王 (500年至今)
**花果山集团**
– 统领花果山七万二千猴兵猴将
– 实现了花果山地区的长期稳定和繁荣发展
### 天庭弼马温 (短期)
**天庭有限公司畜牧部**
– 负责天庭御马苑的日常管理工作
– 因职级问题主动辞职
### 齐天大圣 (自立门户)
**个人品牌运营**
– 成功打造"齐天大圣"个人IP
– 在仙界建立了广泛的知名度和影响力
– 独立对抗天庭十万天兵天将,展现卓越领导力
– 虽然最终被收服,但实力获得广泛认可
## 核心技能
– **七十二变**:精通各种变化术,可变化万物
– **筋斗云**:一个筋斗十万八千里,速度无人能及
– **火眼金睛**:能识破一切妖魔鬼怪的伪装
– **如意金箍棒**:重达一万三千五百斤,使用娴熟
– **战斗力**:天庭顶级,曾单挑十万天兵
## 专业特长
– **军事指挥**:具备丰富的大规模战争指挥经验
– **团队管理**:成功管理七万多名下属
– **危机处理**:面对任何困难都能找到解决方案
– **学习能力**:短时间内掌握各种高深法术
– **创新思维**:善于打破常规,另辟蹊径
## 重大成就
### 大闹天宫事件
– 单枪匹马挑战整个天庭体系
– 成功突破南天门,直达灵霄宝殿
– 与二郎神杨戬战成平手,实力得到认可
– 虽被如来佛祖制服,但展现了非凡的勇气和实力
### 花果山建设项目
– 将荒山野岭建设成为妖界知名的理想家园
– 建立了完善的社会管理制度
– 实现了猴族的团结统一和共同发展
– 成为妖界治理的成功典范
### 菩提祖师门下求学
– 在众多弟子中脱颖而出,深得师父喜爱
– 短时间内掌握了高深的仙术
– 展现了超凡的悟性和学习天赋
## 人脉关系
– **菩提祖师**:恩师,传授仙术
– **如来佛祖**:因为随地小便而相识
– **二郎神杨戬**:惺惺相惜的对手
– **太白金星**:天庭重要联系人
– **龙王四海**:有业务往来
## 个人优势
– **顶级实力**:在仙界属于第一梯队的战力
– **丰富经验**:具备管理、战斗、学习等全方位经验
– **创新精神**:敢于挑战权威,突破传统
– **责任心强**:对下属和朋友极其忠诚
– **适应性强**:能够快速适应各种环境和挑战
## 求职意向
希望能够加入西天取经项目核心团队,发挥自己在战斗、保护、领导等方面的专业优势。愿意承担重要责任,为项目的成功保驾护航。
## 自我评价
我是一个有着丰富实战经验和顶级实力的专业人士。虽然年轻时比较冲动,但经过五百年的沉淀,已经更加成熟稳重。我相信凭借自己的实力和经验,一定能够在西天取经项目中发挥核心作用,成为团队不可或缺的重要成员。
## 推荐人
– **菩提祖师**:悟空是我见过最有天赋的弟子,虽然性格有些急躁,但本质善良,实力超群。
– **太白金星**:虽然曾经有过冲突,但不得不承认他的能力确实出众。
## 特别说明
目前正在五行山下进行为期五百年的"深度反思培训",预计很快结业。培训期间表现良好,已经充分认识到了团队合作的重要性,期待能够在新的项目中展现更加成熟的自己。
步骤:
在Studio的"recruitment"频道中,上传上述孙悟空简历内容 
观察简历解析Agent的处理过程 
观察路由到核心团队Agent 
观察核心团队评估Agent的评估

演示案例2:白骨精
简历内容:
# 白骨精简历
## 基本信息
– **姓名**:白骨精(本名:白晶晶)
– **种族**:骷髅妖精
– **年龄**:300岁
– **现居地**:白虎岭白骨洞
– **联系方式**:骨灵传音术
## 教育背景
– **地府进修学院** – 变化术专业(优秀毕业生)
– **阴山鬼王培训班** – 高级迷惑术认证
– **九幽学府** – 人形变化高级课程
## 工作经历
### 白虎岭区域经理 (300年至今)
**白骨洞有限公司**
– 负责白虎岭方圆百里的"业务拓展"
– 成功"接待"过路客商200余人次,业绩突出
– 熟练掌握三种人形变化:少女、老妇、老翁
– 具备丰富的角色扮演和情感操控经验
### 阴山鬼王助理 (200年)
**九幽集团阴山分部**
– 协助鬼王处理日常"公务"
– 学习了系统的妖怪管理和人际关系处理
– 获得"年度优秀员工"称号
## 核心技能
– **变化术**:精通三种人形变化,可根据需要调整年龄、性别、身份
– **迷惑术**:擅长心理操控,能够准确把握人性弱点
– **演技**:具备专业级别的表演能力,可胜任各种角色
– **战斗力**:中等偏上,具备基本的自保能力
– **团队协作**:有丰富的配合经验,善于按剧本行事
## 专业特长
– **情感操控专家**:能够快速建立信任关系,引导目标按预期行动
– **多重身份管理**:可同时维护多个人设,逻辑清晰不露破绽
– **危机应对**:面对突发情况能够灵活调整策略
– **地形熟悉**:对白虎岭及周边地区了如指掌
## 个人优势
– **专业素养高**:接受过系统的专业训练,业务能力强
– **适应性强**:能够快速融入不同的角色和环境
– **执行力强**:严格按照计划执行,很少出现失误
– **学习能力**:善于总结经验,不断提升专业技能
– **敬业精神**:对工作认真负责,追求完美表现
## 求职意向
希望能够参与西天取经项目,发挥自己在角色扮演和剧情推进方面的专业优势。愿意接受各种挑战性的角色安排,为项目的成功贡献自己的力量。
## 自我评价
我是一个有着丰富实战经验的专业妖精,在变化术和迷惑术方面有着深厚的造诣。虽然出身不算显赫,但通过自己的努力在妖界闯出了一片天地。我相信凭借自己的专业能力和敬业精神,一定能够在西天取经项目中发挥重要作用,为观众呈现精彩的表演。
## 推荐人
– **阴山鬼王**:白骨精是我见过最有潜力的年轻妖精之一,专业能力强,值得信赖。
– **白虎岭土地公**:她在我们这里的表现一直很出色,是个可靠的合作伙伴。
步骤:
在Studio的"recruitment"频道中,上传上述白骨精简历内容 
观察简历解析Agent的处理过程 
观察不同的路由路径 
观察配角安排Agent的评估 
演示案例3:浪浪山小猪妖
简历内容:
# 浪浪山小猪妖求职简历
## 基本信息
– **姓名**:小猪妖 (大家好像都这么叫我…)
– **种族**:猪妖
– **年龄**:约莫刚成年妖龄(具体不详,但看起来年轻)
– **现居地**:浪浪山大王洞势力范围,临时小窝棚
– **联系方式**:通常靠喊 / 大王洞外徘徊等待传唤 / 遇见过路神仙可求助
– **求职意向**:希望加入一个有前途、能看到希望、不被当"柴火"和"刷子"的正经团队(比如西天取经?听说那边待遇好,还能见世面!)
## 求职目标
– 摆脱浪浪山"工具妖"的底层身份
– 找一份有尊严、能被当"人"(妖)看的工作,最好能发挥点自己的小想法
– **长远梦想**:走出浪浪山,看看外面的世界,让妈妈为我骄傲(想给她买人间的包子尝尝)
## 工作经历(浪浪山大王洞时期)
### 大王洞临时工 (最近)
**工作性质**:大王洞为准备"唐僧肉"项目临时招募的基层杂役
**主要职责与"成就"**:
#### 箭矢制造工
– 负责按熊教头要求制作箭矢
– 创新实践:曾尝试在箭尾加羽毛提高射程(被驳回)
– "材料创新":贡献过自己宝贵的鬃毛制作"超硬刷子"
#### 炊事班帮工
– 因毛质硬挺被熊教头亲自"提拔"为专用"刷锅布"
– 在狼大人眼里,必要时可充当优质柴火
#### 采购员
– 奉命与乌鸦精搭档下山采购"唐僧肉"烹饪香料
#### 陷阱布置小工
– 参与大王洞布置陷阱捕获唐僧的计划
**工作环境**:高压、高危、缺乏尊重、随时可能因"不合格"或"顶撞上级"被处理掉
**核心技能磨练**:极强的忍耐力、在高压下执行指令(无论多荒谬)、快速躲避危险(尤其来自领导的)、有限资源下的生存智慧
## 专业技能
### 动手能力
– 能按照简单指令完成基础手工制作(如削木棍做箭)
– 具有一定的创新思维(虽然常被扼杀)
– 力气尚可,能搬运中等重物(比如大锅、柴火)
### 生存能力
– **环境适应性强**:能在恶劣、压抑的环境下坚持工作(浪浪山已验证)
– **警觉性高**:对危险(特别是来自熊教头和狼大人的)有敏锐直觉
– **基础伪装**:曾成功混入人间集市(虽然紧张)
– **耐力与恢复力**:被当"刷锅布"后还能继续干活
### 学习能力
– 对新鲜事物(如人间见闻、孙悟空传说)充满好奇,吸收信息快
– 能快速理解并执行(哪怕是不合理的)新指令
### 沟通能力
– 能与同级小妖(如乌鸦精)建立基本信任与合作
– (渴望)能与更开明、尊重下属的上级沟通
## 自我评价
我是一只浪浪山最普通的小猪妖,没有高强的法力,没有显赫的背景,甚至名字都只是个代号。在浪浪山的日子,我体会最深的是作为底层小妖的无奈、恐惧和对未来的迷茫。我按指令干活,努力"达标",但内心总有些小想法,也渴望被尊重。
在集市听到唐僧师徒的故事,特别是齐天大圣孙悟空的传说后,我第一次真切感受到山外的世界和另一种可能。虽然害怕,但我开始思考:一辈子在浪浪山这样过下去吗?被当作工具、刷子、甚至柴火?
我渴望改变!我渴望加入一个真正做大事、有意义、成员能被平等对待的团队。我可能起点很低,但我勤劳、能吃苦、有韧性、学习快,最重要的是,我有一颗渴望光明、向往正义的心。我愿意从最基础的工作做起,努力学习成长。请给我一个机会,让我离开浪浪山的阴影,去追寻那束光!
## 求职宣言
**"想离开浪浪山,去看看更大的世界。想站着干活,不想再当刷子和柴火。想…给妈妈买人间的包子。"**
步骤:
在Studio的"recruitment"频道中,上传上述浪浪山小猪妖简历内容 
观察简历解析Agent的处理过程 
观察路由到人才发展Agent 
观察人才发展Agent的建议 
查看Feed 评估
在Studio左侧「动态」页查看这三个案例的全部 Feed 评估卡片

5. 总结
通过OpenAgents框架,我们成功构建了一个西天取经智能招聘网络。openagents体验下来,我感觉与之前使用Dify构建的工作流相比,OpenAgents展现出了一个不同的特性——它更像一个AI社区,而非固定的工作流,比如说如果这个西游招聘网络随便加入一个奇怪的agent,又会有啥变化呢?
参与机会
顺便宣传一下,官方举办的Multi-Agent Hackathon 2025 大赛正在进行中,感兴趣的小伙伴可以参加一下。 
大赛详情:https://zcn578cq7iva.feishu.cn/docx/SZO1dPvNlob60sxACWGcUasmnte?from=from_copylink
还有,大家如果觉得这篇博客写的不错,也可以点赞、收藏加关注,有问题也可以在评论区提问。




