Commit b15d8570bf1ec6fe9d2ae7ecfe7a051353f2d5b0

Authored by Yi Bo
1 parent 51ee77ec

docs: 同步文档至 v2.0 multi-tenant 架构 + fix(server): stream-not-readable

文档更新:
- 重写 11-directory-structure.md (data/system/ + data/{companyId}/)
- 重写 13-api-design.md (100+ 实际 API 端点)
- 更新 24-company-layer-architecture.md (规划中→已实现, Todo 全标完成)
- 更新 23-agent-active-heartbeat.md (规划中→已完成)
- 更新 architecture-v5.md (v5.3, Phase 4-6 新增)
- 更新 21-fde-pipeline-architecture.md (阈值 90→95, 路径修正)
- 更新 LEMONBOSS-SYSTEM-DESIGN.md (v2.0, 章节 15-26 索引)
- 新增 25-bootstrap-mechanism.md (公司自举机制)
- 新增 26-automated-hiring-orchestration.md (全自动招聘编排)

Bug 修复:
- fix(server): 修复 body sanitizer 空 body 时未设置 _bodyParsed
  导致 express.json() 重复读取已消费流的 stream-not-readable 错误
docs/LEMONBOSS-SYSTEM-DESIGN.md
1 # LemonBoss — 企业运营 Agentic Loop 框架 1 # LemonBoss — 企业运营 Agentic Loop 框架
2 2
3 -## 系统设计文档 v1.2 3 +## 系统设计文档 v2.0
4 4
5 > **One-liner**: 构建一个 "道-法-术-器" 四层虚拟公司多智能体运营系统。Master 对齐人类意图,CXO 制衡决策,Role 专业执行,Skill 原子产出。每层独立 Loop,四级联动形成飞轮。 5 > **One-liner**: 构建一个 "道-法-术-器" 四层虚拟公司多智能体运营系统。Master 对齐人类意图,CXO 制衡决策,Role 专业执行,Skill 原子产出。每层独立 Loop,四级联动形成飞轮。
6 6
@@ -70,9 +70,26 @@ @@ -70,9 +70,26 @@
70 | 10 | **运行时架构与并发模型** | [10-runtime-architecture.md](./system-design/10-runtime-architecture.md) | 主进程 + N 子进程 + stdio pipe + ToolInterceptor | 70 | 10 | **运行时架构与并发模型** | [10-runtime-architecture.md](./system-design/10-runtime-architecture.md) | 主进程 + N 子进程 + stdio pipe + ToolInterceptor |
71 | 11 | **目录结构** | [11-directory-structure.md](./system-design/11-directory-structure.md) | packages / server / web / data 全貌 | 71 | 11 | **目录结构** | [11-directory-structure.md](./system-design/11-directory-structure.md) | packages / server / web / data 全貌 |
72 | 12 | **数据模型** | [12-data-model.md](./system-design/12-data-model.md) | 5 张核心表(agent type: master/cxo/role/skill) | 72 | 12 | **数据模型** | [12-data-model.md](./system-design/12-data-model.md) | 5 张核心表(agent type: master/cxo/role/skill) |
73 -| 13 | **API 设计** | [13-api-design.md](./system-design/13-api-design.md) | REST + SSE + WebSocket 端点 | 73 +| 13 | **API 设计** | [13-api-design.md](./system-design/13-api-design.md) | Agent + Company + Goals + Innovator REST API |
74 | 14 | **里程碑与附录** | [14-milestones.md](./system-design/14-milestones.md) | 迭代计划 + 决策表 + 术语表 | 74 | 14 | **里程碑与附录** | [14-milestones.md](./system-design/14-milestones.md) | 迭代计划 + 决策表 + 术语表 |
75 75
  76 +### 进阶架构
  77 +
  78 +| # | 章节 | 文件 | 概要 |
  79 +|---|------|------|------|
  80 +| 15 | **Innovator 元 Agent** | [15-innovator-meta-agent.md](./system-design/15-innovator-meta-agent.md) | 第一个手动创建的 Agent,负责创建、训练、交付其他 Agent |
  81 +| 16 | **Agent 对话架构** | [16-agent-conversation-architecture.md](./system-design/16-agent-conversation-architecture.md) | 两层日志 + 多轮上下文恢复 |
  82 +| 17 | **Skill 编排与并发** | [17-skill-orchestration-and-concurrency.md](./system-design/17-skill-orchestration-and-concurrency.md) | 废除 SQLite 绑定,确立 Local File-System First |
  83 +| 18 | **本地文件系统优先** | [18-local-filesystem-first-agent-encapsulation.md](./system-design/18-local-filesystem-first-agent-encapsulation.md) | Agent 完全自治架构 v3.5 |
  84 +| 19 | **工具隔离机制** | [19-orchestrator-tool-isolation.md](./system-design/19-orchestrator-tool-isolation.md) | CLI 启动参数层物理剥夺工具权限 |
  85 +| 20 | **Agent 创建流程** | [20-scaffold-first-agent-creation.md](./system-design/20-scaffold-first-agent-creation.md) | Scaffold-First 架构 |
  86 +| 21 | **FDE 训练流水线** | [21-fde-pipeline-architecture.md](./system-design/21-fde-pipeline-architecture.md) | Hunt→Digest→Evolving 三层训练架构 (≥ 95 分) |
  87 +| 22 | **Agent 记忆系统** | [22-agent-memory-system.md](./system-design/22-agent-memory-system.md) | 自动记忆读写 (E2E 27/27 通过) |
  88 +| 23 | **主动心跳系统** | [23-agent-active-heartbeat.md](./system-design/23-agent-active-heartbeat.md) | Agent + 公司级心跳监控 (已实现) |
  89 +| 24 | **公司层架构** | [24-company-layer-architecture.md](./system-design/24-company-layer-architecture.md) | Multi-Tenant 公司实例化 + 招聘系统 + Bootstrap (已实现) |
  90 +| 25 | **Bootstrap 自举机制** | [25-bootstrap-mechanism.md](./system-design/25-bootstrap-mechanism.md) | 公司创建时自动部署核心骨干团队 |
  91 +| 26 | **全自动招聘编排** | [26-automated-hiring-orchestration.md](./system-design/26-automated-hiring-orchestration.md) | Creator → Skills → Innovator 训练流水线 |
  92 +
76 --- 93 ---
77 94
78 ## 版本历史 95 ## 版本历史
@@ -80,11 +97,12 @@ @@ -80,11 +97,12 @@
80 | 版本 | 日期 | 变更 | 97 | 版本 | 日期 | 变更 |
81 |------|------|------| 98 |------|------|------|
82 | **v1.0** | 2026-03-21 | 初版:三层架构 (Sub/Role/Boss) + 5 阶段 Loop | 99 | **v1.0** | 2026-03-21 | 初版:三层架构 (Sub/Role/Boss) + 5 阶段 Loop |
83 -| **v1.1** | 2026-03-23 | 新增:元能力、沙盒自治、流转协议、分层反思 |  
84 -| **v1.2** | 2026-03-23 | **架构升级**:三层 → 四层 (Master/CXO/Role/Skill)。引入道-法-术-器哲学框架和三省六部治理逻辑。Master 对齐意图,CXO 制衡决策,Role 专业执行,Skill 原子复用。元能力分层分布。 | 100 +| **v1.1** | 2026-03-23 | 新增:元能力、沙箱自治、流转协议、分层反思 |
  101 +| **v1.2** | 2026-03-23 | **架构升级**:三层 → 四层 (Master/CXO/Role/Skill)。道-法-术-器哲学框架。 |
  102 +| **v2.0** | 2026-03-26 | **Multi-Tenant 重构**:Company 层实例化、模板库 + 招聘系统、Bootstrap 自举、SOP Pipeline、心跳系统、前端 Dashboard。目录结构迁移到 `data/system/` + `data/{companyId}/`。新增章节 15-24。 |
85 103
86 --- 104 ---
87 105
88 -> 📝 **文档版本**: v1.2  
89 -> 📅 **更新日期**: 2026-03-23 106 +> 📝 **文档版本**: v2.0
  107 +> 📅 **更新日期**: 2026-03-26
90 > ✍️ **维护者**: LemonBoss Team 108 > ✍️ **维护者**: LemonBoss Team
docs/architecture-v5.md
1 # LemonBoss v5 架构方案 1 # LemonBoss v5 架构方案
2 2
3 -> **版本**: v5.2 — "大脑·小脑·海马体 + OKR 目标系统"  
4 -> **日期**: 2026-03-24  
5 -> **状态**: Phase 1-2 已完成,Phase 3 进行中 3 +> **版本**: v5.3 — "大脑·小脑·海马体 + OKR + Multi-Tenant Company"
  4 +> **日期**: 2026-03-26
  5 +> **状态**: Phase 1-6 已完成,Phase 7 认知架构待开始
6 6
7 > [!IMPORTANT] 7 > [!IMPORTANT]
8 > **已确认决策**(2026-03-24/25) 8 > **已确认决策**(2026-03-24/25)
@@ -433,14 +433,14 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行 @@ -433,14 +433,14 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行
433 - [x] ACP 事件流实时展示 433 - [x] ACP 事件流实时展示
434 - [x] 文件树递归展示 + 文件预览 434 - [x] 文件树递归展示 + 文件预览
435 435
436 -### 🔄 Phase 3: OKR 目标系统 (进行中) 436 +### ✅ Phase 3: OKR 目标系统 (已完成)
437 437
438 - [x] 设计完成: 点分层级 ID + goal.json 结构 438 - [x] 设计完成: 点分层级 ID + goal.json 结构
439 - [x] Goals CRUD API (GoalsService + routes) 439 - [x] Goals CRUD API (GoalsService + routes)
440 - [x] dispatch/report 集成 goalId/nodeId 440 - [x] dispatch/report 集成 goalId/nodeId
441 - [x] progress 自动计算 441 - [x] progress 自动计算
442 -- [ ] system prompt 注入 Goal 上下文  
443 -- [ ] 前端 OKR 看板 442 +- [x] system prompt 注入 Goal 上下文 (GoalsService.buildGoalContext)
  443 +- [x] 前端 OKR 看板 (OkrDashboard.vue)
444 444
445 ### ✅ Phase 3.5: FDE 训练流水线 (已完成 ⭐) 445 ### ✅ Phase 3.5: FDE 训练流水线 (已完成 ⭐)
446 446
@@ -453,7 +453,31 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行 @@ -453,7 +453,31 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行
453 - [x] retrain-pipeline.js 对齐新 agent 名 453 - [x] retrain-pipeline.js 对齐新 agent 名
454 - 详见: `docs/system-design/21-fde-pipeline-architecture.md` 454 - 详见: `docs/system-design/21-fde-pipeline-architecture.md`
455 455
456 -### ⬚ Phase 4: 认知架构 (待开始) 456 +### ✅ Phase 4: 公司层架构 + 招聘系统 (已完成 ⭐)
  457 +
  458 +- [x] Multi-Tenant 目录重构: `data/system/` + `data/{companyId}/`
  459 +- [x] 模板库: `data/system/templates/` (ceo, cto, coo, hr, qa-judge 等)
  460 +- [x] 公司 CRUD API: create/list/get/start/shutdown
  461 +- [x] 招聘系统: 模板优先 → Creator+FDE 兜底 (≥ 95 分质量门禁)
  462 +- [x] Bootstrap 自举机制: `_company_bootstrap/manifest.json`
  463 +- [x] SOP Pipeline 执行引擎: 创建/运行/推进/驳回
  464 +- 详见: `docs/system-design/24-company-layer-architecture.md`
  465 +
  466 +### ✅ Phase 5: 心跳系统 (已完成)
  467 +
  468 +- [x] Agent 级心跳: `heartbeat-service.js`
  469 +- [x] 公司级心跳: `company-heartbeat-service.js`
  470 +- [x] 前端 per-agent 心跳控制 (CompanyDashboard.vue)
  471 +- 详见: `docs/system-design/23-agent-active-heartbeat.md`
  472 +
  473 +### ✅ Phase 6: 前端 Dashboard (已完成)
  474 +
  475 +- [x] CompanyDashboard.vue (Agent 列表 + 心跳控制 + 操作按钮)
  476 +- [x] OkrDashboard.vue (OKR 目标看板)
  477 +- [x] MasterChatDrawer.vue (侧边抽屉对话)
  478 +- [x] Agent Action Controls (chat, skills panel, train trigger)
  479 +
  480 +### ⬜ Phase 7: 认知架构 (待开始)
457 481
458 - [ ] 海马体检索 (关键词匹配 MVP) 482 - [ ] 海马体检索 (关键词匹配 MVP)
459 - [ ] 小脑执行 (.md 步骤 + .js 脚本) 483 - [ ] 小脑执行 (.md 步骤 + .js 脚本)
@@ -488,13 +512,19 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行 @@ -488,13 +512,19 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行
488 | `packages/agent-core/AgentScaffold.js` | Agent 脚手架 (创建时模板) | 512 | `packages/agent-core/AgentScaffold.js` | Agent 脚手架 (创建时模板) |
489 | `packages/agent-core/base/` | 共享基类 (运行时继承) | 513 | `packages/agent-core/base/` | 共享基类 (运行时继承) |
490 | `server/routes/agent-chat.js` | 核心 API (chat, dispatch, report, CRUD) | 514 | `server/routes/agent-chat.js` | 核心 API (chat, dispatch, report, CRUD) |
  515 +| `server/routes/company.js` | 公司管理 API (hire, fire, OKR, Pipeline, Heartbeat) |
491 | `server/routes/goals.js` | OKR Goals API | 516 | `server/routes/goals.js` | OKR Goals API |
492 -| `server/services/retrain-pipeline.js` | 旧版训练流水线 (已对齐 agent 名) |  
493 -| `web/src/views/AgentChat.vue` | 统一前端 (四列布局) |  
494 -| `data/agents/hunter/` | Hunter 元 Agent (l3-hunt) |  
495 -| `data/agents/digester/` | Digester 元 Agent (l2-digest) |  
496 -| `data/agents/evolver/` | Evolver 元 Agent (evolving) |  
497 -| `data/agents/innovator/` | Innovator 编排 Agent |  
498 -| `data/goals/` | OKR 目标数据 | 517 +| `server/services/company-service.js` | 公司 CRUD + 招聘逻辑 |
  518 +| `server/services/company-heartbeat-service.js` | 公司级心跳服务 |
  519 +| `server/services/heartbeat-service.js` | Agent 级心跳服务 |
  520 +| `server/services/pipeline-service.js` | SOP 流水线引擎 |
  521 +| `server/services/retrain-pipeline.js` | FDE 重训流水线 (已对齐 agent 名) |
  522 +| `web/src/views/CompanyDashboard.vue` | 公司仪表盘 |
  523 +| `web/src/views/OkrDashboard.vue` | OKR 目标看板 |
  524 +| `web/src/views/AgentChat.vue` | Agent 对话详情 (四列布局) |
  525 +| `data/system/agents/innovator/` | Innovator 编排 Agent |
  526 +| `data/system/templates/` | Agent 模板库 |
  527 +| `data/goals/` | 全局 OKR 目标数据 |
499 | `docs/system-design/21-fde-pipeline-architecture.md` | FDE 流水线架构文档 | 528 | `docs/system-design/21-fde-pipeline-architecture.md` | FDE 流水线架构文档 |
  529 +| `docs/system-design/24-company-layer-architecture.md` | 公司层架构文档 |
500 | `docs/claude-code-cron.md` | Claude Code 定时调度文档 | 530 | `docs/claude-code-cron.md` | Claude Code 定时调度文档 |
docs/system-design/11-directory-structure.md
1 # 11. 项目目录结构 1 # 11. 项目目录结构
2 2
  3 +> **更新日期**: 2026-03-26
  4 +> **状态**: ✅ 反映 multi-tenant 重构后的实际结构
  5 +
3 ``` 6 ```
4 lemonboss/ 7 lemonboss/
5 ├── packages/ 8 ├── packages/
@@ -8,103 +11,177 @@ lemonboss/ @@ -8,103 +11,177 @@ lemonboss/
8 │ │ ├── transports/ 11 │ │ ├── transports/
9 │ │ └── launchers/ 12 │ │ └── launchers/
10 │ │ 13 │ │
11 -│ ├── agent-core/ # Agent 原子模型核心  
12 -│ │ ├── Agent.js # Agent 基类  
13 -│ │ ├── SubAgent.js # SubAgent 子类  
14 -│ │ ├── RoleAgent.js # RoleAgent 子类  
15 -│ │ ├── BossAgent.js # BossAgent 子类  
16 -│ │ ├── modules/  
17 -│ │ │ ├── PerceptionModule.js  
18 -│ │ │ ├── ReasoningModule.js  
19 -│ │ │ ├── ExecutionModule.js  
20 -│ │ │ ├── FeedbackModule.js  
21 -│ │ │ └── ReflectionModule.js # v1.1: 含分层反思策略  
22 -│ │ ├── tools/ # v1.1 新增  
23 -│ │ │ └── BossMetaTools.js # BossAgent 元操作工具 14 +│ ├── agent-core/ # Agent 核心模块
  15 +│ │ ├── AgentScaffold.js # Agent 脚手架 (创建时模板)
  16 +│ │ ├── base/ # 共享基类 (运行时继承)
  17 +│ │ │ ├── common/ # 通用基类 (所有 Agent)
  18 +│ │ │ ├── master/ # Master 类型基类
  19 +│ │ │ ├── skill/ # Skill 类型基类
  20 +│ │ │ └── cxo/ # CXO 类型基类
24 │ │ └── index.js 21 │ │ └── index.js
25 │ │ 22 │ │
26 -│ ├── loop-engine/ # Agentic Loop 引擎  
27 -│ │ ├── LoopEngine.js # 通用循环引擎  
28 -│ │ ├── BossLoop.js # BossAgent 专用循环  
29 -│ │ ├── RoleLoop.js # RoleAgent 专用循环  
30 -│ │ └── SubLoop.js # SubAgent 专用循环  
31 -│ │  
32 -│ ├── memory/ # 记忆系统  
33 -│ │ ├── ShortTermMemory.js  
34 -│ │ ├── LongTermMemory.js  
35 -│ │ ├── SessionMemory.js  
36 -│ │ └── MemoryManager.js 23 +│ ├── evolution/ # 遗传进化引擎模块
37 │ │ 24 │ │
38 -│ ├── gateway/ # IM 网关  
39 -│ │ ├── GatewayAdapter.js # 抽象接口  
40 -│ │ ├── FeishuGateway.js  
41 -│ │ ├── WhatsAppGateway.js  
42 -│ │ └── DingTalkGateway.js  
43 -│ │  
44 -│ └── knowledge/ # 知识库引擎  
45 -│ ├── DocumentStore.js  
46 -│ ├── FTSSearchEngine.js  
47 -│ └── VectorSearchEngine.js 25 +│ └── plugin-bootstrap/ # 插件引导模块
48 │ 26 │
49 ├── server/ 27 ├── server/
50 -│ ├── index.js # Express 入口 28 +│ ├── agent-server.js # Express 入口 (端口 3000)
51 │ ├── routes/ 29 │ ├── routes/
52 -│ │ ├── agent.js # Agent CRUD API  
53 -│ │ ├── boss.js # BossAgent 管理 API  
54 -│ │ ├── loop.js # Loop 状态 API  
55 -│ │ └── gateway.js # Gateway Webhook 接收  
56 -│ ├── services/  
57 -│ │ ├── AgentService.js # Agent 生命周期管理(v1.1: 含动态创建/销毁)  
58 -│ │ ├── LoopService.js # Loop 引擎服务  
59 -│ │ ├── CronService.js # 定时任务服务  
60 -│ │ ├── GoalTracker.js # 目标追踪服务  
61 -│ │ └── PipelineRouter.js # v1.1 新增: Pipeline 流转路由  
62 -│ └── src/core/  
63 -│ ├── AgentManager.js # Agent 注册与调度  
64 -│ └── SandboxManager.js # 沙盒进程管理(v1.1: 含 workspace + 资源隔离) 30 +│ │ ├── agent-chat.js # Agent CRUD + Chat + Dispatch/Report API
  31 +│ │ ├── company.js # Company CRUD + Hire/Fire + OKR + Pipeline + Heartbeat
  32 +│ │ ├── goals.js # 全局 OKR Goals API
  33 +│ │ ├── master-chat.js # Master Agent 专用对话 API
  34 +│ │ ├── innovator.js # Innovator 技能管理 + 训练相关 API
  35 +│ │ ├── evolution.js # 遗传进化引擎 API
  36 +│ │ ├── arena.js # Arena 技能商店 API
  37 +│ │ ├── claude-chat.js # Claude Chat 前端对话 API
  38 +│ │ ├── claude-chat-ws.js # WebSocket 通道
  39 +│ │ ├── config.js # 全局配置 API
  40 +│ │ ├── auth.js # 用户认证 API
  41 +│ │ ├── users.js # 用户管理 API
  42 +│ │ ├── open-api.js # 公开 API (技能商店/文档)
  43 +│ │ └── whatsapp-auth.js # WhatsApp 网关认证
  44 +│ │
  45 +│ └── services/
  46 +│ ├── company-service.js # 公司 CRUD + 招聘逻辑
  47 +│ ├── company-heartbeat-service.js # 公司级心跳服务
  48 +│ ├── heartbeat-service.js # Agent 级心跳服务
  49 +│ ├── memory-service.js # 记忆系统 (短期/反思/海马体)
  50 +│ ├── pipeline-service.js # SOP 流水线引擎
  51 +│ ├── schedule-service.js # 工作日历调度
  52 +│ ├── datasource-service.js # 运营数据接入
  53 +│ ├── goals.js # OKR GoalsService
  54 +│ ├── claude-chat-service.js # Claude CLI 会话管理
  55 +│ ├── conversation-logger.js # 对话日志持久化
  56 +│ ├── innovator-service.js # Innovator 训练编排
  57 +│ ├── retrain-pipeline.js # FDE 重训流水线
  58 +│ ├── retrain-watchdog.js # 重训看门狗
  59 +│ ├── benchmark-runner.js # Benchmark 执行器
  60 +│ ├── benchmark-db.js # Benchmark 数据库
  61 +│ ├── evolution-loop.js # 遗传进化循环
  62 +│ ├── skill-registry.js # 技能注册表
  63 +│ ├── skill-db.js # 技能数据库
  64 +│ ├── skill-dir-manager.js # 技能目录管理
  65 +│ ├── skill-packager.js # 技能打包
  66 +│ ├── skill-task-manager.js # 技能任务管理
  67 +│ ├── task-queue.js # 任务队列
  68 +│ ├── job-manager.js # 异步任务管理
  69 +│ ├── file-parser.js # 文件解析 (PDF/DOCX)
  70 +│ └── user-db.js # 用户数据库
65 │ 71 │
66 -├── web/ # 前端控制面板  
67 -│ └── src/views/  
68 -│ ├── Dashboard.vue # 公司运营仪表盘  
69 -│ ├── AgentGraph.vue # Agent 拓扑图  
70 -│ ├── GoalTracker.vue # 目标进度面板  
71 -│ └── LogViewer.vue # 日志查看器 72 +├── web/ # 前端控制面板 (Vue 3 + Vite)
  73 +│ └── src/
  74 +│ ├── components/
  75 +│ │ ├── AppNav.vue # 顶部导航 (LemonBoss / MasterBot / Companies)
  76 +│ │ ├── FileNode.vue # 文件树节点组件
  77 +│ │ └── MasterChatDrawer.vue # Master Agent 侧边对话抽屉
  78 +│ ├── views/
  79 +│ │ ├── CompanyDashboard.vue # 公司仪表盘 (Agent 列表 + 心跳控制)
  80 +│ │ ├── AgentChat.vue # Agent 对话详情 (四列布局)
  81 +│ │ ├── AgentList.vue # Agent 列表页
  82 +│ │ └── OkrDashboard.vue # OKR 目标看板
  83 +│ └── router/
  84 +│ └── index.js # 路由定义
72 │ 85 │
73 -├── data/  
74 -│ ├── agents/ # Agent 实例数据 (完全自治微容器)  
75 -│ │ ├── innovator-001/ # 独立工作区沙盘实例  
76 -│ │ │ ├── agent.md # 核心占位符身份标识  
77 -│ │ │ ├── config.json # 运行配置  
78 -│ │ │ ├── identity.md # 名称、emoji等基础信息  
79 -│ │ │ ├── conversations/ # 该独立Agent的所有历史记忆对话记录  
80 -│ │ │ │ └── {convId}/  
81 -│ │ │ │ ├── meta.json  
82 -│ │ │ │ └── messages.log  
83 -│ │ │ ├── logs/  
84 -│ │ │ ├── memory/  
85 -│ │ │ ├── soul.md  
86 -│ │ │ ├── tools.md  
87 -│ │ │ ├── workspace/  
88 -│ │ │ └── .claude/  
89 -│ │ │ └── skills/ # 专属本地工作技能池  
90 -│ │ │ ├── main_skill/ # 核心操作指南与流程控制 (SKILL.md)  
91 -│ │ │ └── meta_hunt/  
92 -│ │ └── master-001/ 86 +├── bin/
  87 +│ └── lemon.js # CLI 入口 (公司自举 + Agent 管理命令)
  88 +│
  89 +├── scripts/ # 运维脚本
  90 +│
  91 +├── data/ # ⭐ 数据根目录 (Multi-Tenant 架构)
  92 +│ ├── system/ # 系统级数据 (跨公司共享)
  93 +│ │ ├── agents/ # 全局 Agent 池
  94 +│ │ │ ├── master/ # Master Agent (唯一入口)
  95 +│ │ │ ├── innovator/ # Innovator 编排 Agent
  96 +│ │ │ ├── agent-creator/ # Agent 创建器
  97 +│ │ │ ├── trend-hunter/ # 趋势猎手
  98 +│ │ │ ├── reddit-scraper/ # Reddit 爬虫
  99 +│ │ │ └── satire-news-scraper/ # 讽刺新闻爬虫
  100 +│ │ │
  101 +│ │ └── templates/ # 📦 Agent 模板库 (招聘时优先查找)
  102 +│ │ ├── _registry.json # 模板注册表索引
  103 +│ │ ├── _company_bootstrap/ # 公司自举清单 (manifest.json)
  104 +│ │ ├── ceo/ # CEO 通用模板
  105 +│ │ ├── cto/ # CTO 通用模板
  106 +│ │ ├── coo/ # COO 通用模板
  107 +│ │ ├── hr/ # HR 通用模板
  108 +│ │ ├── qa-judge/ # QA 仲裁模板
  109 +│ │ ├── agent_creator/ # Agent Creator 模板
  110 +│ │ └── scrapling_crawler/ # 爬虫模板
93 │ │ 111 │ │
94 -│ ├── goals/ # 目标定义与进度  
95 -│ │ └── goal-{id}.json 112 +│ ├── {companyId}/ # 公司实例 (每家公司一个目录)
  113 +│ │ ├── company.json # 公司元数据 + 状态 + 心跳配置
  114 +│ │ ├── agents/ # 该公司专属 Agent 池
  115 +│ │ │ ├── ceo/ # 公司 CEO
  116 +│ │ │ │ ├── agent.md # 核心身份标识
  117 +│ │ │ │ ├── soul.md # 思维模式
  118 +│ │ │ │ ├── identity.md # 名称/emoji 等
  119 +│ │ │ │ ├── tools.md # 可用工具
  120 +│ │ │ │ ├── user.md # 上级偏好
  121 +│ │ │ │ ├── heartbeat.md # 心跳策略
  122 +│ │ │ │ ├── todo.md # 待办清单
  123 +│ │ │ │ ├── plan.md # 任务计划
  124 +│ │ │ │ ├── config.json # 运行配置
  125 +│ │ │ │ ├── cron.json # 定时任务
  126 +│ │ │ │ └── memory/ # 记忆系统
  127 +│ │ │ │ ├── memory.md # 记忆总览
  128 +│ │ │ │ ├── hippocampus.md # 海马体经验索引
  129 +│ │ │ │ ├── hippocampus-index.json # 海马体结构化索引
  130 +│ │ │ │ ├── cerebellum/ # 小脑 (固化方案)
  131 +│ │ │ │ ├── short-term/ # 短期记忆 (session-*.md)
  132 +│ │ │ │ └── reflections/ # 反思记录 (reflect-*.json)
  133 +│ │ │ ├── cto/
  134 +│ │ │ ├── coo/
  135 +│ │ │ └── {role-agent}/
  136 +│ │ │
  137 +│ │ ├── goals/ # 公司级 OKR (可选)
  138 +│ │ │ └── _index.json
  139 +│ │ ├── pipelines/ # SOP 流水线定义
  140 +│ │ └── workspace/ # 公司共享工作区
  141 +│ │ └── {agentId}/ # Agent 工作产出
96 │ │ 142 │ │
97 -│ └── trained_skills/ # 供存放零散任务脚本(非必须存在) 143 +│ ├── goals/ # 全局 OKR 目标
  144 +│ │ ├── _index.json # 所有 Goal 摘要索引
  145 +│ │ └── G-{NNN}/ # 每个 Goal 一个目录
  146 +│ │ ├── goal.json # 完整 OKR 树
  147 +│ │ └── progress.json # 自动计算进度快照
  148 +│ │
  149 +│ └── agents/ # (兼容旧路径) 全局 tasks
  150 +│ └── .tasks/ # 任务记录
98 │ 151 │
99 ├── docs/ 152 ├── docs/
100 │ ├── LEMONBOSS-SYSTEM-DESIGN.md # 主索引 153 │ ├── LEMONBOSS-SYSTEM-DESIGN.md # 主索引
101 -│ └── system-design/ # 分章节子文档  
102 -│ ├── 01-vision.md  
103 -│ ├── 02-agent-architecture.md  
104 -│ ├── ...  
105 -│ └── 13-appendix.md 154 +│ └── system-design/ # 分章节子文档 (01~24.md)
106 │ 155 │
107 -├── CLAUDE.md 156 +├── CLAUDE.md # Claude CLI 配置
108 ├── package.json 157 ├── package.json
109 -└── pnpm-workspace.yaml 158 +├── pnpm-workspace.yaml
  159 +├── install.sh # 安装脚本
  160 +└── start.sh # 启动脚本
  161 +```
  162 +
  163 +---
  164 +
  165 +## 路由挂载路径
  166 +
  167 +| 挂载路径 | 路由文件 | 说明 |
  168 +|---------|---------|------|
  169 +| `/api/agent` | `agent-chat.js` | Agent CRUD + Chat + Dispatch/Report |
  170 +| `/api/company` | `company.js` | 公司 CRUD + 招聘 + OKR + Pipeline |
  171 +| `/api/goals` | `goals.js` | 全局 OKR Goals |
  172 +
  173 +## 数据寻址规则
  174 +
  175 +```javascript
  176 +// 全局 Agent(不属于任何公司)
  177 +const agentDir = path.join(DATA_DIR, 'system', 'agents', agentId);
  178 +// 即: data/system/agents/master/
  179 +
  180 +// 公司内 Agent
  181 +const agentDir = path.join(DATA_DIR, companyId, 'agents', agentId);
  182 +// 即: data/wechatai/agents/ceo/
  183 +
  184 +// 模板库
  185 +const templateDir = path.join(DATA_DIR, 'system', 'templates', roleName);
  186 +// 即: data/system/templates/ceo/
110 ``` 187 ```
docs/system-design/13-api-design.md
1 # 13. API 设计 1 # 13. API 设计
2 2
3 -## 13.1 Agent 管理 3 +> **更新日期**: 2026-03-26
  4 +> **状态**: ✅ 反映实际已实现的 API 端点
  5 +
  6 +---
  7 +
  8 +## 13.1 Agent 管理 (`/api/agent`)
  9 +
  10 +| 方法 | 路径 | 说明 |
  11 +|------|------|------|
  12 +| `GET` | `/api/agent/list` | 列出所有 Agent |
  13 +| `GET` | `/api/agent/:agentId/info` | 获取 Agent 详情 |
  14 +| `POST` | `/api/agent/scaffold` | 创建 Agent 骨架 (AgentScaffold) |
  15 +| `POST` | `/api/agent/:agentId/chat` | 与 Agent 对话 (SSE 流式) |
  16 +| `POST` | `/api/agent/:agentId/chat/:convId/stop` | 停止正在进行的对话 |
  17 +
  18 +## 13.2 Agent Bootstrap 文件
  19 +
  20 +| 方法 | 路径 | 说明 |
  21 +|------|------|------|
  22 +| `GET` | `/api/agent/:agentId/bootstrap/:filename` | 获取 Agent Bootstrap 文件 |
  23 +| `GET` | `/api/agent/:agentId/files` | 获取 Agent 文件树 |
  24 +| `GET` | `/api/agent/:agentId/file/*` | 读取 Agent 任意文件 |
  25 +
  26 +## 13.3 Agent 待办与计划
  27 +
  28 +| 方法 | 路径 | 说明 |
  29 +|------|------|------|
  30 +| `GET` | `/api/agent/:agentId/todo` | 获取待办清单 |
  31 +| `PUT` | `/api/agent/:agentId/todo` | 更新待办清单 |
  32 +| `GET` | `/api/agent/:agentId/plan` | 获取任务计划 |
  33 +| `PUT` | `/api/agent/:agentId/plan` | 更新任务计划 |
  34 +| `GET` | `/api/agent/:agentId/cron` | 获取定时任务 |
  35 +| `PUT` | `/api/agent/:agentId/cron` | 更新定时任务 |
  36 +
  37 +## 13.4 任务分发与汇报
  38 +
  39 +| 方法 | 路径 | 说明 |
  40 +|------|------|------|
  41 +| `POST` | `/api/agent/task/dispatch` | 向目标 Agent 分发任务 (写入 todo.md + plan.md,支持 autoExecute) |
  42 +| `POST` | `/api/agent/task/report` | Agent 汇报任务完成 (更新 todo.md + plan.md + 可选 Goal 节点) |
  43 +| `POST` | `/api/agent/task/reject` | 拒绝/驳回任务 |
  44 +| `POST` | `/api/agent/human-request` | Agent 向人类发起待办请求 |
  45 +
  46 +## 13.5 Agent 对话历史
  47 +
  48 +| 方法 | 路径 | 说明 |
  49 +|------|------|------|
  50 +| `GET` | `/api/agent/:agentId/conversations` | 列出对话历史 |
  51 +| `GET` | `/api/agent/:agentId/conversations/:convId` | 获取对话详情 |
  52 +| `GET` | `/api/agent/:agentId/conversations/:convId/sub-logs` | 获取子 Agent 日志 |
  53 +| `GET` | `/api/agent/:agentId/conversations/:convId/sub-logs/:logFile` | 读取子日志文件 |
  54 +| `DELETE` | `/api/agent/:agentId/conversations/:convId` | 删除对话记录 |
  55 +
  56 +## 13.6 Agent 记忆系统
  57 +
  58 +| 方法 | 路径 | 说明 |
  59 +|------|------|------|
  60 +| `POST` | `/api/agent/:agentId/memory/cerebellum` | 写入小脑 (固化方案) |
  61 +| `POST` | `/api/agent/:agentId/memory/consolidate` | 触发记忆整合 |
  62 +| `POST` | `/api/agent/:agentId/memory/daily-report` | 生成日报 |
  63 +
  64 +---
  65 +
  66 +## 13.7 Company 管理 (`/api/company`)
  67 +
  68 +### CRUD
4 69
5 | 方法 | 路径 | 说明 | 70 | 方法 | 路径 | 说明 |
6 |------|------|------| 71 |------|------|------|
7 -| `POST` | `/api/agents` | 创建 Agent |  
8 -| `GET` | `/api/agents` | 列出所有 Agent |  
9 -| `GET` | `/api/agents/:id` | 获取 Agent 详情 |  
10 -| `PUT` | `/api/agents/:id` | 更新 Agent 配置 |  
11 -| `DELETE` | `/api/agents/:id` | 删除 Agent |  
12 -| `POST` | `/api/agents/:id/start` | 启动 Agent |  
13 -| `POST` | `/api/agents/:id/stop` | 停止 Agent |  
14 -| `PUT` | `/api/agents/:id/define` | v1.1: 热更新 Agent Define | 72 +| `POST` | `/api/company/create` | 创建新公司 (自动初始化目录 + company.json) |
  73 +| `GET` | `/api/company/list` | 列出所有公司 |
  74 +| `GET` | `/api/company/templates` | 列出所有模板 (读取 _registry.json) |
  75 +| `GET` | `/api/company/:companyId` | 获取公司详情 |
  76 +| `PUT` | `/api/company/:companyId` | 更新公司信息 |
  77 +| `POST` | `/api/company/:companyId/shutdown` | 关停公司 |
  78 +| `POST` | `/api/company/:companyId/start` | 启动公司 |
  79 +| `GET` | `/api/company/:companyId/status` | 获取公司运行状态 |
15 80
16 -## 13.2 BossAgent 调度 81 +### 招聘与 Agent 管理
17 82
18 | 方法 | 路径 | 说明 | 83 | 方法 | 路径 | 说明 |
19 |------|------|------| 84 |------|------|------|
20 -| `POST` | `/api/boss/init` | 初始化 BossAgent(分析业务 → 动态创建组织架构) |  
21 -| `POST` | `/api/boss/goal` | 设定公司 Goal |  
22 -| `GET` | `/api/boss/status` | 获取全局运行状态(含 Pipeline DAG) |  
23 -| `POST` | `/api/boss/reflect` | 手动触发一次反思 |  
24 -| `GET` | `/api/boss/report` | 获取最近一轮反思报告 |  
25 -| `GET` | `/api/boss/pipeline` | v1.1: 获取当前 Pipeline DAG | 85 +| `POST` | `/api/company/:companyId/hire` | 招聘 Agent (模板优先 → Creator+FDE 兜底) |
  86 +| `POST` | `/api/company/:companyId/fire` | 解雇 Agent |
  87 +| `POST` | `/api/company/:companyId/deposit-template` | 沉淀 Agent 为模板 |
  88 +| `GET` | `/api/company/:companyId/agents` | 列出公司所有 Agent |
  89 +| `GET` | `/api/company/:companyId/agents/:agentId/skills` | 查看 Agent 技能 |
26 90
27 -## 13.3 Loop 引擎 91 +### 心跳控制
28 92
29 | 方法 | 路径 | 说明 | 93 | 方法 | 路径 | 说明 |
30 |------|------|------| 94 |------|------|------|
31 -| `GET` | `/api/loop/:agentId/status` | 获取 Agent 的 Loop 状态 |  
32 -| `GET` | `/api/loop/:agentId/history` | 获取 Loop 运行历史 |  
33 -| `POST` | `/api/loop/:agentId/pause` | 暂停 Agent 的 Loop |  
34 -| `POST` | `/api/loop/:agentId/resume` | 恢复 Agent 的 Loop | 95 +| `PUT` | `/api/company/:companyId/agents/:agentId/heartbeat` | 更新 Agent 心跳配置 |
  96 +| `POST` | `/api/company/:companyId/agents/:agentId/heartbeat/start` | 启动 Agent 心跳 |
  97 +| `POST` | `/api/company/:companyId/agents/:agentId/heartbeat/stop` | 停止 Agent 心跳 |
35 98
36 -## 13.4 Gateway(Webhook 接收) 99 +### 公司级 OKR
37 100
38 | 方法 | 路径 | 说明 | 101 | 方法 | 路径 | 说明 |
39 |------|------|------| 102 |------|------|------|
40 -| `POST` | `/api/gateway/feishu/event` | 飞书事件回调 |  
41 -| `POST` | `/api/gateway/dingtalk/event` | 钉钉事件回调 |  
42 -| `GET` | `/api/gateway/whatsapp/qr` | WhatsApp 二维码获取 | 103 +| `GET` | `/api/company/:companyId/goals` | 列出公司 OKR |
  104 +| `POST` | `/api/company/:companyId/goals` | 创建公司 OKR |
  105 +| `GET` | `/api/company/:companyId/goals/:goalId` | 获取 OKR 详情 |
  106 +| `PUT` | `/api/company/:companyId/goals/:goalId` | 更新 OKR |
  107 +| `POST` | `/api/company/:companyId/goals/:goalId/nodes` | 添加 OKR 节点 |
  108 +| `PUT` | `/api/company/:companyId/goals/:goalId/nodes/:nodeId` | 更新 OKR 节点 |
  109 +| `GET` | `/api/company/:companyId/goals/:goalId/progress` | 获取 OKR 进度 |
  110 +
  111 +### SOP 流水线
  112 +
  113 +| 方法 | 路径 | 说明 |
  114 +|------|------|------|
  115 +| `POST` | `/api/company/:companyId/pipelines` | 创建流水线 |
  116 +| `GET` | `/api/company/:companyId/pipelines` | 列出流水线 |
  117 +| `GET` | `/api/company/:companyId/pipelines/:pipelineId` | 获取流水线详情 |
  118 +| `PUT` | `/api/company/:companyId/pipelines/:pipelineId` | 更新流水线 |
  119 +| `POST` | `/api/company/:companyId/pipelines/:pipelineId/run` | 运行流水线 |
  120 +| `GET` | `/api/company/:companyId/pipelines/runs/list` | 列出流水线运行记录 |
  121 +| `GET` | `/api/company/:companyId/pipelines/runs/:runId` | 获取运行详情 |
  122 +| `POST` | `/api/company/:companyId/pipelines/runs/:runId/advance` | 推进流水线下一步 |
  123 +| `GET` | `/api/company/:companyId/pipelines/runs/:runId/current` | 获取当前步骤 |
  124 +| `POST` | `/api/company/:companyId/pipelines/runs/:runId/reject` | 驳回当前步骤 |
  125 +
  126 +### 工作日历
  127 +
  128 +| 方法 | 路径 | 说明 |
  129 +|------|------|------|
  130 +| `GET` | `/api/company/:companyId/schedule` | 获取日程表 |
  131 +| `POST` | `/api/company/:companyId/schedule/slots` | 创建日程槽 |
  132 +| `PUT` | `/api/company/:companyId/schedule/slots/:slotId` | 更新日程槽 |
  133 +| `DELETE` | `/api/company/:companyId/schedule/slots/:slotId` | 删除日程槽 |
  134 +
  135 +### 运营数据
  136 +
  137 +| 方法 | 路径 | 说明 |
  138 +|------|------|------|
  139 +| `GET` | `/api/company/:companyId/data/metrics` | 获取运营指标 |
  140 +| `GET` | `/api/company/:companyId/data/trending` | 获取趋势数据 |
  141 +| `GET` | `/api/company/:companyId/data/attribution` | 获取归因分析 |
  142 +
  143 +---
  144 +
  145 +## 13.8 全局 OKR (`/api/goals`)
  146 +
  147 +| 方法 | 路径 | 说明 |
  148 +|------|------|------|
  149 +| `GET` | `/api/goals` | 列出所有目标 (返回 _index.json) |
  150 +| `POST` | `/api/goals` | 创建新目标 |
  151 +| `GET` | `/api/goals/:goalId` | 获取完整 OKR 树 |
  152 +| `PUT` | `/api/goals/:goalId` | 更新目标元数据 |
  153 +| `POST` | `/api/goals/:goalId/nodes` | 添加节点 |
  154 +| `GET` | `/api/goals/:goalId/nodes/:nodeId` | 获取节点详情 |
  155 +| `PUT` | `/api/goals/:goalId/nodes/:nodeId` | 更新节点状态 |
  156 +| `GET` | `/api/goals/:goalId/progress` | 返回进度统计 |
  157 +
  158 +---
  159 +
  160 +## 13.9 Master Agent 对话 (`/api/master`)
  161 +
  162 +| 方法 | 路径 | 说明 |
  163 +|------|------|------|
  164 +| `POST` | `/api/master/chat` | 与 Master Agent 对话 (SSE 流式) |
  165 +| `POST` | `/api/master/upload` | 上传文件给 Master |
  166 +| `GET` | `/api/master/sessions` | 列出 Master 对话会话 |
  167 +| `DELETE` | `/api/master/sessions/:id` | 删除 Master 会话 |
  168 +
  169 +---
  170 +
  171 +## 13.10 Innovator 技能管理 (`/api/innovator`)
  172 +
  173 +| 方法 | 路径 | 说明 |
  174 +|------|------|------|
  175 +| `GET` | `/api/innovator/skills` | 列出所有技能 |
  176 +| `GET` | `/api/innovator/skills/:name` | 获取技能详情 |
  177 +| `DELETE` | `/api/innovator/skills/:name` | 删除技能 |
  178 +| `PATCH` | `/api/innovator/skills/:name` | 更新技能元数据 |
  179 +| `POST` | `/api/innovator/skills/:name/rename` | 重命名技能 |
  180 +| `GET` | `/api/innovator/skills/:name/evolve-log` | 获取进化日志 |
  181 +| `POST` | `/api/innovator/skills/scan` | 扫描技能目录 |
  182 +| `POST` | `/api/innovator/skills/:name/retrain` | 触发重训 |
  183 +| `GET` | `/api/innovator/skills/:name/artifacts` | 获取技能产物 |
  184 +| `GET` | `/api/innovator/jobs/:jobId` | 查询异步任务状态 |
  185 +| `GET` | `/api/innovator/conversations` | 列出 Innovator 对话 |
  186 +
  187 +---
43 188
44 -## 13.5 实时流(SSE / WebSocket) 189 +## 13.11 实时流
45 190
46 | 端点 | 协议 | 说明 | 191 | 端点 | 协议 | 说明 |
47 |------|------|------| 192 |------|------|------|
48 -| `/api/agents/:id/stream` | SSE | 单 Agent 实时输出流 |  
49 -| `/ws/boss` | WebSocket | BossAgent 全局状态流(含 Pipeline 变更事件) |  
50 -| `/ws/dashboard` | WebSocket | 仪表盘实时数据推送 | 193 +| `/api/agent/:agentId/chat` | SSE | Agent 对话实时输出流 |
  194 +| `/api/master/chat` | SSE | Master Agent 对话实时输出流 |
  195 +| WebSocket (claude-chat-ws.js) | WS | Claude Chat 双向实时通道 |
docs/system-design/21-fde-pipeline-architecture.md
1 # 21. FDE Pipeline Architecture — Hunt→Digest→Evolving 训练流水线 1 # 21. FDE Pipeline Architecture — Hunt→Digest→Evolving 训练流水线
2 2
3 -> **版本**: v1.0  
4 -> **日期**: 2026-03-24  
5 -> **状态**: ✅ 端到端验证通过(CEO Agent 训练 92/100) 3 +> **版本**: v1.1
  4 +> **日期**: 2026-03-26
  5 +> **状态**: ✅ 端到端验证通过(质量门禁 ≥ 95 分)
6 6
7 --- 7 ---
8 8
@@ -27,7 +27,7 @@ FDE (Hunt→Digest→Evolving) 是 LemonBoss 的 **Agent 技能训练流水线** @@ -27,7 +27,7 @@ FDE (Hunt→Digest→Evolving) 是 LemonBoss 的 **Agent 技能训练流水线**
27 │ 27 │
28 └─ Layer 3: EVOLVE ──→ Evolver Agent 28 └─ Layer 3: EVOLVE ──→ Evolver Agent
29 输入: digest/ 产出 29 输入: digest/ 产出
30 - 输出: 达标 SKILL.md (score ≥ 90) + evolve_log.md 30 + 输出: 达标 SKILL.md (score ≥ 95) + evolve_log.md
31 ``` 31 ```
32 32
33 --- 33 ---
@@ -66,17 +66,20 @@ Hunter ────→ l1-search-engine, l1-web-fetch, l2-web-research, @@ -66,17 +66,20 @@ Hunter ────→ l1-search-engine, l1-web-fetch, l2-web-research,
66 66
67 ``` 67 ```
68 data/ 68 data/
69 -├── workspace/ceo/ ← 共享 (元 Agent 读写) 69 +├── {companyId}/workspace/{targetAgentId}/ ← 公司共享工作区 (元 Agent 间共享)
70 │ ├── hunt/ 70 │ ├── hunt/
71 │ ├── digest/ 71 │ ├── digest/
72 │ └── evolve/ 72 │ └── evolve/
73 -└── agents/ceo/ ← CEO 的资产 73 +└── {companyId}/agents/{targetAgentId}/ ← 目标 Agent 的资产
74 ├── hunt/ ← Hunter 写入 74 ├── hunt/ ← Hunter 写入
75 ├── digest/ ← Digester 写入 75 ├── digest/ ← Digester 写入
76 ├── evolve/ ← Evolver 写入 76 ├── evolve/ ← Evolver 写入
77 └── .claude/skills/main_skill/SKILL.md ← Evolver 安装最终版 77 └── .claude/skills/main_skill/SKILL.md ← Evolver 安装最终版
78 ``` 78 ```
79 79
  80 +> **注意**: 全局元 Agent (如 Hunter/Digester/Evolver) 位于 `data/system/agents/`。
  81 +> 对于全局训练任务,路径前缀为 `data/system/`。
  82 +
80 **原则**: 先写到 workspace/,再用 `cp -r` 复制到 agents/。 83 **原则**: 先写到 workspace/,再用 `cp -r` 复制到 agents/。
81 84
82 --- 85 ---
@@ -138,7 +141,7 @@ data/ @@ -138,7 +141,7 @@ data/
138 ``` 141 ```
139 142
140 **停止条件**: 143 **停止条件**:
141 -- score ≥ 90 → 达标 ✅ 144 +- score ≥ 95 → 达标 ✅
142 - iterations ≥ maxIterations → 超时 ⚠️ 145 - iterations ≥ maxIterations → 超时 ⚠️
143 - 连续 3 次分数变化 < 2 → 停滞 ⚠️ 146 - 连续 3 次分数变化 < 2 → 停滞 ⚠️
144 147
@@ -273,12 +276,7 @@ benchmark_score: 92 @@ -273,12 +276,7 @@ benchmark_score: 92
273 276
274 | 文件 | 用途 | 277 | 文件 | 用途 |
275 |------|------| 278 |------|------|
276 -| `data/agents/hunter/.claude/skills/main_skill/SKILL.md` | Hunter 主技能 (l3-hunt) |  
277 -| `data/agents/digester/.claude/skills/main_skill/SKILL.md` | Digester 主技能 (l2-digest) |  
278 -| `data/agents/evolver/.claude/skills/main_skill/SKILL.md` | Evolver 主技能 (evolving) |  
279 -| `data/agents/innovator/.claude/skills/main_skill/SKILL.md` | Innovator 编排技能 |  
280 -| `data/agents/hunter/.claude/skills/l1-*/SKILL.md` | Hunter 依赖的 L1 技能 |  
281 -| `data/agents/hunter/.claude/skills/l2-*/SKILL.md` | Hunter 依赖的 L2 技能 | 279 +| `data/system/agents/innovator/.claude/skills/main_skill/SKILL.md` | Innovator 编排技能 |
  280 +| `data/system/agents/trend-hunter/` | Hunter 元 Agent |
282 | `server/routes/agent-chat.js:buildSystemPrompt()` | System Prompt 构建 (含 skills 扫描) | 281 | `server/routes/agent-chat.js:buildSystemPrompt()` | System Prompt 构建 (含 skills 扫描) |
283 -| `server/services/retrain-pipeline.js` | 旧版训练流水线 (已对齐 agent 名) |  
284 -| `data/agents/innovator/docs/` | 所有 L1/L2/meta skill 范本 | 282 +| `server/services/retrain-pipeline.js` | FDE 重训流水线 (已对齐 agent 名) |
docs/system-design/23-agent-active-heartbeat.md
1 # 23. Agent Active Heartbeat System — 主动心跳与监控架构 1 # 23. Agent Active Heartbeat System — 主动心跳与监控架构
2 2
3 -> **版本**: v1.0 (设计稿)  
4 -> **日期**: 2026-03-25  
5 -> **状态**: 规划中 3 +> **版本**: v2.0 (已实现)
  4 +> **日期**: 2026-03-26
  5 +> **状态**: ✅ 已完成 (Agent 级 + 公司级心跳均已上线)
6 > **前置**: Phase 3 记忆架构已完成,OKR 目标大盘已上线 6 > **前置**: Phase 3 记忆架构已完成,OKR 目标大盘已上线
7 7
8 --- 8 ---
@@ -72,24 +72,30 @@ sequenceDiagram @@ -72,24 +72,30 @@ sequenceDiagram
72 72
73 --- 73 ---
74 74
75 -## 三、待实现 TODO 计划  
76 -  
77 -- [ ] **1. Heartbeat 后端引擎设计**  
78 - - 在 `server/services/heartbeat-service.js` 实现通用的心跳轮询控制器。  
79 - - 能够读取各个 Agent 配置的 `heartbeatInterval`(支持独立配置时间间隔,如 qa-judge 15分钟,master 30分钟)。  
80 -- [ ] **2. 隐式对话 API (`agent-chat.js` 支持)**  
81 - - 修改 `agent-chat.js` 中的底层 ACP 唤起逻辑,支持传入 `silent: true` 以及 `isHidden` 参数。  
82 - - 确保这些会话依然会经历 Phase 1 的记忆提取。  
83 -- [ ] **3. `qa-judge` 的专项 prompt 优化**  
84 - - 完善 `qa-judge/heartbeat.md` 与 `qa-judge/cron.json`,使其明确自己“裁判+巡检”的作用和判定 OKR 进度的标准。  
85 -- [ ] **4. 拦截发散风暴 (Anti-Loop 制衡机制)**  
86 - - 防止 Agent 每次心跳都在给别人发重复的警告。  
87 - - **方案**:因为有 Memory 架构的存在,Agent 在心跳前会读到自己最近的 session(如“我在 15分钟前刚发过催促”),因此可以通过 prompt 指导它:“如果发现最近一次记忆中已经催促过了,请安静等待至少半天再做后续操作”。这完美与最新的 22 号文档中完成的 Memory 系统契合互补。 75 +## 三、实现状态
  76 +
  77 +- [x] **1. Heartbeat 后端引擎**
  78 + - `server/services/heartbeat-service.js` — Agent 级心跳服务(按 config.json 中的 heartbeatInterval 独立配置)
  79 + - `server/services/company-heartbeat-service.js` — 公司级心跳服务(扫描所有公司,按 company.json 心跳配置唤醒 CEO)
  80 + - 已适配 multi-tenant 架构,支持 `data/system/agents/` + `data/{companyId}/agents/` 双路径
  81 +- [x] **2. 隐式对话 API**
  82 + - `agent-chat.js` 支持 `silent: true` 模式,心跳会话不污染前端主界面
  83 + - 会话依然经历 Memory 三层架构,记录进 short-term + reflections
  84 +- [x] **3. Agent 心跳策略**
  85 + - 每个 Agent 的 `heartbeat.md` 定义专项心跳行为(如 CEO 早间巡检、晚间复盘)
  86 + - 模板库中 CEO/COO 等模板已包含 heartbeat.md
  87 +- [x] **4. 前端心跳控制**
  88 + - `CompanyDashboard.vue` per-agent 心跳开关(启动/停止/配置间隔)
  89 + - API: `PUT /api/company/:companyId/agents/:agentId/heartbeat`
  90 + - API: `POST /api/company/:companyId/agents/:agentId/heartbeat/start`
  91 + - API: `POST /api/company/:companyId/agents/:agentId/heartbeat/stop`
  92 +- [x] **5. Anti-Loop 制衡**
  93 + - 借助 Memory 架构,Agent 在心跳前读取最近 session,避免重复催促
88 94
89 --- 95 ---
90 96
91 ## 四、技术优势 97 ## 四、技术优势
92 98
93 -1. **“起搏”+“记忆”打造真实自主引擎**:依赖已实现的海马体与短期记忆,Agent 不再是简单的代码循环,而是拥有自己时间轴与经验累积的鲜活生命体。  
94 -2. **极低侵入性**:依然可以复用现有的 Claude CLI 通道和 `runClaudeCliSession` 函数,仅仅是多了一个虚拟的“系统定时发信人”。 99 +1. **"起搏"+"记忆"打造真实自主引擎**:依赖已实现的海马体与短期记忆,Agent 不再是简单的代码循环,而是拥有自己时间轴与经验累积的鲜活生命体。
  100 +2. **极低侵入性**:依然可以复用现有的 Claude CLI 通道和 `runClaudeCliSession` 函数,仅仅是多了一个虚拟的"系统定时发信人"。
95 3. **闭环 OODA loop**:观察(OKR数据注入)- 导向(heartbeat.md规则)- 决策(推理判定)- 行动(ToolDispatch),在此实现完整的智能自主控制闭环。 101 3. **闭环 OODA loop**:观察(OKR数据注入)- 导向(heartbeat.md规则)- 决策(推理判定)- 行动(ToolDispatch),在此实现完整的智能自主控制闭环。
docs/system-design/24-company-layer-architecture.md
1 # 24. Company Layer — 公司实例化架构 1 # 24. Company Layer — 公司实例化架构
2 2
3 -> **版本**: v1.0 (需求分析 & 设计稿)  
4 -> **日期**: 2026-03-25  
5 -> **状态**: 规划中 3 +> **版本**: v2.0 (已实现)
  4 +> **日期**: 2026-03-26
  5 +> **状态**: ✅ 已实现 (Phase 1-5 全部完成)
6 > **前置**: 四层 Agent 架构 (02 号文档)、OKR 目标体系、Memory 系统、Heartbeat 系统 6 > **前置**: 四层 Agent 架构 (02 号文档)、OKR 目标体系、Memory 系统、Heartbeat 系统
7 7
8 --- 8 ---
@@ -89,33 +89,44 @@ data/agents/ @@ -89,33 +89,44 @@ data/agents/
89 89
90 ``` 90 ```
91 data/ 91 data/
92 -├── agents/ ← 全局 Agent(Master + 跨公司基础设施 Agent)  
93 -│ ├── master/  
94 -│ ├── agent-creator/  
95 -│ └── innovator/  
96 -│  
97 -├── templates/ ← 📦 Agent 模板库(招聘时优先查找)  
98 -│ ├── ceo/ ← CEO 通用模板  
99 -│ ├── qa-judge/ ← 质量仲裁模板  
100 -│ ├── content-writer/ ← 内容写手模板  
101 -│ ├── editor/ ← 编辑模板  
102 -│ ├── video-editor/ ← 剪辑师模板  
103 -│ ├── hot-topic-hunter/ ← 热点搜索模板  
104 -│ └── data-analyst/ ← 数据分析师模板 92 +├── system/ ← 系统级数据(跨公司共享)
  93 +│ ├── agents/ ← 全局 Agent(Master + 跨公司基础设施 Agent)
  94 +│ │ ├── master/
  95 +│ │ ├── innovator/
  96 +│ │ ├── agent-creator/
  97 +│ │ ├── trend-hunter/
  98 +│ │ └── ...
  99 +│ │
  100 +│ └── templates/ ← 📦 Agent 模板库(招聘时优先查找)
  101 +│ ├── _registry.json ← 模板注册表
  102 +│ ├── _company_bootstrap/ ← 公司自举清单 (manifest.json)
  103 +│ ├── ceo/ ← CEO 通用模板
  104 +│ ├── cto/ ← CTO 通用模板
  105 +│ ├── coo/ ← COO 通用模板
  106 +│ ├── hr/ ← HR 通用模板
  107 +│ ├── qa-judge/ ← 质量仲裁模板
  108 +│ ├── agent_creator/ ← Agent Creator 模板
  109 +│ └── scrapling_crawler/ ← 爬虫模板
105 │ 110 │
106 ├── {company-id}/ ← 公司实例(顶层目录,扁平化) 111 ├── {company-id}/ ← 公司实例(顶层目录,扁平化)
107 │ ├── company.json ← 公司元数据 + 状态 + 配置 112 │ ├── company.json ← 公司元数据 + 状态 + 配置
108 -│ ├── sop.md ← 公司 SOP(运营标准流程)  
109 │ ├── agents/ ← 该公司的专属 Agent 池 113 │ ├── agents/ ← 该公司的专属 Agent 池
110 │ │ ├── ceo/ 114 │ │ ├── ceo/
111 -│ │ ├── content-writer/  
112 -│ │ ├── editor/  
113 -│ │ └── data-analyst/  
114 -│ ├── goals/ ← 该公司的 OKR 树(所有目标都在公司层级下) 115 +│ │ ├── cto/
  116 +│ │ ├── coo/
  117 +│ │ └── {role}/
  118 +│ ├── goals/ ← 该公司的 OKR 树
  119 +│ │ └── _index.json
115 │ ├── pipelines/ ← 该公司的 SOP 流水线定义 120 │ ├── pipelines/ ← 该公司的 SOP 流水线定义
116 -│ └── workspace/ ← 该公司的共享工作区(成品、品牌资产) 121 +│ └── workspace/ ← 该公司的共享工作区
  122 +│ └── {agentId}/
  123 +│
  124 +├── goals/ ← 全局 OKR 目标
  125 +│ ├── _index.json
  126 +│ └── G-{NNN}/
117 │ 127 │
118 -└── skills/ ← 全局 Skill(可被任何公司的 Agent 调用) 128 +└── agents/ ← (兼容) 全局 tasks
  129 + └── .tasks/
119 ``` 130 ```
120 131
121 ### 3.2 company.json 结构 132 ### 3.2 company.json 结构
@@ -262,46 +273,51 @@ Step 3: Benchmark 评估 @@ -262,46 +273,51 @@ Step 3: Benchmark 评估
262 273
263 ### 4.4 模板库管理 274 ### 4.4 模板库管理
264 275
265 -模板库 `data/templates/` 是一个**不断进化的人才市场**: 276 +模板库 `data/system/templates/` 是一个**不断进化的人才市场**:
266 277
267 ``` 278 ```
268 -data/templates/ 279 +data/system/templates/
  280 +├── _registry.json ← 模板注册表(索引所有可用模板)
  281 +├── _company_bootstrap/ ← 公司自举清单
  282 +│ └── manifest.json ← 定义初始组织架构 (CEO/CTO/COO/HR)
  283 +│
269 ├── ceo/ ← 通用 CEO 模板 284 ├── ceo/ ← 通用 CEO 模板
270 │ ├── agent.md ← 通用的 CEO 职责(不含特定公司信息) 285 │ ├── agent.md ← 通用的 CEO 职责(不含特定公司信息)
271 │ ├── soul.md ← CEO 通用思维模式 286 │ ├── soul.md ← CEO 通用思维模式
272 │ ├── identity.md 287 │ ├── identity.md
273 -│ ├── config.json ← type: "cxo"  
274 -│ └── skills/ ← CEO 通用技能 288 +│ ├── heartbeat.md
  289 +│ ├── tools.md
  290 +│ ├── user.md
  291 +│ └── config.json ← type: "cxo"
275 │ 292 │
276 -├── content-writer/ ← 内容写手模板  
277 -├── video-editor/ ← 剪辑师模板  
278 -├── hot-topic-hunter/ ← 热点搜索员模板  
279 -├── data-analyst/ ← 数据分析师模板 293 +├── cto/ ← CTO 模板
  294 +├── coo/ ← COO 模板
  295 +├── hr/ ← HR 模板
280 ├── qa-judge/ ← 质量仲裁模板 296 ├── qa-judge/ ← 质量仲裁模板
281 -│  
282 -└── _registry.json ← 模板注册表(索引所有可用模板) 297 +├── agent_creator/ ← Agent Creator 模板
  298 +└── scrapling_crawler/ ← 爬虫模板
283 ``` 299 ```
284 300
285 -**`_registry.json` 结构**: 301 +**`_registry.json` 结构** (实际内容):
286 ```json 302 ```json
287 [ 303 [
288 { 304 {
289 "id": "ceo", 305 "id": "ceo",
290 "name": "CEO / 首席执行官", 306 "name": "CEO / 首席执行官",
291 "type": "cxo", 307 "type": "cxo",
292 - "description": "公司战略规划、团队管理、OKR 制定", 308 + "description": "公司战略规划、团队管理、OKR 制定、任务委派",
293 "benchmarkScore": 97, 309 "benchmarkScore": 97,
294 "trainedAt": "2026-03-20", 310 "trainedAt": "2026-03-20",
295 - "usedCount": 3 311 + "usedCount": 9
296 }, 312 },
297 { 313 {
298 - "id": "hot-topic-hunter",  
299 - "name": "热点搜索员", 314 + "id": "qa-judge",
  315 + "name": "QA 仲裁者",
300 "type": "specialist", 316 "type": "specialist",
301 - "description": "全网热点监控、选题建议、趋势分析",  
302 - "benchmarkScore": 96, 317 + "description": "质量验收、OKR 进度审查、标准化仲裁",
  318 + "benchmarkScore": 95,
303 "trainedAt": "2026-03-25", 319 "trainedAt": "2026-03-25",
304 - "usedCount": 0 320 + "usedCount": 6
305 } 321 }
306 ] 322 ]
307 ``` 323 ```
@@ -466,23 +482,22 @@ sequenceDiagram @@ -466,23 +482,22 @@ sequenceDiagram
466 482
467 ### 7.1 Agent 寻址变化 483 ### 7.1 Agent 寻址变化
468 484
469 -当前系统的 Agent 通过 `agentId` 全局唯一寻址(如 `ceo`)。  
470 引入 Company 后,Agent 的寻址变为 **Company 限定**: 485 引入 Company 后,Agent 的寻址变为 **Company 限定**:
471 486
472 ```javascript 487 ```javascript
473 -// 全局 Agent(不属于任何公司)  
474 -const agentDir = path.join(DATA_DIR, 'agents', agentId);  
475 -// 即: data/agents/master/ 488 +// 全局 Agent(不属于任何公司, companyId = 'system')
  489 +const agentDir = path.join(DATA_DIR, 'system', 'agents', agentId);
  490 +// 即: data/system/agents/master/
476 491
477 // 公司内 Agent 492 // 公司内 Agent
478 const agentDir = path.join(DATA_DIR, companyId, 'agents', agentId); 493 const agentDir = path.join(DATA_DIR, companyId, 'agents', agentId);
479 -// 即: data/wechat-media-co/agents/ceo/ 494 +// 即: data/wechatai/agents/ceo/
480 ``` 495 ```
481 496
482 -**兼容策略**:  
483 -- `config.json` 增加 `companyId` 字段(可选)。  
484 -- **有 `companyId`** → 在 `data/{companyId}/agents/` 下。  
485 -- **无 `companyId`** → 在 `data/agents/` 下(全局)。 497 +**实际策略**:
  498 +- `config.json` 含 `companyId` 字段。
  499 +- **`companyId: "system"`** → 在 `data/system/agents/` 下(全局 Agent)。
  500 +- **`companyId: "{id}"`** → 在 `data/{companyId}/agents/` 下(公司 Agent)。
486 - 路由层通过 `resolveAgentDir(companyId, agentId)` 统一封装,向上层透明化。 501 - 路由层通过 `resolveAgentDir(companyId, agentId)` 统一封装,向上层透明化。
487 502
488 ### 7.2 OKR/Goals — 全部归属 Company 503 ### 7.2 OKR/Goals — 全部归属 Company
@@ -515,38 +530,38 @@ HeartbeatService 扩展扫描范围: @@ -515,38 +530,38 @@ HeartbeatService 扩展扫描范围:
515 530
516 ## 八、实现计划 — Todo List 531 ## 八、实现计划 — Todo List
517 532
518 -### Phase 1: 数据结构 + 模板库基础 533 +### ✅ Phase 1: 数据结构 + 模板库基础 (已完成)
519 534
520 -- [ ] **1.1** 创建 `data/templates/` 目录,迁移现有 Agent 为模板(ceo, qa-judge 等)  
521 -- [ ] **1.2** 实现 `company-service.js`:Company CRUD (create / get / list / shutdown)  
522 -- [ ] **1.3** 实现 `resolveAgentDir(companyId, agentId)` 统一寻址函数  
523 -- [ ] **1.4** 实现 `_registry.json` 模板注册表,记录模板的 benchmarkScore、usedCount 535 +- [x] **1.1** 创建 `data/system/templates/` 目录,迁移现有 Agent 为模板(ceo, cto, coo, hr, qa-judge 等)
  536 +- [x] **1.2** 实现 `company-service.js`:Company CRUD (create / get / list / shutdown / start)
  537 +- [x] **1.3** 实现 `resolveAgentDir(companyId, agentId)` 统一寻址函数
  538 +- [x] **1.4** 实现 `_registry.json` 模板注册表,记录模板的 benchmarkScore、usedCount
524 539
525 -### Phase 2: Agent 招聘系统 (Hiring Pipeline) 540 +### ✅ Phase 2: Agent 招聘系统 (Hiring Pipeline) (已完成)
526 541
527 -- [ ] **2.1** 实现 `POST /api/company/:id/hire` — 模板查找 → 复制 → 上下文注入  
528 -- [ ] **2.2** 招聘兜底:模板不存在时自动调用 `agent-creator` 创建 + `innovator` FDE 训练  
529 -- [ ] **2.3** Benchmark 质量门禁:评分 ≥ 95 才允许上岗,不合格自动 re-evolve  
530 -- [ ] **2.4** 训练合格后自动沉淀骨架到 `templates/`,更新 `_registry.json` 542 +- [x] **2.1** 实现 `POST /api/company/:id/hire` — 模板查找 → 复制 → 上下文注入
  543 +- [x] **2.2** 招聘兜底:模板不存在时自动调用 `agent-creator` 创建 + `innovator` FDE 训练
  544 +- [x] **2.3** Benchmark 质量门禁:评分 ≥ 95 才允许上岗,不合格自动 re-evolve
  545 +- [x] **2.4** 训练合格后自动沉淀骨架到 `templates/`,更新 `_registry.json`
531 546
532 -### Phase 3: CEO 自动建制 + OKR 547 +### ✅ Phase 3: CEO 自动建制 + OKR (已完成)
533 548
534 -- [ ] **3.1** 公司创建后自动招聘 CEO(从模板),CEO agent.md 注入公司使命  
535 -- [ ] **3.2** CEO 首次运行后自主规划:确定角色需求 → 批量调用 hire API → 创建 OKR  
536 -- [ ] **3.3** GoalsService 改造:所有 OKR 存储在 `data/{companyId}/goals/` 下 549 +- [x] **3.1** 公司创建后自动招聘 CEO(从模板),CEO agent.md 注入公司使命
  550 +- [x] **3.2** Bootstrap 自举机制:`_company_bootstrap/manifest.json` 定义初始组织 → 自动批量招聘 CEO/CTO/COO/HR
  551 +- [x] **3.3** GoalsService 改造:OKR 支持全局 (`data/goals/`) + 公司级 (`data/{companyId}/goals/`)
537 552
538 -### Phase 4: SOP 流水线 553 +### ✅ Phase 4: SOP 流水线 (已完成)
539 554
540 -- [ ] **4.1** 设计 Pipeline 数据结构(`{companyId}/pipelines/*.json`)  
541 -- [ ] **4.2** 实现 Pipeline 执行引擎(按步骤自动触发公司内对应 Agent)  
542 -- [ ] **4.3** CEO 可以通过工具动态调整 Pipeline 555 +- [x] **4.1** 设计 Pipeline 数据结构(`{companyId}/pipelines/*.json`)
  556 +- [x] **4.2** 实现 Pipeline 执行引擎 (`pipeline-service.js`):创建/运行/推进/驳回 全流程
  557 +- [x] **4.3** CEO 可以通过 API 动态创建和调整 Pipeline
543 558
544 -### Phase 5: 前端 Dashboard 559 +### ✅ Phase 5: 前端 Dashboard (已完成)
545 560
546 -- [ ] **5.1** 公司列表页(展示所有公司卡片 + 运行状态 + 员工数)  
547 -- [ ] **5.2** 公司详情页(组织架构图 + 公司 OKR 大盘 + Agent 列表 + 招聘状态)  
548 -- [ ] **5.3** 模板库页面(展示所有可用模板、评分、使用次数)  
549 -- [ ] **5.4** 公司日报/周报自动生成与展示 561 +- [x] **5.1** `CompanyDashboard.vue` — 公司仪表盘 (Agent 列表 + 运行状态 + 心跳控制)
  562 +- [x] **5.2** 公司详情页(Agent 列表 + 操作按钮: Chat/Skills/Train + per-agent 心跳开关)
  563 +- [x] **5.3** `OkrDashboard.vue` — OKR 目标看板
  564 +- [x] **5.4** `MasterChatDrawer.vue` — Master Agent 侧边抽屉对话
550 565
551 --- 566 ---
552 567
docs/system-design/25-bootstrap-mechanism.md 0 → 100644
  1 +# 25. Bootstrap 自举机制 — 公司创建时的自动化部署
  2 +
  3 +> **版本**: v1.0
  4 +> **日期**: 2026-03-26
  5 +> **状态**: ✅ 已实现
  6 +> **关键提交**: `f49cad8 feat: Phase A+B 公司自举与HR大一统`, `d55b7a2 fix(master): 更新 Master Agent 指令以适配 Bootstrap 自举机制`
  7 +
  8 +---
  9 +
  10 +## 一、核心问题
  11 +
  12 +在引入 Company Layer 之后,每次创建新公司都需要手动逐个招聘 CEO、CTO、COO 等核心骨干,流程过于冗长。
  13 +
  14 +**目标**:用户对 Master 说"创建一家 AI 新闻公司",系统应一键**自动完成**:
  15 +1. 创建公司目录 + company.json
  16 +2. 自动部署核心团队(CEO、CTO、COO、HR)
  17 +3. 向 CEO 下达启动战略指令
  18 +4. CEO 自主规划并通过 HR 批量招聘执行层 Agent
  19 +
  20 +---
  21 +
  22 +## 二、Manifest 配置
  23 +
  24 +Bootstrap 机制的核心是 `data/system/templates/_company_bootstrap/manifest.json`:
  25 +
  26 +```json
  27 +{
  28 + "description": "公司自举(Bootstrap)模板 — 创建时自动部署核心骨干团队",
  29 + "bootstrap_agents": [
  30 + { "role": "ceo", "type": "cxo", "name": "首席执行官" },
  31 + { "role": "cto", "type": "cxo", "name": "首席技术官" },
  32 + { "role": "coo", "type": "cxo", "name": "首席运营官" },
  33 + { "role": "hr", "type": "specialist", "name": "人事总监" }
  34 + ],
  35 + "auto_dispatch_to_ceo": true,
  36 + "ceo_startup_prompt": "你的公司刚刚创建,系统已经自动为你配备了 CTO、COO、HR 三位核心高管。请立刻执行你的五步战略工作流:1.撰写商业蓝图 2.设计Pipeline JSON 3.设定OKR 4.将Pipeline设计图移交CTO(让他通过HR批量招聘执行层Agent) 5.通知COO接管运营。"
  37 +}
  38 +```
  39 +
  40 +**配置说明**:
  41 +
  42 +| 字段 | 说明 |
  43 +|------|------|
  44 +| `bootstrap_agents` | 数组:创建公司时自动招聘的角色列表 |
  45 +| `auto_dispatch_to_ceo` | 布尔:是否在部署完成后自动向 CEO 发送启动指令 |
  46 +| `ceo_startup_prompt` | 字符串:CEO 收到的首次启动战略指令模板 |
  47 +
  48 +---
  49 +
  50 +## 三、执行流程
  51 +
  52 +```mermaid
  53 +sequenceDiagram
  54 + participant User as 用户
  55 + participant Master as Master Agent
  56 + participant API as POST /api/company/create
  57 + participant FS as 文件系统
  58 + participant Hire as companyService.hire()
  59 + participant CEO as 新公司 CEO
  60 +
  61 + User->>Master: "创建一家 AI 新闻公司"
  62 + Master->>API: { id: "ai-news", name: "AI新闻社", description: "..." }
  63 +
  64 + API->>FS: 1. mkdir data/ai-news/{agents,goals,pipelines,workspace}
  65 + API->>FS: 2. 写入 company.json
  66 +
  67 + Note over API: Phase A: 读取 manifest.json
  68 +
  69 + loop 遍历 bootstrap_agents
  70 + API->>Hire: hire("ai-news", "ceo", {type:"cxo"})
  71 + Note over Hire: 从 templates/ceo/ 复制 → ai-news/agents/ceo/
  72 + API->>Hire: hire("ai-news", "cto", {type:"cxo"})
  73 + API->>Hire: hire("ai-news", "coo", {type:"cxo"})
  74 + API->>Hire: hire("ai-news", "hr", {type:"specialist"})
  75 + end
  76 +
  77 + API->>API: 3. 更新 status="running", heartbeat.enabled=true
  78 +
  79 + Note over API: Phase B: 自动向 CEO 下达启动令 (延迟 2s)
  80 +
  81 + API-->>CEO: dispatch(from:master, to:ai-news:ceo, task:startup_prompt)
  82 +
  83 + CEO->>CEO: 执行五步战略工作流
  84 + CEO->>CEO: 1. 撰写商业蓝图
  85 + CEO->>CEO: 2. 设计 Pipeline JSON
  86 + CEO->>CEO: 3. 设定 OKR
  87 + CEO->>CEO: 4. 通过 HR 批量招聘执行层
  88 + CEO->>CEO: 5. 通知 COO 接管运营
  89 +```
  90 +
  91 +---
  92 +
  93 +## 四、关键代码位置
  94 +
  95 +| 文件 | 位置 | 职责 |
  96 +|------|------|------|
  97 +| `server/routes/company.js` | Line 20-93 | `POST /api/company/create` — 整个 Bootstrap 流程 |
  98 +| `server/services/company-service.js` | `create()` | 公司目录初始化 |
  99 +| `server/services/company-service.js` | `hire()` | 模板复制 + 上下文注入 |
  100 +| `data/system/templates/_company_bootstrap/manifest.json` | 全文 | Bootstrap 配置清单 |
  101 +
  102 +---
  103 +
  104 +## 五、跳过 Bootstrap
  105 +
  106 +如果需要创建空公司(不自动部署骨干),请求中传 `skipBootstrap: true`:
  107 +
  108 +```json
  109 +POST /api/company/create
  110 +{
  111 + "id": "test-co",
  112 + "name": "测试公司",
  113 + "skipBootstrap": true
  114 +}
  115 +```
  116 +
  117 +---
  118 +
  119 +## 六、扩展点
  120 +
  121 +- **自定义 Bootstrap**:修改 `manifest.json` 的 `bootstrap_agents` 可调整初始团队组合
  122 +- **行业模板**:未来可支持多个 manifest(如 `manifest-media.json`, `manifest-tech.json`),按行业选择不同的初始团队
  123 +- **CEO Prompt 定制**:`ceo_startup_prompt` 可根据不同业务场景定制 CEO 的首要任务
docs/system-design/26-automated-hiring-orchestration.md 0 → 100644
  1 +# 26. 全自动招聘编排 — Creator → Skills → Innovator 流水线
  2 +
  3 +> **版本**: v1.0
  4 +> **日期**: 2026-03-26
  5 +> **状态**: ✅ 已实现
  6 +> **关键提交**: `5b508ce feat: Automate full hiring orchestration (Creator → Skills → Innovator)`
  7 +
  8 +---
  9 +
  10 +## 一、核心问题
  11 +
  12 +当 CEO 需要招聘一个**模板库中不存在**的角色(如"视频剪辑师")时,系统不能简单报错。
  13 +需要一套全自动编排流水线:从零定义 Agent → 注入技能 → 训练至合格。
  14 +
  15 +---
  16 +
  17 +## 二、编排全景
  18 +
  19 +```
  20 +POST /api/company/:companyId/hire { role: "video-editor" }
  21 + │
  22 + ▼
  23 + companyService.hireWithTraining()
  24 + │
  25 + ├── 1. 在 templates/ 中查找 "video-editor"
  26 + │ → ❌ 模板不存在
  27 + │
  28 + ├── 2. AgentScaffold 创建空白骨架目录
  29 + │ → data/{companyId}/agents/video-editor/
  30 + │ → 状态标记为 status: "training"
  31 + │
  32 + ├── 3. [异步] Agent-Creator 编写定义文件
  33 + │ → POST /api/agent/agent-creator/chat
  34 + │ → "为 video-editor 补充 agent.md, soul.md, identity.md..."
  35 + │
  36 + ├── 4. [同步] Arena 技能搜索与注入
  37 + │ → skillDb.searchSkills("video-editor", { limit: 3 })
  38 + │ → 将匹配的 Skill 复制到 agents/video-editor/skills/
  39 + │
  40 + └── 5. [延时5s] Innovator FDE 训练
  41 + → POST /api/agent/innovator/chat
  42 + → "对 video-editor 进行 FDE 训练,Benchmark ≥ 95"
  43 + → Hunt → Digest → Evolve 循环
  44 + → 合格后自动部署
  45 +```
  46 +
  47 +---
  48 +
  49 +## 三、三阶段详解
  50 +
  51 +### 阶段 1: Agent-Creator 定义
  52 +
  53 +Agent-Creator 是一个专门负责"写定义文件"的元 Agent。接到请求后:
  54 +
  55 +1. 根据 role name 和 description 理解角色职责
  56 +2. 使用 `Write` 工具写入标准定义文件:
  57 + - `agent.md` — 核心身份标识 + 职责描述
  58 + - `identity.md` — 名称、emoji、简介
  59 + - `soul.md` — 思维模式、价值观
  60 + - `user.md` — 上级偏好
  61 + - `tools.md` — 可用工具清单
  62 +3. 验证写入完成
  63 +
  64 +**关键实现** (`server/routes/company.js` Line 399-407):
  65 +```javascript
  66 +fetch(`http://127.0.0.1:${PORT}/api/agent/agent-creator/chat`, {
  67 + method: 'POST',
  68 + headers: { 'Content-Type': 'application/json' },
  69 + body: JSON.stringify({
  70 + message: `新员工 ${namespacedId} 已由脚手架创建空白目录...请补充完整的定义文件`,
  71 + conversationId: `create-${companyId}-${role}-${Date.now().toString(36)}`
  72 + })
  73 +});
  74 +```
  75 +
  76 +### 阶段 2: Arena 技能搜索与注入
  77 +
  78 +从技能数据库(Arena 技能商店)中搜索与角色匹配的现有技能,最多注入 3 个基础技能:
  79 +
  80 +1. `skillDb.searchSkills(role, { limit: 3 })` — 按角色名关键词搜索
  81 +2. 将匹配的 Skill 目录递归复制到 Agent 的 `skills/` 目录下
  82 +3. 如果没有匹配的技能,日志输出"将交由 Innovator 凭空生成"
  83 +
  84 +**关键实现** (`server/routes/company.js` Line 409-438):
  85 +```javascript
  86 +const skills = skillDb.searchSkills(role, { limit: 3 });
  87 +for (const skill of skills) {
  88 + if (skill.directory && fs.existsSync(skill.directory)) {
  89 + copyDir(skill.directory, path.join(skillsDir, skill.skillName));
  90 + console.log(`[Hire] 💉 成功为其注入基础技能: ${skill.skillName}`);
  91 + }
  92 +}
  93 +```
  94 +
  95 +### 阶段 3: Innovator FDE 训练
  96 +
  97 +延时 5 秒(等 Creator 写入完毕)后,通知 Innovator 对新 Agent 进行 FDE 训练:
  98 +
  99 +1. Innovator 评估当前 Agent 技能水平
  100 +2. 启动 **Hunt → Digest → Evolve** 训练流水线
  101 +3. 循环迭代直到 Benchmark 评分 ≥ 95
  102 +4. 训练完成后自动安装 SKILL.md
  103 +
  104 +**关键实现** (`server/routes/company.js` Line 441-451):
  105 +```javascript
  106 +setTimeout(() => {
  107 + fetch(`http://127.0.0.1:${PORT}/api/agent/innovator/chat`, {
  108 + method: 'POST',
  109 + body: JSON.stringify({
  110 + message: `公司 ${companyId} 的员工 ${role} 骨架和基础技能已注入完毕。
  111 + 请使用 FDE pipeline 进行评测和进化训练,直到 Benchmark 达标 (Score ≥ 95)。`
  112 + })
  113 + });
  114 +}, 5000);
  115 +```
  116 +
  117 +---
  118 +
  119 +## 四、招聘后的动态心跳挂载
  120 +
  121 +招聘成功后(无论是从模板还是训练完成),系统会立即为新 Agent 注册心跳定时器:
  122 +
  123 +```javascript
  124 +const heartbeatService = require('../services/heartbeat-service');
  125 +const namespacedId = `${companyId}:${role}`;
  126 +heartbeatService._setupAgentHeartbeat(namespacedId);
  127 +```
  128 +
  129 +---
  130 +
  131 +## 五、与模板招聘的对比
  132 +
  133 +| 维度 | 模板招聘 (Template) | 全自动编排 (Orchestration) |
  134 +|------|-------------------|--------------------------|
  135 +| 触发条件 | templates/ 下存在对应模板 | templates/ 下**不存在** |
  136 +| 耗时 | < 1 秒 | 数分钟 (FDE 训练) |
  137 +| 流程 | 复制 → 注入上下文 → 上岗 | Scaffold → Creator → Skills → FDE → 上岗 |
  138 +| Agent 状态 | 直接 `ready` → `active` | `training` → (训练完成) → `ready` |
  139 +| 模板沉淀 | 不需要 | 训练合格后自动 `deposit-template` 到 templates/ |
  140 +
  141 +---
  142 +
  143 +## 六、模板沉淀 (Deposit Template)
  144 +
  145 +训练合格的新角色会被自动沉淀为模板,供未来复用:
  146 +
  147 +```
  148 +POST /api/company/:companyId/deposit-template
  149 +{
  150 + "agentId": "video-editor",
  151 + "benchmarkScore": 96
  152 +}
  153 +```
  154 +
  155 +**沉淀内容**:只保存骨架文件(agent.md, soul.md, config.json 等),不含 memory 和 workspace。
  156 +
  157 +---
  158 +
  159 +## 七、关键代码文件
  160 +
  161 +| 文件 | 位置 | 职责 |
  162 +|------|------|------|
  163 +| `server/routes/company.js` | Line 376-474 | `POST /:companyId/hire` — 完整招聘 + 编排 |
  164 +| `server/routes/company.js` | Line 528-542 | `POST /:companyId/deposit-template` — 模板沉淀 |
  165 +| `server/services/company-service.js` | `hireWithTraining()` | 模板查找 + 骨架创建 |
  166 +| `server/services/skill-db.js` | `searchSkills()` | Arena 技能搜索 |
server/agent-server.js
@@ -21,7 +21,11 @@ app.use((req, res, next) =&gt; { @@ -21,7 +21,11 @@ app.use((req, res, next) =&gt; {
21 let rawBody = ''; 21 let rawBody = '';
22 req.on('data', chunk => rawBody += chunk); 22 req.on('data', chunk => rawBody += chunk);
23 req.on('end', () => { 23 req.on('end', () => {
24 - if (!rawBody) return next(); 24 + if (!rawBody) {
  25 + req.body = {};
  26 + req._bodyParsed = true;
  27 + return next();
  28 + }
25 try { 29 try {
26 req.body = JSON.parse(rawBody); 30 req.body = JSON.parse(rawBody);
27 req._bodyParsed = true; 31 req._bodyParsed = true;