Commit b15d8570bf1ec6fe9d2ae7ecfe7a051353f2d5b0
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 错误
Showing
10 changed files
with
822 additions
and
240 deletions
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) => { |
| 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; | ... | ... |