From 4611a4b7604a6e2f4981548b43987f63eb5d3681 Mon Sep 17 00:00:00 2001 From: yibo Date: Sat, 28 Mar 2026 10:47:30 +0800 Subject: [PATCH] fix(company): completely remove legacy Phase M meta-agent auto-deployment to strictly enforce empty shell company creation --- data/system/agents/master/memory/hippocampus-index.json | 4 ++-- data/system/agents/master/memory/memory.md | 2 ++ data/system/agents/master/memory/reflections/reflect-1774636548950.json | 15 +++++++++++++++ data/system/agents/master/memory/reflections/reflect-1774665780685.json | 14 ++++++++++++++ data/system/agents/master/memory/short-term/session-1774636548947.md | 41 +++++++++++++++++++++++++++++++++++++++++ data/system/agents/master/memory/short-term/session-1774665780683.md | 36 ++++++++++++++++++++++++++++++++++++ data/system/templates/_company_bootstrap/manifest.json | 11 ----------- data/system/templates/_registry.json | 2 +- server/services/company-service.js | 78 ------------------------------------------------------------------------------ 9 files changed, 111 insertions(+), 92 deletions(-) create mode 100644 data/system/agents/master/memory/reflections/reflect-1774636548950.json create mode 100644 data/system/agents/master/memory/reflections/reflect-1774665780685.json create mode 100644 data/system/agents/master/memory/short-term/session-1774636548947.md create mode 100644 data/system/agents/master/memory/short-term/session-1774665780683.md delete mode 100644 data/system/templates/_company_bootstrap/manifest.json diff --git a/data/system/agents/master/memory/hippocampus-index.json b/data/system/agents/master/memory/hippocampus-index.json index c60bd7b..5be91ca 100644 --- a/data/system/agents/master/memory/hippocampus-index.json +++ b/data/system/agents/master/memory/hippocampus-index.json @@ -12,8 +12,8 @@ ], "planFile": "task-callback.md", "confidence": 0.76, - "useCount": 24, - "lastUsed": "2026-03-27", + "useCount": 25, + "lastUsed": "2026-03-28", "createdAt": "2026-03-27" }, { diff --git a/data/system/agents/master/memory/memory.md b/data/system/agents/master/memory/memory.md index 5b63cac..261e0cc 100644 --- a/data/system/agents/master/memory/memory.md +++ b/data/system/agents/master/memory/memory.md @@ -33,3 +33,5 @@ - [2026-03-27] hi → 你好,我是 Master Agent,LemonBoss 组织的管理者。告诉我你想做什么,我会把任务分配给合适的 Agent 来执行。 - [2026-03-27] [TASK_CALLBACK] → 收到 Innovator 任务完成回调。让我先检查 plan.md 了解当前整体进度。 - [2026-03-27] [TASK_CALLBACK] → 收到 weibo-scraper 训练完成回调。让我更新记录并汇报。 +- [2026-03-27] 所以weibo-scraper 最后训练完后,跑出来的最终结果是在 output 目录下?我怎么没看 → ...orkspace/weibo_scraper_fde_report.md +- [2026-03-28] 帮我创建一个新的公司,叫做 test ,然后雇佣一下weibo-scraper,我需要给他运行一个任 → 我来帮你创建公司并雇佣 weibo-scraper。 diff --git a/data/system/agents/master/memory/reflections/reflect-1774636548950.json b/data/system/agents/master/memory/reflections/reflect-1774636548950.json new file mode 100644 index 0000000..f1f8d40 --- /dev/null +++ b/data/system/agents/master/memory/reflections/reflect-1774636548950.json @@ -0,0 +1,15 @@ +{ + "timestamp": "2026-03-27T18:35:48.949Z", + "convId": "conv-mn98qtq8", + "task": "所以weibo-scraper 最后训练完后,跑出来的最终结果是在 output 目录下?我怎么没看", + "status": "completed", + "toolCount": 12, + "durationSec": 61, + "patterns": [ + "成功创建/修改了 5 个文件: data/system/templates/weibo-scraper/workspace/weibo_scraper_fde_report.md, data/system/templates/weibo-scraper/.claude/skills/main_skill/SKILL.md, data/system/templates/weibo-scraper/weibo_scraper.py", + "完成了 12 步工具调用的复杂任务 (61秒)", + "涉及技能训练/评分/进化流程" + ], + "lessons": [], + "plan": null +} \ No newline at end of file diff --git a/data/system/agents/master/memory/reflections/reflect-1774665780685.json b/data/system/agents/master/memory/reflections/reflect-1774665780685.json new file mode 100644 index 0000000..6f66850 --- /dev/null +++ b/data/system/agents/master/memory/reflections/reflect-1774665780685.json @@ -0,0 +1,14 @@ +{ + "timestamp": "2026-03-28T02:43:00.684Z", + "convId": "conv-mn98ulpm", + "task": "帮我创建一个新的公司,叫做 test ,然后雇佣一下weibo-scraper,我需要给他运行一个任", + "status": "completed", + "toolCount": 11, + "durationSec": 29117, + "patterns": [ + "成功创建/修改了 2 个文件: data/companies/test/agents/weibo-scraper/workspace/reports/`, workspace/reports/`", + "完成了 11 步工具调用的复杂任务 (29117秒)" + ], + "lessons": [], + "plan": null +} \ No newline at end of file diff --git a/data/system/agents/master/memory/short-term/session-1774636548947.md b/data/system/agents/master/memory/short-term/session-1774636548947.md new file mode 100644 index 0000000..a6b00b7 --- /dev/null +++ b/data/system/agents/master/memory/short-term/session-1774636548947.md @@ -0,0 +1,41 @@ +# Session 摘要 + +- **时间**: 2026-03-27 18:35:48 +- **对话ID**: conv-mn98qtq8 +- **状态**: completed +- **工具调用**: 12 次 +- **耗时**: 1分钟 + +## 任务 +所以weibo-scraper 最后训练完后,跑出来的最终结果是在 output 目录下?我怎么没看 + +## 结果 +...orkspace/weibo_scraper_fde_report.md +``` +这是 FDE 训练的完整报告,记录了 4 次迭代过程和最终得分 **92.65 / 100**(通过阈值 90)。 + +### 2. 技能定义文件(生产版本) +``` +data/system/templates/weibo-scraper/.claude/skills/main_skill/SKILL.md +``` +这是训练达标后的技能代码,版本已更新为 **v1.6.0**。这个文件就是给 Agent 用的"技能包"。 + +### 3. 爬虫脚本 +``` +data/system/templates/weibo-scraper/weibo_scraper.py +``` +这是实际的爬虫代码文件。 + +--- + +**总结**: FDE 训练不像传统机器学习那样有单独的 output 目录。训练"产出"就是更新了: +- 技能代码(SKILL.md) +- 配置文件(config.json 中 status: ready, benchmark_score: 92.65) +- 训练报告(workspace/ 下的报告文件) + +## 涉及文件 +- data/system/templates/weibo-scraper/workspace/weibo_scraper_fde_report.md +- data/system/templates/weibo-scraper/.claude/skills/main_skill/SKILL.md +- data/system/templates/weibo-scraper/weibo_scraper.py +- workspace/) +- workspace/weibo_scraper_fde_report.md diff --git a/data/system/agents/master/memory/short-term/session-1774665780683.md b/data/system/agents/master/memory/short-term/session-1774665780683.md new file mode 100644 index 0000000..65eb852 --- /dev/null +++ b/data/system/agents/master/memory/short-term/session-1774665780683.md @@ -0,0 +1,36 @@ +# Session 摘要 + +- **时间**: 2026-03-28 02:43:00 +- **对话ID**: conv-mn98ulpm +- **状态**: completed +- **工具调用**: 11 次 +- **耗时**: 485分钟 + +## 任务 +帮我创建一个新的公司,叫做 test ,然后雇佣一下weibo-scraper,我需要给他运行一个任 + +## 结果 +我来帮你创建公司并雇佣 weibo-scraper。 + + +✅ **已完成所有操作:** + +| 步骤 | 状态 | +|------|------| +| 1. 创建 test 公司 | ✅ 完成 | +| 2. 雇佣 weibo-scraper | ✅ 完成 | +| 3. 雇佣 CEO (系统未自动创建) | ✅ 完成 | +| 4. 分发任务给 CEO 设置定时任务 | ✅ 完成 (taskId: T-mn9q6djf) | +| 5. 设置每小时定时任务 | ✅ 已创建 Cron 任务 | + +**定时任务详情:** +- 触发时间:每小时整点 (`0 * * * *`) +- 任务内容:执行 weibo-scraper 爬取微博热点,生成报告保存到公司工作区 +- 报告路径:`data/companies/test/agents/weibo-scraper/workspace/reports/` +- 报告格式:`YYYY-MM-DD-HH-report.md` + +CEO 正在异步执行任务设置,每小时会自动运行并生成报告。 + +## 涉及文件 +- data/companies/test/agents/weibo-scraper/workspace/reports/` +- workspace/reports/` diff --git a/data/system/templates/_company_bootstrap/manifest.json b/data/system/templates/_company_bootstrap/manifest.json deleted file mode 100644 index 76bb4cb..0000000 --- a/data/system/templates/_company_bootstrap/manifest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "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接管运营。" -} diff --git a/data/system/templates/_registry.json b/data/system/templates/_registry.json index a267f96..43cff36 100644 --- a/data/system/templates/_registry.json +++ b/data/system/templates/_registry.json @@ -6,7 +6,7 @@ "description": "公司战略规划、团队管理、OKR 制定、任务委派", "benchmarkScore": 97, "trainedAt": "2026-03-20", - "usedCount": 12 + "usedCount": 13 }, { "id": "qa-judge", diff --git a/server/services/company-service.js b/server/services/company-service.js index cd26e86..b263add 100644 --- a/server/services/company-service.js +++ b/server/services/company-service.js @@ -70,85 +70,7 @@ class CompanyService { this._saveCompany(company); - // ── Phase M: 初始化元 Agent (innovator/hunter/digester/evolver) ── - // 从 data/system/agents/ 复制元 Agent 到公司, 注入公司上下文 - const META_AGENTS = ['innovator', 'hunter', 'digester', 'evolver', 'agent-creator']; - for (const metaId of META_AGENTS) { - const srcDir = path.join(GLOBAL_AGENTS_DIR, metaId); - if (!fs.existsSync(srcDir)) { - console.log(`[Company] ⚠️ 系统元 Agent "${metaId}" 不存在,跳过`); - continue; - } - const destDir = path.join(companyDir, 'agents', metaId); - if (fs.existsSync(destDir)) continue; // 已存在则跳过 - - // 复制骨架文件 - this._copyTemplate(srcDir, destDir); - // 额外复制 skills 和 knowledge 目录 - for (const extra of ['skills', 'knowledge']) { - const srcExtra = path.join(srcDir, extra); - if (fs.existsSync(srcExtra)) { - this._copyDirRecursive(srcExtra, path.join(destDir, extra)); - } - } - - // 注入公司上下文到 config.json - const cfgPath = path.join(destDir, 'config.json'); - if (fs.existsSync(cfgPath)) { - const cfg = JSON.parse(fs.readFileSync(cfgPath, 'utf-8')); - cfg.companyId = id; - cfg.status = 'active'; - cfg.parent_id = 'hr'; // 元 Agent 由 HR 监督管理 - cfg.meta = true; // 标记为元 Agent - fs.writeFileSync(cfgPath, JSON.stringify(cfg, null, 2), 'utf-8'); - } - - // 追加公司上下文到 agent.md - const agentMdPath = path.join(destDir, 'agent.md'); - if (fs.existsSync(agentMdPath)) { - const content = fs.readFileSync(agentMdPath, 'utf-8'); - const ctx = [ - '', '---', '', - '## 所属公司上下文', - `- **公司ID**: ${id}`, - `- **公司名称**: ${name}`, - `- **公司使命**: ${description || '待定义'}`, - '', - '> 你是本公司的内部培训部元 Agent。你的工作职责是:', - '> 1. 阅读公司 OKR、SOP、岗位说明等上下文文件', - '> 2. 针对公司业务特点,训练和优化公司内每一个业务 Agent', - '> 3. 接受 HR 的监督和管理', - '', - `工作目录: data/companies/${id}/agents/`, - `公司目标: data/companies/${id}/goals/`, - `公司SOP: data/companies/${id}/pipelines/`, - ].join('\n'); - fs.writeFileSync(agentMdPath, content + ctx, 'utf-8'); - } - // 更新 user.md: 汇报给 HR - const userPath = path.join(destDir, 'user.md'); - const userContent = [ - '# 与上级的关系', - '', - '## 所属公司', - `- **公司**: ${name} (${id})`, - '', - '## 汇报对象', - '- **直接汇报**: HR (人力资源总监)', - '- **角色**: 公司内部培训部元 Agent', - '- **职责**: 对公司业务 Agent 进行调研、知识消化、技能训练和进化', - '', - '## 沟通规则', - '1. 训练完成后向 HR 汇报结果和 Benchmark 分数', - '2. 需要调研新领域时提前告知 HR', - '3. 保持对公司目标(OKR)和流程(SOP)的了解', - ].join('\n'); - fs.writeFileSync(userPath, userContent, 'utf-8'); - - company.agents.push(metaId); - console.log(`[Company] 🧬 ${id} 初始化元 Agent: ${metaId} (由 HR 管理)`); - } // 重新保存(agents 列表已更新) this._saveCompany(company); -- libgit2 0.21.4