Skip to content

Work Runtime Dependency Landscape

研究问题:如果 Agent-Box 的 Work Core 只负责组合、解析、关联,Work 全生命周期中的哪些能力应直接消费成熟系统,而不是自行实现?
研究日期:2026-08-20(Asia/Shanghai)
证据口径:优先采用官方协议、产品文档、源码与当前仓库研究;“有该功能”不等于“适合作为该状态的权威来源”。
核心问题What must remain when every replaceable subsystem is removed?


Executive Summary

结论

如果 Agent-Box 只做 Work-level composition,现有生态可以承担绝大部分执行机制:agent session 与流式事件由 ACP/native adapter 承担;durable workflow、checkpoint、retry、queue 和 recovery 由 Temporal、LangGraph、Prefect 等承担;workspace 由 Git worktree、Dev Container、Codespaces、Docker Sandbox、E2B 或 Modal 承担;artifact blob、日志、trace、issue、secret、credential、UI 和通知也都有成熟所有者。

按本报告拆出的能力项计算,超过四分之三可完全 Delegate/Reference;按工程复杂度估计,80% 以上的 runtime infrastructure 不应由 Agent-Box 重建。剩余部分很小,但不是零:没有任何外部 provider 天然知道“Agent-Box 的逻辑角色绑定到了哪个 Profile、为什么选择了这个 harness、多个 native session 是否属于同一 Work、替换 provider 后哪些事实仍有效、能力缺口是否允许降级、下一位角色应收到什么”。

因此最薄的 Work Core 应是一个 composition and correlation kernel,而不是 workflow platform:

  1. Work identity mapping:优先复用外部 Task/Workflow/Host identity;只有确有 multi-session、multi-attempt 或跨资源域关联时才创建独立 Work ID。
  2. Role → Profile binding 与 effective resolution:保存逻辑绑定和一次运行实际解析到的 provider/harness/profile/version 快照。
  3. Cross-provider correlation:关联 workflow run、native session、workspace、sandbox、interaction、trace 和 artifact refs。
  4. Capability closure:拥有 Required/Effective/Unsupported/Degraded 的语义判断;Adapter 报告 Available,backend 负责 enforcement。
  5. Continuation decision 与 durable handoff semantics:决定复用 native session、启动新 attempt、回到哪个 logical role;handoff 不默认复制完整 conversation。
  6. Minimal decision ledger:只记录 Core 自己作出的绑定、降级、生命周期和 continuation 决策,以及外部事实的引用;不复制 provider event history。
  7. Effective Work State projection:从 workflow、task、artifact、Git、approval、native session 和 Core ledger 组合出可消费视图;该视图通常是派生物,不是第二套权威状态数据库。

最关键的判断

  • 不要自建通用 workflow runtime。 固定 Plan → Execute → Review 且只要求进程内执行时,一个显式小状态机已足够;一旦要求跨进程等待、durable retry、child workflow、recovery 或长期 HITL,就应接 LangGraph/Temporal/Prefect,而不是继续扩张小状态机。
  • Workspace 是 Project 的临时物化实例/外部资源,不是 Work Core 内的文件系统。 Core 保存 WorkspaceRef、base/head revision、provider 与 cleanup disposition;provider 承担 create/isolate/snapshot/diff/merge/cleanup/resume。
  • Work Core 不应有通用 Artifact Store,但应有 artifact/provenance index。 blob 留在 Git、CI、对象存储、workflow artifact system;Core 保留类型、producer、hash、URI 和因果关系。
  • State 不是一个东西。 Workflow State、Native Session State、Workspace/Git State、Artifact State、Task State 和 Work Composition State 必须分开。新的 Planner 应接收由它们解析出的 Effective Work State,而不是被迫恢复另一个 harness 的 conversation。
  • Work Core 需要 correlation ownership,不需要 universal event ownership。 OpenTelemetry 负责 trace correlation,provider 保留原生事件;Core 只拥有自己的 domain decision events 和引用。
  • Capability Contract 是少数必须留在 Core 的语义。 ACP/MCP capability negotiation 只描述协议端点支持什么;Work Core 还必须判断 Profile 所需的 headless、resume、workspace-write、background、MCP、interaction、sandbox 等能力能否由多个 backend 联合满足。

Ownership 标记

本报告统一使用以下标记:

标记含义
A. Core OwnsWork Core 是该语义的权威来源
B. Core ReferencesCore 只保存稳定引用、摘要、digest 或解析快照
C. Core DelegatesCore 发出 intent/lifecycle 请求,机制由 provider 实现
D. Adapter负责探测、翻译、验证、错误映射与事件桥接
E. External System成熟系统拥有真实状态、存储或 enforcement
F. Out of Product不应成为 Agent-Box 产品能力;最多提供文档集成点

Current Known Components

Agent-Box 已有方向构成了合理前提:

text
Role
  → Profile
      → Harness Runtime
          → Native Session
  • Profile 已承载 harness、model/provider、instructions、skills、MCP、permissions/config 与 runtime preferences。
  • Harness Adapter 面向 Claude Code、Codex、OpenCode、Hermes;目标是 Role → Profile → Harness Runtime,而不是把 Role 绑定到品牌名。
  • ACP Adapter 优先复用 ACP、codex-acp、claude-agent-acp、OpenCode native ACP、Hermes ACP,不重写 agent wire protocol。ACP v1 已覆盖 initialization/capabilities、session new/load、prompt/update、cancel、permission request、filesystem、terminal 与 elicitation;这些是 session transport semantics,不是 Work semantics。ACP protocol overviewACP initialization and capabilities
  • Environment 已明确采用 System/Project/Profile/Session 多层选择、绑定和投影,不自建 secret manager、knowledge base、SSH 或 dev environment。
  • Project 是稳定 domain object:repo/project identity、root、project environment/resources/instructions/configuration。
  • 仓库既有研究已把第二阶段收窄到 Profile ACP Runtime,并否定 generic workflow、generic resource/IAM、universal memory 与 session control plane。

本报告不重新设计这些组件,而是审计 Work 在它们之上的最小依赖和所有权。


Work Lifecycle Decomposition

一个完整 Work 的生命周期可以拆成 14 个阶段。每个阶段都不要求由同一系统拥有:

阶段必要能力合理权威来源Work Core 的最小责任
1. Intakeobjective、source task、acceptance criteria、attachmentsGitHub/Linear/Jira/Kandev/user input绑定或快照 objective;避免复制 issue tracker
2. InstantiateWork/Run identity、definition version、idempotencyexternal task/workflow host;必要时 Core决定 identity reuse/mapping,生成 correlation key
3. ResolveProject、roles、Profiles、workflow、environment、policyAgent-Box Project/Profile + providers生成 effective resolution snapshot
4. Validatecapability、version、permission/sandbox coverageadapters + providers计算 capability closure;fail/allow/degrade
5. Allocatequeue、worker、workspace、sandbox、credentialsworkflow/scheduler/workspace/sandbox/secret providers保存 refs,发出 intent
6. Startharness process、native session、trace、interactionACP/native harness + observability/UI关联 native IDs,不接管 native state
7. Runprompt、stream、tool/file/terminal、heartbeatsharness/ACP/workflow runtime记录关键 correlation,不复制 raw stream
8. Interruptuser input、permission request、approval、pauseACP/AG-UI/UI + workflow HITL关联 request/decision,区分 approval 与 enforcement
9. Recovercheckpoint、retry、replay、worker failureworkflow runtime/sandbox/session providercontinuation policy;决定 resume 或 new attempt
10. Handoffrole transition、context package、pending actionsworkflow/task ledger + Core handoff semantics生成/验证 provider-neutral handoff ref
11. Reviewdiff、tests、review findings、accept/rejectGit/CI/Kandev/IDE/reviewer harness关联 evidence 和 disposition
12. Finishcomplete/fail/cancel/abandon、external task updateworkflow/task provider形成 Work outcome summary 和映射状态
13. Publishcommit/PR/build/report/notificationGit forge/CI/artifact/interaction providers保存 output refs,不承担发布平台
14. Cleanup/retainterminate、worktree cleanup、snapshot retention、GCresource providers决定 disposition、追踪 finalizer 结果

这里最容易混淆的是:pause 可能是 workflow pause、native session waiting、sandbox stop 或 interaction disconnect;resume 也可能恢复完全不同的对象。Core 必须知道它正在请求谁恢复什么,但不应自己实现每一种恢复机制。


Workflow Runtime

能力版图

系统Definition/RunState/CheckpointPause/HITLRetry/RecoveryChild/ParallelEvent History与外部 coding harness 的关系
TemporalWorkflow Definition、Workflow ID、Run IDdurable replay/event historySignal/Update;Workflow Pause 仍为 pre-release最强;activity retry、timeout、recoverychild workflow、task queues权威 event history通过 activity/child workflow 调 ACP;最可靠也最重
LangGraphgraph + thread_id每 step checkpoint、state history、fork/time travelinterrupt() 持久等待从成功 checkpoint 恢复;节点需幂等subgraph、parallel superstepstate snapshots适合 agent-centric、本地/服务化 workflow adapter
Prefect 3flow/task runrich run states、result/cachePaused/Suspended/Resumingretry、crash state、workerstask DAG、subflowsstate/event backend强 infrastructure/work-pool/queue;可包 CLI/ACP task
Dagsterasset/job runrun storage、asset materialization非 agent HITL 优先retries/re-executionasset/job graphevent log、lineage更适合 build/data asset,不是首选 conversational runtime
OpenAI Agents SDKRunner run/trace/sessionRunState 可序列化;sessionstool approval interruptdurability 依赖 Temporal/DBOS/Restate/Daprhandoff、agent-as-tooltrace/run items主要编排 SDK 内 agent;外部 harness 仍需 adapter
AutoGenteam/runagent/team save/load statepause/resume hooks应用负责更强 durabilityteams/GraphFlowmessages/team stateframework 内 agent 强,跨 harness 需 wrapper
CrewAICrew/Flowpersisted flow stateHITL/Flow resumeflow persistence/retrysequential/hierarchical/routersframework run data适合其 own agent model,不是 coding session host
Mastraworkflow/runcomplete snapshotssuspend/resumesnapshot + remaining retriesbranch/parallelstep output/snapshotTS 应用友好;外部 harness 仍是 step adapter
Agnoworkflow session/runpersisted workflow stateworkflow-level HITLsession resumesteps/router/loopstored runs/results注意 tool-level HITL 不自动传播到 workflow
PydanticAIagent/graph run由 durable backend 提供supported through integration官方接 Temporal、DBOS、Prefect、Restatecode-defined compositionbackend-owned很好的反例:durability 是可插拔 capability,不应重写

Temporal 的 Workflow Execution 由 Namespace、Workflow ID、Run ID 唯一识别,event history 驱动 replay/recovery;它已经拥有 durable execution、retry、cancellation、child workflow、task queue 等核心机制。Temporal Workflow ExecutionTemporal Task Queues

LangGraph 的 checkpointer 会在每个 superstep 保存 checkpoint,支持 HITL、state history、fault tolerance、replay/fork;恢复时节点可能重新执行,因此 side effect 必须幂等。LangGraph persistenceLangGraph interrupts

Prefect 已有 Scheduled、AwaitingRetry、Paused、Suspended、Resuming、Cancelled、Crashed 等 run state,work pools/queues 提供 infrastructure provisioning、priority 和 concurrency。Prefect statesPrefect work pools

PydanticAI 官方同时接入 Temporal、DBOS、Prefect、Restate,说明 agent framework 与 durability engine 可以清晰分离;OpenAI Agents SDK 也把长时 durable execution交给 Temporal、Restate、DBOS、Dapr。PydanticAI durable executionOpenAI Agents SDK durable integrations

是否应该自建 workflow runtime?

不应该。 Agent-Box 最多需要一个 WorkflowProvider 边界和一个极小 reference controller,不需要自己的 durable scheduler、event-sourced replay、worker queue 或 checkpoint database。

固定 Plan → Execute → Review 是否需要现有 runtime?

用以下门槛判断,而不是按节点数量判断:

条件推荐
单进程、短时、失败后允许整段重跑、无跨天等待20–100 行显式状态机足够;状态可作为 Work Core 的 optional local provider
需要 crash 后从 role boundary 恢复,但没有复杂分支LangGraph checkpointer 或轻量 durable engine;不要扩张自研状态机
跨天 HITL、可靠 retry、child workflow、worker failover、严格 event historyTemporal
重点是 worker infrastructure、schedule、priority、queue、部署形态Prefect
输出主要是可物化 build/data assets 与 lineageDagster
已经选定特定 agent framework使用该框架 workflow,但仍把外部 harness state 当引用

小状态机的正确定位是 a provider implementation for a narrow workflow,不是未来通用 Workflow Core 的种子。它一旦出现 durable timer、retry backoff、lease、worker heartbeat、replay、child state 或 schema migration,应立即停止扩张并切换成熟 runtime。

Recommendation

  • B/C/D/E:Core 保存 WorkflowDefinitionRefWorkflowRunRef 和状态摘要;Adapter 映射 start/signal/query/cancel;runtime 拥有执行状态。
  • 不强制所有 Work 都有 workflow provider。一次 interactive native session 可以没有独立 workflow run。
  • Workflow state 不能被复制为 Work state;Core 只做 projection。

Workspace / Worktree Runtime

Workspace 是什么

Workspace 是 Project 在某次 Work/attempt 中的临时可执行物化实例。 它不是 Project 本身,也不等于 sandbox:

text
ProjectRef (stable)
   └── WorkspaceRef (temporary materialization)
          ├── source/base revision
          ├── working tree / mounted volume
          ├── one or more repository roots
          └── optional SandboxRef / EnvironmentRef

一个 Work 可以有多个 workspace(多 repo、并行 role、不同 trust boundary);多个 attempts 也可以在明确串行和兼容的情况下复用同一 workspace。Workflow activity 可以申请 workspace,但 workspace 的 create/snapshot/cleanup 仍由 workspace provider 拥有。

成熟实现

Provider/mechanismCreate/isolateSnapshot/resumeDiff/mergeCleanup适用判断
Git worktree + branch同一 repo 的独立 working treeGit refs/commit;dirty state需另存原生 diff/cherry-pick/merge/rebaseworktree remove/prune本地代码 Work 默认首选
Dev Container声明开发容器与 workspace mount/lifecycleimage/volume 依赖实现仍由 Gitcontainer lifecycleenvironment definition,不是强安全或 task ledger
Codespacesremote VM + devcontainerstop/start 保留 /workspaces;rebuild 保留 workspaceGit/PRretention/deleteGitHub 托管远程开发
Docker containerimage/container/volumeimage/volume/checkpoint依实现Git/volume exportcontainer/volume cleanup普遍机制;需另做安全边界和凭证策略
Docker Sandboxes每 agent microVM;direct mount 或 private clonesandbox 持久直到删除host Git diff 或 clone fetchremove sandboxcoding agent 专用本地隔离 provider
E2Bremote sandboxpause 保存 filesystem + memory,resume;kill 不可恢复API/export/Gitkill/TTL/pause retention远程临时 execution,provider-owned lifecycle
Modal Sandboxremote container + resources/volumesfilesystem/directory/memory snapshots,有 TTL/限制Git/exportterminate/TTL弹性远程执行、大规模分支实验
Firecracker/gVisor低层 isolation primitivesnapshot 能力依平台无 Work-level Git 语义运维方负责不是 Work Core 应直接消费的高层 contract
KandevTask/Session 绑定 local/worktree/Docker/SSH/Spritestask/session/worktree statereview/changes/PRexecutor lifecycle已是完整 workspace/task provider,优先集成而非复制
Codegtask/worktree/branch workspacesession/task persistencediff/review/mergeproduct-owned可作为完整上层替代方案,不只是低层 provider
VS Code workspace / remote host单/多 folder 的 editor context,Agent Host 位于 workspace 旁session/remote reconnect 由 hostchangeset/Git 仍是外部语义host/remote extension是 interaction/session context,不是通用 create/snapshot/merge provider

Git 官方已经提供 worktree add/list/lock/remove/prune 等 lifecycle;它解决 repo working tree isolation,但不负责 process/network/security 和 dirty-state durable snapshot。git-worktree

Dev Container 是“为 container 增加开发内容与元数据”的开放规范;它定义 workspace mount 和 lifecycle,但不能自动等价为 hostile-code sandbox。Development Containers Specificationdevcontainer reference

Codespaces stop/start 会保留保存的数据,rebuild 保留 /workspaces、清除其外大部分修改,删除则清除 workspace;因此 commit/push 仍是长期成果的可靠边界。Codespaces lifecycle

E2B pause/resume 保存 filesystem 与 memory;Modal 提供 filesystem/directory/memory snapshot,且各有 TTL 和运行限制。这些都说明 snapshot 是 provider-specific capability,不能被一个布尔字段假装统一。E2B persistenceModal snapshots

Core 应保存什么

只保存 WorkspaceRef 及跨 provider 必需事实:provider、project/repository refs、base revision、current/head revision、branch/worktree identifier、mount/root mapping、snapshot ref、dirty/conflict summary、retention/cleanup disposition、creator attempt。不要把 checkout、copy、mount、snapshot、merge 实现进 Core。

Recommendation

  • B/C/D/E:Workspace 是 external provider resource;Core 引用和关联。
  • 本地 MVP 默认 adapter 到 Git worktree;不是自行发明 workspace database。
  • snapshotcommitartifact 三者必须分开:snapshot 是执行环境恢复点,commit 是 Git content/history,artifact 是可寻址输出。

Artifact / Provenance

三类不同对象

对象目的典型内容权威来源
Artifact可消费的结果plan、patch、commit、test report、screenshot、build、generated fileGit/CI/object store/Prefect/Kandev docs
Event/Trace解释执行过程和因果tool call、span、retry、provider eventnative runtime/OTel/workflow history
Conversation某个 agent session 的交互上下文messages、tool results、native compactionharness/session provider

把三者合并会产生两个问题:用无限 transcript 充当 audit ledger,以及把大文件塞入 workflow history。Temporal event history 是恢复 workflow 的权威日志,不是通用 blob store;OpenTelemetry 是 telemetry correlation,不是 artifact store。

已有系统的覆盖

  • Git/forge:patch、commit、branch、PR 和 diff provenance 的天然权威来源。
  • GitHub Actions artifacts:保存 run 后的 logs、test results、screenshots、binaries,并支持 artifact attestations 关联 workflow、repository、commit SHA 和触发事件。GitHub workflow artifacts
  • Prefect artifacts:面向人的 Markdown、table、image、link、progress;适合作为 run annotation,不是任意大文件仓库。Prefect artifacts
  • MLflow-style store:明确分离 backend metadata 与 artifact blob store,支持 file/S3/Azure/GCS/NFS 等 URI;该模式值得消费,不值得复制。MLflow artifact stores
  • Kandev:task documents/revision history、plans、reviews、worktrees、changes 与 walkthrough,已经接近 coding Work artifact ledger。Kandev feature guide
  • Dagster assets:强调持久 asset 的 materialization、lineage 和 event log,适合 build/data output;但 plan、conversation、patch 等仍需自定义 artifact 类型/存储,不应为此把 Work 映射成 data asset。
  • Codeg WorkTask/task events:如果采用 Codeg 作为上层 workspace,它自己的 task/event/diff ledger 应保持权威;Agent-Box 只关联根 Task/Session,不复制事件树。
  • Temporal/LangGraph:保存恢复所需的 event/checkpoint state;只应在状态中保存 artifact ref/digest。

是否需要自己的 Artifact Store?

不需要通用 blob store;需要一个很小的 Artifact/Provenance Index。 最小记录可以只是:

text
ArtifactRef
  type
  uri/path/provider_id
  digest/size/media_type
  work_id_or_alias
  producer_role + attempt/session/workflow-node refs
  created_at
  source/base revision refs
  mutable/version/retention hints

这不是完整 schema,而是所有 provider 都无法替 Core 自动补齐的跨系统关系。若外部 task/workflow system 已原生提供足够 ledger,Core 可以只保存其根引用。

Work history 与 conversation history

text
Conversation history (native)
  └── messages / tool calls / provider compaction

Work history (cross-provider)
  ├── objective + definition/source refs
  ├── binding/continuation/approval decisions
  ├── workflow/session/workspace/sandbox refs
  ├── artifact/evidence refs
  └── outcome + cleanup disposition

Work history 不应复制 conversation;它可以保存 native transcript ref、handoff summary artifact 和少数 causal milestones。全文转录只有在明确审计/合规需求下才进入专门存储,并受 retention/redaction policy 管理。

Recommendation

  • A:Core 拥有 artifact 与 Work/role/attempt 的关系。
  • B/E:内容、版本和下载由 Git/CI/object store/provider 拥有。
  • D:Adapter 从 native outputs 提取 ref/hash/producer metadata。

Task / Issue Systems

四种 identity 的关系

Identity回答的问题生命周期是否总要存在
Task/Issue“用户/团队要完成什么?”可跨多次实施、重开、拆分、换负责人否;ad-hoc prompt 可没有
Work Definition“这类工作应如何绑定角色和依赖?”可版本化、复用否;ad-hoc Work 可没有
Work Instance“这次跨角色、跨 attempt 的协调范围是什么?”从 instantiate 到 terminal/abandoned只有确实存在上层关联时才需要
Workflow Run“某个 runtime 的一次 durable execution 是什么?”runtime-specific run/chain只有使用 workflow provider 时需要
Native Session“某个 harness 的 conversation/thread 是什么?”harness-specific每个 agent attempt 通常有

GitHub Issues 已拥有 objective、discussion、sub-issues、dependencies 和 project planning;Linear/Jira 已拥有 issue identifier、workflow status、parent/subtask 与 transitions。Agent-Box 不应复制 issue tracker。GitHub IssuesLinear issue status

GitLab Issues 与 GitHub Issues 属于同一所有权类别:如果 source objective 已在 forge 中,Work 只保存 namespaced TaskRef、instantiate snapshot 和同步策略;不因 provider 不同而再抽象一个完整 Issue domain。

Temporal 的 Workflow ID 是可自定义的 application-level identifier,并且一个 execution chain 中多个 Run 共享 Workflow ID;它可以承载 business ID,但这不等于任何 Work 都必须有 Temporal。Temporal glossary

Identity reuse 规则

  1. 外部 Task 的生命周期和 Work 完全一致,且能关联多个 sessions/artifacts/attempts:直接把 Task ID 作为 canonical Work key,Agent-Box 只保存 namespaced ref。
  2. Workflow runtime 是真正的 lifecycle authority,一个 workflow execution chain 对应一个 Work:可将 business Work key 用作 Workflow ID,避免再加 UUID;Run ID 仍是 execution attempt。
  3. IDE/host 已拥有跨 harness session,且目标不需要更高 task/artifact 生命周期:复用 host session ID。
  4. 一个 issue 会触发多个独立实现尝试/并行方案/重新执行:IssueRef 是 source objective,Work Instance 仍需独立 key。
  5. Work 需要关联多个 workflow runs 或没有任何外部 owner:才创建 Agent-Box Work ID。

独立 Work ID 的进入门槛应是:至少关联两个 execution attempts、两个 provider domains,或驱动 resume/cleanup/audit 中至少一种真实行为。否则它只是第五层重复 identity。

Kandev / Codeg

Kandev 的 Task + TaskSession/Run/worktree/doc/review 已经可以充当完整 Work owner;其当前产品还直接支持 GitHub、GitLab、Jira、Linear 等集成和 task-scoped MCP。若采用 Kandev,Agent-Box 不应再造平行 Work DB,而应把 Kandev Task 当 external canonical owner。Kandev docs

Codeg 以 multi-agent workspace/Task 聚合多种 CLI session 并支持跨类型 delegation;它更适合被视为上层替代产品或 host,而不是低层 library。Codeg repository

Recommendation

  • B/D/E 为默认:Work → TaskRef
  • A 仅在上层业务关联确实不存在或不能表达 multi-attempt 时启用。
  • 状态同步必须声明 source of truth;不要双向同步两个完整 workflow state machine。

Sandbox / Execution

Core intent 与 backend mechanism

Work Core 可以声明 requirement,但不能写 backend 命令:

text
Intent / requirement                  Backend mechanism
──────────────────────────────────    ─────────────────────────────
filesystem: workspace_write       →   bwrap bind / VM clone / mount
network: restricted(domains...)   →   proxy / netns / provider policy
process: no_host_process_access   →   namespace / container / microVM
resources: cpu/memory/time        →   cgroup / scheduler / cloud quota
persistence: resumable            →   volume / sandbox pause / snapshot
location: local|remote / region    →   provider placement
credentials: brokered/ref-only     →   proxy injection / Vault lease

Core 不应该出现 bwrap --bind、iptables、Firecracker socket、Docker CLI flags。Adapter 才把 intent 编译为 mechanism,并返回 coverage/evidence。

Backend landscape

Backend层次强项重要限制结论
bubblewrapLinux OS primitive本地低开销 filesystem/process namespace非跨平台;network/credential需组合保留现有 adapter,不上升为 Core
Anthropic sandbox-runtimelocal policy runtimeLinux bwrap/macOS Seatbelt + proxy network filterresearch preview;policy semantics仍 backend-specific可直接消费/参考,避免自行扩张 bwrap policy engine
Docker containerOCI runtime普及、image/dev tooling与 host 共 kernel;mount/daemon/credential配置决定安全provider adapter
Docker Sandboxescoding-agent microVM product每 agent microVM、workspace/credential/network isolation、clone mode新产品、平台支持和资源开销需验证强候选 local provider
E2Bremote sandbox servicepause/resume filesystem+memory、API lifecyclecloud/price/retention/trustremote provider
Modal Sandboxremote compute/sandboxelastic resource、volume、network controls、snapshotscontinuous lifetime/snapshot constraintsremote provider
FirecrackerVMM primitivemicroVM、jailer、snapshot需要构建网络/rootfs/control plane不应由 Agent-Box 直接产品化
gVisoruserspace-kernel isolationcontainer isolation strengthening仍需 orchestrator/runtimebackend implementation detail
devcontainer/Codespacesdev environmentreproducible toolchain、remote workspace lifecycle不自动等于 untrusted-agent sandboxEnvironment/Workspace provider,不是 Permission enforcement
remote executor/SSHtransport/execution使用现有 machinecredential、trust、cleanup 属于远端系统Agent-Box 只引用;不自建 SSH

Anthropic Sandbox Runtime 明确以 bubblewrap/Seatbelt 和 proxy 实现 filesystem/network restriction;Docker Sandboxes 则以独立 microVM、workspace mount/clone 与 credential proxy 建立更强边界。Anthropic sandbox-runtimeDocker Sandboxes isolation

Firecracker 的 jailer/snapshot 是低层构件,不包含 workspace、Git、credential、artifact、task 或 agent lifecycle;直接采用它意味着 Agent-Box 在重建 sandbox platform。Firecracker jailerFirecracker snapshot support

Sandbox Provider contract 应覆盖的语义

只需定义 provider-neutral 问题,不需完整 schema:

  • placement:local/remote、OS/arch/region;
  • isolation:filesystem roots、host/process visibility、privilege;
  • network:none/restricted/unrestricted、inbound/outbound;
  • workspace mount/clone mode 与 persistence;
  • env/secret injection mode;
  • CPU/memory/disk/time/process limits;
  • create/start/exec/stop/snapshot/resume/destroy;
  • logs/exit/health refs;
  • cleanup guarantee、TTL、orphan detection;
  • capability/evidence/version report。

Recommendation

  • A:Core 只拥有 runtime requirements 和是否接受 coverage 的判断。
  • C/D/E:provider/adapter 拥有 materialization、process lifecycle、enforcement 和 cleanup。
  • Sandbox capability 不等于 permission:sandbox 是可验证的 enforcement surface,permission 是允许/禁止/需批准的意图与决策。

Observability / Events

不设计 universal event schema

ACP、Claude/Codex/OpenCode、LangGraph、Temporal、Kandev、Codeg 都有不同事件,语义粒度也不同。把所有消息、token、tool call、workflow event、Git change 和 approval 压成一个“统一 event”会制造最低共同分母,并迫使 Agent-Box 维护高速变化的 schema。

更合理的三层模型:

text
Provider-native events/history     authoritative for provider semantics
        │ export/link

OpenTelemetry traces/logs/metrics  correlation + transport + backend choice
        │ refs/links

Core decision ledger               only Work-owned decisions and mappings

OpenTelemetry 已定义 trace/span context、links、logs、metrics、resources、baggage 和 propagation;LogRecord 可带 TraceId/SpanId 实现 logs/traces correlation。OpenTelemetry overviewOpenTelemetry logs

Work Core 需要拥有的内容

  • WorkKey/external aliases;
  • role/profile/effective provider;
  • NativeSessionIDWorkflowRunRefWorkspaceRefSandboxRefInteractionSessionRef
  • TraceID/span links/native event cursor or URI;
  • Core 自己作出的 lifecycle、binding、degradation、approval-correlation、continuation decisions;
  • artifact producer causal link。

Core 不拥有 provider token stream、完整 terminal output、Temporal event history、LangGraph checkpoint history 或 native transcript。需要 timeline 时,对这些 sources 建查询/投影,不把它们全部复制进 Core DB。

Kandev task events、Codeg task event log、Codex app-server events、Claude/OpenCode streams 与 ACP session/update 都应留在各自 adapter/native source。Core 可以为同一 attempt 分配 TraceID/links,但不能因为 UI 想展示一条时间线,就把不同 provider 的事件强制改写为看似等价的 tool/message 状态。

Audit 与 provenance

Trace 说明“调用链发生了什么”,不自动证明权限确实被 enforcement;event history 说明 runtime 状态如何演进,也不自动证明 artifact 内容。审计至少要链接:intent/decision → effective capability plan → execution attempt → native evidence → artifact digest。Core 负责链接,不负责成为日志平台。

Recommendation

  • A:correlation ownership、Core decision events。
  • B/D/E:provider event refs、OTel export、log/trace backend。
  • 只在 UI 需要稳定 lifecycle timeline 时定义少量 Work-domain milestones;不要把它称为 universal event schema。

Interaction / Approval

Interaction Surface 不拥有 Work

用户可以只与 Planner 交互:

text
User ↔ Planner
          ├── Executor
          └── Reviewer

这是一种 routing policy,不意味着 Planner native session 或 UI thread 拥有 Work。Planner 可被替换,Slack thread 可断开,VS Code 可重启;Work identity 和 durable artifacts 仍应有效。

Provider landscape

Surface/protocol覆盖不覆盖角色
ACP clientprompt stream、tool updates、permission request、cancel、elicitation、session loadWork/task/workflow authorityHarness interaction adapter
AG-UIagent↔frontend streaming、state snapshot/delta、attachments、interrupt、steering、custom eventscoding workspace ownershipWeb/app interaction protocol
VS Code Agent Host/AHPhost-owned session、多 client、remote、ordered actions、cross-harness handoff通用 Work Definition/issue/artifact authority若采用,它可以成为 session host/provider
TUI/Web/IDErender/input/approval/attachment/resume controlsdurable execution本身InteractionProvider
Slack/Discord/botthread、message、buttons、notification、attachmentsagent/workflow stateconnector;保存 channel/thread refs

AG-UI 明确定位为 agent 与 user-facing application 间的双向 event protocol;其 shared state 是 UI/runtime 同步模型,不应被误认为全部 Work state。AG-UI overview

VS Code Agent Host 是值得特别注意的例外:Host 明确是 session source of truth,client 通过 AHP 订阅 snapshot + ordered actions,且能在 harness 之间 handoff。若 Agent-Box 运行在这个 host 下,就应消费其 session authority,而不是再建一套。VS Code Agent HostVS Code sessions and handoff

Approval 分层

text
Approval request transport  ACP/AG-UI/native event
Approval presentation       TUI/IDE/Web/Slack
Decision authority          user/policy engine/organization rule
Workflow waiting            LangGraph/Temporal/Prefect/etc.
Enforcement                 harness/sandbox/tool gateway/backend
Correlation/audit           Work Core refs

用户点击“Allow”不等于 sandbox 已正确 enforcement;ACP permission response 也不等于跨 harness permission policy。Core 可保存 decision ref 和 scope,但 backend 才执行。

Recommendation

  • Work 只维护 InteractionSessionRef[]、当前 routing target、pending approval refs 和 resume locator。
  • UI 断连不得改变 Work ownership;stream reconnect 由 interaction/runtime provider 处理。
  • Planner-only UI 是可配置 interaction policy,不进入 universal Work schema。
  • JetBrains、Coze、Discord 与未来 IDE/bot surfaces 都遵守同一边界:只要它们负责 input/stream/approval/notification,就属于 InteractionProvider;除非像 VS Code Agent Host 一样明确成为 session source of truth,否则不能因拥有 thread/chat ID 而拥有 Work。

Additional Missing Dependencies

以下能力常被隐藏在“Work runtime”中,但应单独定责:

能力分类成熟系统/协议判断
Scheduler / timerC/ETemporal Schedules、Prefect deployments、cron、Kubernetes Jobs不进 Core;Core 只保存 TriggerRef
Queue / worker routingC/ETemporal Task Queue、Prefect work pools/queues、Kubernetes/Nomad不自建 broker
Lock / concurrency / leaseC/Eworkflow runtime、DB advisory lock、Redis/etcd、Kubernetes Leaseprovider-owned;Core 只表达 no-overlap/limit intent
Resource allocationC/EKubernetes requests/limits/affinity、Nomad、Modal/E2BCore 声明 requirements,scheduler placement/enforcement
State storeB/Eworkflow DB/checkpointer、task system、native session store只为 Core-owned ledger 建最小存储,不做 database framework
CacheB/E/FGit/object cache、CI cache、provider cache、content-addressed store非 Work semantic;只引用命中/输出证据
Secret managementB/E/FVault、1Password、OS keychain、cloud secret manager永不保存 secret value
Credential brokerB/C/EVault dynamic secrets、OIDC/workload identity、credential proxy保存 binding/lease ref,不做代理平台
Identity / authenticationB/EOS user、OIDC/OAuth、GitHub/Slack identitiesCore 保存 PrincipalRef;不自建 IdP
Policy engineB/C/EOPA、native org policies、sandbox policyCore 拥有 Work requirement,不发明通用 policy language
Event bus / message transportC/E/FTemporal messages、ACP/A2A/MCP/AG-UI、NATS/Kafka固定流程用 direct calls;不要为 agents 自建 bus
Service discoveryD/EACP registry、MCP discover/capabilities、Kubernetes servicesAdapter probe;不做全机资源发现平台
Version/schema migrationA/DCore manifest version + adapter compatibility ranges这是少数不可外包的跨 provider语义
Config precedence/provenanceA/DAgent-Box resolver + native configsCore 保存 effective snapshot/source chain,Adapter materialize
Dependency graphB/Eworkflow DAG、issue blockers、Kandev task dependenciesCore 引用;不维护第二张 DAG
Retry/idempotencyA/C/ETemporal/LangGraph/Prefect、provider idempotency keysruntime 执行;Core 为跨 provider side effect 生成稳定 operation key
CheckpointB/C/Eworkflow checkpointer、sandbox snapshot、native session resume三类 checkpoint 分开,不设万能 checkpoint blob
NotificationC/ESlack/Discord/email/desktop/Prefect automationsInteraction provider
Evaluation/testingB/C/ECI、test runner、eval platforms、review harnessCore 关联 TestReport/EvalRef,不建测试平台
Usage/cost/budgetB/Emodel provider、harness telemetry、cloud billingCore 可汇总引用/上限 intent,不做 billing ledger
Retention/GC/finalizersA/C/Eprovider TTL、object lifecycle、workflow cleanupCore 决定 desired disposition,provider 执行并报告
Encryption/signing/attestationB/E/FKMS、Sigstore、GitHub attestationsCore 保存 digest/attestation ref,不实现 PKI
Remote execution transportC/D/Esandbox providers、Kubernetes/Nomad、SSH executor不自建 SSH/remote protocol

Kubernetes 的 requests/limits 与 node affinity 展示了正确分层:workload 声明资源需求,scheduler 选择节点,kubelet/container runtime enforcement;Work Core 应借鉴这个 ownership pattern,而不是嵌入 backend flags。Kubernetes resource managementassigning Pods to Nodes

OPA 的价值是把 policy evaluation 从应用中解耦;Vault 已拥有 secret lease、renew/revoke 与 dynamic credentials。Agent-Box 只应消费 decision/credential refs。OPA integrationVault leases


State Ownership

State 必须拆层

State 类型例子权威 ownerCore 是否复制
Objective/Task Stateissue open/closed、acceptance criteria、priorityGitHub/Linear/Jira/Kandev 或 Work source保存 ref + instantiate-time snapshot;不双向复制全量
Workflow Statecurrent node、retry count、pending child、checkpointTemporal/LangGraph/Prefect不复制;query/ref/summary
Native Session Statemessages、tool state、provider compaction、resume tokenClaude/Codex/OpenCode/Hermes/ACP agent只保存 native session ref/capabilities
Workspace/Git Statebase/head SHA、dirty diff、branch、conflictGit/workspace provider保存 revision refs和摘要
Sandbox/Process Staterunning/stopped/snapshot/exit/healthsandbox/execution provider保存 provider ref和summary
Artifact Stateplan version、test report、review、patch digestartifact/Git/CI providerCore 拥有 causal index,不复制 blob
Interaction/Approval Statepending question、approval decision、thread locatorUI/protocol/workflow waitCore 关联 refs和scope
Composition Staterole binding、effective provider、attempt graph、continuation decisionWork Core权威拥有
Effective Work State“已执行第 3 步,review pending,新 Planner 应做什么”多源派生视图可缓存/版本化,但标记 provenance 和 freshness

Planner 替换场景

当 Planner 从 Claude Code 换为 Hermes + DeepSeek Analyst,新的 Planner 不需要读取或伪造 Claude native session。它需要一个 resolved state pack:

text
Effective Work State
├── objective + acceptance criteria + source TaskRef
├── logical phase / workflow cursor ref
├── role/attempt summary(Planner A → Executor → Reviewer → Planner B)
├── completed facts + evidence refs
├── decisions / constraints / open questions
├── pending actions / owner / blocking reason
├── ProjectRef + EnvironmentRef + capability/effective-plan refs
├── WorkspaceRef + base/head/diff/conflict summary
├── ArtifactRefs(plan/patch/tests/review/...)
├── approval/policy outstanding refs
└── native session refs(仅供追溯,不作为必需输入)

其来源解析顺序应遵循权威性,而不是“最新消息优先”:

  1. external task/objective 与 Work instantiate snapshot;
  2. workflow runtime 的 current execution state;
  3. Core composition/decision ledger;
  4. artifact evidence 与 handoff;
  5. Git/workspace actual state;
  6. approval/policy state;
  7. native session summary/transcript ref,作为补充而非主事实。

Core 是否需要拥有 State?

答案是:拥有一小部分不可外包的 Composition State;解析而非拥有完整 Effective Work State。

  • 如果使用 Temporal/LangGraph/Kandev,current step 属于 provider;Core 不另存一份可独立修改的 current step。
  • 如果使用极小本地 Plan→Execute 状态机,Core/local workflow provider 可以暂时拥有 phase;这仍是 provider state,不应扩张为 universal Work State。
  • State Summary 是 materialized view/cache。每一项应带 source/ref、observed_at、freshness 或 digest;冲突时显示冲突,不静默选 winner。
  • 只有 Core 自己做出的事实——role/profile binding、resolution、degradation、attempt correlation、continuation、cleanup disposition——应写入 dedicated Core ledger。

这一区分避免“为了换 Planner 而复制整个世界”,同时保证 provider replacement 后仍有 provider-neutral continuity。


Handoff / Continuation

现有系统给出的教训

  • OpenAI Agents SDK:handoff 默认让新 agent 接管并看到 conversation history,但提供 input_filter、structured input_type 和 history mapper;官方也明确 application state 应放 context,而不是混在 handoff tool payload。OpenAI Agents SDK handoffs
  • VS Code Agent Host:当前 handoff 可携带完整 conversation/context 到另一 harness;这是强 IDE convenience,但并不证明 full transcript 是长期 durable Work contract。
  • LangGraph:跨 node/subgraph continuation 依赖 checkpointed graph state;conversation 只是 state 的一种字段。
  • Temporal:用 durable event history、Signal/Update/Query 和 child workflows推进,不要求 agent 间共享 transcript。Temporal workflow message passing
  • Kandev:Task/worktree/doc/review/session 提供 durable task现场;新的 provider session 可以从 task、document、messages、Git state 重建上下文。当前 Kandev 还提供 task-scoped MCP、targeted messages、subtasks 与 documents。Kandev Automation and MCP
  • AutoGen/CrewAI/Claude Teams/Cline Teams:message/team/task state适合同框架协作,但其 agent object/message schema 不应直接成为跨 harness Work contract。

最小 durable handoff contract

handoff 应是一个版本化、可寻址的 artifact/record,最小包含:

  1. Identity:Work key/aliases、from role/attempt、to role、handoff reason、timestamp/version。
  2. Objective:目标、acceptance criteria 与 source TaskRef;避免重新解释任务。
  3. State summary:已完成、当前 phase、明确未完成;把事实与推测分开。
  4. Decision/constraint log:已经决定什么、为什么、不可违反的限制、尚未解决的问题。
  5. Evidence/artifact refs:plan、patch/commit、tests、review findings、screenshots、logs;不内嵌大内容。
  6. Execution context refs:Project/Environment/Workspace、base/head SHA、dirty/conflict summary、effective capability plan;不含 secret values。
  7. Pending actions:下一步、owner、blocker、需要的 approval/input、completion condition。
  8. Provenance/integrity:producer、source refs/digests、schema version;可选 native session/transcript ref。

最小 contract 不包含:完整 conversation、raw chain of thought、复制的 tool logs、secret、provider-private session blob、可执行 sandbox command。Adapter 可以把 contract 投影为新 harness 的 prompt/resources/MCP context。

Continuation Decision

Handoff 是数据;continuation 是决策。Core 需要高于 provider 做如下选择:

text
same provider + resumable + compatible effective plan
    → resume native session

provider/profile changed OR resume unsupported/unsafe
    → create new native session from durable handoff + effective state

workflow checkpoint invalid/incompatible
    → workflow provider recovery/fork/new run

workspace unavailable/stale
    → restore/re-materialize workspace before starting agent

这个 decision 必须记录理由和实际 refs,否则“resume”会把旧权限、旧 environment 或错误 worktree 静默带入新 attempt。

Recommendation

  • A:Core 拥有 provider-neutral handoff semantics 和 cross-provider continuation decision。
  • B/E:handoff 内容可存入 Kandev document、Git、artifact store 或 workflow state;Core 保存 ref/digest。
  • D:Harness adapter 负责 native transcript summary/import/export 的 best-effort 转换,但不能宣称 lossless portability。

Capability Contract

为什么这是 Core 语义

Profile 可能要求:headless、session resume、workspace write、MCP GitHub、background、image input、approval、remote execution。ACP 的 initialization capability 能告诉 client/agent 是否支持 loadSession、filesystem/terminal、prompt content、MCP transports 等;MCP 也有 capability/discovery。它们只覆盖各自协议的可用 feature,不回答组合后是否满足 Work requirement。

例如:

  • harness 的 workspace_write 支持可能依赖 ACP client 提供 filesystem,也可能直接写 mounted workspace;
  • network restriction 可能由 harness、sandbox proxy 或 remote provider共同实现;
  • permission request 表示能请求用户,不表示 filesystem deny 已 enforcement;
  • headless 可运行不表示能在 interaction disconnect 后 background continue;
  • native session load 存在不表示换了 Profile/permissions/workspace 后仍安全可恢复。

因此 Core 必须像 scheduler 处理 workload requirements 一样,拥有要求和闭包判断;Adapter/Provider拥有能力声明和机制。

候选概念

不设计完整 schema,只保留五个语义集合:

集合来源/含义Owner
RequiredCapabilitiesWork/role/Profile/environment 明确要求;带 required/advisory 与安全影响Core
AvailableCapabilitiesharness、ACP client、sandbox、workspace、interaction、host 在特定版本/环境实测可用Adapter/provider report
EffectiveCapabilities多 provider 组合后实际满足的闭包及 enforcement scopeCore computes
UnsupportedCapabilities没有任何 provider 覆盖或组合仍有 gapCore computes
DegradedCapabilities只能 partial/advisory/best-effort;需要显式接受Core decides/records

每个 Available/Effective 结论至少要能解释:provider/version、exact/partial/unsupported、scope、bypass surfaces、evidence/tested range。未知版本不能默认继承安全能力。

Capability、Permission、Resource 的边界

概念问题示例
Capability“系统能不能做/表达/执行?”session resume、background、image input
Permission intent“这次允许、禁止或需批准什么?”workspace-write allowed、network requires approval
Enforcement“哪个边界真正阻止了违规动作?”bwrap mount、microVM、proxy、MCP gateway
Resource requirement“执行需要多少/哪类资源?”Linux、8 GiB RAM、GPU、region

Negotiation 顺序

text
resolve Work/Role/Profile requirements

probe harness + ACP client + sandbox + workspace + interaction providers

compose Available coverage

compute Effective / Unsupported / Degraded

required security gap? ── yes → fail closed

        no

persist resolution/evidence → launch

ACP v1 的 omitted capability 必须视为 unsupported,这与 fail-closed 思路一致。ACP initialization MCP 当前规范也持续演进;截至 2026-08,2026-07-28 版本已把旧 handshake/session 模型改为 stateless-first discovery,进一步说明 Core 不能把某一版 wire handshake 固化为 Work capability model。MCP 2026-07-28 GA note

IDE/plugin capability systems通常回答“扩展点或命令是否存在”,Kubernetes/Nomad driver constraints回答“某个 worker/node 是否可承载 workload”;它们都支持同一结论:Available 由执行端声明,Required 由 workload声明,最终 placement/launch 只能基于二者闭包。它们不能替代 Permission/Policy enforcement。

Recommendation

这是 Work Core 真正需要拥有的核心语义。 但 vocabulary 应小、可扩展、按 provider namespaced escape hatch;不要企图一次性统一所有 harness feature。相同语义在至少两个 backend 上稳定、可验证后再提升为 portable capability。


Dependency Map

图中节点同时标注 ownership:

核心关系不是“Core 管理所有 provider”,而是:Core 在 launch/continue 前解析引用并验证组合,在运行中维护关联,在结束时记录 disposition。每个 provider 仍是其 native state 的 source of truth。


Ownership Matrix

CapabilityWork CoreAdapterExternal ProviderExisting SystemsRecommendation
ProjectB ProjectRef + revision snapshotresolve roots/configrepo/project ownerGit/GitHub/GitLab/Kandev不复制 Project;复用现有稳定 object
Work identityA/B conditional canonical key/aliasesexternal ID mappingtask/workflow/host may ownKandev Task、Temporal Workflow ID、VS Code session优先 alias;满足门槛才建新 ID
Work DefinitionA/B only if Agent-Box-specific binding templateparse/version adapterworkflow/task template may ownworkflow YAML、issue template可选;不要强制所有 Work 有 definition
WorkflowB/C definition/run refsprovider API bridgeE owns executionTemporal/LangGraph/Prefect不自建 engine
ProfileA existing Agent-Box domainharness projectionharness consumesAgent-Box profiles/Kandev profiles保留;Profile 不等于 Role/Session
RoleA/B logical key + Profile bindingproject to workflow node/promptworkflow may define topologyKandev steps/agent frameworks只保留 provider-neutral role semantics
HarnessB/C selected providerD ACP/native anti-corruptionE agent loopClaude/Codex/OpenCode/Hermes消费现有 adapter
Model/providerB effective selection in Profile snapshotnative config translationE model API/harnessnative providers不在 Work Core 重做 model router
SessionB native ref + attempt relationcreate/load/cancel/eventsE harness/Agent HostACP、AHP、native sessions不复制 native state
StateA composition ledger only; derived viewquery/normalize summariesE per-state ownerworkflow/task/Git/session/artifactresolve Effective Work State,不建万能 store
Workflow stateB ref/summaryquery/signalE runtimeTemporal/LangGraph/Prefectprovider source of truth
Native session stateB ref onlyload/export/summary best effortE harnessACP/native不承诺 lossless portability
EnvironmentB/C refs + effective snapshotprojection/materialization planE external envdevcontainer/Codespaces/K8s选择、绑定、投影
KnowledgeB resource refsMCP/context projectionE KB/docs/searchMCP resources/external KB不自建知识库
MemoryB/F session/work memory refsprovider-specific importE harness/vector/memory systemnative session/LangGraph store不建 Universal Memory
Permission intentA resolved allow/deny/approve requirementscompile/coverage reportpolicy source may contributeProfile/project/org policyCore 语义;与 capability 分开
Permission enforcementB evidence refs onlymap/verifyE harness/sandbox/gatewaybwrap/srt/Docker/MCP gatewayCore 不声称执行
Policy engineB/C input/decision refsOPA/native bridgeE policy systemOPA/org policies不发明 policy language
SandboxB/C requirements + refD provider contractE lifecycle/enforcementbwrap/srt/Docker/E2B/Modalprovider 化
Workspace/worktreeB/C WorkspaceRef + revisions/dispositionD create/diff/snapshot/cleanupE workspace systemGit worktree/Kandev/CodespacesProject 临时实例,不进 Core FS
FilesystemA access intent onlyACP/sandbox mappingE workspace/sandboxACP fs、bwrap mounts不实现 VFS
NetworkA network intent onlyproxy/policy mappingE sandbox/network backendsrt/Docker/Modal/K8s不实现 network stack
Remote executionB/C placement requirement/refexecutor bridgeE remote providerE2B/Modal/K8s/SSH/Codespaces不自建 SSH/control plane
ArtifactA causal index; B content refdiscover/hash/registerE blob/content ownerGit/CI/Prefect/MLflow/Kandev不建 generic artifact store
ProvenanceA cross-provider linksextract producer/evidenceexternal attestationsOTel/GitHub attestationsCore 保留因果关系和 digest
Task/IssueB source/canonical refAPI sync/mappingE issue trackerGitHub/Linear/Jira/Kandev不建 issue tracker
Event/logA Core decisions only; B native refsexporter/event bridgeE provider/log backendACP/Temporal/Kandev/OTel不统一所有 raw events
TraceB TraceID/span linksOTel instrumentationE collector/backendOpenTelemetrycorrelation,不自建 tracing stack
ApprovalA correlate scope/decision refprotocol/UI bridgeuser/policy + enforcerACP/AG-UI/LangGraph/Temporaltransport、decision、wait、enforce 分层
Interaction UIB/C InteractionSessionRef/routingD surface connectorE UI/channelTUI/VS Code/Web/SlackUI 不拥有 Work
SecretB/F secret reference onlyresolve at launchE secret managerVault/1Password/keychain永不存值
CredentialB/C credential binding/lease refbroker/injectionE IdP/Vault/proxyOIDC/Vault/credential proxy不自建 broker,除非薄 adapter
Identity/authB PrincipalRefauth context bridgeE IdP/OS/platformOIDC/OAuth/OS/GitHub不建 IdP
SchedulerB/C TriggerRefschedule APIE schedulerTemporal/Prefect/cron/K8s不建 scheduler
QueueB/C routing requirement/refqueue bridgeE runtimeTemporal Task Queue/Prefect不建 message broker
Lock/concurrencyA desired constraint; B lease refmap provider primitiveE runtime/storeTemporal/Prefect/K8s/DB不实现 distributed lock service
Resource allocationA requirementsscheduler adapterE compute platformK8s/Nomad/Modal/E2B声明 intent,不 placement
RetryA semantic policy only if cross-providererror classificationE workflow/runtimeTemporal/LangGraph/Prefectmechanism外包;side effect幂等
RecoveryA continuation decisionresume/restore adaptersE workflow/session/sandboxTemporal/LangGraph/E2BCore 决定恢复对象,provider执行
CheckpointB typed refsquery/create/restoreE workflow/sandbox/harnessLangGraph/Temporal/E2B/Modal严分三类 checkpoint
CommunicationB/C routing/recipient refsACP/A2A/MCP/direct bridgeE protocol/runtimeACP/A2A/MCP/Temporal messages不建 agent message bus
HandoffA minimal durable semanticsproject to native contextE artifact/task storageKandev docs/LangGraph/OpenAI SDK核心 contract,内容外存
Capability negotiationA required/effective closureD probe/reportE endpoint/backend capabilitiesACP/MCP/K8s analogy必须保留在 Core
Config precedenceA effective resolution/provenancenative projectionnative config sourcesAgent-Box Project/Profile保存 immutable effective snapshot
VersioningA Work contract/decision versionstested ranges/migrationsprovider versionsACP/MCP/runtime releases不可外包的兼容性语义
CacheB hit/result refs at mostprovider bridgeE/F cache ownerGit/CI/content cache不属于 Work Core
Evaluation/testingB/C evidence requirement/refinvoke/parse resultE CI/test/evalGitHub Actions/test harness只关联 report
NotificationC notification intentinteraction connectorE Slack/email/desktopSlack/Discord/PrefectInteractionProvider
Cleanup/retentionA desired disposition/finalizer ledgerprovider cleanup bridgeE resource providerGit/Docker/E2B/object TTLCore追踪,不执行所有机制

Do Not Build

以下结论不是预设,而是由已存在的成熟 ownership 直接推出:

  1. Generic workflow engine:Temporal/LangGraph/Prefect 已覆盖 definition/run、checkpoint、HITL、retry、recovery、queue;自建只会重复最难的 failure semantics。
  2. Durable scheduler/worker queue/message broker:Task Queues、work pools、Kubernetes/Nomad、现有 brokers 已成熟。
  3. Universal agent event schema / full observability stack:ACP/native/runtime events不等价;OTel 已解决 propagation、trace/log/metric correlation。
  4. Generic artifact blob store:Git、CI artifacts、S3-compatible store、MLflow-style systems已解决 storage/retention/download;Core只需 index。
  5. Issue tracker/Kanban:GitHub、Linear、Jira、Kandev 已拥有 task hierarchy、status、discussion、integration。
  6. Secret manager / credential rotation / OAuth or IdP:Vault、1Password、keychain、OIDC/workload identity 已拥有 lifecycle 和 audit。
  7. Generic sandbox/container/microVM runtime:bwrap/srt/Docker Sandboxes/E2B/Modal/Firecracker/gVisor 已覆盖不同层次;Agent-Box 只做 provider adapter。
  8. SSH/remote development platform:Codespaces、devcontainer、Kubernetes、remote sandbox/SSH executor 已存在。
  9. Universal Memory / knowledge base / vector database:Native session、LangGraph store、MCP resources、外部 KB 各自拥有不同语义;统一会混淆 conversation、knowledge 与 Work state。
  10. Chat/interaction protocol:ACP、AG-UI、Slack/Discord APIs、AHP 已覆盖;只做 adapter。
  11. Agent-to-agent message bus:固定角色 flow 用 workflow edges/direct calls;distributed 场景用 Temporal/A2A/MCP/existing bus。
  12. Database framework / event-sourcing platform:Core 可以有小型 repository 存自己的 decision ledger,但不以此扩张成通用 state infrastructure。
  13. Model router/provider gateway:Profile/harness/provider 已有;Work 只保存 effective selection。
  14. Git implementation、merge engine 或 virtual filesystem:消费 Git/worktree/forge。
  15. Policy language:Core 可有少量 typed intent,复杂组织策略交 OPA/native policy system。
  16. CI/test/evaluation platform:Work 关联 test/eval artifacts,不承担 runner ecosystem。
  17. Billing/usage accounting platform:保存 provider usage refs/summary即可。

一个很实用的停止规则:如果某模块的核心名词变成 worker lease、queue partition、blob multipart upload、OAuth refresh token、network namespace、VM snapshot format 或 trace storage,它已经越过 Work composition 边界。


Remaining Core After Outsourcing

假设 Harness、Workflow、Environment、Permission enforcement、Sandbox、Workspace、Artifact storage、Observability、Interaction、Task、Secrets、Knowledge、Scheduler 全部消费现有系统,逐项挑战候选 Core:

候选是否必须保留挑战后的结论
Work Identity / Mapping有条件保留必须有稳定 business key,但不一定新建 Agent-Box UUID;优先 alias external owner
Role Definition收窄保留Core 只需要 stable logical role key 和职责/输入输出引用;复杂组织图可由 workflow/task provider 拥有
Profile Binding保留这是 Agent-Box 已有资产,也是 Role 与具体 harness 解耦的关键
Provider Resolution保留 decisionrouting algorithm 可简单/外部,但“这次实际选了什么、为什么”必须权威记录
Effective Work Plan改名后保留不是 workflow plan;应是 immutable effective resolution snapshot(bindings/capabilities/refs/version)
State Summary不作为权威状态保留是多源 Effective Work State projection/cache;必须带 provenance/freshness
Cross-provider Correlation必须保留这是任何单一 provider 都不能自动拥有的核心价值
Continuation Decision必须保留跨 harness resume/new attempt/fork 选择必须高于 native session存在
Capability Validation必须保留Required→Effective closure 是安全和 portability 的前置条件
Artifact/Session References保留关系,不保留内容形成 causal graph;若 external host 已完整拥有,可降为根 ref
Objectiveref + instantiate snapshot外部 Task 通常权威;snapshot 防止运行中目标静默漂移
Lifecycle State只保留 Core summary/decisionworkflow/native/resource state各自外置;Core terminal disposition与映射需要权威
Handoff Contract必须保留语义内容可外存;contract 是跨 provider continuity 的最小公共面
Cleanup/Retention Decision保留 intent/finalizer ledgerprovider 执行;没有上层 owner 会产生 orphan workspace/sandbox
Core Decision Ledger必须保留但要极小只记录 bind/resolve/degrade/continue/finalize;不是通用 event log

最薄边界

最终可以压缩为:

text
Work Composition Kernel
├── CanonicalKey / ExternalAliases
├── ObjectiveRef + instantiate snapshot digest
├── Role → Profile bindings
├── EffectiveResolutionSnapshot
│   ├── selected providers + versions
│   ├── resource/session/workflow/workspace refs
│   └── capability closure + degradation decisions
├── Attempt / Artifact / Interaction correlation graph
├── Minimal Core Decision Ledger
├── HandoffRef + ContinuationDecision
├── EffectiveWorkState resolver (derived view)
└── Terminal/Cleanup disposition

甚至这个 Kernel 也不是永远需要独立部署:

  • 如果 Kandev Task/Run 已完整承担以上关系,Agent-Box 只需 Profile/Harness adapters 和 Kandev integration。
  • 如果 VS Code Agent Host session 足够覆盖目标,复用 host authority。
  • 如果一个 Temporal Workflow ID 正好等于 Work 的业务生命周期,可把 Kernel metadata 放在 workflow search attributes/memo + external index,而不另建 run engine。
  • 如果只是单 session interactive coding,根本不需要 Work Core。

剩余 Core 的存在条件不是“我们需要一个表”,而是它能否可靠回答:

在不依赖任何单一 harness 的情况下,这个目标当前由谁、以什么有效配置、在哪个 workspace 做到哪里;已有证据是什么;下一步应 resume、handoff、retry 还是结束?

如果实现无法比 external Task + workflow run + native session refs 多回答这个问题,就应继续删减或直接采用现有 host。


Risks

  1. Thin Core 退化为 metadata database:只有外键,没有 capability/continuation 行为时,独立产品价值不足。
  2. Identity explosion:Issue/Work/WorkflowRun/Session/TaskAttempt 重复;必须有 canonical/alias policy。
  3. State split-brain:Core summary 与 workflow/Git/task 不一致;derived view必须有 provenance、freshness和冲突状态。
  4. 虚假 portability:同名 capability 在不同 harness 上语义不同;需要 exact/partial/unsupported 与 version evidence。
  5. 虚假安全:permission UI 被误认为 enforcement;安全 gap 必须 fail closed。
  6. Resume 污染:复用 native session 时悄悄继承旧 workspace、secret、permissions 或 model;continuation 前必须重新验证 effective plan。
  7. Handoff 信息损失:summary 可能漏掉隐含决策;重要断言必须链接 artifact/evidence,不仅是一段生成文本。
  8. Artifact URI rot/retention mismatch:Core ref 长于 provider artifact TTL;需要 retention hint、digest 和 terminal export policy。
  9. Provider event schema drift:Adapter 只标准化最小 lifecycle/correlation,保留 raw provider ref。
  10. Workflow provider lock-in:把 provider checkpoint schema泄漏进 Work contract会阻止替换;handoff/state view必须 provider-neutral。
  11. Durable replay side effects:LangGraph/Temporal retry 可能重放 node/activity;跨 provider launch/publish 要有稳定 idempotency key和查询能力。
  12. Cleanup orphan:Core crash 后 workspace/sandbox/credential lease残留;需要 provider TTL + finalizer reconciliation,而不是仅靠 happy-path cleanup。
  13. Privacy/retention:conversation、logs、screenshots可能含 secret/PII;默认只保存 refs和必要 summary。
  14. AHP/MCP/ACP 快速演进:capability model要与 wire protocol版本解耦,Adapter声明 tested range。
  15. 本地用户被基础设施压垮:Temporal/Kubernetes 对简单 Work 过重;provider选择要按 durability门槛,不做“一套栈统治所有场景”。

Final Recommendation

能外包多少

现有生态足以外包几乎全部 replaceable subsystem:agent wire/session、workflow durability、workspace materialization、sandbox enforcement、artifact storage、issue tracking、trace/log backend、UI/channel、secret/credential、scheduler/queue、remote execution、knowledge与memory。Agent-Box 不需要成为这些系统的较小复制品。

必须保留什么

只保留高于所有 provider 的语义:

  1. canonical Work mapping,而非必然的新 Work ID
  2. Role/Profile binding 与不可变 effective resolution snapshot
  3. Required→Effective capability closure 和显式 degradation/failure
  4. 跨 workflow/session/workspace/artifact/interaction 的 correlation graph
  5. provider-neutral handoff contract 与 continuation decision
  6. 只记录 Core 决策的 minimal ledger
  7. 从权威 sources 解析 Effective Work State 的能力
  8. terminal/cleanup disposition

实施方向判断,而非平台设计

  • 默认采用 Work → optional WorkflowProvider,而不是内置 workflow engine。
  • 本地固定 Plan→Execute→Review 可以有极小 reference provider;明确标注 non-durable boundary。
  • 需要 task/worktree/review/product UI 时,优先集成或贡献 Kandev,而不是重做其 Task/Session/Document/Executor stack。
  • 需要 agent-centric checkpoint/HITL 时优先 LangGraph;需要服务级强 durability 时用 Temporal;需要 worker infrastructure/schedule/queue 时用 Prefect。
  • 任何新模块先问:它是否拥有一种必须跨所有 providers 存在的语义?如果答案只是“方便统一调用”,应放 Adapter;如果只是“保存数据”,应先找 external owner。

最终,Agent-Box 的 Work Core 不应是工作发生的地方,而应是工作在多个既有系统之间仍保持同一含义的最小控制点

Remove every provider, runtime, store, UI and transport that can be replaced. What remains is not execution infrastructure. It is the authoritative explanation of identity, binding, capability, causality and continuation.