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 1 # LemonBoss — 企业运营 Agentic Loop 框架
2 2  
3   -## 系统设计文档 v1.2
  3 +## 系统设计文档 v2.0
4 4  
5 5 > **One-liner**: 构建一个 "道-法-术-器" 四层虚拟公司多智能体运营系统。Master 对齐人类意图,CXO 制衡决策,Role 专业执行,Skill 原子产出。每层独立 Loop,四级联动形成飞轮。
6 6  
... ... @@ -70,9 +70,26 @@
70 70 | 10 | **运行时架构与并发模型** | [10-runtime-architecture.md](./system-design/10-runtime-architecture.md) | 主进程 + N 子进程 + stdio pipe + ToolInterceptor |
71 71 | 11 | **目录结构** | [11-directory-structure.md](./system-design/11-directory-structure.md) | packages / server / web / data 全貌 |
72 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 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 97 | 版本 | 日期 | 变更 |
81 98 |------|------|------|
82 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 108 > ✍️ **维护者**: LemonBoss Team
... ...
docs/architecture-v5.md
1 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 7 > [!IMPORTANT]
8 8 > **已确认决策**(2026-03-24/25)
... ... @@ -433,14 +433,14 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行
433 433 - [x] ACP 事件流实时展示
434 434 - [x] 文件树递归展示 + 文件预览
435 435  
436   -### 🔄 Phase 3: OKR 目标系统 (进行中)
  436 +### ✅ Phase 3: OKR 目标系统 (已完成)
437 437  
438 438 - [x] 设计完成: 点分层级 ID + goal.json 结构
439 439 - [x] Goals CRUD API (GoalsService + routes)
440 440 - [x] dispatch/report 集成 goalId/nodeId
441 441 - [x] progress 自动计算
442   -- [ ] system prompt 注入 Goal 上下文
443   -- [ ] 前端 OKR 看板
  442 +- [x] system prompt 注入 Goal 上下文 (GoalsService.buildGoalContext)
  443 +- [x] 前端 OKR 看板 (OkrDashboard.vue)
444 444  
445 445 ### ✅ Phase 3.5: FDE 训练流水线 (已完成 ⭐)
446 446  
... ... @@ -453,7 +453,31 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行
453 453 - [x] retrain-pipeline.js 对齐新 agent 名
454 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 482 - [ ] 海马体检索 (关键词匹配 MVP)
459 483 - [ ] 小脑执行 (.md 步骤 + .js 脚本)
... ... @@ -488,13 +512,19 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行
488 512 | `packages/agent-core/AgentScaffold.js` | Agent 脚手架 (创建时模板) |
489 513 | `packages/agent-core/base/` | 共享基类 (运行时继承) |
490 514 | `server/routes/agent-chat.js` | 核心 API (chat, dispatch, report, CRUD) |
  515 +| `server/routes/company.js` | 公司管理 API (hire, fire, OKR, Pipeline, Heartbeat) |
491 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 528 | `docs/system-design/21-fde-pipeline-architecture.md` | FDE 流水线架构文档 |
  529 +| `docs/system-design/24-company-layer-architecture.md` | 公司层架构文档 |
500 530 | `docs/claude-code-cron.md` | Claude Code 定时调度文档 |
... ...
docs/system-design/11-directory-structure.md
1 1 # 11. 项目目录结构
2 2  
  3 +> **更新日期**: 2026-03-26
  4 +> **状态**: ✅ 反映 multi-tenant 重构后的实际结构
  5 +
3 6 ```
4 7 lemonboss/
5 8 ├── packages/
... ... @@ -8,103 +11,177 @@ lemonboss/
8 11 │ │ ├── transports/
9 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 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 27 ├── server/
50   -│ ├── index.js # Express 入口
  28 +│ ├── agent-server.js # Express 入口 (端口 3000)
51 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 152 ├── docs/
100 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 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 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 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 27 │
28 28 └─ Layer 3: EVOLVE ──→ Evolver Agent
29 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 66  
67 67 ```
68 68 data/
69   -├── workspace/ceo/ ← 共享 (元 Agent 读写)
  69 +├── {companyId}/workspace/{targetAgentId}/ ← 公司共享工作区 (元 Agent 间共享)
70 70 │ ├── hunt/
71 71 │ ├── digest/
72 72 │ └── evolve/
73   -└── agents/ceo/ ← CEO 的资产
  73 +└── {companyId}/agents/{targetAgentId}/ ← 目标 Agent 的资产
74 74 ├── hunt/ ← Hunter 写入
75 75 ├── digest/ ← Digester 写入
76 76 ├── evolve/ ← Evolver 写入
77 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 83 **原则**: 先写到 workspace/,再用 `cp -r` 复制到 agents/。
81 84  
82 85 ---
... ... @@ -138,7 +141,7 @@ data/
138 141 ```
139 142  
140 143 **停止条件**:
141   -- score ≥ 90 → 达标 ✅
  144 +- score ≥ 95 → 达标 ✅
142 145 - iterations ≥ maxIterations → 超时 ⚠️
143 146 - 连续 3 次分数变化 < 2 → 停滞 ⚠️
144 147  
... ... @@ -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 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 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 6 > **前置**: Phase 3 记忆架构已完成,OKR 目标大盘已上线
7 7  
8 8 ---
... ... @@ -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 101 3. **闭环 OODA loop**:观察(OKR数据注入)- 导向(heartbeat.md规则)- 决策(推理判定)- 行动(ToolDispatch),在此实现完整的智能自主控制闭环。
... ...
docs/system-design/24-company-layer-architecture.md
1 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 6 > **前置**: 四层 Agent 架构 (02 号文档)、OKR 目标体系、Memory 系统、Heartbeat 系统
7 7  
8 8 ---
... ... @@ -89,33 +89,44 @@ data/agents/
89 89  
90 90 ```
91 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 111 ├── {company-id}/ ← 公司实例(顶层目录,扁平化)
107 112 │ ├── company.json ← 公司元数据 + 状态 + 配置
108   -│ ├── sop.md ← 公司 SOP(运营标准流程)
109 113 │ ├── agents/ ← 该公司的专属 Agent 池
110 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 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 132 ### 3.2 company.json 结构
... ... @@ -262,46 +273,51 @@ Step 3: Benchmark 评估
262 273  
263 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 284 ├── ceo/ ← 通用 CEO 模板
270 285 │ ├── agent.md ← 通用的 CEO 职责(不含特定公司信息)
271 286 │ ├── soul.md ← CEO 通用思维模式
272 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 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 302 ```json
287 303 [
288 304 {
289 305 "id": "ceo",
290 306 "name": "CEO / 首席执行官",
291 307 "type": "cxo",
292   - "description": "公司战略规划、团队管理、OKR 制定",
  308 + "description": "公司战略规划、团队管理、OKR 制定、任务委派",
293 309 "benchmarkScore": 97,
294 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 316 "type": "specialist",
301   - "description": "全网热点监控、选题建议、趋势分析",
302   - "benchmarkScore": 96,
  317 + "description": "质量验收、OKR 进度审查、标准化仲裁",
  318 + "benchmarkScore": 95,
303 319 "trainedAt": "2026-03-25",
304   - "usedCount": 0
  320 + "usedCount": 6
305 321 }
306 322 ]
307 323 ```
... ... @@ -466,23 +482,22 @@ sequenceDiagram
466 482  
467 483 ### 7.1 Agent 寻址变化
468 484  
469   -当前系统的 Agent 通过 `agentId` 全局唯一寻址(如 `ceo`)。
470 485 引入 Company 后,Agent 的寻址变为 **Company 限定**:
471 486  
472 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 492 // 公司内 Agent
478 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 501 - 路由层通过 `resolveAgentDir(companyId, agentId)` 统一封装,向上层透明化。
487 502  
488 503 ### 7.2 OKR/Goals — 全部归属 Company
... ... @@ -515,38 +530,38 @@ HeartbeatService 扩展扫描范围:
515 530  
516 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 21 let rawBody = '';
22 22 req.on('data', chunk => rawBody += chunk);
23 23 req.on('end', () => {
24   - if (!rawBody) return next();
  24 + if (!rawBody) {
  25 + req.body = {};
  26 + req._bodyParsed = true;
  27 + return next();
  28 + }
25 29 try {
26 30 req.body = JSON.parse(rawBody);
27 31 req._bodyParsed = true;
... ...