Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 23 additions & 12 deletions docs/architecture/agent-runtime-services-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ CLI Agent 体验边界见 [`cli-product-line-design.md`](cli-product-line-design

本文中的接口片段只说明依赖方向和职责,不自动构成当前 API 或实施承诺。当前接口名称、字段和消费方以代码为准;
新增公共类型前必须有真实生产调用方、版本边界和验证路径。现有 Agent Runtime SDK 仍是 v1 preview,CLI、ACP、
Desktop 也尚未从 `bitfun-core/product-full` 切换到独立产品组装。
Desktop 仍保留 `bitfun-core/product-full` 兼容 owner。CLI 已消费独立的产品组装结果和 SDK 端口,但这不等于
协调器、调度器、持久化或工具执行 owner 已迁移;ACP 与 Desktop 尚未完成对应入口切换。

阅读路径:第 1 节确认 SDK、内核、产品特性、扩展接口和 crate 边界;第 2-3 节说明稳定接口、
运行时服务、内核、工具和工作流;第 4 节说明产品组装与扩展注册;第 5 节作为质量保护和
Expand Down Expand Up @@ -691,11 +692,15 @@ pub struct HarnessExecutionContext {
`src/crates/assembly/core` 仍承担 `bitfun-core` 兼容组装。现有 `ProductAssembler` 是具体结构体,
通过 `assemble(ProductAssemblyInput)` 产生 `ProductRuntimeParts`,本文件不再为它定义第二套目标接口。

当前边界仍未完成:CLI 的 `doctor` 命令已选择 `DeliveryProfile::Cli`,并读取 `ProductAssemblyPlan` 的
静态 profile;它明确说明未评估运行时 readiness,不把静态服务需求投影为实际 availability,
也不构造 `ProductRuntimeParts` 或注册占位 provider。Chat、Exec、ACP 与其他管理路径仍依赖 `bitfun-core/product-full`。
Desktop 和 ACP 尚未接入组装结果,Server 仅提供健康检查、信息与 ping 路由。除上述 CLI 诊断切片外,
profile、枚举分支和单元测试仍不能证明对应产品形态已接入。
当前 CLI 入口已使用类型化 `RuntimeServices` 构造 `ProductRuntimeParts`,并通过一个调用级上下文把
Agent Runtime SDK、Harness、能力注册、调用级权限和 Agentic 事件广播交给 TUI、Exec、Session 与 Usage。
SDK 已承接会话创建/列举/删除、轮次提交和取消;SDK v1 尚未覆盖的恢复视图、消息、分支、用量和
工具确认由 `assembly/core` 的单一兼容门面转发。`doctor` 与 `health` 校验真实组装结果及必需注册完整性;
Core 的 Network、Git 和 MCP Catalog 当前仍含兼容 marker,因此该诊断不等于对这些外部服务做实时探活。

该切换仍是 `product-full` 兼容组装,不是 owner 迁移。协调器、调度器、持久化、工具管线和 Agentic Event Queue
仍由 Core 唯一持有;CLI 不复制这些状态。ACP 与 Desktop 尚未接入组装结果,Server 仅提供健康检查、信息与
ping 路由。未接入入口的 profile、枚举分支和单元测试仍不能证明对应产品形态可用。

职责:

Expand All @@ -708,8 +713,8 @@ profile、枚举分支和单元测试仍不能证明对应产品形态已接入

| 阶段 | 约束 |
|---|---|
| 当前 | 维持现有 `ProductAssembler` API 和 `product-full` 兼容门面,不扩张字段或再造描述符 |
| 迁移 | CLI 可先经现有兼容门面消费只读静态计划;迁移执行 owner 或继续接入 ACP、Desktop 前,必须消除 `assembly/core -> apps/relay-server` 反向依赖 |
| 当前 | CLI 消费真实 Runtime Parts 与 SDK,Core 兼容门面只承接 SDK v1 缺口;不扩张字段或再造描述符 |
| 迁移 | 迁移执行 owner 或继续接入 ACP、Desktop 前,必须分别证明行为等价;`assembly/core -> apps/relay-server` 反向依赖仍需消除 |
| 完成 | 每个声称支持的 profile 都由生产入口消费组装结果,并有最小入口验证;无消费方的 profile 不对外宣称可用 |

产品定义、品牌资源和界面布局的长期边界以
Expand All @@ -720,6 +725,9 @@ profile、枚举分支和单元测试仍不能证明对应产品形态已接入
当前组装路径:

- 具体运行时服务通过 `RuntimeServicesBuilder` / provider registry 构造。
- CLI 只选择 `DeliveryProfile::Cli` 一次;必需服务缺失时组装失败,不回退到静态计划或另一 profile。
- CLI 的 `json` 输出为单结果文档,`stream-json` 直接复用现有 `AgenticEventEnvelope`;协议层不新增
`schema_version`、`sequence` 或平行事件 taxonomy。
- 能力计划选择工具提供方组计划和 Harness 描述符;当前不存在供任意模块注册所有对象的通用组装注册表。
- 插件运行时通过 `runtime-ports` 的 `PluginRuntimeBinding` 注入;`assembly/core` 负责构造当前 Host 与适配器组合。
- 智能体、命令、skill 和 UI 继续由各自归属模块管理。仓库尚无稳定的 `ProductCommandRegistry` 或
Expand Down Expand Up @@ -990,14 +998,17 @@ Product 测试:
- `bitfun-runtime-services` 提供类型化服务注入;工具 contracts、provider groups 与 execution 已分层。
- `bitfun-harness` 已提供类型化工作流描述与注册能力。
- `bitfun-core` 可继续作为 `product-full` 兼容门面,避免迁移期间一次性重写入口。
- CLI 已有首个生产入口计划投影:`doctor` 选择 `DeliveryProfile::Cli`,显示静态 profile,
并明确说明未评估运行时 readiness;它尚未构造运行时组装结果。
- CLI 已以 `DeliveryProfile::Cli` 构造真实 Runtime Parts 和 SDK runtime;本地 Agent 入口、会话和用量
共用一个调用级上下文与广播事件源,审批策略不再写回全局配置。Peer Host 仍保留既有 Core 兼容路径,
其协议与生命周期切换由独立变更处理。
- CLI 通过 SDK 处理已覆盖的 session/turn/cancel 操作,并通过一个 Core 兼容门面处理 SDK v1 缺口;
该门面复用现有 owner,不建立第二套状态或事件 schema。

仍需完成:

- 消除 `assembly/core -> apps/relay-server` 的反向依赖,并用通用边界检查固定依赖方向。
- CLI 接入 owner-owned Runtime Services 与调用级权限、权威事件路径,再让执行路径消费
`ProductRuntimeParts`;之后让 ACP、Desktop 依次接入,并为每条路径证明行为等价。
- 继续缩小 CLI 的 Core 兼容门面;只有稳定端口、真实生产调用方和行为等价测试齐备时才迁移 owner。
- 让 ACP、Desktop 依次接入产品组装,并为每条路径证明行为等价;ACP 生命周期和 Desktop 平台资源仍留在入口
- 为 Agent Runtime SDK 增加至少一个非 `bitfun-core` 的真实嵌入方;预览 facade 和单元测试不等于外部可用 SDK。
- 仅在真实端到端切片中接入插件主机;外部插件先转换为类型化工具、Hook、事件、权限请求或诊断,
不把生态对象带入 Agent Runtime。
Expand Down
Loading
Loading