diff --git a/docs/LEMONBOSS-SYSTEM-DESIGN.md b/docs/LEMONBOSS-SYSTEM-DESIGN.md index 30e38d8..11604c3 100644 --- a/docs/LEMONBOSS-SYSTEM-DESIGN.md +++ b/docs/LEMONBOSS-SYSTEM-DESIGN.md @@ -1,6 +1,6 @@ # LemonBoss — 企业运营 Agentic Loop 框架 -## 系统设计文档 v1.2 +## 系统设计文档 v2.0 > **One-liner**: 构建一个 "道-法-术-器" 四层虚拟公司多智能体运营系统。Master 对齐人类意图,CXO 制衡决策,Role 专业执行,Skill 原子产出。每层独立 Loop,四级联动形成飞轮。 @@ -70,9 +70,26 @@ | 10 | **运行时架构与并发模型** | [10-runtime-architecture.md](./system-design/10-runtime-architecture.md) | 主进程 + N 子进程 + stdio pipe + ToolInterceptor | | 11 | **目录结构** | [11-directory-structure.md](./system-design/11-directory-structure.md) | packages / server / web / data 全貌 | | 12 | **数据模型** | [12-data-model.md](./system-design/12-data-model.md) | 5 张核心表(agent type: master/cxo/role/skill) | -| 13 | **API 设计** | [13-api-design.md](./system-design/13-api-design.md) | REST + SSE + WebSocket 端点 | +| 13 | **API 设计** | [13-api-design.md](./system-design/13-api-design.md) | Agent + Company + Goals + Innovator REST API | | 14 | **里程碑与附录** | [14-milestones.md](./system-design/14-milestones.md) | 迭代计划 + 决策表 + 术语表 | +### 进阶架构 + +| # | 章节 | 文件 | 概要 | +|---|------|------|------| +| 15 | **Innovator 元 Agent** | [15-innovator-meta-agent.md](./system-design/15-innovator-meta-agent.md) | 第一个手动创建的 Agent,负责创建、训练、交付其他 Agent | +| 16 | **Agent 对话架构** | [16-agent-conversation-architecture.md](./system-design/16-agent-conversation-architecture.md) | 两层日志 + 多轮上下文恢复 | +| 17 | **Skill 编排与并发** | [17-skill-orchestration-and-concurrency.md](./system-design/17-skill-orchestration-and-concurrency.md) | 废除 SQLite 绑定,确立 Local File-System First | +| 18 | **本地文件系统优先** | [18-local-filesystem-first-agent-encapsulation.md](./system-design/18-local-filesystem-first-agent-encapsulation.md) | Agent 完全自治架构 v3.5 | +| 19 | **工具隔离机制** | [19-orchestrator-tool-isolation.md](./system-design/19-orchestrator-tool-isolation.md) | CLI 启动参数层物理剥夺工具权限 | +| 20 | **Agent 创建流程** | [20-scaffold-first-agent-creation.md](./system-design/20-scaffold-first-agent-creation.md) | Scaffold-First 架构 | +| 21 | **FDE 训练流水线** | [21-fde-pipeline-architecture.md](./system-design/21-fde-pipeline-architecture.md) | Hunt→Digest→Evolving 三层训练架构 (≥ 95 分) | +| 22 | **Agent 记忆系统** | [22-agent-memory-system.md](./system-design/22-agent-memory-system.md) | 自动记忆读写 (E2E 27/27 通过) | +| 23 | **主动心跳系统** | [23-agent-active-heartbeat.md](./system-design/23-agent-active-heartbeat.md) | Agent + 公司级心跳监控 (已实现) | +| 24 | **公司层架构** | [24-company-layer-architecture.md](./system-design/24-company-layer-architecture.md) | Multi-Tenant 公司实例化 + 招聘系统 + Bootstrap (已实现) | +| 25 | **Bootstrap 自举机制** | [25-bootstrap-mechanism.md](./system-design/25-bootstrap-mechanism.md) | 公司创建时自动部署核心骨干团队 | +| 26 | **全自动招聘编排** | [26-automated-hiring-orchestration.md](./system-design/26-automated-hiring-orchestration.md) | Creator → Skills → Innovator 训练流水线 | + --- ## 版本历史 @@ -80,11 +97,12 @@ | 版本 | 日期 | 变更 | |------|------|------| | **v1.0** | 2026-03-21 | 初版:三层架构 (Sub/Role/Boss) + 5 阶段 Loop | -| **v1.1** | 2026-03-23 | 新增:元能力、沙盒自治、流转协议、分层反思 | -| **v1.2** | 2026-03-23 | **架构升级**:三层 → 四层 (Master/CXO/Role/Skill)。引入道-法-术-器哲学框架和三省六部治理逻辑。Master 对齐意图,CXO 制衡决策,Role 专业执行,Skill 原子复用。元能力分层分布。 | +| **v1.1** | 2026-03-23 | 新增:元能力、沙箱自治、流转协议、分层反思 | +| **v1.2** | 2026-03-23 | **架构升级**:三层 → 四层 (Master/CXO/Role/Skill)。道-法-术-器哲学框架。 | +| **v2.0** | 2026-03-26 | **Multi-Tenant 重构**:Company 层实例化、模板库 + 招聘系统、Bootstrap 自举、SOP Pipeline、心跳系统、前端 Dashboard。目录结构迁移到 `data/system/` + `data/{companyId}/`。新增章节 15-24。 | --- -> 📝 **文档版本**: v1.2 -> 📅 **更新日期**: 2026-03-23 +> 📝 **文档版本**: v2.0 +> 📅 **更新日期**: 2026-03-26 > ✍️ **维护者**: LemonBoss Team diff --git a/docs/architecture-v5.md b/docs/architecture-v5.md index ec55e6c..53db0fd 100644 --- a/docs/architecture-v5.md +++ b/docs/architecture-v5.md @@ -1,8 +1,8 @@ # LemonBoss v5 架构方案 -> **版本**: v5.2 — "大脑·小脑·海马体 + OKR 目标系统" -> **日期**: 2026-03-24 -> **状态**: Phase 1-2 已完成,Phase 3 进行中 +> **版本**: v5.3 — "大脑·小脑·海马体 + OKR + Multi-Tenant Company" +> **日期**: 2026-03-26 +> **状态**: Phase 1-6 已完成,Phase 7 认知架构待开始 > [!IMPORTANT] > **已确认决策**(2026-03-24/25) @@ -433,14 +433,14 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行 - [x] ACP 事件流实时展示 - [x] 文件树递归展示 + 文件预览 -### 🔄 Phase 3: OKR 目标系统 (进行中) +### ✅ Phase 3: OKR 目标系统 (已完成) - [x] 设计完成: 点分层级 ID + goal.json 结构 - [x] Goals CRUD API (GoalsService + routes) - [x] dispatch/report 集成 goalId/nodeId - [x] progress 自动计算 -- [ ] system prompt 注入 Goal 上下文 -- [ ] 前端 OKR 看板 +- [x] system prompt 注入 Goal 上下文 (GoalsService.buildGoalContext) +- [x] 前端 OKR 看板 (OkrDashboard.vue) ### ✅ Phase 3.5: FDE 训练流水线 (已完成 ⭐) @@ -453,7 +453,31 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行 - [x] retrain-pipeline.js 对齐新 agent 名 - 详见: `docs/system-design/21-fde-pipeline-architecture.md` -### ⬚ Phase 4: 认知架构 (待开始) +### ✅ Phase 4: 公司层架构 + 招聘系统 (已完成 ⭐) + +- [x] Multi-Tenant 目录重构: `data/system/` + `data/{companyId}/` +- [x] 模板库: `data/system/templates/` (ceo, cto, coo, hr, qa-judge 等) +- [x] 公司 CRUD API: create/list/get/start/shutdown +- [x] 招聘系统: 模板优先 → Creator+FDE 兜底 (≥ 95 分质量门禁) +- [x] Bootstrap 自举机制: `_company_bootstrap/manifest.json` +- [x] SOP Pipeline 执行引擎: 创建/运行/推进/驳回 +- 详见: `docs/system-design/24-company-layer-architecture.md` + +### ✅ Phase 5: 心跳系统 (已完成) + +- [x] Agent 级心跳: `heartbeat-service.js` +- [x] 公司级心跳: `company-heartbeat-service.js` +- [x] 前端 per-agent 心跳控制 (CompanyDashboard.vue) +- 详见: `docs/system-design/23-agent-active-heartbeat.md` + +### ✅ Phase 6: 前端 Dashboard (已完成) + +- [x] CompanyDashboard.vue (Agent 列表 + 心跳控制 + 操作按钮) +- [x] OkrDashboard.vue (OKR 目标看板) +- [x] MasterChatDrawer.vue (侧边抽屉对话) +- [x] Agent Action Controls (chat, skills panel, train trigger) + +### ⬜ Phase 7: 认知架构 (待开始) - [ ] 海马体检索 (关键词匹配 MVP) - [ ] 小脑执行 (.md 步骤 + .js 脚本) @@ -488,13 +512,19 @@ Task 进入 → 海马体检索 → 命中? → 小脑快速执行 | `packages/agent-core/AgentScaffold.js` | Agent 脚手架 (创建时模板) | | `packages/agent-core/base/` | 共享基类 (运行时继承) | | `server/routes/agent-chat.js` | 核心 API (chat, dispatch, report, CRUD) | +| `server/routes/company.js` | 公司管理 API (hire, fire, OKR, Pipeline, Heartbeat) | | `server/routes/goals.js` | OKR Goals API | -| `server/services/retrain-pipeline.js` | 旧版训练流水线 (已对齐 agent 名) | -| `web/src/views/AgentChat.vue` | 统一前端 (四列布局) | -| `data/agents/hunter/` | Hunter 元 Agent (l3-hunt) | -| `data/agents/digester/` | Digester 元 Agent (l2-digest) | -| `data/agents/evolver/` | Evolver 元 Agent (evolving) | -| `data/agents/innovator/` | Innovator 编排 Agent | -| `data/goals/` | OKR 目标数据 | +| `server/services/company-service.js` | 公司 CRUD + 招聘逻辑 | +| `server/services/company-heartbeat-service.js` | 公司级心跳服务 | +| `server/services/heartbeat-service.js` | Agent 级心跳服务 | +| `server/services/pipeline-service.js` | SOP 流水线引擎 | +| `server/services/retrain-pipeline.js` | FDE 重训流水线 (已对齐 agent 名) | +| `web/src/views/CompanyDashboard.vue` | 公司仪表盘 | +| `web/src/views/OkrDashboard.vue` | OKR 目标看板 | +| `web/src/views/AgentChat.vue` | Agent 对话详情 (四列布局) | +| `data/system/agents/innovator/` | Innovator 编排 Agent | +| `data/system/templates/` | Agent 模板库 | +| `data/goals/` | 全局 OKR 目标数据 | | `docs/system-design/21-fde-pipeline-architecture.md` | FDE 流水线架构文档 | +| `docs/system-design/24-company-layer-architecture.md` | 公司层架构文档 | | `docs/claude-code-cron.md` | Claude Code 定时调度文档 | diff --git a/docs/system-design/11-directory-structure.md b/docs/system-design/11-directory-structure.md index a7f9899..012ac37 100644 --- a/docs/system-design/11-directory-structure.md +++ b/docs/system-design/11-directory-structure.md @@ -1,5 +1,8 @@ # 11. 项目目录结构 +> **更新日期**: 2026-03-26 +> **状态**: ✅ 反映 multi-tenant 重构后的实际结构 + ``` lemonboss/ ├── packages/ @@ -8,103 +11,177 @@ lemonboss/ │ │ ├── transports/ │ │ └── launchers/ │ │ -│ ├── agent-core/ # Agent 原子模型核心 -│ │ ├── Agent.js # Agent 基类 -│ │ ├── SubAgent.js # SubAgent 子类 -│ │ ├── RoleAgent.js # RoleAgent 子类 -│ │ ├── BossAgent.js # BossAgent 子类 -│ │ ├── modules/ -│ │ │ ├── PerceptionModule.js -│ │ │ ├── ReasoningModule.js -│ │ │ ├── ExecutionModule.js -│ │ │ ├── FeedbackModule.js -│ │ │ └── ReflectionModule.js # v1.1: 含分层反思策略 -│ │ ├── tools/ # v1.1 新增 -│ │ │ └── BossMetaTools.js # BossAgent 元操作工具 +│ ├── agent-core/ # Agent 核心模块 +│ │ ├── AgentScaffold.js # Agent 脚手架 (创建时模板) +│ │ ├── base/ # 共享基类 (运行时继承) +│ │ │ ├── common/ # 通用基类 (所有 Agent) +│ │ │ ├── master/ # Master 类型基类 +│ │ │ ├── skill/ # Skill 类型基类 +│ │ │ └── cxo/ # CXO 类型基类 │ │ └── index.js │ │ -│ ├── loop-engine/ # Agentic Loop 引擎 -│ │ ├── LoopEngine.js # 通用循环引擎 -│ │ ├── BossLoop.js # BossAgent 专用循环 -│ │ ├── RoleLoop.js # RoleAgent 专用循环 -│ │ └── SubLoop.js # SubAgent 专用循环 -│ │ -│ ├── memory/ # 记忆系统 -│ │ ├── ShortTermMemory.js -│ │ ├── LongTermMemory.js -│ │ ├── SessionMemory.js -│ │ └── MemoryManager.js +│ ├── evolution/ # 遗传进化引擎模块 │ │ -│ ├── gateway/ # IM 网关 -│ │ ├── GatewayAdapter.js # 抽象接口 -│ │ ├── FeishuGateway.js -│ │ ├── WhatsAppGateway.js -│ │ └── DingTalkGateway.js -│ │ -│ └── knowledge/ # 知识库引擎 -│ ├── DocumentStore.js -│ ├── FTSSearchEngine.js -│ └── VectorSearchEngine.js +│ └── plugin-bootstrap/ # 插件引导模块 │ ├── server/ -│ ├── index.js # Express 入口 +│ ├── agent-server.js # Express 入口 (端口 3000) │ ├── routes/ -│ │ ├── agent.js # Agent CRUD API -│ │ ├── boss.js # BossAgent 管理 API -│ │ ├── loop.js # Loop 状态 API -│ │ └── gateway.js # Gateway Webhook 接收 -│ ├── services/ -│ │ ├── AgentService.js # Agent 生命周期管理(v1.1: 含动态创建/销毁) -│ │ ├── LoopService.js # Loop 引擎服务 -│ │ ├── CronService.js # 定时任务服务 -│ │ ├── GoalTracker.js # 目标追踪服务 -│ │ └── PipelineRouter.js # v1.1 新增: Pipeline 流转路由 -│ └── src/core/ -│ ├── AgentManager.js # Agent 注册与调度 -│ └── SandboxManager.js # 沙盒进程管理(v1.1: 含 workspace + 资源隔离) +│ │ ├── agent-chat.js # Agent CRUD + Chat + Dispatch/Report API +│ │ ├── company.js # Company CRUD + Hire/Fire + OKR + Pipeline + Heartbeat +│ │ ├── goals.js # 全局 OKR Goals API +│ │ ├── master-chat.js # Master Agent 专用对话 API +│ │ ├── innovator.js # Innovator 技能管理 + 训练相关 API +│ │ ├── evolution.js # 遗传进化引擎 API +│ │ ├── arena.js # Arena 技能商店 API +│ │ ├── claude-chat.js # Claude Chat 前端对话 API +│ │ ├── claude-chat-ws.js # WebSocket 通道 +│ │ ├── config.js # 全局配置 API +│ │ ├── auth.js # 用户认证 API +│ │ ├── users.js # 用户管理 API +│ │ ├── open-api.js # 公开 API (技能商店/文档) +│ │ └── whatsapp-auth.js # WhatsApp 网关认证 +│ │ +│ └── services/ +│ ├── company-service.js # 公司 CRUD + 招聘逻辑 +│ ├── company-heartbeat-service.js # 公司级心跳服务 +│ ├── heartbeat-service.js # Agent 级心跳服务 +│ ├── memory-service.js # 记忆系统 (短期/反思/海马体) +│ ├── pipeline-service.js # SOP 流水线引擎 +│ ├── schedule-service.js # 工作日历调度 +│ ├── datasource-service.js # 运营数据接入 +│ ├── goals.js # OKR GoalsService +│ ├── claude-chat-service.js # Claude CLI 会话管理 +│ ├── conversation-logger.js # 对话日志持久化 +│ ├── innovator-service.js # Innovator 训练编排 +│ ├── retrain-pipeline.js # FDE 重训流水线 +│ ├── retrain-watchdog.js # 重训看门狗 +│ ├── benchmark-runner.js # Benchmark 执行器 +│ ├── benchmark-db.js # Benchmark 数据库 +│ ├── evolution-loop.js # 遗传进化循环 +│ ├── skill-registry.js # 技能注册表 +│ ├── skill-db.js # 技能数据库 +│ ├── skill-dir-manager.js # 技能目录管理 +│ ├── skill-packager.js # 技能打包 +│ ├── skill-task-manager.js # 技能任务管理 +│ ├── task-queue.js # 任务队列 +│ ├── job-manager.js # 异步任务管理 +│ ├── file-parser.js # 文件解析 (PDF/DOCX) +│ └── user-db.js # 用户数据库 │ -├── web/ # 前端控制面板 -│ └── src/views/ -│ ├── Dashboard.vue # 公司运营仪表盘 -│ ├── AgentGraph.vue # Agent 拓扑图 -│ ├── GoalTracker.vue # 目标进度面板 -│ └── LogViewer.vue # 日志查看器 +├── web/ # 前端控制面板 (Vue 3 + Vite) +│ └── src/ +│ ├── components/ +│ │ ├── AppNav.vue # 顶部导航 (LemonBoss / MasterBot / Companies) +│ │ ├── FileNode.vue # 文件树节点组件 +│ │ └── MasterChatDrawer.vue # Master Agent 侧边对话抽屉 +│ ├── views/ +│ │ ├── CompanyDashboard.vue # 公司仪表盘 (Agent 列表 + 心跳控制) +│ │ ├── AgentChat.vue # Agent 对话详情 (四列布局) +│ │ ├── AgentList.vue # Agent 列表页 +│ │ └── OkrDashboard.vue # OKR 目标看板 +│ └── router/ +│ └── index.js # 路由定义 │ -├── data/ -│ ├── agents/ # Agent 实例数据 (完全自治微容器) -│ │ ├── innovator-001/ # 独立工作区沙盘实例 -│ │ │ ├── agent.md # 核心占位符身份标识 -│ │ │ ├── config.json # 运行配置 -│ │ │ ├── identity.md # 名称、emoji等基础信息 -│ │ │ ├── conversations/ # 该独立Agent的所有历史记忆对话记录 -│ │ │ │ └── {convId}/ -│ │ │ │ ├── meta.json -│ │ │ │ └── messages.log -│ │ │ ├── logs/ -│ │ │ ├── memory/ -│ │ │ ├── soul.md -│ │ │ ├── tools.md -│ │ │ ├── workspace/ -│ │ │ └── .claude/ -│ │ │ └── skills/ # 专属本地工作技能池 -│ │ │ ├── main_skill/ # 核心操作指南与流程控制 (SKILL.md) -│ │ │ └── meta_hunt/ -│ │ └── master-001/ +├── bin/ +│ └── lemon.js # CLI 入口 (公司自举 + Agent 管理命令) +│ +├── scripts/ # 运维脚本 +│ +├── data/ # ⭐ 数据根目录 (Multi-Tenant 架构) +│ ├── system/ # 系统级数据 (跨公司共享) +│ │ ├── agents/ # 全局 Agent 池 +│ │ │ ├── master/ # Master Agent (唯一入口) +│ │ │ ├── innovator/ # Innovator 编排 Agent +│ │ │ ├── agent-creator/ # Agent 创建器 +│ │ │ ├── trend-hunter/ # 趋势猎手 +│ │ │ ├── reddit-scraper/ # Reddit 爬虫 +│ │ │ └── satire-news-scraper/ # 讽刺新闻爬虫 +│ │ │ +│ │ └── templates/ # 📦 Agent 模板库 (招聘时优先查找) +│ │ ├── _registry.json # 模板注册表索引 +│ │ ├── _company_bootstrap/ # 公司自举清单 (manifest.json) +│ │ ├── ceo/ # CEO 通用模板 +│ │ ├── cto/ # CTO 通用模板 +│ │ ├── coo/ # COO 通用模板 +│ │ ├── hr/ # HR 通用模板 +│ │ ├── qa-judge/ # QA 仲裁模板 +│ │ ├── agent_creator/ # Agent Creator 模板 +│ │ └── scrapling_crawler/ # 爬虫模板 │ │ -│ ├── goals/ # 目标定义与进度 -│ │ └── goal-{id}.json +│ ├── {companyId}/ # 公司实例 (每家公司一个目录) +│ │ ├── company.json # 公司元数据 + 状态 + 心跳配置 +│ │ ├── agents/ # 该公司专属 Agent 池 +│ │ │ ├── ceo/ # 公司 CEO +│ │ │ │ ├── agent.md # 核心身份标识 +│ │ │ │ ├── soul.md # 思维模式 +│ │ │ │ ├── identity.md # 名称/emoji 等 +│ │ │ │ ├── tools.md # 可用工具 +│ │ │ │ ├── user.md # 上级偏好 +│ │ │ │ ├── heartbeat.md # 心跳策略 +│ │ │ │ ├── todo.md # 待办清单 +│ │ │ │ ├── plan.md # 任务计划 +│ │ │ │ ├── config.json # 运行配置 +│ │ │ │ ├── cron.json # 定时任务 +│ │ │ │ └── memory/ # 记忆系统 +│ │ │ │ ├── memory.md # 记忆总览 +│ │ │ │ ├── hippocampus.md # 海马体经验索引 +│ │ │ │ ├── hippocampus-index.json # 海马体结构化索引 +│ │ │ │ ├── cerebellum/ # 小脑 (固化方案) +│ │ │ │ ├── short-term/ # 短期记忆 (session-*.md) +│ │ │ │ └── reflections/ # 反思记录 (reflect-*.json) +│ │ │ ├── cto/ +│ │ │ ├── coo/ +│ │ │ └── {role-agent}/ +│ │ │ +│ │ ├── goals/ # 公司级 OKR (可选) +│ │ │ └── _index.json +│ │ ├── pipelines/ # SOP 流水线定义 +│ │ └── workspace/ # 公司共享工作区 +│ │ └── {agentId}/ # Agent 工作产出 │ │ -│ └── trained_skills/ # 供存放零散任务脚本(非必须存在) +│ ├── goals/ # 全局 OKR 目标 +│ │ ├── _index.json # 所有 Goal 摘要索引 +│ │ └── G-{NNN}/ # 每个 Goal 一个目录 +│ │ ├── goal.json # 完整 OKR 树 +│ │ └── progress.json # 自动计算进度快照 +│ │ +│ └── agents/ # (兼容旧路径) 全局 tasks +│ └── .tasks/ # 任务记录 │ ├── docs/ │ ├── LEMONBOSS-SYSTEM-DESIGN.md # 主索引 -│ └── system-design/ # 分章节子文档 -│ ├── 01-vision.md -│ ├── 02-agent-architecture.md -│ ├── ... -│ └── 13-appendix.md +│ └── system-design/ # 分章节子文档 (01~24.md) │ -├── CLAUDE.md +├── CLAUDE.md # Claude CLI 配置 ├── package.json -└── pnpm-workspace.yaml +├── pnpm-workspace.yaml +├── install.sh # 安装脚本 +└── start.sh # 启动脚本 +``` + +--- + +## 路由挂载路径 + +| 挂载路径 | 路由文件 | 说明 | +|---------|---------|------| +| `/api/agent` | `agent-chat.js` | Agent CRUD + Chat + Dispatch/Report | +| `/api/company` | `company.js` | 公司 CRUD + 招聘 + OKR + Pipeline | +| `/api/goals` | `goals.js` | 全局 OKR Goals | + +## 数据寻址规则 + +```javascript +// 全局 Agent(不属于任何公司) +const agentDir = path.join(DATA_DIR, 'system', 'agents', agentId); +// 即: data/system/agents/master/ + +// 公司内 Agent +const agentDir = path.join(DATA_DIR, companyId, 'agents', agentId); +// 即: data/wechatai/agents/ceo/ + +// 模板库 +const templateDir = path.join(DATA_DIR, 'system', 'templates', roleName); +// 即: data/system/templates/ceo/ ``` diff --git a/docs/system-design/13-api-design.md b/docs/system-design/13-api-design.md index ee9a904..2e676d0 100644 --- a/docs/system-design/13-api-design.md +++ b/docs/system-design/13-api-design.md @@ -1,50 +1,195 @@ # 13. API 设计 -## 13.1 Agent 管理 +> **更新日期**: 2026-03-26 +> **状态**: ✅ 反映实际已实现的 API 端点 + +--- + +## 13.1 Agent 管理 (`/api/agent`) + +| 方法 | 路径 | 说明 | +|------|------|------| +| `GET` | `/api/agent/list` | 列出所有 Agent | +| `GET` | `/api/agent/:agentId/info` | 获取 Agent 详情 | +| `POST` | `/api/agent/scaffold` | 创建 Agent 骨架 (AgentScaffold) | +| `POST` | `/api/agent/:agentId/chat` | 与 Agent 对话 (SSE 流式) | +| `POST` | `/api/agent/:agentId/chat/:convId/stop` | 停止正在进行的对话 | + +## 13.2 Agent Bootstrap 文件 + +| 方法 | 路径 | 说明 | +|------|------|------| +| `GET` | `/api/agent/:agentId/bootstrap/:filename` | 获取 Agent Bootstrap 文件 | +| `GET` | `/api/agent/:agentId/files` | 获取 Agent 文件树 | +| `GET` | `/api/agent/:agentId/file/*` | 读取 Agent 任意文件 | + +## 13.3 Agent 待办与计划 + +| 方法 | 路径 | 说明 | +|------|------|------| +| `GET` | `/api/agent/:agentId/todo` | 获取待办清单 | +| `PUT` | `/api/agent/:agentId/todo` | 更新待办清单 | +| `GET` | `/api/agent/:agentId/plan` | 获取任务计划 | +| `PUT` | `/api/agent/:agentId/plan` | 更新任务计划 | +| `GET` | `/api/agent/:agentId/cron` | 获取定时任务 | +| `PUT` | `/api/agent/:agentId/cron` | 更新定时任务 | + +## 13.4 任务分发与汇报 + +| 方法 | 路径 | 说明 | +|------|------|------| +| `POST` | `/api/agent/task/dispatch` | 向目标 Agent 分发任务 (写入 todo.md + plan.md,支持 autoExecute) | +| `POST` | `/api/agent/task/report` | Agent 汇报任务完成 (更新 todo.md + plan.md + 可选 Goal 节点) | +| `POST` | `/api/agent/task/reject` | 拒绝/驳回任务 | +| `POST` | `/api/agent/human-request` | Agent 向人类发起待办请求 | + +## 13.5 Agent 对话历史 + +| 方法 | 路径 | 说明 | +|------|------|------| +| `GET` | `/api/agent/:agentId/conversations` | 列出对话历史 | +| `GET` | `/api/agent/:agentId/conversations/:convId` | 获取对话详情 | +| `GET` | `/api/agent/:agentId/conversations/:convId/sub-logs` | 获取子 Agent 日志 | +| `GET` | `/api/agent/:agentId/conversations/:convId/sub-logs/:logFile` | 读取子日志文件 | +| `DELETE` | `/api/agent/:agentId/conversations/:convId` | 删除对话记录 | + +## 13.6 Agent 记忆系统 + +| 方法 | 路径 | 说明 | +|------|------|------| +| `POST` | `/api/agent/:agentId/memory/cerebellum` | 写入小脑 (固化方案) | +| `POST` | `/api/agent/:agentId/memory/consolidate` | 触发记忆整合 | +| `POST` | `/api/agent/:agentId/memory/daily-report` | 生成日报 | + +--- + +## 13.7 Company 管理 (`/api/company`) + +### CRUD | 方法 | 路径 | 说明 | |------|------|------| -| `POST` | `/api/agents` | 创建 Agent | -| `GET` | `/api/agents` | 列出所有 Agent | -| `GET` | `/api/agents/:id` | 获取 Agent 详情 | -| `PUT` | `/api/agents/:id` | 更新 Agent 配置 | -| `DELETE` | `/api/agents/:id` | 删除 Agent | -| `POST` | `/api/agents/:id/start` | 启动 Agent | -| `POST` | `/api/agents/:id/stop` | 停止 Agent | -| `PUT` | `/api/agents/:id/define` | v1.1: 热更新 Agent Define | +| `POST` | `/api/company/create` | 创建新公司 (自动初始化目录 + company.json) | +| `GET` | `/api/company/list` | 列出所有公司 | +| `GET` | `/api/company/templates` | 列出所有模板 (读取 _registry.json) | +| `GET` | `/api/company/:companyId` | 获取公司详情 | +| `PUT` | `/api/company/:companyId` | 更新公司信息 | +| `POST` | `/api/company/:companyId/shutdown` | 关停公司 | +| `POST` | `/api/company/:companyId/start` | 启动公司 | +| `GET` | `/api/company/:companyId/status` | 获取公司运行状态 | -## 13.2 BossAgent 调度 +### 招聘与 Agent 管理 | 方法 | 路径 | 说明 | |------|------|------| -| `POST` | `/api/boss/init` | 初始化 BossAgent(分析业务 → 动态创建组织架构) | -| `POST` | `/api/boss/goal` | 设定公司 Goal | -| `GET` | `/api/boss/status` | 获取全局运行状态(含 Pipeline DAG) | -| `POST` | `/api/boss/reflect` | 手动触发一次反思 | -| `GET` | `/api/boss/report` | 获取最近一轮反思报告 | -| `GET` | `/api/boss/pipeline` | v1.1: 获取当前 Pipeline DAG | +| `POST` | `/api/company/:companyId/hire` | 招聘 Agent (模板优先 → Creator+FDE 兜底) | +| `POST` | `/api/company/:companyId/fire` | 解雇 Agent | +| `POST` | `/api/company/:companyId/deposit-template` | 沉淀 Agent 为模板 | +| `GET` | `/api/company/:companyId/agents` | 列出公司所有 Agent | +| `GET` | `/api/company/:companyId/agents/:agentId/skills` | 查看 Agent 技能 | -## 13.3 Loop 引擎 +### 心跳控制 | 方法 | 路径 | 说明 | |------|------|------| -| `GET` | `/api/loop/:agentId/status` | 获取 Agent 的 Loop 状态 | -| `GET` | `/api/loop/:agentId/history` | 获取 Loop 运行历史 | -| `POST` | `/api/loop/:agentId/pause` | 暂停 Agent 的 Loop | -| `POST` | `/api/loop/:agentId/resume` | 恢复 Agent 的 Loop | +| `PUT` | `/api/company/:companyId/agents/:agentId/heartbeat` | 更新 Agent 心跳配置 | +| `POST` | `/api/company/:companyId/agents/:agentId/heartbeat/start` | 启动 Agent 心跳 | +| `POST` | `/api/company/:companyId/agents/:agentId/heartbeat/stop` | 停止 Agent 心跳 | -## 13.4 Gateway(Webhook 接收) +### 公司级 OKR | 方法 | 路径 | 说明 | |------|------|------| -| `POST` | `/api/gateway/feishu/event` | 飞书事件回调 | -| `POST` | `/api/gateway/dingtalk/event` | 钉钉事件回调 | -| `GET` | `/api/gateway/whatsapp/qr` | WhatsApp 二维码获取 | +| `GET` | `/api/company/:companyId/goals` | 列出公司 OKR | +| `POST` | `/api/company/:companyId/goals` | 创建公司 OKR | +| `GET` | `/api/company/:companyId/goals/:goalId` | 获取 OKR 详情 | +| `PUT` | `/api/company/:companyId/goals/:goalId` | 更新 OKR | +| `POST` | `/api/company/:companyId/goals/:goalId/nodes` | 添加 OKR 节点 | +| `PUT` | `/api/company/:companyId/goals/:goalId/nodes/:nodeId` | 更新 OKR 节点 | +| `GET` | `/api/company/:companyId/goals/:goalId/progress` | 获取 OKR 进度 | + +### SOP 流水线 + +| 方法 | 路径 | 说明 | +|------|------|------| +| `POST` | `/api/company/:companyId/pipelines` | 创建流水线 | +| `GET` | `/api/company/:companyId/pipelines` | 列出流水线 | +| `GET` | `/api/company/:companyId/pipelines/:pipelineId` | 获取流水线详情 | +| `PUT` | `/api/company/:companyId/pipelines/:pipelineId` | 更新流水线 | +| `POST` | `/api/company/:companyId/pipelines/:pipelineId/run` | 运行流水线 | +| `GET` | `/api/company/:companyId/pipelines/runs/list` | 列出流水线运行记录 | +| `GET` | `/api/company/:companyId/pipelines/runs/:runId` | 获取运行详情 | +| `POST` | `/api/company/:companyId/pipelines/runs/:runId/advance` | 推进流水线下一步 | +| `GET` | `/api/company/:companyId/pipelines/runs/:runId/current` | 获取当前步骤 | +| `POST` | `/api/company/:companyId/pipelines/runs/:runId/reject` | 驳回当前步骤 | + +### 工作日历 + +| 方法 | 路径 | 说明 | +|------|------|------| +| `GET` | `/api/company/:companyId/schedule` | 获取日程表 | +| `POST` | `/api/company/:companyId/schedule/slots` | 创建日程槽 | +| `PUT` | `/api/company/:companyId/schedule/slots/:slotId` | 更新日程槽 | +| `DELETE` | `/api/company/:companyId/schedule/slots/:slotId` | 删除日程槽 | + +### 运营数据 + +| 方法 | 路径 | 说明 | +|------|------|------| +| `GET` | `/api/company/:companyId/data/metrics` | 获取运营指标 | +| `GET` | `/api/company/:companyId/data/trending` | 获取趋势数据 | +| `GET` | `/api/company/:companyId/data/attribution` | 获取归因分析 | + +--- + +## 13.8 全局 OKR (`/api/goals`) + +| 方法 | 路径 | 说明 | +|------|------|------| +| `GET` | `/api/goals` | 列出所有目标 (返回 _index.json) | +| `POST` | `/api/goals` | 创建新目标 | +| `GET` | `/api/goals/:goalId` | 获取完整 OKR 树 | +| `PUT` | `/api/goals/:goalId` | 更新目标元数据 | +| `POST` | `/api/goals/:goalId/nodes` | 添加节点 | +| `GET` | `/api/goals/:goalId/nodes/:nodeId` | 获取节点详情 | +| `PUT` | `/api/goals/:goalId/nodes/:nodeId` | 更新节点状态 | +| `GET` | `/api/goals/:goalId/progress` | 返回进度统计 | + +--- + +## 13.9 Master Agent 对话 (`/api/master`) + +| 方法 | 路径 | 说明 | +|------|------|------| +| `POST` | `/api/master/chat` | 与 Master Agent 对话 (SSE 流式) | +| `POST` | `/api/master/upload` | 上传文件给 Master | +| `GET` | `/api/master/sessions` | 列出 Master 对话会话 | +| `DELETE` | `/api/master/sessions/:id` | 删除 Master 会话 | + +--- + +## 13.10 Innovator 技能管理 (`/api/innovator`) + +| 方法 | 路径 | 说明 | +|------|------|------| +| `GET` | `/api/innovator/skills` | 列出所有技能 | +| `GET` | `/api/innovator/skills/:name` | 获取技能详情 | +| `DELETE` | `/api/innovator/skills/:name` | 删除技能 | +| `PATCH` | `/api/innovator/skills/:name` | 更新技能元数据 | +| `POST` | `/api/innovator/skills/:name/rename` | 重命名技能 | +| `GET` | `/api/innovator/skills/:name/evolve-log` | 获取进化日志 | +| `POST` | `/api/innovator/skills/scan` | 扫描技能目录 | +| `POST` | `/api/innovator/skills/:name/retrain` | 触发重训 | +| `GET` | `/api/innovator/skills/:name/artifacts` | 获取技能产物 | +| `GET` | `/api/innovator/jobs/:jobId` | 查询异步任务状态 | +| `GET` | `/api/innovator/conversations` | 列出 Innovator 对话 | + +--- -## 13.5 实时流(SSE / WebSocket) +## 13.11 实时流 | 端点 | 协议 | 说明 | |------|------|------| -| `/api/agents/:id/stream` | SSE | 单 Agent 实时输出流 | -| `/ws/boss` | WebSocket | BossAgent 全局状态流(含 Pipeline 变更事件) | -| `/ws/dashboard` | WebSocket | 仪表盘实时数据推送 | +| `/api/agent/:agentId/chat` | SSE | Agent 对话实时输出流 | +| `/api/master/chat` | SSE | Master Agent 对话实时输出流 | +| WebSocket (claude-chat-ws.js) | WS | Claude Chat 双向实时通道 | diff --git a/docs/system-design/21-fde-pipeline-architecture.md b/docs/system-design/21-fde-pipeline-architecture.md index f62b8a9..eb44523 100644 --- a/docs/system-design/21-fde-pipeline-architecture.md +++ b/docs/system-design/21-fde-pipeline-architecture.md @@ -1,8 +1,8 @@ # 21. FDE Pipeline Architecture — Hunt→Digest→Evolving 训练流水线 -> **版本**: v1.0 -> **日期**: 2026-03-24 -> **状态**: ✅ 端到端验证通过(CEO Agent 训练 92/100) +> **版本**: v1.1 +> **日期**: 2026-03-26 +> **状态**: ✅ 端到端验证通过(质量门禁 ≥ 95 分) --- @@ -27,7 +27,7 @@ FDE (Hunt→Digest→Evolving) 是 LemonBoss 的 **Agent 技能训练流水线** │ └─ Layer 3: EVOLVE ──→ Evolver Agent 输入: digest/ 产出 - 输出: 达标 SKILL.md (score ≥ 90) + evolve_log.md + 输出: 达标 SKILL.md (score ≥ 95) + evolve_log.md ``` --- @@ -66,17 +66,20 @@ Hunter ────→ l1-search-engine, l1-web-fetch, l2-web-research, ``` data/ -├── workspace/ceo/ ← 共享 (元 Agent 读写) +├── {companyId}/workspace/{targetAgentId}/ ← 公司共享工作区 (元 Agent 间共享) │ ├── hunt/ │ ├── digest/ │ └── evolve/ -└── agents/ceo/ ← CEO 的资产 +└── {companyId}/agents/{targetAgentId}/ ← 目标 Agent 的资产 ├── hunt/ ← Hunter 写入 ├── digest/ ← Digester 写入 ├── evolve/ ← Evolver 写入 └── .claude/skills/main_skill/SKILL.md ← Evolver 安装最终版 ``` +> **注意**: 全局元 Agent (如 Hunter/Digester/Evolver) 位于 `data/system/agents/`。 +> 对于全局训练任务,路径前缀为 `data/system/`。 + **原则**: 先写到 workspace/,再用 `cp -r` 复制到 agents/。 --- @@ -138,7 +141,7 @@ data/ ``` **停止条件**: -- score ≥ 90 → 达标 ✅ +- score ≥ 95 → 达标 ✅ - iterations ≥ maxIterations → 超时 ⚠️ - 连续 3 次分数变化 < 2 → 停滞 ⚠️ @@ -273,12 +276,7 @@ benchmark_score: 92 | 文件 | 用途 | |------|------| -| `data/agents/hunter/.claude/skills/main_skill/SKILL.md` | Hunter 主技能 (l3-hunt) | -| `data/agents/digester/.claude/skills/main_skill/SKILL.md` | Digester 主技能 (l2-digest) | -| `data/agents/evolver/.claude/skills/main_skill/SKILL.md` | Evolver 主技能 (evolving) | -| `data/agents/innovator/.claude/skills/main_skill/SKILL.md` | Innovator 编排技能 | -| `data/agents/hunter/.claude/skills/l1-*/SKILL.md` | Hunter 依赖的 L1 技能 | -| `data/agents/hunter/.claude/skills/l2-*/SKILL.md` | Hunter 依赖的 L2 技能 | +| `data/system/agents/innovator/.claude/skills/main_skill/SKILL.md` | Innovator 编排技能 | +| `data/system/agents/trend-hunter/` | Hunter 元 Agent | | `server/routes/agent-chat.js:buildSystemPrompt()` | System Prompt 构建 (含 skills 扫描) | -| `server/services/retrain-pipeline.js` | 旧版训练流水线 (已对齐 agent 名) | -| `data/agents/innovator/docs/` | 所有 L1/L2/meta skill 范本 | +| `server/services/retrain-pipeline.js` | FDE 重训流水线 (已对齐 agent 名) | diff --git a/docs/system-design/23-agent-active-heartbeat.md b/docs/system-design/23-agent-active-heartbeat.md index 27c2575..166cefb 100644 --- a/docs/system-design/23-agent-active-heartbeat.md +++ b/docs/system-design/23-agent-active-heartbeat.md @@ -1,8 +1,8 @@ # 23. Agent Active Heartbeat System — 主动心跳与监控架构 -> **版本**: v1.0 (设计稿) -> **日期**: 2026-03-25 -> **状态**: 规划中 +> **版本**: v2.0 (已实现) +> **日期**: 2026-03-26 +> **状态**: ✅ 已完成 (Agent 级 + 公司级心跳均已上线) > **前置**: Phase 3 记忆架构已完成,OKR 目标大盘已上线 --- @@ -72,24 +72,30 @@ sequenceDiagram --- -## 三、待实现 TODO 计划 - -- [ ] **1. Heartbeat 后端引擎设计** - - 在 `server/services/heartbeat-service.js` 实现通用的心跳轮询控制器。 - - 能够读取各个 Agent 配置的 `heartbeatInterval`(支持独立配置时间间隔,如 qa-judge 15分钟,master 30分钟)。 -- [ ] **2. 隐式对话 API (`agent-chat.js` 支持)** - - 修改 `agent-chat.js` 中的底层 ACP 唤起逻辑,支持传入 `silent: true` 以及 `isHidden` 参数。 - - 确保这些会话依然会经历 Phase 1 的记忆提取。 -- [ ] **3. `qa-judge` 的专项 prompt 优化** - - 完善 `qa-judge/heartbeat.md` 与 `qa-judge/cron.json`,使其明确自己“裁判+巡检”的作用和判定 OKR 进度的标准。 -- [ ] **4. 拦截发散风暴 (Anti-Loop 制衡机制)** - - 防止 Agent 每次心跳都在给别人发重复的警告。 - - **方案**:因为有 Memory 架构的存在,Agent 在心跳前会读到自己最近的 session(如“我在 15分钟前刚发过催促”),因此可以通过 prompt 指导它:“如果发现最近一次记忆中已经催促过了,请安静等待至少半天再做后续操作”。这完美与最新的 22 号文档中完成的 Memory 系统契合互补。 +## 三、实现状态 + +- [x] **1. Heartbeat 后端引擎** + - `server/services/heartbeat-service.js` — Agent 级心跳服务(按 config.json 中的 heartbeatInterval 独立配置) + - `server/services/company-heartbeat-service.js` — 公司级心跳服务(扫描所有公司,按 company.json 心跳配置唤醒 CEO) + - 已适配 multi-tenant 架构,支持 `data/system/agents/` + `data/{companyId}/agents/` 双路径 +- [x] **2. 隐式对话 API** + - `agent-chat.js` 支持 `silent: true` 模式,心跳会话不污染前端主界面 + - 会话依然经历 Memory 三层架构,记录进 short-term + reflections +- [x] **3. Agent 心跳策略** + - 每个 Agent 的 `heartbeat.md` 定义专项心跳行为(如 CEO 早间巡检、晚间复盘) + - 模板库中 CEO/COO 等模板已包含 heartbeat.md +- [x] **4. 前端心跳控制** + - `CompanyDashboard.vue` per-agent 心跳开关(启动/停止/配置间隔) + - API: `PUT /api/company/:companyId/agents/:agentId/heartbeat` + - API: `POST /api/company/:companyId/agents/:agentId/heartbeat/start` + - API: `POST /api/company/:companyId/agents/:agentId/heartbeat/stop` +- [x] **5. Anti-Loop 制衡** + - 借助 Memory 架构,Agent 在心跳前读取最近 session,避免重复催促 --- ## 四、技术优势 -1. **“起搏”+“记忆”打造真实自主引擎**:依赖已实现的海马体与短期记忆,Agent 不再是简单的代码循环,而是拥有自己时间轴与经验累积的鲜活生命体。 -2. **极低侵入性**:依然可以复用现有的 Claude CLI 通道和 `runClaudeCliSession` 函数,仅仅是多了一个虚拟的“系统定时发信人”。 +1. **"起搏"+"记忆"打造真实自主引擎**:依赖已实现的海马体与短期记忆,Agent 不再是简单的代码循环,而是拥有自己时间轴与经验累积的鲜活生命体。 +2. **极低侵入性**:依然可以复用现有的 Claude CLI 通道和 `runClaudeCliSession` 函数,仅仅是多了一个虚拟的"系统定时发信人"。 3. **闭环 OODA loop**:观察(OKR数据注入)- 导向(heartbeat.md规则)- 决策(推理判定)- 行动(ToolDispatch),在此实现完整的智能自主控制闭环。 diff --git a/docs/system-design/24-company-layer-architecture.md b/docs/system-design/24-company-layer-architecture.md index c6e6194..e36eff6 100644 --- a/docs/system-design/24-company-layer-architecture.md +++ b/docs/system-design/24-company-layer-architecture.md @@ -1,8 +1,8 @@ # 24. Company Layer — 公司实例化架构 -> **版本**: v1.0 (需求分析 & 设计稿) -> **日期**: 2026-03-25 -> **状态**: 规划中 +> **版本**: v2.0 (已实现) +> **日期**: 2026-03-26 +> **状态**: ✅ 已实现 (Phase 1-5 全部完成) > **前置**: 四层 Agent 架构 (02 号文档)、OKR 目标体系、Memory 系统、Heartbeat 系统 --- @@ -89,33 +89,44 @@ data/agents/ ``` data/ -├── agents/ ← 全局 Agent(Master + 跨公司基础设施 Agent) -│ ├── master/ -│ ├── agent-creator/ -│ └── innovator/ -│ -├── templates/ ← 📦 Agent 模板库(招聘时优先查找) -│ ├── ceo/ ← CEO 通用模板 -│ ├── qa-judge/ ← 质量仲裁模板 -│ ├── content-writer/ ← 内容写手模板 -│ ├── editor/ ← 编辑模板 -│ ├── video-editor/ ← 剪辑师模板 -│ ├── hot-topic-hunter/ ← 热点搜索模板 -│ └── data-analyst/ ← 数据分析师模板 +├── system/ ← 系统级数据(跨公司共享) +│ ├── agents/ ← 全局 Agent(Master + 跨公司基础设施 Agent) +│ │ ├── master/ +│ │ ├── innovator/ +│ │ ├── agent-creator/ +│ │ ├── trend-hunter/ +│ │ └── ... +│ │ +│ └── templates/ ← 📦 Agent 模板库(招聘时优先查找) +│ ├── _registry.json ← 模板注册表 +│ ├── _company_bootstrap/ ← 公司自举清单 (manifest.json) +│ ├── ceo/ ← CEO 通用模板 +│ ├── cto/ ← CTO 通用模板 +│ ├── coo/ ← COO 通用模板 +│ ├── hr/ ← HR 通用模板 +│ ├── qa-judge/ ← 质量仲裁模板 +│ ├── agent_creator/ ← Agent Creator 模板 +│ └── scrapling_crawler/ ← 爬虫模板 │ ├── {company-id}/ ← 公司实例(顶层目录,扁平化) │ ├── company.json ← 公司元数据 + 状态 + 配置 -│ ├── sop.md ← 公司 SOP(运营标准流程) │ ├── agents/ ← 该公司的专属 Agent 池 │ │ ├── ceo/ -│ │ ├── content-writer/ -│ │ ├── editor/ -│ │ └── data-analyst/ -│ ├── goals/ ← 该公司的 OKR 树(所有目标都在公司层级下) +│ │ ├── cto/ +│ │ ├── coo/ +│ │ └── {role}/ +│ ├── goals/ ← 该公司的 OKR 树 +│ │ └── _index.json │ ├── pipelines/ ← 该公司的 SOP 流水线定义 -│ └── workspace/ ← 该公司的共享工作区(成品、品牌资产) +│ └── workspace/ ← 该公司的共享工作区 +│ └── {agentId}/ +│ +├── goals/ ← 全局 OKR 目标 +│ ├── _index.json +│ └── G-{NNN}/ │ -└── skills/ ← 全局 Skill(可被任何公司的 Agent 调用) +└── agents/ ← (兼容) 全局 tasks + └── .tasks/ ``` ### 3.2 company.json 结构 @@ -262,46 +273,51 @@ Step 3: Benchmark 评估 ### 4.4 模板库管理 -模板库 `data/templates/` 是一个**不断进化的人才市场**: +模板库 `data/system/templates/` 是一个**不断进化的人才市场**: ``` -data/templates/ +data/system/templates/ +├── _registry.json ← 模板注册表(索引所有可用模板) +├── _company_bootstrap/ ← 公司自举清单 +│ └── manifest.json ← 定义初始组织架构 (CEO/CTO/COO/HR) +│ ├── ceo/ ← 通用 CEO 模板 │ ├── agent.md ← 通用的 CEO 职责(不含特定公司信息) │ ├── soul.md ← CEO 通用思维模式 │ ├── identity.md -│ ├── config.json ← type: "cxo" -│ └── skills/ ← CEO 通用技能 +│ ├── heartbeat.md +│ ├── tools.md +│ ├── user.md +│ └── config.json ← type: "cxo" │ -├── content-writer/ ← 内容写手模板 -├── video-editor/ ← 剪辑师模板 -├── hot-topic-hunter/ ← 热点搜索员模板 -├── data-analyst/ ← 数据分析师模板 +├── cto/ ← CTO 模板 +├── coo/ ← COO 模板 +├── hr/ ← HR 模板 ├── qa-judge/ ← 质量仲裁模板 -│ -└── _registry.json ← 模板注册表(索引所有可用模板) +├── agent_creator/ ← Agent Creator 模板 +└── scrapling_crawler/ ← 爬虫模板 ``` -**`_registry.json` 结构**: +**`_registry.json` 结构** (实际内容): ```json [ { "id": "ceo", "name": "CEO / 首席执行官", "type": "cxo", - "description": "公司战略规划、团队管理、OKR 制定", + "description": "公司战略规划、团队管理、OKR 制定、任务委派", "benchmarkScore": 97, "trainedAt": "2026-03-20", - "usedCount": 3 + "usedCount": 9 }, { - "id": "hot-topic-hunter", - "name": "热点搜索员", + "id": "qa-judge", + "name": "QA 仲裁者", "type": "specialist", - "description": "全网热点监控、选题建议、趋势分析", - "benchmarkScore": 96, + "description": "质量验收、OKR 进度审查、标准化仲裁", + "benchmarkScore": 95, "trainedAt": "2026-03-25", - "usedCount": 0 + "usedCount": 6 } ] ``` @@ -466,23 +482,22 @@ sequenceDiagram ### 7.1 Agent 寻址变化 -当前系统的 Agent 通过 `agentId` 全局唯一寻址(如 `ceo`)。 引入 Company 后,Agent 的寻址变为 **Company 限定**: ```javascript -// 全局 Agent(不属于任何公司) -const agentDir = path.join(DATA_DIR, 'agents', agentId); -// 即: data/agents/master/ +// 全局 Agent(不属于任何公司, companyId = 'system') +const agentDir = path.join(DATA_DIR, 'system', 'agents', agentId); +// 即: data/system/agents/master/ // 公司内 Agent const agentDir = path.join(DATA_DIR, companyId, 'agents', agentId); -// 即: data/wechat-media-co/agents/ceo/ +// 即: data/wechatai/agents/ceo/ ``` -**兼容策略**: -- `config.json` 增加 `companyId` 字段(可选)。 -- **有 `companyId`** → 在 `data/{companyId}/agents/` 下。 -- **无 `companyId`** → 在 `data/agents/` 下(全局)。 +**实际策略**: +- `config.json` 含 `companyId` 字段。 +- **`companyId: "system"`** → 在 `data/system/agents/` 下(全局 Agent)。 +- **`companyId: "{id}"`** → 在 `data/{companyId}/agents/` 下(公司 Agent)。 - 路由层通过 `resolveAgentDir(companyId, agentId)` 统一封装,向上层透明化。 ### 7.2 OKR/Goals — 全部归属 Company @@ -515,38 +530,38 @@ HeartbeatService 扩展扫描范围: ## 八、实现计划 — Todo List -### Phase 1: 数据结构 + 模板库基础 +### ✅ Phase 1: 数据结构 + 模板库基础 (已完成) -- [ ] **1.1** 创建 `data/templates/` 目录,迁移现有 Agent 为模板(ceo, qa-judge 等) -- [ ] **1.2** 实现 `company-service.js`:Company CRUD (create / get / list / shutdown) -- [ ] **1.3** 实现 `resolveAgentDir(companyId, agentId)` 统一寻址函数 -- [ ] **1.4** 实现 `_registry.json` 模板注册表,记录模板的 benchmarkScore、usedCount +- [x] **1.1** 创建 `data/system/templates/` 目录,迁移现有 Agent 为模板(ceo, cto, coo, hr, qa-judge 等) +- [x] **1.2** 实现 `company-service.js`:Company CRUD (create / get / list / shutdown / start) +- [x] **1.3** 实现 `resolveAgentDir(companyId, agentId)` 统一寻址函数 +- [x] **1.4** 实现 `_registry.json` 模板注册表,记录模板的 benchmarkScore、usedCount -### Phase 2: Agent 招聘系统 (Hiring Pipeline) +### ✅ Phase 2: Agent 招聘系统 (Hiring Pipeline) (已完成) -- [ ] **2.1** 实现 `POST /api/company/:id/hire` — 模板查找 → 复制 → 上下文注入 -- [ ] **2.2** 招聘兜底:模板不存在时自动调用 `agent-creator` 创建 + `innovator` FDE 训练 -- [ ] **2.3** Benchmark 质量门禁:评分 ≥ 95 才允许上岗,不合格自动 re-evolve -- [ ] **2.4** 训练合格后自动沉淀骨架到 `templates/`,更新 `_registry.json` +- [x] **2.1** 实现 `POST /api/company/:id/hire` — 模板查找 → 复制 → 上下文注入 +- [x] **2.2** 招聘兜底:模板不存在时自动调用 `agent-creator` 创建 + `innovator` FDE 训练 +- [x] **2.3** Benchmark 质量门禁:评分 ≥ 95 才允许上岗,不合格自动 re-evolve +- [x] **2.4** 训练合格后自动沉淀骨架到 `templates/`,更新 `_registry.json` -### Phase 3: CEO 自动建制 + OKR +### ✅ Phase 3: CEO 自动建制 + OKR (已完成) -- [ ] **3.1** 公司创建后自动招聘 CEO(从模板),CEO agent.md 注入公司使命 -- [ ] **3.2** CEO 首次运行后自主规划:确定角色需求 → 批量调用 hire API → 创建 OKR -- [ ] **3.3** GoalsService 改造:所有 OKR 存储在 `data/{companyId}/goals/` 下 +- [x] **3.1** 公司创建后自动招聘 CEO(从模板),CEO agent.md 注入公司使命 +- [x] **3.2** Bootstrap 自举机制:`_company_bootstrap/manifest.json` 定义初始组织 → 自动批量招聘 CEO/CTO/COO/HR +- [x] **3.3** GoalsService 改造:OKR 支持全局 (`data/goals/`) + 公司级 (`data/{companyId}/goals/`) -### Phase 4: SOP 流水线 +### ✅ Phase 4: SOP 流水线 (已完成) -- [ ] **4.1** 设计 Pipeline 数据结构(`{companyId}/pipelines/*.json`) -- [ ] **4.2** 实现 Pipeline 执行引擎(按步骤自动触发公司内对应 Agent) -- [ ] **4.3** CEO 可以通过工具动态调整 Pipeline +- [x] **4.1** 设计 Pipeline 数据结构(`{companyId}/pipelines/*.json`) +- [x] **4.2** 实现 Pipeline 执行引擎 (`pipeline-service.js`):创建/运行/推进/驳回 全流程 +- [x] **4.3** CEO 可以通过 API 动态创建和调整 Pipeline -### Phase 5: 前端 Dashboard +### ✅ Phase 5: 前端 Dashboard (已完成) -- [ ] **5.1** 公司列表页(展示所有公司卡片 + 运行状态 + 员工数) -- [ ] **5.2** 公司详情页(组织架构图 + 公司 OKR 大盘 + Agent 列表 + 招聘状态) -- [ ] **5.3** 模板库页面(展示所有可用模板、评分、使用次数) -- [ ] **5.4** 公司日报/周报自动生成与展示 +- [x] **5.1** `CompanyDashboard.vue` — 公司仪表盘 (Agent 列表 + 运行状态 + 心跳控制) +- [x] **5.2** 公司详情页(Agent 列表 + 操作按钮: Chat/Skills/Train + per-agent 心跳开关) +- [x] **5.3** `OkrDashboard.vue` — OKR 目标看板 +- [x] **5.4** `MasterChatDrawer.vue` — Master Agent 侧边抽屉对话 --- diff --git a/docs/system-design/25-bootstrap-mechanism.md b/docs/system-design/25-bootstrap-mechanism.md new file mode 100644 index 0000000..3a340cc --- /dev/null +++ b/docs/system-design/25-bootstrap-mechanism.md @@ -0,0 +1,123 @@ +# 25. Bootstrap 自举机制 — 公司创建时的自动化部署 + +> **版本**: v1.0 +> **日期**: 2026-03-26 +> **状态**: ✅ 已实现 +> **关键提交**: `f49cad8 feat: Phase A+B 公司自举与HR大一统`, `d55b7a2 fix(master): 更新 Master Agent 指令以适配 Bootstrap 自举机制` + +--- + +## 一、核心问题 + +在引入 Company Layer 之后,每次创建新公司都需要手动逐个招聘 CEO、CTO、COO 等核心骨干,流程过于冗长。 + +**目标**:用户对 Master 说"创建一家 AI 新闻公司",系统应一键**自动完成**: +1. 创建公司目录 + company.json +2. 自动部署核心团队(CEO、CTO、COO、HR) +3. 向 CEO 下达启动战略指令 +4. CEO 自主规划并通过 HR 批量招聘执行层 Agent + +--- + +## 二、Manifest 配置 + +Bootstrap 机制的核心是 `data/system/templates/_company_bootstrap/manifest.json`: + +```json +{ + "description": "公司自举(Bootstrap)模板 — 创建时自动部署核心骨干团队", + "bootstrap_agents": [ + { "role": "ceo", "type": "cxo", "name": "首席执行官" }, + { "role": "cto", "type": "cxo", "name": "首席技术官" }, + { "role": "coo", "type": "cxo", "name": "首席运营官" }, + { "role": "hr", "type": "specialist", "name": "人事总监" } + ], + "auto_dispatch_to_ceo": true, + "ceo_startup_prompt": "你的公司刚刚创建,系统已经自动为你配备了 CTO、COO、HR 三位核心高管。请立刻执行你的五步战略工作流:1.撰写商业蓝图 2.设计Pipeline JSON 3.设定OKR 4.将Pipeline设计图移交CTO(让他通过HR批量招聘执行层Agent) 5.通知COO接管运营。" +} +``` + +**配置说明**: + +| 字段 | 说明 | +|------|------| +| `bootstrap_agents` | 数组:创建公司时自动招聘的角色列表 | +| `auto_dispatch_to_ceo` | 布尔:是否在部署完成后自动向 CEO 发送启动指令 | +| `ceo_startup_prompt` | 字符串:CEO 收到的首次启动战略指令模板 | + +--- + +## 三、执行流程 + +```mermaid +sequenceDiagram + participant User as 用户 + participant Master as Master Agent + participant API as POST /api/company/create + participant FS as 文件系统 + participant Hire as companyService.hire() + participant CEO as 新公司 CEO + + User->>Master: "创建一家 AI 新闻公司" + Master->>API: { id: "ai-news", name: "AI新闻社", description: "..." } + + API->>FS: 1. mkdir data/ai-news/{agents,goals,pipelines,workspace} + API->>FS: 2. 写入 company.json + + Note over API: Phase A: 读取 manifest.json + + loop 遍历 bootstrap_agents + API->>Hire: hire("ai-news", "ceo", {type:"cxo"}) + Note over Hire: 从 templates/ceo/ 复制 → ai-news/agents/ceo/ + API->>Hire: hire("ai-news", "cto", {type:"cxo"}) + API->>Hire: hire("ai-news", "coo", {type:"cxo"}) + API->>Hire: hire("ai-news", "hr", {type:"specialist"}) + end + + API->>API: 3. 更新 status="running", heartbeat.enabled=true + + Note over API: Phase B: 自动向 CEO 下达启动令 (延迟 2s) + + API-->>CEO: dispatch(from:master, to:ai-news:ceo, task:startup_prompt) + + CEO->>CEO: 执行五步战略工作流 + CEO->>CEO: 1. 撰写商业蓝图 + CEO->>CEO: 2. 设计 Pipeline JSON + CEO->>CEO: 3. 设定 OKR + CEO->>CEO: 4. 通过 HR 批量招聘执行层 + CEO->>CEO: 5. 通知 COO 接管运营 +``` + +--- + +## 四、关键代码位置 + +| 文件 | 位置 | 职责 | +|------|------|------| +| `server/routes/company.js` | Line 20-93 | `POST /api/company/create` — 整个 Bootstrap 流程 | +| `server/services/company-service.js` | `create()` | 公司目录初始化 | +| `server/services/company-service.js` | `hire()` | 模板复制 + 上下文注入 | +| `data/system/templates/_company_bootstrap/manifest.json` | 全文 | Bootstrap 配置清单 | + +--- + +## 五、跳过 Bootstrap + +如果需要创建空公司(不自动部署骨干),请求中传 `skipBootstrap: true`: + +```json +POST /api/company/create +{ + "id": "test-co", + "name": "测试公司", + "skipBootstrap": true +} +``` + +--- + +## 六、扩展点 + +- **自定义 Bootstrap**:修改 `manifest.json` 的 `bootstrap_agents` 可调整初始团队组合 +- **行业模板**:未来可支持多个 manifest(如 `manifest-media.json`, `manifest-tech.json`),按行业选择不同的初始团队 +- **CEO Prompt 定制**:`ceo_startup_prompt` 可根据不同业务场景定制 CEO 的首要任务 diff --git a/docs/system-design/26-automated-hiring-orchestration.md b/docs/system-design/26-automated-hiring-orchestration.md new file mode 100644 index 0000000..e7075d4 --- /dev/null +++ b/docs/system-design/26-automated-hiring-orchestration.md @@ -0,0 +1,166 @@ +# 26. 全自动招聘编排 — Creator → Skills → Innovator 流水线 + +> **版本**: v1.0 +> **日期**: 2026-03-26 +> **状态**: ✅ 已实现 +> **关键提交**: `5b508ce feat: Automate full hiring orchestration (Creator → Skills → Innovator)` + +--- + +## 一、核心问题 + +当 CEO 需要招聘一个**模板库中不存在**的角色(如"视频剪辑师")时,系统不能简单报错。 +需要一套全自动编排流水线:从零定义 Agent → 注入技能 → 训练至合格。 + +--- + +## 二、编排全景 + +``` +POST /api/company/:companyId/hire { role: "video-editor" } + │ + ▼ + companyService.hireWithTraining() + │ + ├── 1. 在 templates/ 中查找 "video-editor" + │ → ❌ 模板不存在 + │ + ├── 2. AgentScaffold 创建空白骨架目录 + │ → data/{companyId}/agents/video-editor/ + │ → 状态标记为 status: "training" + │ + ├── 3. [异步] Agent-Creator 编写定义文件 + │ → POST /api/agent/agent-creator/chat + │ → "为 video-editor 补充 agent.md, soul.md, identity.md..." + │ + ├── 4. [同步] Arena 技能搜索与注入 + │ → skillDb.searchSkills("video-editor", { limit: 3 }) + │ → 将匹配的 Skill 复制到 agents/video-editor/skills/ + │ + └── 5. [延时5s] Innovator FDE 训练 + → POST /api/agent/innovator/chat + → "对 video-editor 进行 FDE 训练,Benchmark ≥ 95" + → Hunt → Digest → Evolve 循环 + → 合格后自动部署 +``` + +--- + +## 三、三阶段详解 + +### 阶段 1: Agent-Creator 定义 + +Agent-Creator 是一个专门负责"写定义文件"的元 Agent。接到请求后: + +1. 根据 role name 和 description 理解角色职责 +2. 使用 `Write` 工具写入标准定义文件: + - `agent.md` — 核心身份标识 + 职责描述 + - `identity.md` — 名称、emoji、简介 + - `soul.md` — 思维模式、价值观 + - `user.md` — 上级偏好 + - `tools.md` — 可用工具清单 +3. 验证写入完成 + +**关键实现** (`server/routes/company.js` Line 399-407): +```javascript +fetch(`http://127.0.0.1:${PORT}/api/agent/agent-creator/chat`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + message: `新员工 ${namespacedId} 已由脚手架创建空白目录...请补充完整的定义文件`, + conversationId: `create-${companyId}-${role}-${Date.now().toString(36)}` + }) +}); +``` + +### 阶段 2: Arena 技能搜索与注入 + +从技能数据库(Arena 技能商店)中搜索与角色匹配的现有技能,最多注入 3 个基础技能: + +1. `skillDb.searchSkills(role, { limit: 3 })` — 按角色名关键词搜索 +2. 将匹配的 Skill 目录递归复制到 Agent 的 `skills/` 目录下 +3. 如果没有匹配的技能,日志输出"将交由 Innovator 凭空生成" + +**关键实现** (`server/routes/company.js` Line 409-438): +```javascript +const skills = skillDb.searchSkills(role, { limit: 3 }); +for (const skill of skills) { + if (skill.directory && fs.existsSync(skill.directory)) { + copyDir(skill.directory, path.join(skillsDir, skill.skillName)); + console.log(`[Hire] 💉 成功为其注入基础技能: ${skill.skillName}`); + } +} +``` + +### 阶段 3: Innovator FDE 训练 + +延时 5 秒(等 Creator 写入完毕)后,通知 Innovator 对新 Agent 进行 FDE 训练: + +1. Innovator 评估当前 Agent 技能水平 +2. 启动 **Hunt → Digest → Evolve** 训练流水线 +3. 循环迭代直到 Benchmark 评分 ≥ 95 +4. 训练完成后自动安装 SKILL.md + +**关键实现** (`server/routes/company.js` Line 441-451): +```javascript +setTimeout(() => { + fetch(`http://127.0.0.1:${PORT}/api/agent/innovator/chat`, { + method: 'POST', + body: JSON.stringify({ + message: `公司 ${companyId} 的员工 ${role} 骨架和基础技能已注入完毕。 + 请使用 FDE pipeline 进行评测和进化训练,直到 Benchmark 达标 (Score ≥ 95)。` + }) + }); +}, 5000); +``` + +--- + +## 四、招聘后的动态心跳挂载 + +招聘成功后(无论是从模板还是训练完成),系统会立即为新 Agent 注册心跳定时器: + +```javascript +const heartbeatService = require('../services/heartbeat-service'); +const namespacedId = `${companyId}:${role}`; +heartbeatService._setupAgentHeartbeat(namespacedId); +``` + +--- + +## 五、与模板招聘的对比 + +| 维度 | 模板招聘 (Template) | 全自动编排 (Orchestration) | +|------|-------------------|--------------------------| +| 触发条件 | templates/ 下存在对应模板 | templates/ 下**不存在** | +| 耗时 | < 1 秒 | 数分钟 (FDE 训练) | +| 流程 | 复制 → 注入上下文 → 上岗 | Scaffold → Creator → Skills → FDE → 上岗 | +| Agent 状态 | 直接 `ready` → `active` | `training` → (训练完成) → `ready` | +| 模板沉淀 | 不需要 | 训练合格后自动 `deposit-template` 到 templates/ | + +--- + +## 六、模板沉淀 (Deposit Template) + +训练合格的新角色会被自动沉淀为模板,供未来复用: + +``` +POST /api/company/:companyId/deposit-template +{ + "agentId": "video-editor", + "benchmarkScore": 96 +} +``` + +**沉淀内容**:只保存骨架文件(agent.md, soul.md, config.json 等),不含 memory 和 workspace。 + +--- + +## 七、关键代码文件 + +| 文件 | 位置 | 职责 | +|------|------|------| +| `server/routes/company.js` | Line 376-474 | `POST /:companyId/hire` — 完整招聘 + 编排 | +| `server/routes/company.js` | Line 528-542 | `POST /:companyId/deposit-template` — 模板沉淀 | +| `server/services/company-service.js` | `hireWithTraining()` | 模板查找 + 骨架创建 | +| `server/services/skill-db.js` | `searchSkills()` | Arena 技能搜索 | diff --git a/server/agent-server.js b/server/agent-server.js index f5a2a36..0cc1f9f 100644 --- a/server/agent-server.js +++ b/server/agent-server.js @@ -21,7 +21,11 @@ app.use((req, res, next) => { let rawBody = ''; req.on('data', chunk => rawBody += chunk); req.on('end', () => { - if (!rawBody) return next(); + if (!rawBody) { + req.body = {}; + req._bodyParsed = true; + return next(); + } try { req.body = JSON.parse(rawBody); req._bodyParsed = true;