• 46 号文档 Phase 4:decomposed_work 子任务的父子生命周期管理。
    
    - 父任务被 subtask-planning 成功拆分后让位给子任务(新状态 decomposed),
      取消自己排队中的完整 org graph run
    - 父任务预算按拆出的步数均分给每条子任务
    - 父子终态汇总(settleParentTaskIfAllChildrenDone),子任务全部完成后
      自动结算父任务并联动 goal 收敛
    - 同父子任务独立并发坑位(上限 3),判据钉在 updateRunStatus 的唯一准入
      事务里,不占用公司级 max_parallel_tasks 槽位
    - 前端(Phase 5):decomposed 状态样式 + 子任务进度展示,复用已有的
      parentTaskId 通用树形逻辑,未改后端接口
    
    真实回归当场撞出一个几乎必现的真缺陷:markTaskDecomposed 原本只认父任务
    还是 queued,但 task-scheduler 抢坑是毫秒级、subtask-planning 是数十秒的
    真实 LLM 调用,等它拆完时父任务几乎必然已经 running,接管必然失败,而
    stopRun 依然会把真实在跑的 org graph 取消掉。已修复(接管条件放宽 +
    调整先接管再取消的顺序)并用真实公司数据验证;同父并发坑位也用真实数据
    确认生效(两条子任务真实同时 running 20+ 分钟)。
    
    回归过程中牵出一个独立缺陷:org-validator 对同一种 benchmark 契约判断
    不稳定(5 次里 1 次误把源码路径当 --target 判 target_not_json,反手把
    责任推给 subtask-planning)。根因是 decomposed_work 轻量图当时只有一条
    前进边、没有失败边,validator 判 fail 后无路可退。已补 validate --fail-->
    impl 退回边(复用引擎已验证过的 backward_count 双层硬顶 + remediation_note
    反思闭环),新增 3 条单测覆盖边形状、真实退回重试、硬顶熔断三个场景。
    
    全量单测 1229/1231 通过(2 个失败改动前即存在、与本次无关)。
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01H9Mq8rViHp8xuj6zTy76hh
    yibo authored
     
    Browse Dir »
  • 由 dream 机制自动提炼跨公司经验并刷新 ceo 的 agent.md/soul.md 经验区块,
    本次内容涵盖:状态字段自相矛盾判读、预算耗尽假阳性识别、批量阻塞告警回溯
    依赖链、已知问题重复告警的处置、协作方专属工具越权代劳的边界、父任务终态
    汇总缺陷的识别模式。
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01H9Mq8rViHp8xuj6zTy76hh
    yibo authored
     
    Browse Dir »


  • 真实回归暴露"认领后没有触发源"的真问题,讨论后发现"认领"(pull,CAS
    抢占)要解决的"多方竞争同一条任务"场景根本不存在——只有 CEO 一个人拍板
    要不要派、派给谁。CEO 心跳统一发现+直接派发(push)成本更低,还能顺带
    控制派发节奏,不需要认领。
    
    删除:claimSubtask/unclaimSubtask(work-graph-db.js)、POST /claim、
    POST /unclaim(company.js)、CLAIMABLE_WORK_ROLES 白名单、
    claimable/claimed 两个 status 值、claimed_at 列。
    
    改名:subtask_kind 的 'claimable_work' → 'decomposed_work'
    (materializeClaimableSubtasks → materializeDecomposedSubtasks),
    "认领"这个词不再准确,物化出的行现在就是普通 draft task。
    
    新增:
    - triggerSubtaskPlanning 加递归防护(task.parent_task_id 非空直接跳过)
      ——设计 v2 时发现的真实漏洞:CEO 对子任务调 /enqueue 会默认
      withSubtaskPlanning=true,不挡会对已经是"第几步"粒度的子任务再拆一层。
    - createDecomposedWorkGraph:现造一张两节点轻量 work graph
      (impl=org-coder、validate=org-validator,agent_call 不是 subgraph),
      跳过公司完整 org graph 的 brd/prd/sdd 规划仪式——subtask-planning 已经
      把"怎么做"拆到这个粒度了,再走一遍纯属重复劳动。含一条没有真实验证过
      的假设(org-coder/org-validator 裸调用会不会读不到预期上下文),如实
      写在代码注释和文档里。
    - enqueueTaskRun 按 subtask_kind 选图:decomposed_work 走轻量图,
      普通 task 行为不变(回归测试覆盖)。
    - ceo/heartbeat.md、tools.md 补了巡检 decomposed_work 草稿 + 判断节奏
      + 调用现成 /enqueue 的指令。
    
    测试:删除 task-pool-claim.test.js(随 v1 代码作废),新增
    task-decomposition-dispatch.test.js(12 条),更新
    task-decomposition-validator-gate.test.js 措辞。全量单测 1191 条,
    1189 passed(唯二失败与本次改动无关),零残留 CLI 子进程。
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01H85SS5hVC4u1PbVhjmrhH8
    yibo authored
     
    Browse Dir »


  • 真实事故:h3video 公司 h3-story-draft 节点卡在 status=running,背后 CLI 会话已死但服务器
    进程没重启,开机一次性孤儿扫描/goal-task 巡检/wallclock 看门狗均看不到,ceo 被转发问题后
    绕过引擎自己拉会话,陷入死循环。
    
    - sweepStaleRunningAgentCalls + startStaleAgentCallWatchdog:运行时长超阈值(默认 25 分钟)
      的 agent_call 节点判 infra_flake 原地重跑,5 分钟一次巡检,挂进 server/index.js
    - ceo/tools.md 补 force-fail 端点(已有,未改代码)的使用文档 + 禁止自拉会话的规则
    - ceo/heartbeat.md 同步更新"不用管的"一节
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01WjFL1nfPDqZnJeuskYHwvs
    yibo authored
     
    Browse Dir »

  • 核心修复:indexNodeOutputs() 此前只扫节点私有目录,不扫项目根——但引擎自己的写入边界
    明确允许交付物写项目根,导致内容型交付物节点(产出写进项目根时)永远进不了 R-19 产物
    索引,下游 needs 声明永远查不到实例。新增 readDeclaredProduces():agent 可在
    contract.json 里显式声明 produces:{kind: 绝对路径},校验(绝对路径/落在项目根或私有目录内/
    文件真实存在)通过才登记,不满足就整个 kind 判「没产出」,不静默放过。全局提示词
    (describeArtifactContract)同步更新,所有 org/work 节点自动学到这个新字段。
    
    新增 org-hunt / org-digest / org-evolve 三个 graph 原生 agent(方法论抄
    innovator-hunt/digest/evolver,协议原生兼容 graph 引擎),配套新增 work-graph-templates
    的 deliverable.json(内容型交付物骨架,不引入验证 agent)。11 轮真实试跑挖出并修复 5 个
    独立缺陷(详见 41 号文档问题 7):建公司自动规划与手写图的竞态、work-graph 模板库缺内容型
    交付物骨架、验收节点任务描述范围溢出、两个规划 agent(orggraph-planning/workgraph-planning)
    的路径口径写错、以及上述 R-19 索引缺口。最终产出与原生 FDE 对比:内容骨架可迁移、质量不
    打折,但可靠性差距悬殊。
    
    补充说明:system/agents/{ceo,innovator-evolver,master,org-innovator}/{agent,soul}.md 是
    本会话开始前已存在的 dream 自编辑改动,随本次提交一并收进去,不属于本次改动范围。
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse Dir »
  • 按 39 号设计文档落地 ceo 常驻监督:company.js 的 goals/tasks 端点
    放行内部令牌自环调用,POST /tasks 支持 draft 模式(agent 自主提任务
    不再立刻烧预算),ceo 补雇进公司创建流程;task-settle 新增事件驱动
    唤醒 + 30 分钟兜底轮询;graph-engine 的回退熔断收敛时顺手回写一条
    draft task,形成"卡住 → 自动/ceo 判断 → 重新规划"闭环。
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01BwG4b7Nq1NLR9eeE3M9Us9
    yibo authored
     
    Browse Dir »

  • 设计见 docs/done/system-design/28-agent-registry-unification.md。
    
    改造前 Agent 本体散在三处(system/agents/ 11 个、system/templates/ 50 个、
    data/companies/{id}/agents/ 17 个),同一个 AgentScaffold 被三个 baseDir 实例化。
    后果是同一角色在 N 家公司下有 N 份互不相干的副本,模板更新不会同步;
    org-coder / org-planner 这类走 hireFromBaseMetaAgent 造出来的本体
    legacy_path 指回自己公司目录,永远无法被第二家公司复用。
    
    本次:
    - G1 单一注册表:system/templates/ 整体并入 system/agents/,base → _base。
      7 个同名 id 逐个裁决,被丢弃的一份归档到 docs/_archive/ 而非删除。
      source_kind(template/global_agent/company_hired) → origin(builtin/created)。
    - G2 运行态下沉:CLI 的 cwd 从本体根改为 system/agents/{aid}/{cid}/{taskId}/。
      memory / conversations 落公司态 {aid}/{cid}/,按公司隔离不串。
      sessionPool 的 key 含 (companyId, taskId),两家公司调同一 agent 不复用会话。
    - G2b 产物不下沉:交付物仍落 data/companies/{cid}/,system/agents/ 只留运行痕迹。
      写入边界按链路分叉——graph 节点走节点私有目录(被 indexNodeOutputs 索引),
      chat 走公司 workspace,同一提示词里不再出现两条互斥指令。
    - G3 公司只存引用:data/companies/{id}/agents/ 删除,新增 company_agents 关联表。
      不复用 org_graph_nodes——后者是执行流图,work 层本体被雇时不写它,天生覆盖不全。
    - G4 缺则创建:本体缺失时从 _base 复制骨架进 system/agents/{id}/,
      agent-creator 填 agent.md/soul.md 后才从 draft 转 active(哨兵判据,
      骨架未填时哨兵仍在,不许被 hire)。产物即刻是全系统可复用的本体。
    
    新增 server/services/agent-locator.js 收编原先散在 6 处的寻址逻辑。
    
    边界守卫(graph-engine)的豁免从「本体根上五个文件名」放宽为整棵 system/agents/:
    新本体的骨架本来就要进 git,gitignore 挡不住 ?? system/agents/{newId}/,
    旧判据会把一个真正成功的招聘节点判成 boundary_escape fail。
    
    存量迁移见 scripts/migrate-agent-registry.js(幂等,备份到 data/_migration-backup-*)。
    
    真 Claude CLI E2E 已验证:新建公司 → orggraph-planning 自动规划 →
    自动招聘 org-planner/org-coder/org-validator 三节点流水线;
    data/companies/{cid}/agents/ 不存在,company_agents 4 行,
    system_agents 56→56(零新建私有本体,纯复用),git status 零增量。
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    yibo authored
     
    Browse Dir »