26-automated-hiring-orchestration.md
5.69 KB
26. 全自动招聘编排 — Creator → Skills → Innovator 流水线
版本: v1.0 日期: 2026-03-26 状态: ✅ 已实现 关键提交:
5b508ce feat: Automate full hiring orchestration (Creator → Skills → Innovator)
一、核心问题
当 CEO 需要招聘一个模板库中不存在的角色(如"视频剪辑师")时,系统不能简单报错。 需要一套全自动编排流水线:从零定义 Agent → 注入技能 → 训练至合格。
二、编排全景
POST /api/company/:companyId/hire { role: "video-editor" }
│
▼
companyService.hireWithTraining()
│
├── 1. 在 templates/ 中查找 "video-editor"
│ → ❌ 模板不存在
│
├── 2. AgentScaffold 创建空白骨架目录
│ → data/{companyId}/agents/video-editor/
│ → 状态标记为 status: "training"
│
├── 3. [异步] Agent-Creator 编写定义文件
│ → POST /api/agent/agent-creator/chat
│ → "为 video-editor 补充 agent.md, soul.md, identity.md..."
│
├── 4. [同步] Arena 技能搜索与注入
│ → skillDb.searchSkills("video-editor", { limit: 3 })
│ → 将匹配的 Skill 复制到 agents/video-editor/skills/
│
└── 5. [延时5s] Innovator FDE 训练
→ POST /api/agent/innovator/chat
→ "对 video-editor 进行 FDE 训练,Benchmark ≥ 95"
→ Hunt → Digest → Evolve 循环
→ 合格后自动部署
三、三阶段详解
阶段 1: Agent-Creator 定义
Agent-Creator 是一个专门负责"写定义文件"的元 Agent。接到请求后:
- 根据 role name 和 description 理解角色职责
- 使用
Write工具写入标准定义文件:agent.md— 核心身份标识 + 职责描述identity.md— 名称、emoji、简介soul.md— 思维模式、价值观user.md— 上级偏好tools.md— 可用工具清单
- 验证写入完成
关键实现 (server/routes/company.js Line 399-407):
fetch(`http://127.0.0.1:${PORT}/api/agent/agent-creator/chat`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
message: `新员工 ${namespacedId} 已由脚手架创建空白目录...请补充完整的定义文件`,
conversationId: `create-${companyId}-${role}-${Date.now().toString(36)}`
})
});
阶段 2: Arena 技能搜索与注入
从技能数据库(Arena 技能商店)中搜索与角色匹配的现有技能,最多注入 3 个基础技能:
skillDb.searchSkills(role, { limit: 3 })— 按角色名关键词搜索- 将匹配的 Skill 目录递归复制到 Agent 的
skills/目录下 - 如果没有匹配的技能,日志输出"将交由 Innovator 凭空生成"
关键实现 (server/routes/company.js Line 409-438):
const skills = skillDb.searchSkills(role, { limit: 3 });
for (const skill of skills) {
if (skill.directory && fs.existsSync(skill.directory)) {
copyDir(skill.directory, path.join(skillsDir, skill.skillName));
console.log(`[Hire] 💉 成功为其注入基础技能: ${skill.skillName}`);
}
}
阶段 3: Innovator FDE 训练
延时 5 秒(等 Creator 写入完毕)后,通知 Innovator 对新 Agent 进行 FDE 训练:
- Innovator 评估当前 Agent 技能水平
- 启动 Hunt → Digest → Evolve 训练流水线
- 循环迭代直到 Benchmark 评分 ≥ 95
- 训练完成后自动安装 SKILL.md
关键实现 (server/routes/company.js Line 441-451):
setTimeout(() => {
fetch(`http://127.0.0.1:${PORT}/api/agent/innovator/chat`, {
method: 'POST',
body: JSON.stringify({
message: `公司 ${companyId} 的员工 ${role} 骨架和基础技能已注入完毕。
请使用 FDE pipeline 进行评测和进化训练,直到 Benchmark 达标 (Score ≥ 95)。`
})
});
}, 5000);
四、招聘后的动态心跳挂载
招聘成功后(无论是从模板还是训练完成),系统会立即为新 Agent 注册心跳定时器:
const heartbeatService = require('../services/heartbeat-service');
const namespacedId = `${companyId}:${role}`;
heartbeatService._setupAgentHeartbeat(namespacedId);
五、与模板招聘的对比
| 维度 | 模板招聘 (Template) | 全自动编排 (Orchestration) |
|---|---|---|
| 触发条件 | templates/ 下存在对应模板 | templates/ 下不存在 |
| 耗时 | 数分钟 (FDE 训练) | |
| 流程 | 复制 → 注入上下文 → 上岗 | Scaffold → Creator → Skills → FDE → 上岗 |
| Agent 状态 | 直接 ready → active |
training → (训练完成) → ready |
| 模板沉淀 | 不需要 | 训练合格后自动 deposit-template 到 templates/ |
六、模板沉淀 (Deposit Template)
训练合格的新角色会被自动沉淀为模板,供未来复用:
POST /api/company/:companyId/deposit-template
{
"agentId": "video-editor",
"benchmarkScore": 96
}
沉淀内容:只保存骨架文件(agent.md, soul.md, config.json 等),不含 memory 和 workspace。
七、关键代码文件
| 文件 | 位置 | 职责 |
|---|---|---|
server/routes/company.js |
Line 376-474 | POST /:companyId/hire — 完整招聘 + 编排 |
server/routes/company.js |
Line 528-542 | POST /:companyId/deposit-template — 模板沉淀 |
server/services/company-service.js |
hireWithTraining() |
模板查找 + 骨架创建 |
server/services/skill-db.js |
searchSkills() |
Arena 技能搜索 |