Skip to content

最小工作核心证伪实验报告

日期:2026-08-21
实验分支:spike/minimal-work-core

执行结论

A. Core survived(在本轮边界内存活)。

最小核心能给 Work 提供稳定 identity 与 closure boundary,并把 Harness、Workflow、Human、CI 以及最后添加的 Security Scanner 作为 Execution extension 接入。Workflow 策略被放弃并改用 Harness 时,Work ID、objective、生命周期和既有 evidence refs 不变。

这不证明它可以直接成为正式架构:它只表明该最小边界尚未被这五类离线 provider 反证。

实验实现与隔离

全部新实现位于 spikes/minimal_work_core/;它只使用 Python 标准库,默认数据放在该目录 .spike-data/,不接正式数据库。未修改 src/agent_box、CLI、GUI、Profile、Harness Adapter、现有 schema 或现有测试。

Harness 为安全离线的 direct local-subprocess adapter:实际执行子进程并输出 evidence;它不是对真实 Codex CLI 的宣称性集成。工作流、Human 与 CI 都有独立的 provider-native JSON state,Core ledger 从不存内部状态。

测试过的 Provider

Provider验证的边界
local-harness直接 Harness execution 与 evidence ref
simple-workflowstep/branch/retry 保持 opaque
humanwaiting、approve/reject、submit-result 无需专用 Work schema
local-ciqueued/running/success 投影与 log ref
fake-security-scanner最终扩展,只加 provider class 与注册

测试的 Work 场景

  1. 明确小修改:Harness 完成并关闭 Work,验证简单路径没有被 workflow 强迫包装。
  2. 未知原因调查:Workflow abandoned → Harness evidence → Human conclusion;Work identity 不变。
  3. 线上事故:Human acknowledge → Harness diagnosis → CI → Human approval;这是没有 workflow 的路径。
  4. 协调发布:Harness、Workflow、CI、Human;并行/等待由 scenario host 编排,没有进入 Core。

自动化测试还覆盖 create/attach/event/complete/reopen、四 provider 注册、替换、mixed execution、workflow opacity、以及最终 Security Scanner extension。

Provider / Workflow 泄漏

Core 中没有 if provider == ...。Registry 只按名称查找扩展;Core 对 provider 唯一的知识是它可 startobserve

Workflow 的 stepbranchretry_count 只存在 provider-state/simple-workflow.json。Core 仅保留 WorkflowRef 和 status projection;未出现 checkpoint、DAG、scheduler 或 retry API。

Ref 与 Event 发现

Ref 维持为四个主字段:type/provider/native_id/uri,metadata 限制为 str -> str 的小型描述。现有例子为 SessionRef、ArtifactRef、WorkspaceRef、WorkflowRef、CIJobRef;没有将 transcript 或 job payload 塞进 metadata。

Event ledger 只记录 cross-system facts:创建、开始、观察、附件、完成、放弃、关闭和 reopen。它没有复制 native logs。Event 更像 runtime infrastructure,但 WorkCompleted/WorkReopened 同时是有价值的 domain facts;本实验无法可靠地把两者彻底拆开。

Human Execution 发现

Human 能自然成为 Execution。waiting_for_human 是普通投影;批准判断和文本结果仍在 Human provider authority。结论是 Human 不需要特殊 Work schema,但真实产品仍需另行评估 identity、授权、审计和通知。

Core Mutation Count

**0 次 schema / source mutation。**详见 spikes/minimal_work_core/CORE_MUTATION.md:4 次场景攻击都被拒绝并移至 provider 或 host。

最严重的三个问题

  1. projection 词汇尚未被严谨定义:不同 provider 的 failedwaiting_for_humanqueued 的终态与可恢复性仍需正式语义。
  2. Ref metadata 虽有约束,长期仍可能被滥用;正式实现须定义 Ref type registry、尺寸限制与 artifact authority。
  3. 本实验没有真实 Codex、GitHub Actions 或跨进程并发写入;provider-native persistence、幂等、权限和事件顺序只得到单进程离线验证。

建议

建议进入一个受限的正式设计阶段,而非直接重构:先以真实 Harness adapter 做一项兼容性 spike,再定义 projection vocabulary 和 Ref governance;仍应禁止把 orchestrator、workflow state 和 provider-native state 加入 Work Core。

不应合并此 spike 到主实现,也不应将其作为 Agent-Box 2.0 的直接代码基础。