-
org-coder 等 9 个角色(含 _base 骨架模板)的四段式阶段流转靠调 bin/lemon.js task transition,打到 agent-chat.js 的 /task/transition—— 这个端点靠自己的 sessions Map 找会话,work graph 节点场景下找不到, 阶段流转静默跳过,中间产物不进任何跨节点共享的轨迹。 调研确认范围后选了最保守的实现:不改 bin/lemon.js 的 CLI 签名、不碰 agent-chat.js(当天正被另一个并行会话实时编辑,风险太高)。关键发现 是 --artifact 参数本来就是 .../runs/{rootRunId}/nodes/{nodeRunId}/... 形状的路径,两个 ID 已经现成编码在里面,不需要给子进程塞新环境变量, 不需要改一个字的 agent.md 提示词。 bin/lemon.js 在原有调用之外 best-effort 追加一次 POST /api/graph-runs/phase-note,新端点从 artifact 路径解出两个 ID, 校验 run 真实存在后调 emitEvent() 追加 timeline 记录,只追加不碰 graph_run_nodes/graph_runs 任何一行——不影响 needs/produces 契约。 P0 拦截/OKR 更新两段旧逻辑维持原样,新端点是独立的第二条路径,不是 迁移。 新增测试 4 例,全量测试 1503/1506,零回归(剩余失败全部来自另一个 并行会话进行中、还未提交的工作)。42 号文档 Phase 1-4 全部完工。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BwG4b7Nq1NLR9eeE3M9Us9
-
- system/agents/deep-research/: 新 Agent 本体(agent.md/prompt.md/soul.md/config.json) 及 train/hunt 调研结论(knowhow_v1 + sources_v1.json,含 sha256 信源母本) - h3-video-prompt: train/digest、train/hunt、train/evolve 的 v2/v3/v4 全套训练产物, SKILL 升级 v0.5.0(习语甲/乙分轨 + prompt/block/clarify 三轨计分) - org-innovator: docs/ SKILL 模板库与 soul.md 更新(外网访问 SOP R1-R5、lark-cli 能力) - master / innovator-digest / innovator-evolver / innovator-hunt: 本体文件更新 - packages/agent-core/base/common/tools-base.md: 收录 lark-cli 入口与「搜得到≠读得到」边界 - bin/lark-cli: 飞书 CLI 入口脚本(wrapper) - .gitignore: 排除 .pnpm-store/、.env.bak*(防密钥入库)、train/hunt/sources_raw/ 与 train/evolve/_v*_artifacts/(中间产物沿用既有裁决,只留磁盘) Co-Authored-By: Claude <noreply@anthropic.com>
-
commit b7b5096 给 agent-chat.js 挂 requireAuthOrInternal 后,只顾了「同进程内 require 拿 INTERNAL_TOKEN」这一种自环调用(company.js/task-settle.js),漏了 bin/lemon.js——它跑在 agent 的 claude CLI 子进程里,不共享内存,没法拿到这个 token,导致所有 agent 的 task report/dispatch 全部 401,没法自行汇报完成状态。 修法:jwt-auth.js 生成 INTERNAL_TOKEN 时顺带写进 process.env.LEMON_INTERNAL_TOKEN ——spawn 默认把 process.env 整份传给子进程,免费传给所有后代进程(claude CLI → Bash 子进程 → bin/lemon.js)。bin/lemon.js 读到就带上 x-internal-token header。 顺带把硬编码的 API_BASE 端口改成可用 LEMON_API_BASE 覆盖,方便测试。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
-
system/templates/ 已在 28 号文档的合并里并入 system/agents/,「模板」作为独立 数据概念已经消失;确认后手工 CRUD 页面(创建/改名/删除骨架、触发生成与训练、 传 skill 文件、provision)也已经没人用,一并下线: - 前端:删 AppNav「Templates」菜单项、/templates 路由、TemplateAgents.vue - 后端:company.js 删掉只服务于该页面的写接口(PATCH/DELETE/POST /templates、 generate/train/skills-upload/provision/files 系列),保留 GET /templates (CompanyDashboard 招聘弹窗和 CLI `company templates` 命令仍依赖它列出可招角色) - CLI:bin/lemon.js 删 `template create`/`template train`(调用的是被删接口) - 修正两处过时注释(company-service.js / graph-service.js):不再声称 buildAgentDefinitionBrief 有两个调用方,/hire 是唯一派单点 - work-layer-body-paths.test.js 同步更新断言(2 处调用方 → 1 处) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
-
代码层: - server/services/goals.js → okr-service.js;GoalsService → OkrService · this.goalsDir → okrDir,目录 goals/ → okr/ · ID 前缀 G- → O-;落盘文件 goal.json → objective.json · updateGoal → updateObjective,_nextGoalId/_saveGoal 等同步改名 · parseNodeId 层级名 ['Goal','Objective','KeyResult','SubTask'] → ['Objective','KeyResult','SubTask','SubTask'](OKR 无 Goal 这一层) - server/routes/goals.js → okr.js;:goalId → :objectiveId - 7 处调用点同步:index.js / agent-server.js / agent-chat.js / company.js / company-heartbeat-service.js / prompt-builder.js / test-company-e2e.js - 前端 OkrDashboard.vue / CompanyDashboard.vue 切到 /api/okr(前后端命名终于一致) - bin/lemon.js 新增 okr create/add-node/list/status 向后兼容(不破坏任何现有调用方): - /api/goals/* 与 /api/company/:cid/goals/* 全部保留为别名,与新路径同时挂载 - task dispatch/report 同时接受 objectiveId(新) 与 goalId(旧),写入时两字段都留 - bin/lemon.js 保留 goal * 命令别名 迁移脚本 scripts/migrate-goals-to-okr.js(npm run okr:migrate): - 目录 data/{,companies/*/}goals/ → okr/;条目 G-xxx → O-xxx - 改写 objective.json 的 id / nodes 的 key / children 数组、_index.json、 progress.json 的 goalId、history.log 文本、system/tasklog/*.json 的 goalId+nodeId - --dry-run 预演;幂等;迁移前自动备份为 *.bak-goals(已加入 .gitignore) - 处理一个反直觉边界:OkrService 构造函数会自动 mkdir 目标目录,"okr/ 已存在" 不等于"已迁移过"——只要服务被 require 过一次就留下空壳。用 isEmptyOkrDir() 区分空壳与真实数据,空壳移除后继续迁移。这个 bug 是在 fixture 上验证时发现的。 - 同样在 fixture 上发现并修掉:nodeId 的值漏改写、tasklog 迁移不幂等 验证:新增 server/tests/unit/okr-service.test.js(7 例,覆盖新命名工作正常 + 迁移纯函数的 ID 改写);全量 npm run test:unit 652 例全绿。 范围说明:NAMING §五 的 benchmark 三分(skill-/agent-/goal-)本轮未动代码—— 该节自身的建议就是存量保持现状、只对新增代码强制前缀,因为 benchmark_runs 等表 服务于线上 Arena 排行榜,改表名/路由是另一次独立迁移。 §二-四 的新 agent id 尚不存在实体,待 P2/P3 实现时按规范创建。 已知遗留(非本次引入):server/scripts/test-company-e2e.js 早已失效——它按 data/{id}/ 找公司,而 company-service 用的是 data/companies/{id}/,在 HEAD 版本 同样全部断言失败。本次只同步了其中的 OKR 命名,未修这个路径问题。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
-
Templates with new train data (hunt/digest/evolve): - agent-creator, auto-publisher, clickbait-copywriter - community-manager, competitor-spy, data-harvester - digester, weibo-scraper, interactive-video-selector - lemonv_drama, reddit-scraper, story-architect Updated configs & plans for all active templates. Updated agent states (master, innovator, hunter, evolver, digester). Added CLAUDE_EFFORT=low to .env (global disable thinking). Updated bin/lemon.js CLI tool. .gitignore: exclude evolve intermediate artifacts (FRAUDULENT, batch/eval scripts, iteration logs/scores, scorer versions, SKILL versions, .env)
-
- Add TaskTimeline.vue: two-pane dashboard with task list + message timeline - Add task-service.js: aggregate cross-agent conversations into task tree - 4-strategy parent-child inference (explicit meta, time-overlap, conv→tpl, master→T) - Read messages.log for full tool call details (not just history.json) - Add tasks.js API routes: GET /api/tasks, GET /api/tasks/:taskId/timeline - Mount /api/tasks in agent-server.js - Add 'Task Logs' nav entry in AppNav.vue after Templates - Support taskId in URL (/tasks/:taskId?) for sharing/bookmarking - Add --parent flag to CLI task dispatch for explicit parentTaskId - Auto-detect parentTaskId in task/dispatch from sender's active task - Add --instructions flag to template train CLI command - Update master tools.md with new parameters
-
- Add task transition CLI and API for Context Flush & Hot Swap - Enforce strict bash-only tool policy for Base Agents - Inject into system prompt for self-retrying loop - Implement Goal node updates on transitions - Add P0 Execute pre-approval block (Human-in-the-loop) - Track token metrics to billing.log
-
Phase A - Company Bootstrap 自举: - 新增 _company_bootstrap/manifest.json 模板 - company create 时自动部署 CEO/CTO/COO/HR 四名核心骨干 - 自动启动公司 + 2s后向CEO dispatch战略启动令 - 支持 skipBootstrap 参数跳过自举 Phase B - HR 大一统 (招留管退): - 新增 hr 模板(agent_creator 的进化体) - HR 具备完整生命周期管理:招聘/技能装配/监控/辞退 - HR 具备模板发现能力(lemon company templates 查看可用模板如 scrapling_crawler) - CTO 模板重写:不再亲自 hire,全部通过 task dispatch 向 HR 下发招聘需求单 - CEO 模板更新:确认 Bootstrap 已部署骨干,委派时强调 CTO→HR 招聘链 - 新增 POST /company/:id/fire API(停心跳→归档→更新名单) - 新增 CLI: lemon company fire / lemon company templates
-
Phase 4 人机流转机制打通: 1. 新增 API 与 CLI: - POST /api/agent/human-request 支持 Agent 求助 - `node bin/lemon.js human request` CLI 暴露给 Agent 使用 - 请求将自动追加至根目录 .env 文件并带有时间戳注释 - 同时将记录追加至 Master 的 workspace/human_todo.md 待办清单 - 触发实时通知事件给 Master Agent 2. `agent_creator` 人事专员模板创建: - 专门负责使用 `skill_search` (或自述构建) 并在新员工的 .claude/skills/ 下写武器代码 - 强制为技能预留 .env 读取代码,并当 key 不存在时使用 human request - 强制在装配初版后将该技能推入 innovator-001 队列进行强化学习训练 3. 架构优化: - 修改 CTO Agent 模板指令:在 hire 底层员工的同时,强制 hire 一名 agent_creator - CTO 不再亲自绑定技能,全部通过 `task dispatch` 给 agent_creator 完成装配
-
解决 CTO 无法自动把 CEO 设计图转化为系统流水线的问题: - bin/lemon.js: 新增 pipeline create / pipeline list 命令行接口 - templates/cto/agent.md: 重写 4 步强制工作流, 明确用 json 注册流水线及循环 hire 工具 - templates/cto/tools.md: 新增 pipeline 注册命令与环境初始化命令 - templates/cto/soul.md & identity.md: 泛化架构师角色设定, 移除写死的旧业务名
-
Phase 2 改进: 1. 工作日历系统 (ScheduleService): - 新增 schedule-service.js: 公司级日程管理 - 支持按小时调度、按周几过滤、时区感知 - 心跳触发时自动检查到期 slots 并触发 Agent - 执行去重(同日同 slot 不重复触发) - CRUD API: GET/POST/PUT/DELETE /api/company/:id/schedule/slots - CLI: schedule add / schedule list 2. 告警通道 (Alert Channel): - Pipeline 步骤超时自动告警 Master Agent - 心跳异常自动告警 Master Agent - _sendAlertToMaster() 统一告警接口 3. CEO → Pipeline 自动生成: - CEO 模板从 3 步升级为 5 步工作流 - 新增 Step 2: Pipeline JSON 设计(含 loop/cron/steps 结构) - 新增 Step 4: OKR 创建 - Pipeline 设计输出为 CTO 搭建流水线的蓝图 4. Master 晨会日报: - 每天 08:00 自动生成全公司运营日报 - 包含公司状态、Pipeline 运行、OKR 进度、Agent 活跃度 - 自动推送给 Master Agent - 防重复机制(每天只生成一次) 5. Pipeline 驳回信息注入: - 驳回步骤被心跳重新触发时,__rejection 信息注入 prompt - 让 Agent 知道被驳回的原因和重做次数 - 替换原有 curl 汇报指令为 task report CLI
-
Phase 1 核心改进: 1. Pipeline↔Task 系统打通: - task/report 回调自动推进 Pipeline 步骤 - findActiveRunStep() 按 agentId 定位活跃步骤 - 扫描所有公司的 Pipeline Runs 实现跨公司桥接 2. Pipeline 循环执行: - 新增 pipeline.loop 配置项 - Run 完成后自动启动下一轮 (最大 maxLoops=365) - loopCount 计数器追踪循环轮次 3. COO 质量门控: - 新增 rejectStep() 驳回方法,含驳回历史记录 - POST /api/agent/task/reject API 端点 - POST /api/company/:id/pipelines/runs/:runId/reject 路由 - node bin/lemon.js task reject CLI 命令 - 驳回后自动唤醒 Agent 重做,注入改进意见 4. COO 模板全面强化: - agent.md: 4维度评分体系、质量审核流程图 - soul.md: 性格、价值观、决策原则 - tools.md: 新增 task reject 核心工具 - heartbeat.md: 结构化巡检清单 + 升级规则
-
- company.js: call heartbeatService._setupAgentHeartbeat after hire - CEO agent.md: enforce 3-step continuous execution in same turn - All CXO heartbeat intervals: 5 minutes - task dispatch message: self-drive directive, use lemon CLI - bin/lemon.js: add 'task report' command
-
…ter Agent cognitive auto-recovery loop - Refactored CompanyDashboard into read-only Observer UI - Enforced strict companyId:roleId namespacing across Node APIs and AgentManager - Added dynamic <env_status> injection to PromptBuilder for robust context - Introduced bin/lemon.js CLI for structured LLM tool execution - Implemented in-stream error interceptors for implicit silent retry loop