From cc6b1f0db93add6a82057438965e7786d56789e4 Mon Sep 17 00:00:00 2001 From: Yi Bo Date: Thu, 26 Mar 2026 16:09:22 +0800 Subject: [PATCH] feat: Company Overview page with per-agent heartbeat controls --- data/agents/.tasks/T-mn75tcbj.json | 4 +++- data/agents/.tasks/T-mn768315.json | 12 ++++++++++++ data/agents/.tasks/T-mn76862j.json | 12 ++++++++++++ data/agents/lemonv/coo/memory/hippocampus.md | 28 ++++++++++++++++++++++++++++ data/agents/lemonv/coo/todo.md | 15 +++++++++++++++ data/agents/lemonv/coo/workspace/operations_manual.md | 881 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ data/agents/master/memory/cerebellum/task-callback.md | 15 +++++++++++++++ data/agents/master/memory/hippocampus-index.json | 17 +++++++++++++++++ data/agents/master/memory/hippocampus.md | 1 + data/agents/master/memory/memory.md | 1 + data/agents/master/memory/reflections/reflect-1774432715631.json | 32 -------------------------------- data/agents/master/memory/reflections/reflect-1774511378956.json | 31 +++++++++++++++++++++++++++++++ data/agents/master/plan.md | 6 +++--- data/lemonv/agents/ceo/agent.md | 47 ++++++++++++++++++++++++++++++++++++++++++++--- data/lemonv/agents/ceo/config.json | 14 +++++++++++++- data/lemonv/agents/ceo/todo.md | 1 + data/lemonv/agents/coo/memory/memory.md | 5 +++-- data/lemonv/agents/coo/memory/reflections/reflect-1774511207458.json | 14 ++++++++++++++ data/lemonv/agents/coo/memory/short-term/session-1774511207455.md | 39 +++++++++++++++++++++++++++++++++++++++ data/lemonv/agents/coo/todo.md | 2 +- data/lemonv/agents/cto/todo.md | 1 + data/lemonv/goals/_index.json | 1 + server/routes/company.js | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ server/services/company-service.js | 11 ++++++++++- web/src/components/AppNav.vue | 3 +++ web/src/router/index.js | 2 +- web/src/views/CompanyDashboard.vue | 363 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 27 files changed, 1722 insertions(+), 50 deletions(-) create mode 100644 data/agents/.tasks/T-mn768315.json create mode 100644 data/agents/.tasks/T-mn76862j.json create mode 100644 data/agents/lemonv/coo/memory/hippocampus.md create mode 100644 data/agents/lemonv/coo/todo.md create mode 100644 data/agents/lemonv/coo/workspace/operations_manual.md create mode 100644 data/agents/master/memory/cerebellum/task-callback.md delete mode 100644 data/agents/master/memory/reflections/reflect-1774432715631.json create mode 100644 data/agents/master/memory/reflections/reflect-1774511378956.json create mode 100644 data/lemonv/agents/coo/memory/reflections/reflect-1774511207458.json create mode 100644 data/lemonv/agents/coo/memory/short-term/session-1774511207455.md create mode 100644 data/lemonv/goals/_index.json diff --git a/data/agents/.tasks/T-mn75tcbj.json b/data/agents/.tasks/T-mn75tcbj.json index 240d0e8..aee46f6 100644 --- a/data/agents/.tasks/T-mn75tcbj.json +++ b/data/agents/.tasks/T-mn75tcbj.json @@ -8,5 +8,7 @@ "nodeId": null, "executionConvId": "task-T-mn75tcbj", "createdAt": "2026-03-26T07:37:14.144Z", - "status": "dispatched" + "status": "done", + "completedAt": "2026-03-26T07:45:54.272Z", + "summary": "已完成 LemonV.cc 运营体系设计,输出完整运营手册至 workspace/operations_manual.md。手册包含:1)多平台发布策略(抖音/小红书/B站/视频号差异化策略+发布时机+标题优化公式)2)数据监控指标体系(战略/内容/转化3级指标+实时监控看板+异常预警)3)内容审核标准(质量评分+合规红线+品牌调性指南)4)迭代优化机制(数据驱动闭环+A/B测试流程)5)完整SOP流程(内容生产/数据监控/危机处理)+检查清单+数据看板设计" } \ No newline at end of file diff --git a/data/agents/.tasks/T-mn768315.json b/data/agents/.tasks/T-mn768315.json new file mode 100644 index 0000000..11b600b --- /dev/null +++ b/data/agents/.tasks/T-mn768315.json @@ -0,0 +1,12 @@ +{ + "taskId": "T-mn768315", + "from": "master", + "to": "lemonv:ceo", + "task": "【催促执行】任务 T-mn75rjw1 行业调研已分发多时但仍未开始。请立即执行 AI 互动玩具行业深度调研,输出 workspace/industry_analysis.md。调研需包含:1)全球市场规模与趋势 2)竞品分析(Furby/Cozmo/Moxie) 3)用户画像 4)技术趋势(大模型/语音/情感计算)。完成后立即汇报。", + "priority": "P0", + "goalId": null, + "nodeId": null, + "executionConvId": "task-T-mn768315", + "createdAt": "2026-03-26T07:48:41.950Z", + "status": "dispatched" +} \ No newline at end of file diff --git a/data/agents/.tasks/T-mn76862j.json b/data/agents/.tasks/T-mn76862j.json new file mode 100644 index 0000000..113b915 --- /dev/null +++ b/data/agents/.tasks/T-mn76862j.json @@ -0,0 +1,12 @@ +{ + "taskId": "T-mn76862j", + "from": "master", + "to": "lemonv:cto", + "task": "【催促执行】任务 T-mn75t0dg 技术架构设计已分发但仍未开始。请立即执行 LemonV.cc 技术架构设计,输出 workspace/tech_architecture.md。需包含:1)热点采集系统(爬虫/数据源/API) 2)内容生成流水线(AI剧本/角色/音频) 3)数据存储方案 4)数据反馈与迭代系统 5)系统架构图和数据流图。完成后立即汇报。", + "priority": "P0", + "goalId": null, + "nodeId": null, + "executionConvId": "task-T-mn76862j", + "createdAt": "2026-03-26T07:48:45.887Z", + "status": "dispatched" +} \ No newline at end of file diff --git a/data/agents/lemonv/coo/memory/hippocampus.md b/data/agents/lemonv/coo/memory/hippocampus.md new file mode 100644 index 0000000..369a3e6 --- /dev/null +++ b/data/agents/lemonv/coo/memory/hippocampus.md @@ -0,0 +1,28 @@ +## 记忆 - 2026-03-26 + +### 已完成的重要任务 + +**T-mn75tcbj - LemonV.cc 运营体系设计** (P0) +- 状态: ✅ 已完成 +- 输出: workspace/operations_manual.md (完整运营手册) +- 内容涵盖: + - 多平台发布策略(抖音/小红书/B站/视频号差异化) + - 数据监控指标体系(3级指标 + 实时/日报/预警看板) + - 内容审核标准(质量评分 + 合规红线 + 品牌调性) + - 迭代优化机制(数据驱动闭环 + A/B测试) + - 完整 SOP 流程(内容生产/数据监控/危机处理) + - 检查清单(发布前/数据监控/审核) + - 数据看板设计(管理层/运营层/内容分析) + +### 运营体系关键设计决策 + +1. **发布平台优先级**: 抖音 > 小红书 > B站 > 视频号 +2. **核心指标**: 完播率≥40%, 互动率≥5%, 转化率≥2% +3. **内容质量红线**: 虚假宣传、侵权、不当竞争一票否决 +4. **品牌调性**: 温暖、智慧、有趣、专业、可靠 +5. **迭代频率**: 每日监控 → 每周复盘 → 每月优化 → 每季革新 + +### 待跟进事项 + +- 根据 CEO 反馈调整运营体系 +- 待招聘运营团队成员后分发具体任务 diff --git a/data/agents/lemonv/coo/todo.md b/data/agents/lemonv/coo/todo.md new file mode 100644 index 0000000..e6a14f0 --- /dev/null +++ b/data/agents/lemonv/coo/todo.md @@ -0,0 +1,15 @@ +# COO Todo List + +## 进行中 + +## 待处理 + +## 已完成 + +- [x] **[P0] T-mn75tcbj** - 设计 AI 互动玩具内容运营体系 (2026-03-26) + - ✅ 内容发布流程设计(多平台策略、发布时机、标题优化) + - ✅ 数据监控指标体系(播放量、互动率、完播率、转化率) + - ✅ 内容审核标准(质量标准、合规要求、品牌调性) + - ✅ 迭代优化机制(数据反馈驱动的选题/内容/策略调整) + - ✅ 运营手册输出至 workspace/operations_manual.md + - ✅ SOP流程、检查清单、数据看板设计 diff --git a/data/agents/lemonv/coo/workspace/operations_manual.md b/data/agents/lemonv/coo/workspace/operations_manual.md new file mode 100644 index 0000000..dc41895 --- /dev/null +++ b/data/agents/lemonv/coo/workspace/operations_manual.md @@ -0,0 +1,881 @@ +# LemonV.cc 运营体系手册 + +> **文档版本**: v1.0 +> **创建时间**: 2026-03-26 +> **维护者**: COO (lemonv:coo) +> **适用范围**: AI 互动玩具内容运营团队 + +--- + +## 目录 + +1. [运营体系概览](#一运营体系概览) +2. [内容发布流程](#二内容发布流程) +3. [数据监控指标体系](#三数据监控指标体系) +4. [内容审核标准](#四内容审核标准) +5. [迭代优化机制](#五迭代优化机制) +6. [SOP 标准操作流程](#六sop-标准操作流程) +7. [检查清单](#七检查清单) +8. [数据看板设计](#八数据看板设计) + +--- + +## 一、运营体系概览 + +### 1.1 运营目标 + +| 维度 | 目标 | 关键指标 | +|------|------|----------| +| **内容产出** | 稳定高质量内容供应 | 日更≥3条,优质率≥80% | +| **用户增长** | 持续获取新用户 | 日新增≥1000,获客成本≤5元 | +| **用户活跃** | 提升互动参与 | 互动率≥5%,完播率≥40% | +| **商业转化** | 实现内容变现 | 转化率≥2%,ARPU≥50元 | + +### 1.2 运营团队架构 + +``` +COO (运营总监) + ├── 内容运营组 + │ ├── 内容策划 (选题、脚本) + │ ├── 内容制作 (拍摄、剪辑) + │ └── 内容审核 (质量把控) + ├── 渠道运营组 + │ ├── 多平台发布 (抖音/小红书/B站/视频号) + │ ├── 社群运营 (粉丝群、私域) + │ └── KOL合作 (达人对接) + └── 数据运营组 + ├── 数据分析 (指标监控) + ├── 用户研究 (反馈收集) + └── 策略优化 (AB测试) +``` + +### 1.3 运营节奏 + +| 周期 | 重点事项 | +|------|----------| +| **每日** | 内容发布、数据监控、评论互动 | +| **每周** | 周数据分析、选题会、策略调整 | +| **每月** | 月度复盘、内容规划、团队培训 | +| **每季** | 季度目标回顾、体系优化、资源调配 | + +--- + +## 二、内容发布流程 + +### 2.1 多平台发布策略 + +#### 平台定位与内容适配 + +| 平台 | 用户画像 | 内容形式 | 发布频率 | 最佳时长 | 核心策略 | +|------|----------|----------|----------|----------|----------| +| **抖音** | Z世代/年轻父母 | 竖屏短视频 | 日更2-3条 | 15-60s | 热点追踪+算法优化 | +| **小红书** | 90后妈妈/精致女性 | 图文+视频笔记 | 日更1-2条 | 图文/30-60s | 种草内容+真实体验 | +| **B站** | 年轻人/二次元 | 横屏中长视频 | 周更2-3条 | 3-10min | 深度内容+二次创作 | +| **视频号** | 全年龄段/家庭用户 | 竖屏短视频 | 日更1-2条 | 15-60s | 私域联动+直播转化 | +| **快手** | 下沉市场/家庭用户 | 竖屏短视频 | 日更1-2条 | 15-60s | 真实感+性价比 | + +#### 平台内容差异化策略 + +**抖音** +- 前3秒必须抓住注意力(强冲突/悬念/惊喜) +- 音乐选用平台热门BGM +- 善用特效、转场提升视觉冲击力 +- 标题带#话题,参与平台活动 + +**小红书** +- 封面图必须精美、信息明确 +- 标题突出"种草"、"测评"、"宝藏" +- 正文突出真实体验和使用场景 +- 善用表情符号提升可读性 + +**B站** +- 片头3秒内说明视频价值 +- 内容结构:引入→展开→高潮→总结 +- 弹幕互动设计(提问、投票) +- 评论区置顶引导互动 + +**视频号** +- 与公众号、社群形成闭环 +- 直播+短视频联动 +- 强调"转发给需要的朋友" +- 利用社交裂变 + +### 2.2 发布时机策略 + +#### 各平台最佳发布时间 + +| 平台 | 工作日黄金时段 | 周末黄金时段 | 发布间隔 | +|------|----------------|--------------|----------| +| **抖音** | 7:00-9:00, 12:00-13:00, 18:00-22:00 | 9:00-11:00, 19:00-23:00 | ≥2小时 | +| **小红书** | 7:00-9:00, 12:00-13:00, 20:00-22:00 | 10:00-12:00, 20:00-23:00 | ≥4小时 | +| **B站** | 12:00-13:00, 18:00-24:00 | 10:00-12:00, 18:00-24:00 | ≥6小时 | +| **视频号** | 7:00-9:00, 12:00-13:00, 21:00-22:00 | 9:00-11:00, 20:00-22:00 | ≥3小时 | + +#### 发布时间规划表(示例) + +``` +工作日发布计划 +├── 07:30 抖音 - 晨间正能量内容 +├── 12:00 小红书 - 午休种草内容 +├── 18:30 抖音 - 晚间娱乐内容 +├── 20:00 视频号 - 家庭向内容 +└── 21:00 B站 - 深度内容(周一/三/五) + +周末发布计划 +├── 10:00 抖音 - 周末亲子内容 +├── 11:00 小红书 - 周末探店/体验 +├── 15:00 抖音 - 轻松娱乐内容 +├── 20:00 视频号直播 +└── 21:00 B站 - 长视频内容 +``` + +### 2.3 标题优化策略 + +#### 标题公式库 + +| 类型 | 公式 | 示例 | +|------|------|------| +| **悬念型** | 数字+悬念 | "3个让娃安静1小时的秘密,最后一个绝了" | +| **痛点型** | 痛点+解决方案 | "孩子总是哭闹?这个AI玩具让他秒变乖" | +| **对比型** | 前后对比+效果 | "从鸡飞狗跳到母慈子孝,我只用了这一招" | +| **数字型** | 数字+价值承诺 | "5分钟搞定!AI带娃的10个神操作" | +| **情感型** | 情感共鸣+场景 | "当宝宝第一次对着玩具笑出声,我哭了" | +| **权威型** | 背书+效果 | "儿科医生推荐!这个玩具太省妈了" | + +#### 关键词库 + +**核心关键词** +- AI玩具、智能玩具、互动玩具 +- 早教、启蒙、益智 +- 省妈神器、带娃神器 +- 亲子互动、陪伴成长 + +**长尾关键词** +- 适合3岁宝宝的玩具 +- 能对话的毛绒玩具 +- 不插电的AI玩具 +- 帮助语言发展的玩具 + +#### 标题 A/B 测试流程 + +1. **准备阶段**: 同一内容准备2-3个标题变体 +2. **测试阶段**: 小流量测试(各1000曝光) +3. **评估阶段**: 对比点击率、完播率 +4. **决策阶段**: 选择表现更好的标题全量发布 +5. **记录阶段**: 记录结果,优化标题公式库 + +--- + +## 三、数据监控指标体系 + +### 3.1 核心指标体系 + +#### 一级指标(战略层) + +| 指标 | 定义 | 目标值 | 监控频率 | +|------|------|--------|----------| +| **DAU** | 日活跃用户数 | 增长10%/月 | 每日 | +| **MAU** | 月活跃用户数 | 增长15%/季 | 每月 | +| **GMV** | 成交总额 | 增长20%/月 | 每日 | +| **LTV** | 用户生命周期价值 | ≥200元 | 每月 | +| **CAC** | 获客成本 | ≤5元 | 每周 | + +#### 二级指标(内容层) + +| 指标 | 定义 | 计算公式 | 目标值 | 监控频率 | +|------|------|----------|--------|----------| +| **播放量** | 视频播放次数 | - | 单条≥1万 | 实时 | +| **完播率** | 完整播放比例 | 完播次数/播放次数 | ≥40% | 每日 | +| **互动率** | 互动行为比例 | (赞+评+转+藏)/播放量 | ≥5% | 每日 | +| **点赞率** | 点赞比例 | 点赞数/播放量 | ≥3% | 每日 | +| **评论率** | 评论比例 | 评论数/播放量 | ≥0.5% | 每日 | +| **转发率** | 转发比例 | 转发数/播放量 | ≥0.3% | 每日 | +| **收藏率** | 收藏比例 | 收藏数/播放量 | ≥0.5% | 每日 | + +#### 三级指标(转化层) + +| 指标 | 定义 | 计算公式 | 目标值 | 监控频率 | +|------|------|----------|--------|----------| +| **点击率(CTR)** | 点击链接比例 | 点击数/曝光数 | ≥5% | 每日 | +| **转化率(CVR)** | 完成购买比例 | 订单数/点击数 | ≥2% | 每日 | +| **客单价** | 平均订单金额 | GMV/订单数 | ≥150元 | 每日 | +| **复购率** | 再次购买比例 | 复购用户数/总用户数 | ≥20% | 每月 | +| **退款率** | 退款订单比例 | 退款订单数/总订单数 | ≤3% | 每周 | + +### 3.2 数据监控看板 + +#### 实时看板(5分钟刷新) + +``` +┌─────────────────────────────────────────────────────────────┐ +│ 实时数据监控看板 │ +├─────────────────────────────────────────────────────────────┤ +│ 今日播放量 今日互动数 今日转化数 实时在线 │ +│ 128,456 6,892 245 1,234 │ +│ ↑ 23% ↑ 18% ↑ 12% ↑ 5% │ +├─────────────────────────────────────────────────────────────┤ +│ 热门内容TOP3 │ 流量来源分布 │ +│ 1. 视频A - 45,230播放 │ 抖音 45% ▓▓▓▓▓▓▓▓▓▓ │ +│ 2. 视频B - 32,105播放 │ 小红书 25% ▓▓▓▓▓▓ │ +│ 3. 视频C - 28,670播放 │ B站 15% ▓▓▓▓ │ +│ │ 其他 15% ▓▓▓▓ │ +└─────────────────────────────────────────────────────────────┘ +``` + +#### 日报看板 + +| 指标 | 今日数据 | 昨日数据 | 周同比 | 状态 | +|------|----------|----------|--------|------| +| 内容发布数 | 5条 | 4条 | +25% | 🟢 | +| 总播放量 | 128,456 | 104,380 | +23% | 🟢 | +| 平均完播率 | 42% | 38% | +10% | 🟢 | +| 平均互动率 | 5.4% | 4.8% | +12% | 🟢 | +| 引流点击数 | 1,230 | 1,100 | +12% | 🟢 | +| 订单数 | 45 | 38 | +18% | 🟢 | +| 退款数 | 1 | 2 | -50% | 🟢 | + +#### 异常预警阈值 + +| 指标 | 预警阈值 | 处理时限 | +|------|----------|----------| +| 播放量较均值下降 | >30% | 2小时内 | +| 互动率低于目标 | <3% | 4小时内 | +| 完播率低于目标 | <30% | 当日 | +| 转化率低于目标 | <1% | 当日 | +| 负面评论激增 | >10条/小时 | 1小时内 | +| 投诉/举报 | 任何 | 30分钟内 | + +### 3.3 数据分析方法论 + +#### 内容表现分析框架 + +``` +内容健康度评分 = + 完播率 * 30% + + 互动率 * 25% + + 转发率 * 20% + + 收藏率 * 15% + + 涨粉率 * 10% + +评分标准: +- 90-100分: 爆款内容,加大推广 +- 70-89分: 优质内容,保持风格 +- 50-69分: 普通内容,需要优化 +- <50分: 低效内容,分析原因 +``` + +#### 用户行为漏斗分析 + +``` +曝光 → 点击 → 播放 → 完播 → 互动 → 转化 → 复购 + │ │ │ │ │ │ │ + │ │ │ │ │ │ └─ 复购率目标: ≥20% + │ │ │ │ │ └─ 转化率目标: ≥2% + │ │ │ │ └─ 互动率目标: ≥5% + │ │ │ └─ 完播率目标: ≥40% + │ │ └─ 播放率目标: ≥60% + │ └─ 点击率目标: ≥5% + └─ 曝光量目标: 日增10% + +流失节点分析: +- 曝光→点击: 优化标题/封面 +- 点击→播放: 优化加载速度/前3秒 +- 播放→完播: 优化内容节奏/悬念设置 +- 完播→互动: 增加互动引导 +- 互动→转化: 优化转化路径/CTA +- 转化→复购: 优化产品体验/售后 +``` + +--- + +## 四、内容审核标准 + +### 4.1 质量标准 + +#### 内容评分维度 + +| 维度 | 权重 | 优秀标准 | 合格标准 | 不合格 | +|------|------|----------|----------|--------| +| **创意性** | 25% | 独特视角,有记忆点 | 有一定新意 | 同质化严重 | +| **信息价值** | 25% | 干货满满,有收获感 | 有一定信息量 | 空洞无物 | +| **制作质量** | 20% | 画面清晰,剪辑流畅 | 基本合格 | 画面模糊/剪辑混乱 | +| **情感共鸣** | 15% | 强烈共鸣,引发分享 | 有一定感染力 | 毫无感染力 | +| **品牌契合** | 15% | 完美体现品牌调性 | 基本符合 | 偏离品牌定位 | + +#### 评分标准 + +- **A级 (90-100分)**: 优质内容,优先推荐,可加大投放 +- **B级 (70-89分)**: 良好内容,正常发布,持续优化 +- **C级 (50-69分)**: 合格内容,建议修改后再发 +- **D级 (<50分)**: 不合格内容,禁止发布,重新制作 + +### 4.2 合规要求 + +#### 内容红线(一票否决) + +| 类别 | 禁止内容 | 处罚措施 | +|------|----------|----------| +| **违法违规** | 违反法律法规、危害国家安全 | 删除+封号+上报 | +| **虚假宣传** | 夸大功效、虚假承诺、误导消费者 | 删除+整改+警告 | +| **侵权内容** | 盗用他人作品、侵犯肖像权/版权 | 删除+道歉+赔偿 | +| **不当竞争** | 贬低竞品、恶意对比、造谣中伤 | 删除+整改+警告 | +| **隐私泄露** | 泄露用户/儿童隐私信息 | 删除+整改+培训 | +| **危险行为** | 展示危险玩法、不当使用方式 | 删除+整改+警示 | + +#### 儿童内容特殊要求 + +| 要求项 | 具体标准 | +|--------|----------| +| **年龄标注** | 必须清晰标注适用年龄 | +| **安全提示** | 含小零件需标注窒息风险 | +| **使用监督** | 强调家长陪伴和指导 | +| **内容健康** | 禁止暴力、恐怖、色情暗示 | +| **隐私保护** | 不得收集儿童个人信息 | +| **广告规范** | 符合儿童广告相关规定 | + +### 4.3 品牌调性标准 + +#### LemonV 品牌人格 + +| 维度 | 品牌特质 | 内容表现 | +|------|----------|----------| +| **温暖** | 像家人一样关怀 | 语言亲切,关注情感需求 | +| **智慧** | AI赋能的科技感 | 展示技术实力,但不冰冷 | +| **有趣** | 让带娃变得轻松 | 幽默风趣,制造惊喜 | +| **专业** | 早教专家的品质 | 内容有据可依,不瞎说 | +| **可靠** | 值得信赖的伙伴 | 承诺必达,问题必解 | + +#### 内容语言风格指南 + +**✅ 应该说** +- "这款AI玩具能帮孩子..." +- "作为两个孩子的妈妈,我发现..." +- "让我们一起来看看..." +- "这个功能真的太实用了..." + +**❌ 禁止说** +- "不买就会落后..."(制造焦虑) +- "别人家孩子都..."(攀比心理) +- "保证孩子一定..."(过度承诺) +- 任何贬低父母的表述 + +#### 视觉风格规范 + +| 元素 | 规范 | +|------|------| +| **主色调** | 温暖橙(#FF6B35) + 天空蓝(#4ECDC4) | +| **字体** | 圆体/手写体为主,体现亲和力 | +| **画面** | 明亮、温馨、真实场景 | +| **人物** | 多样化家庭,避免刻板印象 | +| **产品** | 清晰展示,突出互动场景 | + +--- + +## 五、迭代优化机制 + +### 5.1 数据驱动的迭代闭环 + +``` +┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ +│ 数据收集 │ → │ 分析洞察 │ → │ 策略调整 │ → │ 执行验证 │ +└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ + ↑ │ + └──────────────────────────────────────────────────────┘ + 反馈闭环 +``` + +### 5.2 选题优化机制 + +#### 选题表现追踪表 + +| 选题方向 | 发布数 | 平均播放量 | 平均互动率 | 爆款率 | 趋势判断 | +|----------|--------|------------|------------|--------|----------| +| 产品测评 | 20 | 35,000 | 6.2% | 25% | 🔥 加强 | +| 使用教程 | 15 | 28,000 | 5.8% | 20% | ✅ 保持 | +| 亲子互动 | 18 | 42,000 | 7.5% | 35% | 🔥 加强 | +| 育儿知识 | 12 | 15,000 | 3.2% | 8% | ⚠️ 优化 | +| 用户故事 | 10 | 38,000 | 8.2% | 30% | 🔥 加强 | + +#### 选题迭代决策树 + +``` +选题表现评估 + │ + ├─ 播放量高 + 互动率高 → 加大投入,形成系列 + │ + ├─ 播放量高 + 互动率低 → 优化内容钩子,增加互动引导 + │ + ├─ 播放量低 + 互动率高 → 优化标题封面,提升点击率 + │ + └─ 播放量低 + 互动率低 → 暂停该选题方向,分析原因 +``` + +### 5.3 内容优化机制 + +#### 完播率优化策略 + +| 完播率区间 | 问题诊断 | 优化策略 | +|------------|----------|----------| +| <20% | 开头不吸引 | 优化前3秒,强钩子开场 | +| 20-40% | 节奏拖沓 | 加快节奏,删减冗余 | +| 40-60% | 中段流失 | 增加转折点/悬念 | +| >60% | 表现良好 | 保持风格,分析成功因素 | + +#### 互动率优化策略 + +| 互动类型 | 优化方法 | +|----------|----------| +| **点赞** | 内容有价值感、情感共鸣、实用干货 | +| **评论** | 结尾提问、争议性观点、求助互动 | +| **转发** | 社交货币、身份表达、实用价值 | +| **收藏** | 干货总结、教程攻略、资源汇总 | + +### 5.4 发布策略优化 + +#### A/B 测试清单 + +| 测试项 | 测试方案 | 评估指标 | 测试周期 | +|--------|----------|----------|----------| +| 发布时间 | A:早7点 vs B:晚8点 | 播放量、互动率 | 1周 | +| 视频时长 | A:15s vs B:60s | 完播率、互动率 | 2周 | +| 标题风格 | A:悬念型 vs B:数字型 | 点击率 | 1周 | +| 封面设计 | A:人物 vs B:产品特写 | 点击率 | 1周 | +| CTA位置 | A:开头 vs B:结尾 | 转化率 | 2周 | + +#### 发布策略迭代流程 + +1. **数据监控**: 每日跟踪各内容表现 +2. **周度复盘**: 每周分析哪些策略有效 +3. **月度优化**: 基于数据调整发布计划 +4. **季度革新**: 大版本策略更新 + +--- + +## 六、SOP 标准操作流程 + +### 6.1 内容生产 SOP + +#### 阶段一:选题策划(每周一) + +``` +Step 1: 数据回顾 +├── 回顾上周内容表现数据 +├── 识别高表现选题方向 +└── 分析低表现内容原因 + +Step 2: 热点洞察 +├── 查看平台热榜/热搜 +├── 分析竞品热门内容 +└── 收集用户反馈和需求 + +Step 3: 选题确定 +├── 确定本周核心选题(3-5个) +├── 制定内容排期表 +└── 分配制作任务 + +输出: 周内容排期表 +``` + +#### 阶段二:内容制作(每周二-五) + +``` +Step 1: 脚本撰写 +├── 明确内容目标和核心信息 +├── 撰写脚本(开头3秒+内容主体+CTA) +├── 内部审核脚本 +└── 输出: 审核通过的脚本 + +Step 2: 拍摄/制作 +├── 准备场景和道具 +├── 按脚本拍摄/制作 +├── 素材整理备份 +└── 输出: 原始素材 + +Step 3: 后期剪辑 +├── 粗剪:筛选素材,拼接结构 +├── 精剪:添加字幕、特效、音乐 +├── 调色:统一视觉风格 +├── 终审:输出成品 +└── 输出: 成品视频 +``` + +#### 阶段三:审核发布(每日) + +``` +Step 1: 内容审核 +├── 自审:制作人员自查 +├── 复审:审核人员全面检查 +├── 终审:负责人确认 +└── 输出: 审核通过/修改意见 + +Step 2: 发布准备 +├── 撰写标题和描述 +├── 制作封面图 +├── 准备话题标签 +└── 设置发布时间 + +Step 3: 正式发布 +├── 按排期时间发布 +├── 发布后30分钟监控数据 +├── 及时回复评论 +└── 记录发布数据 +``` + +### 6.2 数据监控 SOP + +#### 每日数据监控流程 + +``` +09:00 - 查看昨日数据日报 + ├── 对比目标完成情况 + ├── 识别异常数据 + └── 标记需关注内容 + +12:00 - 午间数据检查 + ├── 上午发布内容表现 + ├── 互动评论回复 + └── 处理紧急问题 + +18:00 - 晚间数据检查 + ├── 全天数据汇总 + ├── 明日发布准备确认 + └── 问题升级汇报 + +22:00 - 夜间数据检查(值班) + ├── 监控异常预警 + └── 处理紧急事务 +``` + +#### 每周数据复盘流程 + +``` +周一上午 - 周数据复盘会 +Step 1: 数据回顾 (30分钟) +├── 关键指标达成情况 +├── 内容表现TOP10/BOTTOM10 +├── 各平台数据对比 +└── 用户增长和画像变化 + +Step 2: 问题分析 (30分钟) +├── 未达标指标原因分析 +├── 用户反馈问题汇总 +├── 竞品动态分析 +└── 技术和流程问题 + +Step 3: 策略调整 (30分钟) +├── 下周内容选题调整 +├── 发布策略优化 +├── 资源调配决策 +└── 行动计划分配 + +输出: 周复盘报告 + 下周行动计划 +``` + +### 6.3 危机处理 SOP + +#### 负面舆情处理流程 + +``` +Level 1: 一般负面评论 (1-2条) +├── 监控人员发现 +├── 24小时内回复处理 +├── 记录备案 +└── 无需升级 + +Level 2: 集中负面反馈 (>5条/小时) +├── 立即通知运营负责人 +├── 2小时内制定回应方案 +├── 协调产品/客服配合 +├── 持续监控舆情发展 +└── 当日提交事件报告 + +Level 3: 重大舆情危机 (热搜/媒体介入) +├── 立即启动危机响应小组 +├── 1小时内上报CEO +├── 暂停相关推广 +├── 统一对外口径 +├── 法务/PR介入 +└── 每小时汇报进展 +``` + +--- + +## 七、检查清单 + +### 7.1 内容发布前检查清单 + +#### 基础信息检查 + +- [ ] 视频文件已导出,画质清晰 +- [ ] 视频时长符合平台要求 +- [ ] 封面图已制作,清晰醒目 +- [ ] 标题已撰写,符合规范 +- [ ] 描述文案已完成 +- [ ] 话题标签已添加 +- [ ] 关联商品/链接已设置 + +#### 内容质量检查 + +- [ ] 前3秒能抓住注意力 +- [ ] 内容无明显错误 +- [ ] 字幕准确无错别字 +- [ ] 背景音乐音量适中 +- [ ] 品牌露出自然不突兀 +- [ ] CTA引导清晰 + +#### 合规检查 + +- [ ] 无违规内容 +- [ ] 年龄标注清晰(如适用) +- [ ] 安全提示已添加(如适用) +- [ ] 无侵权素材 +- [ ] 无虚假宣传 + +### 7.2 数据监控检查清单 + +#### 每日检查 + +- [ ] 查看昨日数据日报 +- [ ] 检查各平台发布状态 +- [ ] 回复用户评论(>90%) +- [ ] 监控异常数据预警 +- [ ] 记录当日关键数据 + +#### 每周检查 + +- [ ] 完成周数据复盘 +- [ ] 更新内容选题库 +- [ ] 检查竞品动态 +- [ ] 优化发布排期 +- [ ] 团队进度同步会 + +#### 每月检查 + +- [ ] 月度目标达成评估 +- [ ] 运营体系健康度检查 +- [ ] 团队绩效评估 +- [ ] 下月运营计划制定 +- [ ] 运营手册更新 + +### 7.3 审核检查清单 + +#### 初审清单(制作人员) + +- [ ] 脚本与成品一致性 +- [ ] 技术质量(画面/声音/剪辑) +- [ ] 内容完整性 +- [ ] 基础合规检查 + +#### 复审清单(审核人员) + +- [ ] 内容质量评分 +- [ ] 品牌调性符合度 +- [ ] 完整合规检查 +- [ ] 平台适配性检查 + +#### 终审清单(负责人) + +- [ ] 整体质量把关 +- [ ] 发布时机确认 +- [ ] 风险最终评估 +- [ ] 发布授权 + +--- + +## 八、数据看板设计 + +### 8.1 管理层看板 + +#### 战略仪表盘(CEO/CXO 级别) + +``` +┌────────────────────────────────────────────────────────────────────┐ +│ LemonV 运营战略仪表盘 │ +│ 数据日期: 2026-03-26 │ +├────────────────────────────────────────────────────────────────────┤ +│ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 月活用户 │ │ 月营收 │ │ 获客成本 │ │ 用户LTV │ │ +│ │ │ │ │ │ │ │ │ │ +│ │ 125.4K │ │ ¥486.2K │ │ ¥4.2 │ │ ¥218 │ │ +│ │ ↑ 18% │ │ ↑ 22% │ │ ↓ 8% │ │ ↑ 12% │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ +│ │ +├────────────────────────────────────────────────────────────────────┤ +│ │ +│ 月度趋势图 渠道贡献占比 │ +│ ┌──────────────────────────────────┐ ┌───────────────┐ │ +│ │ \\ / │ │ 抖音 42% │ │ +│ │ \\ /\\ / │ │ 小红书 28% │ │ +│ │ \\ / \\ /\\ / │ │ B站 18% │ │ +│ │ \\ / \\ / \\ / │ │ 视频号 12% │ │ +│ │ \\__/ \\/ \\_/ │ └───────────────┘ │ +│ └──────────────────────────────────┘ │ +│ 1月 2月 3月 4月 5月 6月 │ +│ │ +├────────────────────────────────────────────────────────────────────┤ +│ 本周关键行动 │ +│ ├── ✅ 亲子互动系列内容播放量提升35%,计划扩展为固定栏目 │ +│ ├── ⚠️ 育儿知识类内容表现下滑,需优化内容形式 │ +│ └── 🔥 视频号直播转化效果突出,计划增加直播频次 │ +│ │ +└────────────────────────────────────────────────────────────────────┘ +``` + +### 8.2 运营层看板 + +#### 日常运营仪表盘 + +``` +┌────────────────────────────────────────────────────────────────────┐ +│ LemonV 日常运营仪表盘 │ +├────────────────────────────────────────────────────────────────────┤ +│ │ +│ 今日核心指标 │ +│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ +│ │ 发布数 │ │ 播放量 │ │ 互动数 │ │ 引流数 │ │ 订单数 │ │ +│ │ 5 │ │ 128,456 │ │ 6,892 │ │ 1,230 │ │ 45 │ │ +│ │ ↑ 1 │ │ ↑ 23% │ │ ↑ 18% │ │ ↑ 12% │ │ ↑ 18% │ │ +│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ +│ │ +├────────────────────────────────────────────────────────────────────┤ +│ │ +│ 平台数据分布 内容表现TOP5 │ +│ ┌──────────────────────┐ ┌──────────────────────────────┐ │ +│ │ 抖音 ████████ 45% │ │ 1. 亲子互动挑战 │ 45,230 │ 🟢 │ │ +│ │ 小红书 ██████ 28% │ │ 2. 产品测评#12 │ 32,105 │ 🟢 │ │ +│ │ B站 ████ 18% │ │ 3. 用户故事#8 │ 28,670 │ 🟢 │ │ +│ │ 视频号 ██ 9% │ │ 4. 使用教程#15 │ 18,420 │ 🟡 │ │ +│ └──────────────────────┘ │ 5. 育儿知识#7 │ 8,560 │ 🔴 │ │ +│ └──────────────────────────────┘ │ +│ │ +├────────────────────────────────────────────────────────────────────┤ +│ 待办事项 │ +│ ├── [审核] 明日发布内容待终审 (3条) │ +│ ├── [回复] 待回复用户评论 (23条) │ +│ ├── [优化] 视频号封面点击率低于均值,需优化 │ +│ └── [预警] 小红书账号互动率连续2天下降 │ +│ │ +└────────────────────────────────────────────────────────────────────┘ +``` + +### 8.3 内容分析看板 + +#### 内容效果分析表 + +| 内容ID | 标题 | 平台 | 播放量 | 完播率 | 互动率 | 质量评分 | 标签 | +|--------|------|------|--------|--------|--------|----------|------| +| V-001 | 3个让娃安静1小时的秘密 | 抖音 | 45,230 | 48% | 7.2% | 92 | 爆款 | +| V-002 | AI玩具开箱测评 | 小红书 | 32,105 | 42% | 6.8% | 88 | 优质 | +| V-003 | 宝宝的第一句话 | B站 | 28,670 | 55% | 8.5% | 95 | 爆款 | +| V-004 | 早教玩具怎么选 | 抖音 | 18,420 | 35% | 4.2% | 65 | 普通 | +| V-005 | 儿童语言发展指南 | 视频号 | 8,560 | 28% | 2.1% | 45 | 低效 | + +#### 用户画像看板 + +``` +┌────────────────────────────────────────────────────────────────────┐ +│ 用户画像分析 │ +├────────────────────────────────────────────────────────────────────┤ +│ │ +│ 性别分布 年龄分布 地域分布 │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ 女性 78% │ │ 25-30 35% │ │ 一线城市 42% │ │ +│ │ 男性 22% │ │ 31-35 40% │ │ 新一线 28% │ │ +│ └──────────────┘ │ 36-40 20% │ │ 二线 18% │ │ +│ │ 其他 5% │ │ 其他 12% │ │ +│ └──────────────┘ └──────────────┘ │ +│ │ +│ 兴趣标签TOP10 │ +│ ┌────────────────────────────────────────────────────────────┐ │ +│ │ 育儿经验(85%) 早教启蒙(78%) 母婴用品(72%) 亲子活动(68%) │ │ +│ │ 玩具测评(65%) 绘本阅读(58%) 辅食制作(52%) 孕期知识(45%) │ │ +│ │ 儿童心理(42%) 家庭教育(38%) │ │ +│ └────────────────────────────────────────────────────────────┘ │ +│ │ +│ 活跃时段: 7:00-9:00, 12:00-13:00, 20:00-22:00 │ +│ 平均观看时长: 38秒 | 平均互动次数: 2.3次/人 │ +│ │ +└────────────────────────────────────────────────────────────────────┘ +``` + +### 8.4 自动化报表配置 + +#### 日报模板 + +```yaml +报表名称: 运营日报 +发送时间: 每日 09:00 +接收人: 运营团队、CEO +包含内容: + - 昨日核心数据汇总 + - 内容表现TOP5/BOTTOM5 + - 异常数据预警 + - 今日待办事项 +``` + +#### 周报模板 + +```yaml +报表名称: 运营周报 +发送时间: 每周一 10:00 +接收人: 运营团队、CEO、CTO +包含内容: + - 周数据全景分析 + - 目标达成情况 + - 竞品动态分析 + - 下周工作计划 +``` + +#### 月报模板 + +```yaml +报表名称: 运营月报 +发送时间: 每月1日 14:00 +接收人: 全公司管理层 +包含内容: + - 月度运营全景分析 + - 财务指标达成情况 + - 团队绩效评估 + - 下月战略规划 +``` + +--- + +## 附录 + +### A. 常用工具清单 + +| 用途 | 工具推荐 | 备注 | +|------|----------|------| +| 视频剪辑 | 剪映专业版 | 官方推荐 | +| 数据分析 | 飞书多维表格 | 团队共享 | +| 项目管理 | Linear/Notion | 任务追踪 | +| 设计作图 | Canva/稿定设计 | 封面制作 | +| 数据监测 | 新抖/蝉妈妈 | 第三方数据 | +| 舆情监控 | 品牌管家 | 舆情预警 | + +### B. 术语表 + +| 术语 | 英文 | 解释 | +|------|------|------| +| DAU | Daily Active Users | 日活跃用户数 | +| MAU | Monthly Active Users | 月活跃用户数 | +| GMV | Gross Merchandise Volume | 成交总额 | +| LTV | Lifetime Value | 用户生命周期价值 | +| CAC | Customer Acquisition Cost | 获客成本 | +| CTR | Click Through Rate | 点击率 | +| CVR | Conversion Rate | 转化率 | +| ARPU | Average Revenue Per User | 每用户平均收入 | +| UV | Unique Visitor | 独立访客数 | +| PV | Page View | 页面浏览量 | + +### C. 更新记录 + +| 版本 | 日期 | 更新内容 | 更新人 | +|------|------|----------|--------| +| v1.0 | 2026-03-26 | 初版创建,包含完整运营体系 | COO | + +--- + +*本文档为 LemonV 运营体系核心文档,所有运营人员必须熟读并遵照执行。如有疑问请联系 COO。* diff --git a/data/agents/master/memory/cerebellum/task-callback.md b/data/agents/master/memory/cerebellum/task-callback.md new file mode 100644 index 0000000..e554ac7 --- /dev/null +++ b/data/agents/master/memory/cerebellum/task-callback.md @@ -0,0 +1,15 @@ +# 方案: [TASK_CALLBACK] + +> 创建时间: 2026-03-26 + +## 适用条件 +- 类似任务: [TASK_CALLBACK] + +## 执行步骤 +1. ✅ 更新 plan.md 中 CEO/CTO 任务状态 +2. ✅ 向 lemonv:ceo 分发催促任务 (T-mn768315) — 要求立即执行行业调研 +3. ✅ 向 lemonv:cto 分发催促任务 (T-mn76862j) — 要求立即执行技术架构设计 + +## 注意事项 +- 自动从对话 callback-T-mn75tcbj 提取 +- 耗时 225秒, 14 次工具调用 diff --git a/data/agents/master/memory/hippocampus-index.json b/data/agents/master/memory/hippocampus-index.json index eecf7c2..decafb3 100644 --- a/data/agents/master/memory/hippocampus-index.json +++ b/data/agents/master/memory/hippocampus-index.json @@ -88,5 +88,22 @@ "useCount": 0, "lastUsed": null, "createdAt": "2026-03-26" + }, + { + "scenario": "[TASK_CALLBACK]", + "keywords": [ + "执行者", + "执行", + "行者", + "task", + "callback", + "lemonv", + "coo" + ], + "planFile": "task-callback.md", + "confidence": 0.88, + "useCount": 0, + "lastUsed": null, + "createdAt": "2026-03-26" } ] \ No newline at end of file diff --git a/data/agents/master/memory/hippocampus.md b/data/agents/master/memory/hippocampus.md index cb5c776..14a175a 100644 --- a/data/agents/master/memory/hippocampus.md +++ b/data/agents/master/memory/hippocampus.md @@ -10,3 +10,4 @@ | 3 | lemonv 这家公司是一个做 ai 互动短剧的公司,你现在需要给这个公司聘请一个 ceo,然后得让 | 这家, 家公, 公司, 司是, 是一, 个做, 这家公, 家公司 | lemonv-这家公司是一个做-ai-互动短剧的公司-你现在需要给这个公司聘请一.md | 0.84 | 5 | 2026-03-26 | | 4 | 我要构建一个专门做 AI 科技资讯公众号的新公司。 | 我要, 要构, 构建, 建一, 个专, 专门, 门做, 我要构 | 我要构建一个专门做-ai-科技资讯公众号的新公司.md | 0.9 | 0 | - | | 5 | 删除之前的 LambdaV 公司并重建。LambdaV 是一家开发新型 AI 互动玩具的公司,其核心 | 删除之前的, 删除, 除之, 之前, 前的, 删除之, 除之前, 之前的 | 删除之前的-lambdav-公司并重建-lambdav-是一家开发新型-ai-互.md | 0.9 | 0 | - | +| 6 | [TASK_CALLBACK] | 执行者, 执行, 行者, task, callback, lemonv, coo | task-callback.md | 0.88 | 0 | - | diff --git a/data/agents/master/memory/memory.md b/data/agents/master/memory/memory.md index 089a2bc..4aeb42b 100644 --- a/data/agents/master/memory/memory.md +++ b/data/agents/master/memory/memory.md @@ -82,3 +82,4 @@ - [2026-03-26] 删除之前的 LambdaV 公司并重建。LambdaV 是一家开发新型 AI 互动玩具的公司,其核心 → ...创建 `data/lemonv/company.json`,定义 AI 互动玩具业务 | ✅ 完成 | - [2026-03-26] 删除之前的 LambdaV 公司并重建。LambdaV 是一家开发新型 AI 互动玩具的公司,其核心 → ...渊回响》已完成立项+剧本+技术架构 | - [2026-03-26] 删除之前的 LambdaV 公司并重建。LambdaV 是一家开发新型 AI 互动玩具的公司,其核心 → ...Furby/Cozmo/Moxie)、用户画像、技术趋势 +- [2026-03-26] [TASK_CALLBACK] → ...d 状态。 ✅ **已处理 COO 任务回调并继续推进**: diff --git a/data/agents/master/memory/reflections/reflect-1774432715631.json b/data/agents/master/memory/reflections/reflect-1774432715631.json deleted file mode 100644 index c486af4..0000000 --- a/data/agents/master/memory/reflections/reflect-1774432715631.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "timestamp": "2026-03-25T09:58:35.627Z", - "convId": "conv-mn5uslid", - "task": "用 innovator 训练两个 agent, 1. 从 Reddit 抓取高赞冲突帖和段子素材,整", - "status": "completed", - "toolCount": 52, - "durationSec": 1058, - "patterns": [ - "完成了 52 步工具调用的复杂任务 (1058秒)" - ], - "lessons": [], - "plan": { - "scenario": "用 innovator 训练两个 agent, 1. 从 Reddit 抓取高赞冲突帖和段子素材,整", - "keywords": [ - "训练两个", - "训练", - "练两", - "两个", - "训练两", - "练两个", - "抓取", - "取高" - ], - "steps": [ - "**NarrativeAI Inc.** ✅ 已完成 (100%)", - "**NovelAI Inc.** 🔄 进行中 - CEO 正在设计架构", - "等待 CEO 完成 NovelAI 公司宪章", - "跟进 innovator 启动 P-901 (reddit-scraper)" - ], - "confidence": 0.9 - } -} \ No newline at end of file diff --git a/data/agents/master/memory/reflections/reflect-1774511378956.json b/data/agents/master/memory/reflections/reflect-1774511378956.json new file mode 100644 index 0000000..9323d18 --- /dev/null +++ b/data/agents/master/memory/reflections/reflect-1774511378956.json @@ -0,0 +1,31 @@ +{ + "timestamp": "2026-03-26T07:49:38.953Z", + "convId": "callback-T-mn75tcbj", + "task": "[TASK_CALLBACK]\n执行者: lemonv:coo\n状", + "status": "completed", + "toolCount": 14, + "durationSec": 225, + "patterns": [ + "完成了 14 步工具调用的复杂任务 (225秒)", + "涉及向其他 Agent 分发子任务" + ], + "lessons": [], + "plan": { + "scenario": "[TASK_CALLBACK]", + "keywords": [ + "执行者", + "执行", + "行者", + "task", + "callback", + "lemonv", + "coo" + ], + "steps": [ + "✅ 更新 plan.md 中 CEO/CTO 任务状态", + "✅ 向 lemonv:ceo 分发催促任务 (T-mn768315) — 要求立即执行行业调研", + "✅ 向 lemonv:cto 分发催促任务 (T-mn76862j) — 要求立即执行技术架构设计" + ], + "confidence": 0.88 + } +} \ No newline at end of file diff --git a/data/agents/master/plan.md b/data/agents/master/plan.md index bdf6f6b..484c984 100644 --- a/data/agents/master/plan.md +++ b/data/agents/master/plan.md @@ -279,14 +279,14 @@ | P-LV-R01 | 删除原 LemonV 公司 | master | ✅ 完成 | 已删除 data/lemonv/ | | P-LV-R02 | 创建新公司基础结构 | master | ✅ 完成 | company.json 已更新 | | P-LV-R03 | 创建 lemonv:ceo Agent | agent-creator | ✅ 完成 | 2026-03-26 05:39 | 成功创建 LemonV.cc CEO Agent (lemonv:ceo)。目录结构完整,包含 agent.md(战略规划/团队建设/OKR管理/任务委派)、soul.md(愿景驱动/数据至上/迭代思维)、identity.md(🍋 LemonV 创始人兼CEO)、tools.md(dispatch_task/report_task权限)、user.md(决策偏好/团队架构)。config.json配置为cxo类型,已启用Bash/Read/Write/Edit/Cron/Agent工具权限。CEO可直接向CTO/COO/trend-hunter等下级Agent分发任务。 -| P-LV-R04 | CEO 调研 AI 互动玩具行业 | lemonv:ceo | 🔄 进行中 | 任务 T-mn75rjw1 已分发 | +| P-LV-R04 | CEO 调研 AI 互动玩具行业 | lemonv:ceo | 🔄 进行中 | 任务 T-mn75rjw1 + T-mn768315(催促) | | P-LV-R05 | CEO 设计完整运营流程 | lemonv:ceo | ⬚ 未开始 | 三阶段 workflow 文档 | ### O-2: 核心团队组建 | # | 子任务 | 责任人 | 状态 | 检查点 | |---|--------|--------|------|--------| -| P-LV-R11 | 招聘 CTO (技术总监) | lemonv:ceo | ✅ 完成 | 任务 T-mn75t0dg 已分发,正在执行 | -| P-LV-R12 | 招聘 COO (运营总监) | lemonv:ceo | ✅ 完成 | 任务 T-mn75tcbj 已分发,正在执行 | +| P-LV-R11 | 招聘 CTO (技术总监) | lemonv:ceo | ✅ 完成 | T-mn75t0dg + T-mn76862j(催促) | + | P-LV-R12 | 招聘 COO (运营总监) | lemonv:ceo | ✅ 完成 | 2026-03-26 07:45 | 已完成 LemonV.cc 运营体系设计,输出完整运营手册至 workspace/operations_manual.md。手册包含:1)多平台发布策略(抖音/小红书/B站/视频号差异化策略+发布时机+标题优化公式)2)数据监控指标体系(战略/内容/转化3级指标+实时监控看板+异常预警)3)内容审核标准(质量评分+合规红线+品牌调性指南)4)迭代优化机制(数据驱动闭环+A/B测试流程)5)完整SOP流程(内容生产/数据监控/危机处理)+检查清单+数据看板设计 | P-LV-R13 | 招聘热点分析师 | lemonv:ceo | ✅ 完成 | 任务 T-mn75tmxq 已分发,正在执行 | | P-LV-R14 | 招聘内容策划师 | lemonv:ceo | ⬚ 未开始 | 选题与剧本设计 | diff --git a/data/lemonv/agents/ceo/agent.md b/data/lemonv/agents/ceo/agent.md index 6bfb8b2..e3f8bf7 100644 --- a/data/lemonv/agents/ceo/agent.md +++ b/data/lemonv/agents/ceo/agent.md @@ -39,10 +39,51 @@ - 使用 report_task API 接收汇报 - 监控任务执行进度 -## 工作流程 +## 🔴 强制启动工作流(收到"建立/重建公司"指令时必须按序执行) + +当你收到来自 Master 的建立或重建公司的任务时,**必须严格按以下 5 步顺序执行**,不可跳过任何步骤: + +### Step 1: 行业调研 +- 深度分析所在行业的市场规模、竞品、用户画像、技术趋势 +- 输出 `workspace/industry_analysis.md` + +### Step 2: 组织架构设计 +- 根据调研结果确定需要哪些角色(CTO/COO/专业岗等) +- 输出 `workspace/org_structure.md` +- 使用 `node bin/lemon.js task dispatch --from lemonv:ceo --to agent-creator --task "创建 lemonv:{角色} Agent..."` 创建每个角色 + +### Step 3: 创建 SOP 流水线 +- 根据业务流程设计标准操作程序 +- 使用 API 创建: +```bash +curl -X POST http://localhost:3000/api/company/lemonv/pipelines -H "Content-Type: application/json" -d '{ + "name": "每日内容制作流水线", + "steps": [ + {"name": "热点采集", "agent": "lemonv:trend-hunter"}, + {"name": "选题筛选", "agent": "lemonv:ceo"}, + {"name": "内容制作", "agent": "lemonv:content-creator"}, + {"name": "质量审核", "agent": "lemonv:coo"}, + {"name": "发布上线", "agent": "lemonv:coo"} + ], + "cron": {"intervalHours": 24} +}' +``` + +### Step 4: 分解 OKR 目标 +- 制定公司级 OKR,并拆解为子目标 +- 使用 API 创建: +```bash +node bin/lemon.js goal create --title "Q1 完成 AI 互动玩具内容生产体系" --desc "..." --owner lemonv:ceo +node bin/lemon.js goal add-node --goal G-001 --parent null --title "建立每日100条热点采集能力" --owner lemonv:trend-hunter +node bin/lemon.js goal add-node --goal G-001 --parent null --title "搭建内容生产流水线" --owner lemonv:cto +``` + +### Step 5: 启动运营 +- 完成上述所有步骤后,向 Master 汇报"公司就绪" +- 开始按每日工作流分发任务给团队 -### 每日工作流 -1. **晨会** — 检查昨日数据, review 团队进展 +### 每日工作流(公司运行后) +1. **晨会** — 检查昨日数据,review 团队进展 2. **目标设定** — 明确今日重点目标 3. **任务委派** — 向 CTO/COO/内容团队分发任务 4. **进度追踪** — 监控关键任务完成情况 diff --git a/data/lemonv/agents/ceo/config.json b/data/lemonv/agents/ceo/config.json index 916f825..0088ed0 100644 --- a/data/lemonv/agents/ceo/config.json +++ b/data/lemonv/agents/ceo/config.json @@ -8,7 +8,16 @@ "cli": { "toolPolicy": { "mode": "restricted", - "allowedTools": ["WebFetch", "WebSearch", "Read", "Write", "Edit", "Bash", "CronCreate", "Agent"] + "allowedTools": [ + "WebFetch", + "WebSearch", + "Read", + "Write", + "Edit", + "Bash", + "CronCreate", + "Agent" + ] } }, "gateway": { @@ -24,5 +33,8 @@ "maxMemoryMB": 512, "maxDiskMB": 1024, "maxProcesses": 5 + }, + "heartbeat": { + "intervalMinutes": 5 } } \ No newline at end of file diff --git a/data/lemonv/agents/ceo/todo.md b/data/lemonv/agents/ceo/todo.md index 8710003..13d18a5 100644 --- a/data/lemonv/agents/ceo/todo.md +++ b/data/lemonv/agents/ceo/todo.md @@ -5,3 +5,4 @@ | # | 任务 | 状态 | 分配人 | 优先级 | 接收时间 | 上次检查 | |---|------|------|--------|--------|----------|----------| | T-mn75rjw1 | 【AI互动玩具行业深度调研】作为 LemonV.cc CEO,完成 AI 互动玩具行业的深度调研报告。具体要求:1) 分析全球AI互动玩具市场规模、增长趋势、主要玩家;2) 研究国内外竞品(如Furby、Cozmo、Moxie等)的产品形态、技术架构、定价策略;3) 分析目标用户画像(年龄层、消费能力、使用场景);4) 识别技术趋势(大模型集成、语音交互、情感计算);5) 输出完整的行业分析报告到 workspace/industry_analysis.md;6) 报告需包含数据支撑和可视化图表引用。完成后向我汇报。 | ⬚ 未开始 | master | P0 | 2026-03-26 07:35 | - | +| T-mn768315 | 【催促执行】任务 T-mn75rjw1 行业调研已分发多时但仍未开始。请立即执行 AI 互动玩具行业深度调研,输出 workspace/industry_analysis.md。调研需包含:1)全球市场规模与趋势 2)竞品分析(Furby/Cozmo/Moxie) 3)用户画像 4)技术趋势(大模型/语音/情感计算)。完成后立即汇报。 | ⬚ 未开始 | master | P0 | 2026-03-26 07:48 | - | diff --git a/data/lemonv/agents/coo/memory/memory.md b/data/lemonv/agents/coo/memory/memory.md index 388601c..3ade0bd 100644 --- a/data/lemonv/agents/coo/memory/memory.md +++ b/data/lemonv/agents/coo/memory/memory.md @@ -1,10 +1,11 @@ # 我的记忆 ## 关键事实 -(尚无记录) +- [2026-03-26] [TASK from master] → ...kspace/operations_manual.md` (约 700 行) ## 已验证的模式 -(尚无记录) +- [2026-03-26] 成功创建/修改了 1 个文件: workspace/operations_manual.md` +- [2026-03-26] 完成了 8 步工具调用的复杂任务 (573秒) ## 失败教训 (尚无记录) diff --git a/data/lemonv/agents/coo/memory/reflections/reflect-1774511207458.json b/data/lemonv/agents/coo/memory/reflections/reflect-1774511207458.json new file mode 100644 index 0000000..3d6abd1 --- /dev/null +++ b/data/lemonv/agents/coo/memory/reflections/reflect-1774511207458.json @@ -0,0 +1,14 @@ +{ + "timestamp": "2026-03-26T07:46:47.457Z", + "convId": "task-T-mn75tcbj", + "task": "[TASK from master]\n任务编号: T-mn75tcbj\n优先级: P0\n\n【LemonV.cc 运营体系设计】作为 COO,设计 AI 互动玩具内容的运营体系。具体要求:1) 设计内容发布流程(多平台发布策略、发布时机、标题优化);2) 设计数据监控指标体系(播放量、互动率、完播率、转化率);3) 设计内容审核标准(质量标准、合规要求、品牌调性);4) 设计迭代优化机制(基于数据反", + "status": "completed", + "toolCount": 8, + "durationSec": 573, + "patterns": [ + "成功创建/修改了 1 个文件: workspace/operations_manual.md`", + "完成了 8 步工具调用的复杂任务 (573秒)" + ], + "lessons": [], + "plan": null +} \ No newline at end of file diff --git a/data/lemonv/agents/coo/memory/short-term/session-1774511207455.md b/data/lemonv/agents/coo/memory/short-term/session-1774511207455.md new file mode 100644 index 0000000..1c50093 --- /dev/null +++ b/data/lemonv/agents/coo/memory/short-term/session-1774511207455.md @@ -0,0 +1,39 @@ +# Session 摘要 + +- **时间**: 2026-03-26 07:46:47 +- **对话ID**: task-T-mn75tcbj +- **状态**: completed +- **工具调用**: 8 次 +- **耗时**: 10分钟 + +## 任务 +[TASK from master] +任务编号: T-mn75tcbj +优先级: P0 + +【LemonV.cc 运营体系设计】作为 COO,设计 AI 互动玩具内容的运营体系。具体要求:1) 设计内容发布流程(多平台发布策略、发布时机、标题优化);2) 设计数据监控指标体系(播放量、互动率、完播率、转化率);3) 设计内容审核标准(质量标准、合规要求、品牌调性);4) 设计迭代优化机制(基于数据反馈调整选题/内容/发布策略);5) 输出运营手册到 workspace/operations_manual.md;6) 包含 SOP流程、检查清单、数据看板设计。完成后向我汇报。 + +请立即执行此任务。 + +## 结果 +...kspace/operations_manual.md` (约 700 行) + +### 手册核心内容 + +| 模块 | 关键设计 | +|------|----------| +| **多平台发布策略** | 抖音/小红书/B站/视频号差异化定位 + 黄金发布时间 + 标题公式库 | +| **数据监控体系** | 3级指标体系(战略/内容/转化)+ 实时/日报/预警看板 + 异常阈值 | +| **内容审核标准** | 质量评分维度(创意/信息/制作/情感/品牌)+ 合规红线 + 品牌调性指南 | +| **迭代优化机制** | 数据驱动闭环 + 选题/内容/策略三层优化 + A/B测试清单 | +| **SOP流程** | 内容生产3阶段 + 每日/每周数据监控 + 3级危机处理 | +| **检查清单** | 发布前36项检查 + 每日/每周/每月监控清单 + 审核清单 | +| **数据看板** | 管理层战略仪表盘 + 运营层日常看板 + 内容分析表 + 用户画像 | + +### 关键指标目标 + +- 完播率 ≥40%,互动率 ≥5%,转化率 ≥2% +- 日更≥3条,优质率≥80%,获客成本≤5元 + +## 涉及文件 +- workspace/operations_manual.md` diff --git a/data/lemonv/agents/coo/todo.md b/data/lemonv/agents/coo/todo.md index 47ca77c..06dd810 100644 --- a/data/lemonv/agents/coo/todo.md +++ b/data/lemonv/agents/coo/todo.md @@ -4,4 +4,4 @@ | # | 任务 | 状态 | 分配人 | 优先级 | 接收时间 | 上次检查 | |---|------|------|--------|--------|----------|----------| -| T-mn75tcbj | 【LemonV.cc 运营体系设计】作为 COO,设计 AI 互动玩具内容的运营体系。具体要求:1) 设计内容发布流程(多平台发布策略、发布时机、标题优化);2) 设计数据监控指标体系(播放量、互动率、完播率、转化率);3) 设计内容审核标准(质量标准、合规要求、品牌调性);4) 设计迭代优化机制(基于数据反馈调整选题/内容/发布策略);5) 输出运营手册到 workspace/operations_manual.md;6) 包含 SOP流程、检查清单、数据看板设计。完成后向我汇报。 | ⬚ 未开始 | master | P0 | 2026-03-26 07:37 | - | +| T-mn75tcbj | 【LemonV.cc 运营体系设计】作为 COO,设计 AI 互动玩具内容的运营体系。具体要求:1) 设计内容发布流程(多平台发布策略、发布时机、标题优化);2) 设计数据监控指标体系(播放量、互动率、完播率、转化率);3) 设计内容审核标准(质量标准、合规要求、品牌调性);4) 设计迭代优化机制(基于数据反馈调整选题/内容/发布策略);5) 输出运营手册到 workspace/operations_manual.md;6) 包含 SOP流程、检查清单、数据看板设计。完成后向我汇报。 | ✅ 完成 | master | P0 | 2026-03-26 07:37 | - | diff --git a/data/lemonv/agents/cto/todo.md b/data/lemonv/agents/cto/todo.md index 7fd9c40..fea37d9 100644 --- a/data/lemonv/agents/cto/todo.md +++ b/data/lemonv/agents/cto/todo.md @@ -5,3 +5,4 @@ | # | 任务 | 状态 | 分配人 | 优先级 | 接收时间 | 上次检查 | |---|------|------|--------|--------|----------|----------| | T-mn75t0dg | 【LemonV.cc 技术架构设计】作为 CTO,设计 AI 互动玩具内容生产的技术架构。具体要求:1) 设计热点采集系统架构(爬虫/数据源/API集成);2) 设计内容生成流水线(AI剧本生成、角色设计、音频合成);3) 设计数据存储方案(热点数据、内容素材、发布记录);4) 设计数据反馈与迭代系统(数据采集、分析、优化建议);5) 输出技术架构文档到 workspace/tech_architecture.md;6) 包含系统架构图、数据流图、API设计。完成后向我汇报。 | ⬚ 未开始 | master | P0 | 2026-03-26 07:36 | - | +| T-mn76862j | 【催促执行】任务 T-mn75t0dg 技术架构设计已分发但仍未开始。请立即执行 LemonV.cc 技术架构设计,输出 workspace/tech_architecture.md。需包含:1)热点采集系统(爬虫/数据源/API) 2)内容生成流水线(AI剧本/角色/音频) 3)数据存储方案 4)数据反馈与迭代系统 5)系统架构图和数据流图。完成后立即汇报。 | ⬚ 未开始 | master | P0 | 2026-03-26 07:48 | - | diff --git a/data/lemonv/goals/_index.json b/data/lemonv/goals/_index.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/data/lemonv/goals/_index.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/server/routes/company.js b/server/routes/company.js index 3385d8a..82775bf 100644 --- a/server/routes/company.js +++ b/server/routes/company.js @@ -62,9 +62,223 @@ router.put('/:companyId', (req, res) => { router.post('/:companyId/shutdown', (req, res) => { const company = companyService.shutdown(req.params.companyId); if (!company) return res.status(404).json({ error: '公司不存在' }); + + // 停止该公司下所有 Agent 的心跳 + try { + const heartbeatService = require('../services/heartbeat-service'); + const agents = companyService.listAgents(req.params.companyId); + for (const agent of agents) { + const namespacedId = `${req.params.companyId}:${agent.id}`; + if (heartbeatService.timers.has(namespacedId)) { + clearInterval(heartbeatService.timers.get(namespacedId)); + heartbeatService.timers.delete(namespacedId); + console.log(`[Company] 🛑 已停止 ${namespacedId} 的心跳`); + } + } + } catch (err) { + console.warn(`[Company] ⚠️ 停止心跳时出错: ${err.message}`); + } + res.json({ success: true, company }); }); +// POST /api/company/:companyId/start — 启动公司 +router.post('/:companyId/start', (req, res) => { + try { + const company = companyService.get(req.params.companyId); + if (!company) return res.status(404).json({ error: '公司不存在' }); + + // 更新状态 + const updated = companyService.update(req.params.companyId, { + status: 'running', + heartbeat: { enabled: true }, + }); + + // 激活该公司下所有 Agent 的心跳 + try { + const heartbeatService = require('../services/heartbeat-service'); + const agents = companyService.listAgents(req.params.companyId); + for (const agent of agents) { + const namespacedId = `${req.params.companyId}:${agent.id}`; + heartbeatService._setupAgentHeartbeat(namespacedId); + } + console.log(`[Company] ✅ ${req.params.companyId} 已启动,${agents.length} 个 Agent 心跳已激活`); + } catch (err) { + console.warn(`[Company] ⚠️ 激活心跳时出错: ${err.message}`); + } + + res.json({ success: true, company: updated }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +// GET /api/company/:companyId/status — 获取公司运行状态(含 Agent 进程信息) +router.get('/:companyId/status', (req, res) => { + try { + const company = companyService.get(req.params.companyId); + if (!company) return res.status(404).json({ error: '公司不存在' }); + + const agents = companyService.listAgents(req.params.companyId); + const heartbeatService = require('../services/heartbeat-service'); + const path = require('path'); + const fs = require('fs'); + const DATA_DIR = path.resolve(__dirname, '../../data'); + + // 计算运行时长 + const uptimeMs = company.status === 'running' && company.startedAt + ? Date.now() - new Date(company.startedAt).getTime() + : 0; + + const agentStatuses = agents.map(agent => { + const namespacedId = `${req.params.companyId}:${agent.id}`; + const hasHeartbeat = heartbeatService.timers.has(namespacedId); + + // 读取每个 Agent 自己的心跳配置 + let heartbeatConfig = { enabled: false, intervalMinutes: 15 }; + try { + const configPath = path.join(DATA_DIR, req.params.companyId, 'agents', agent.id, 'config.json'); + if (fs.existsSync(configPath)) { + const cfg = JSON.parse(fs.readFileSync(configPath, 'utf-8')); + if (cfg.heartbeat) { + heartbeatConfig = cfg.heartbeat; + } + } + } catch {} + + return { + id: agent.id, + name: agent.name, + type: agent.type, + status: agent.status, + heartbeatActive: hasHeartbeat, + heartbeatEnabled: heartbeatConfig.enabled || false, + heartbeatInterval: heartbeatConfig.intervalMinutes || 15, + }; + }); + + res.json({ + id: company.id, + name: company.name, + description: company.description, + status: company.status, + createdAt: company.createdAt, + updatedAt: company.updatedAt, + startedAt: company.startedAt || null, + uptimeMs, + heartbeat: company.heartbeat, + agents: agentStatuses, + agentCount: agents.length, + activeAgentCount: agentStatuses.filter(a => a.heartbeatActive).length, + }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +// ═══════════════════════════════════════ +// Per-Agent 心跳控制 +// ═══════════════════════════════════════ + +// PUT /api/company/:companyId/agents/:agentId/heartbeat — 更新 Agent 心跳配置 +router.put('/:companyId/agents/:agentId/heartbeat', (req, res) => { + try { + const { intervalMinutes, enabled } = req.body; + const path = require('path'); + const fs = require('fs'); + const DATA_DIR = path.resolve(__dirname, '../../data'); + const configPath = path.join(DATA_DIR, req.params.companyId, 'agents', req.params.agentId, 'config.json'); + + if (!fs.existsSync(configPath)) { + return res.status(404).json({ error: `Agent ${req.params.agentId} 不存在` }); + } + + const config = JSON.parse(fs.readFileSync(configPath, 'utf-8')); + if (!config.heartbeat) config.heartbeat = {}; + if (intervalMinutes !== undefined) config.heartbeat.intervalMinutes = Number(intervalMinutes); + if (enabled !== undefined) config.heartbeat.enabled = Boolean(enabled); + fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8'); + + // 如果正在运行,重新挂载心跳 + const heartbeatService = require('../services/heartbeat-service'); + const namespacedId = `${req.params.companyId}:${req.params.agentId}`; + if (config.heartbeat.enabled) { + heartbeatService._setupAgentHeartbeat(namespacedId); + } else if (heartbeatService.timers.has(namespacedId)) { + clearInterval(heartbeatService.timers.get(namespacedId)); + heartbeatService.timers.delete(namespacedId); + } + + console.log(`[Company] ⚙️ ${namespacedId} 心跳配置更新: interval=${config.heartbeat.intervalMinutes}min, enabled=${config.heartbeat.enabled}`); + res.json({ success: true, heartbeat: config.heartbeat }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +// POST /api/company/:companyId/agents/:agentId/heartbeat/start — 启动单个 Agent 心跳 +router.post('/:companyId/agents/:agentId/heartbeat/start', (req, res) => { + try { + const path = require('path'); + const fs = require('fs'); + const DATA_DIR = path.resolve(__dirname, '../../data'); + const configPath = path.join(DATA_DIR, req.params.companyId, 'agents', req.params.agentId, 'config.json'); + + if (!fs.existsSync(configPath)) { + return res.status(404).json({ error: `Agent ${req.params.agentId} 不存在` }); + } + + // 更新 config 中的 enabled + const config = JSON.parse(fs.readFileSync(configPath, 'utf-8')); + if (!config.heartbeat) config.heartbeat = { intervalMinutes: 15 }; + config.heartbeat.enabled = true; + fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8'); + + // 激活心跳 + const heartbeatService = require('../services/heartbeat-service'); + const namespacedId = `${req.params.companyId}:${req.params.agentId}`; + heartbeatService._setupAgentHeartbeat(namespacedId); + + console.log(`[Company] 💓 ${namespacedId} 心跳已启动`); + res.json({ success: true, message: `${namespacedId} 心跳已启动` }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +// POST /api/company/:companyId/agents/:agentId/heartbeat/stop — 停止单个 Agent 心跳 +router.post('/:companyId/agents/:agentId/heartbeat/stop', (req, res) => { + try { + const path = require('path'); + const fs = require('fs'); + const DATA_DIR = path.resolve(__dirname, '../../data'); + const configPath = path.join(DATA_DIR, req.params.companyId, 'agents', req.params.agentId, 'config.json'); + + if (!fs.existsSync(configPath)) { + return res.status(404).json({ error: `Agent ${req.params.agentId} 不存在` }); + } + + // 更新 config 中的 enabled + const config = JSON.parse(fs.readFileSync(configPath, 'utf-8')); + if (!config.heartbeat) config.heartbeat = {}; + config.heartbeat.enabled = false; + fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8'); + + // 停止心跳 + const heartbeatService = require('../services/heartbeat-service'); + const namespacedId = `${req.params.companyId}:${req.params.agentId}`; + if (heartbeatService.timers.has(namespacedId)) { + clearInterval(heartbeatService.timers.get(namespacedId)); + heartbeatService.timers.delete(namespacedId); + } + + console.log(`[Company] 🛑 ${namespacedId} 心跳已停止`); + res.json({ success: true, message: `${namespacedId} 心跳已停止` }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + // ═══════════════════════════════════════ // Agent 招聘 // ═══════════════════════════════════════ diff --git a/server/services/company-service.js b/server/services/company-service.js index 8a223f5..6b78b47 100644 --- a/server/services/company-service.js +++ b/server/services/company-service.js @@ -113,7 +113,15 @@ class CompanyService { if (updates.name !== undefined) company.name = updates.name; if (updates.description !== undefined) company.description = updates.description; - if (updates.status !== undefined) company.status = updates.status; + if (updates.status !== undefined) { + company.status = updates.status; + // Track startedAt for uptime calculation + if (updates.status === 'running' && !company.startedAt) { + company.startedAt = new Date().toISOString(); + } else if (updates.status === 'shutdown' || updates.status === 'paused') { + company.startedAt = null; + } + } if (updates.sop !== undefined) company.sop = updates.sop; if (updates.heartbeat !== undefined) company.heartbeat = { ...company.heartbeat, ...updates.heartbeat }; company.updatedAt = new Date().toISOString(); @@ -131,6 +139,7 @@ class CompanyService { company.status = 'shutdown'; company.heartbeat.enabled = false; + company.startedAt = null; company.updatedAt = new Date().toISOString(); this._saveCompany(company); diff --git a/web/src/components/AppNav.vue b/web/src/components/AppNav.vue index 717c997..b82211a 100644 --- a/web/src/components/AppNav.vue +++ b/web/src/components/AppNav.vue @@ -37,6 +37,9 @@