# LemonBoss v5 架构方案
> **版本**: v5.3 — "大脑·小脑·海马体 + OKR + Multi-Tenant Company"
> **日期**: 2026-03-26
> **状态**: Phase 1-6 已完成,Phase 7 认知架构待开始
> [!IMPORTANT]
> **已确认决策**(2026-03-24/25)
> - 海马体:先关键词匹配 MVP,后加向量检索
> - 小脑:简单用 .md 步骤,复杂用 .js 脚本
> - Hunter/Digester/Evolver:由 agent-creator 创建后,成为其上级的 todo 任务
> - 运行时继承:共享基类 `packages/agent-core/base/`,修改基类所有子类立即生效
> - 定时调度:使用 Claude Code 原生 CronCreate + cron.json 持久化
> - **OKR 目标系统**:`data/goals/` 集中管理,点分层级 ID,全局可追溯
> - **FDE 流水线**:Hunt→Digest→Evolving 三层训练架构,已经端到端验证通过
> - **双路径产出**:元 Agent 产出同时写入 workspace/ + agents/ 两个位置
> - **Skills 扫描注入**:buildSystemPrompt 扫描所有 .claude/skills/ 子目录
---
## 一、总览:从"工具人"到"有记忆的组织"
当前 v4.x 的 Agent 是**无状态执行器** —— 接到任务、做完、走人。v5 要解决的核心问题是:
> **Agent 如何像一个真正的员工一样:接任务、排优先级、执行、汇报、学习、记住?**
```mermaid
graph TB
subgraph "v5 核心三层"
Cerebrum["🧠 大脑 Cerebrum
思考·规划·反思"]
Cerebellum["🧩 小脑 Cerebellum
固化方案·代码执行"]
Hippocampus["🐴 海马体 Hippocampus
记忆·检索·匹配"]
end
subgraph "任务流"
Task["📋 Task"] --> TodoMd["todo.md"]
TodoMd --> Cerebrum
Cerebrum -->|"新问题"| Think["思考+执行"]
Cerebrum -->|"熟悉问题"| Cerebellum
Think --> Reflect["反思"]
Cerebellum --> Result["结果"]
Reflect -->|"好方案"| Cerebellum
Reflect -->|"更新记忆"| Hippocampus
Hippocampus -->|"检索经验"| Cerebrum
end
```
---
## 二、OKR 目标管理系统 ⭐ 新增
### 2.1 核心问题
多个 Agent 各自有 todo.md / plan.md,但:
- **谁也看不到全局视图** — 要逐个检查每个 Agent 的文件
- **无法追溯到上层目标** — taskId 只是流水号,不知道属于哪个大项目
- **进度无法自动计算** — 靠人工统计完成比例
### 2.2 ID 设计:点分层级命名
**核心原则**:从任何 ID 就能一眼看出它在哪一层、谁是父级。
```
G-001 ← Goal (第1层, 顶级目标)
G-001.1 ← Objective (第2层, 关键路径)
G-001.1.1 ← Key Result (第3层, 可衡量交付物)
G-001.1.1.1 ← Sub-Task (第4层, 可无限嵌套)
```
**层级判断规则**:
| ID | 层级 | 判断方法 | 父级 | Goal |
|----|------|---------|------|------|
| `G-001` | Goal | `.split('.').length === 1` | 无 | 自身 |
| `G-001.2` | Objective | `.split('.').length === 2` | `G-001` | `G-001` |
| `G-001.2.1` | Key Result | `.split('.').length === 3` | `G-001.2` | `G-001` |
| `G-001.2.1.3` | Sub-Task | `.split('.').length === 4` | `G-001.2.1` | `G-001` |
**解析代码**:
```javascript
function parseNodeId(nodeId) {
const parts = nodeId.split('.');
return {
goalId: parts[0], // G-001
level: parts.length, // 1=Goal, 2=Obj, 3=KR, 4+=Sub
parentId: parts.slice(0, -1).join('.') || null, // G-001.2.1 → G-001.2
levelName: ['Goal', 'Objective', 'KeyResult', 'SubTask'][parts.length - 1] || 'SubTask',
};
}
```
### 2.3 目录结构
```
data/goals/ ← 集中存储所有 OKR
├── _index.json ← 所有 Goal 的摘要索引 (轻量)
├── G-001/ ← 每个 Goal 一个目录
│ ├── goal.json ← 完整 OKR 树 (单一数据源)
│ ├── progress.json ← 自动计算的进度快照
│ └── history.log ← 变更审计日志
├── G-002/
│ └── goal.json
└── ...
```
### 2.4 goal.json 数据结构
```json
{
"id": "G-001",
"title": "建设 AI 互动剧公司",
"description": "从零建设一家能独立运转的 AI 互动剧内容公司",
"owner": "master-001",
"status": "in_progress",
"createdAt": "2026-03-24T03:00:00Z",
"updatedAt": "2026-03-24T03:25:00Z",
"nodes": {
"G-001.1": {
"title": "公司架构设计",
"owner": "ceo",
"status": "in_progress",
"priority": "P0",
"children": ["G-001.1.1", "G-001.1.2", "G-001.1.3"]
},
"G-001.1.1": {
"title": "完成组织架构",
"owner": "ceo",
"status": "done",
"taskId": "T-mn41sjv4",
"output": "workspace/company_charter.md",
"completedAt": "2026-03-24T03:25:00Z"
},
"G-001.1.2": {
"title": "关键岗位招聘清单",
"owner": "ceo",
"status": "pending",
"children": []
},
"G-001.1.3": {
"title": "运营流程制定",
"owner": "ceo",
"status": "pending",
"children": []
},
"G-001.2": {
"title": "创建核心 Agent",
"owner": "agent-creator",
"status": "pending",
"children": ["G-001.2.1", "G-001.2.2"]
},
"G-001.2.1": {
"title": "创建编剧 Agent",
"owner": "agent-creator",
"status": "pending"
},
"G-001.2.2": {
"title": "创建审核 Agent",
"owner": "agent-creator",
"status": "pending"
}
}
}
```
**设计决策**:使用扁平 `nodes` Map 而非深度嵌套对象。优势:
- O(1) 按 ID 查找任意节点
- 父子关系通过 `children` 数组 + ID 前缀推导
- 无限嵌套深度,数据结构不变
### 2.5 _index.json 索引
```json
[
{
"id": "G-001",
"title": "建设 AI 互动剧公司",
"owner": "master-001",
"status": "in_progress",
"progress": 0.17,
"nodeCount": 7,
"doneCount": 1,
"updatedAt": "2026-03-24T03:25:00Z"
}
]
```
### 2.6 progress.json 自动计算
```json
{
"goalId": "G-001",
"progress": 0.17,
"total": 6,
"done": 1,
"inProgress": 1,
"pending": 4,
"byOwner": {
"ceo": { "total": 3, "done": 1 },
"agent-creator": { "total": 2, "done": 0 }
},
"updatedAt": "2026-03-24T03:25:00Z"
}
```
**进度计算公式**:只统计叶子节点 (没有 children 的节点):
```javascript
progress = leafNodes.filter(n => n.status === 'done').length / leafNodes.length
```
### 2.7 API 设计
| 端点 | 方法 | 用途 |
|------|------|------|
| `/api/goals` | GET | 列出所有目标 (返回 _index.json) |
| `/api/goals` | POST | 创建新目标 |
| `/api/goals/:goalId` | GET | 获取完整 OKR 树 (返回 goal.json) |
| `/api/goals/:goalId` | PUT | 更新目标元数据 |
| `/api/goals/:goalId/nodes` | POST | 添加节点 (自动分配下一个子 ID) |
| `/api/goals/:goalId/nodes/:nodeId` | PUT | 更新节点状态/内容 |
| `/api/goals/:goalId/progress` | GET | 返回进度统计 |
### 2.8 与任务分发集成
dispatch API 增加 goalId + nodeId:
```json
{
"from": "master-001",
"to": "ceo",
"task": "完成组织架构设计",
"goalId": "G-001",
"nodeId": "G-001.1.1",
"priority": "P0",
"autoExecute": true
}
```
report API 自动更新 goal.json 中对应节点状态:
```json
{
"taskId": "T-xxx",
"from": "ceo",
"to": "master-001",
"status": "done",
"goalId": "G-001",
"nodeId": "G-001.1.1",
"summary": "已完成组织架构"
}
```
### 2.9 Agent 上下文注入
新会话的 system prompt 中自动注入当前 Goal 上下文:
```
你当前正在参与目标:
🎯 G-001「建设 AI 互动剧公司」
你负责的节点:
📋 G-001.1.2「关键岗位招聘清单」
层级: Key Result (第3层)
父级: G-001.1「公司架构设计」
状态: 进行中
全局进度: 17% (1/6 完成)
```
### 2.10 数据流全景
```
用户: "建设 AI 互动剧公司"
│
▼
Master Agent
│
1. POST /api/goals → 创建 G-001.json
2. 分解 OKR 树 → G-001.1, G-001.2, ...
3. dispatch(to=ceo, goalId=G-001, nodeId=G-001.1.1)
│
▼ (CEO 执行)
4. CEO 完成 → report(nodeId=G-001.1.1, status=done)
│
▼ (自动)
5. 更新 goal.json 节点状态
6. 重新计算 progress.json
7. 更新 _index.json 摘要
│
▼ (Master cron 每 5 分钟)
8. GET /api/goals/G-001/progress → 17%
9. 向用户汇报
```
---
## 三、Agent 父类与运行时继承
### 3.1 新增文件到标准目录
```diff
data/agents/{agent-id}/
├── agent.md
├── soul.md
├── identity.md
├── user.md
├── tools.md
├── heartbeat.md
+ ├── todo.md # 待办清单(接收到的任务)
+ ├── plan.md # 计划分解(分配给下级的任务)
+ ├── cron.json # 定时任务声明(持久化 CronCreate)
├── config.json
├── .claude/skills/
├── memory/
+ │ ├── cerebellum/ # 小脑:固化的执行方案
+ │ ├── hippocampus.md # 海马体:经验索引
│ ├── short-term/
│ ├── long-term/
│ ├── daily/
├── knowledge/
+ ├── conversations/ # 对话持久化
├── workspace/
└── logs/
```
### 3.2 运行时继承架构 ⭐ 新增
修改共享基类,所有 Agent 下次对话立即生效,无需重新创建。
```
packages/agent-core/base/ ← 共享基类 (修改一次,所有继承)
├── common/
│ ├── tools-base.md ← 安全规则 + dispatch/report API
│ └── capabilities.md ← CronCreate 用法 + todo/plan 说明
├── master/
│ ├── agent-base.md ← Master 角色定义
│ └── cron-base.json ← plan检查(5m) + todo扫描(3m)
├── skill/
│ ├── agent-base.md ← Skill 角色定义
│ └── cron-base.json ← todo扫描(10m)
└── cxo/ | role/ ← 其他类型的基类
```
**System Prompt 构建 = 三层合并**:
```
Layer 1: base/common/* ← 所有 Agent 通用
Layer 2: base/{type}/*-base.md ← 类型专属
Layer 3: data/agents/{id}/* ← 个体专属 (覆盖/扩展)
```
**Cron 构建 = 基类 + Agent 合并**:
```
Layer 1: base/{type}/cron-base.json ← 类型默认定时任务
Layer 2: data/agents/{id}/cron.json ← Agent 追加的定时任务
→ 去重合并, 每次新会话自动注入 CronCreate 恢复指令
```
### 3.3 定时调度:CronCreate + cron.json 持久化
> 官方文档: https://code.claude.com/docs/en/scheduled-tasks.md
> 工具参考: https://code.claude.com/docs/en/tools-reference.md
| 工具 | 用途 |
|------|------|
| `CronCreate` | 创建定时任务 (5-field cron 表达式) |
| `CronList` | 列出当前定时任务 |
| `CronDelete` | 取消定时任务 |
**持久化机制**:CronCreate 是 session-scoped (关闭会话即丢失)。
解决方案:`cron.json` 存储期望状态,每次新会话自动注入重建指令。
---
## 四、任务分发协议
### 4.1 API 端点
| API | 用途 |
|-----|------|
| `POST /api/agent/task/dispatch` | 向目标 Agent 分发任务 |
| `POST /api/agent/task/report` | Agent 汇报任务完成 |
### 4.2 Dispatch 流程
```
dispatch API:
1. 写入目标 Agent 的 todo.md
2. 写入发送者的 plan.md
3. 如果有 goalId → 更新 goal.json 节点状态为 in_progress
4. autoExecute=true → 异步 HTTP 自调用触发聊天
```
### 4.3 Report 流程
```
report API:
1. 更新执行者的 todo.md (标记完成)
2. 更新上级的 plan.md (标记完成) — 行级匹配
3. 如果有 goalId + nodeId → 更新 goal.json 节点状态
4. 自动触发 progress 重算
```
---
## 五、大脑·小脑·海马体 认知架构
*(内容与之前相同,此处省略,详见 v5.0 版本)*
```
Task 进入 → 海马体检索 → 命中? → 小脑快速执行
→ 未命中 → 大脑思考执行
→ 反思
→ 新方案存小脑
→ 更新海马体
```
---
## 六、已完成 & 进行中 & 待办
### ✅ Phase 1: 基础设施 (已完成)
- [x] AgentScaffold 增加 todo.md, plan.md, cerebellum/, hippocampus.md, cron.json
- [x] 新 API: todo/plan/cron CRUD, 文件树, 文件预览
- [x] 运行时继承: base/ 共享模板 + 三层合并
- [x] 定时调度: CronCreate + cron.json 持久化
- [x] 任务分发: dispatch + report API
- [x] Master Agent 配置: 完整管理能力
### ✅ Phase 2: Web 页面 (已完成)
- [x] 四列统一布局 (Agent列表 | Chat/Detail Tab | 消息/文件 | ACP/预览)
- [x] 深色/浅色/自动主题切换
- [x] ACP 事件流实时展示
- [x] 文件树递归展示 + 文件预览
### ✅ Phase 3: OKR 目标系统 (已完成)
- [x] 设计完成: 点分层级 ID + goal.json 结构
- [x] Goals CRUD API (GoalsService + routes)
- [x] dispatch/report 集成 goalId/nodeId
- [x] progress 自动计算
- [x] system prompt 注入 Goal 上下文 (GoalsService.buildGoalContext)
- [x] 前端 OKR 看板 (OkrDashboard.vue)
### ✅ Phase 3.5: FDE 训练流水线 (已完成 ⭐)
- [x] 创建元 Agent: Hunter (l3-hunt), Digester (l2-digest), Evolver (evolving)
- [x] 每个元 Agent 的 SKILL.md 泛化定义 (不硬编码领域知识)
- [x] L1/L2 依赖技能复制到各元 Agent 的 `.claude/skills/`
- [x] buildSystemPrompt 扫描所有 skills 子目录 (关键修复)
- [x] 双路径产出 (workspace/ + agents/)
- [x] CEO Agent 端到端训练: Hunt(1461行) → Digest(1593行) → Evolve(92/100)
- [x] retrain-pipeline.js 对齐新 agent 名
- 详见: `docs/system-design/21-fde-pipeline-architecture.md`
### ✅ 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)
- [x] CompanyDashboard Goals Tab 升级为完整 OKR 树视图 (2026-03-27)
### ⬜ Phase 7: 认知架构 (待开始)
- [ ] 海马体检索 (关键词匹配 MVP)
- [ ] 小脑执行 (.md 步骤 + .js 脚本)
- [ ] 反思引擎
- [ ] 全流程端到端测试
---
## 七、关键架构决策记录
| # | 问题 | 决策 | 日期 |
|---|------|------|------|
| 1 | 海马体匹配算法 | 关键词匹配 MVP,后加向量检索 | 03-24 |
| 2 | 小脑方案格式 | .md 步骤 + .js 脚本混合 | 03-24 |
| 3 | 心跳机制 | Claude Code CronCreate (原生) | 03-24 |
| 4 | cron 持久化 | cron.json + session 启动注入 | 03-24 |
| 5 | Agent 继承模型 | 运行时三层合并 (common→type→agent) | 03-24 |
| 6 | OKR ID 命名 | 点分层级 `G-001.2.1` (自描述层级) | 03-24 |
| 7 | OKR 数据结构 | 扁平 nodes Map (O(1) 查找) | 03-24 |
| 8 | OKR 进度算法 | 叶子节点完成率 | 03-24 |
| 9 | plan.md 更新 | 行级匹配 + 列拆分 (兼容粗体等格式) | 03-24 |
| 10 | FDE 双路径产出 | workspace/(共享) + agents/(资产) 同时写入 | 03-24 |
| 11 | 元 Agent 依赖技能加载 | buildSystemPrompt 扫描所有 .claude/skills/ 子目录 | 03-24 |
| 12 | retrain-pipeline 对齐 | l3-hunt→hunter, l2-digest→digester, innovator-evolver→evolver | 03-25 |
| 13 | Thinking 控制 | `--effort low` 禁用 extended thinking,config.json `cli.effort` 按 Agent 配置 | 03-27 |
---
## 八、关键文件路径索引
| 文件 | 用途 |
|------|------|
| `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/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 定时调度文档 |