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
3 changes: 2 additions & 1 deletion AGENTS-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ Execution、Extension、Cross-platform Adapter 的边界以
- 接口与入口层暴露选定产品行为;可复用行为应下移。
- 组装层只接线下层并选择产品能力事实,不实现具体 adapter、OS 或 service 细节。
- 产品特性只在内核能力之上组装用户侧命令、UI contribution、设置和默认策略;长程任务、scheduler、permission、session/workspace、memory、DFX、hook 和 event 事实属于 Agent Kernel owner。
- 适配层翻译协议和外部系统,不拥有产品能力选择或可复用 OS service 行为。
- 适配层翻译协议和外部 provider 形状,不拥有产品能力选择或可复用 OS service 行为。
- 服务实现层负责可复用的 OS、process、terminal、MCP、remote、git、filesystem、session persistence primitives 和 MiniApp runtime IO 能力。
- 外部系统是边界外资源,不是仓库内层级。只有已注册的 adapter、service 或 app-local provider 应调用它们;其他层消费 port 和稳定契约。
- 执行原语层只放可移植运行时构件,不拥有宿主或交付形态。
- 契约层保持轻行为,不得向上依赖。

Expand Down
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ Boundary rules:
- Interfaces and app entrypoints expose selected product behavior; reusable behavior moves down.
- Assembly wires lower layers and selects product capability facts; it must not implement concrete adapter, OS, or service details.
- Product features assemble user-facing commands, UI contributions, settings, and default policy on top of kernel capabilities; long-running task, scheduler, permission, session/workspace, memory, DFX, hook, and event facts stay in Agent Kernel owners.
- Adapters translate protocols and external systems; they should not own product capability selection or reusable OS service behavior.
- Adapters translate protocols and external-provider shapes; they should not own product capability selection or reusable OS service behavior.
- Services implement reusable concrete OS, process, terminal, MCP, remote, git, filesystem, and MiniApp runtime IO capabilities.
- External systems are boundary resources, not repository layers. Only registered adapters/services/app-local providers should call them; other layers consume ports and stable contracts.
- Execution crates are portable runtime building blocks, not host-specific or delivery-profile owners.
- Contracts stay behavior-light and must not depend upward.

Expand Down
21 changes: 18 additions & 3 deletions docs/architecture/agent-runtime-services-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,11 @@ OpenCode adapter 只产出可注册的 descriptor、provider 和 contribution;
| API / owner | 主要 crate | 允许依赖 | 不允许依赖 | 对外承诺 |
|---|---|---|---|---|
| Product Assembly API | `src/crates/assembly/*` | feature packs、Kernel API、Execution API、Runtime Services、platform providers | Agent 内部状态机、具体 UI 组件实现作为下层依赖 | 按产品形态组装能力,输出 typed runtime parts |
| Product Feature API | `product-capabilities`、`product-domains`、对应 UI contribution owner | Kernel API、Execution API、UI Extension Contract、domain contract | OS concrete、Tauri handle、permission 最终策略 | 把底层能力映射为用户功能和默认策略 |
| Product Feature API | `product-capabilities`、`product-domains`、对应 UI contribution owner | Kernel API、UI Extension Contract、Capability/Effect contract、domain contract | OS concrete、Tauri handle、Execution concrete、permission 最终策略 | 把内核能力和稳定 descriptor 映射为用户功能和默认策略 |
| Rust Kernel API | `agent-runtime`、`agent-stream`、`runtime-services`、`runtime-ports`、`events`、`core-types` | stable contracts、tool/harness registry、typed services | `bitfun-core`、Tauri、Web UI、ACP protocol、provider concrete | session / turn / event / permission / scheduler / context 等 SDK 候选接口 |
| Execution API | `tool-contracts`、`tool-provider-groups`、`tool-execution`、`harness` | stable contracts、runtime ports、注入的 service ports | product registry、UI、具体 filesystem/Git/terminal/MCP client | tool、skills、MCP tool bridge、sandbox、harness 执行语义 |
| Extension API | extension host / OpenCode / ACP adapter owner | Rust Kernel API contract、UI Extension Contract、Capability/Effect contract | Web UI React implementation、Tauri state、kernel 权威状态写入 | 把外部生态能力转换为 descriptor、provider 和 candidate effect |
| Cross-platform Adapter API | `services/*`、`adapters/*`、app-local provider | runtime ports、core DTO、允许的第三方库 | Product Feature、Agent Kernel 状态机、UI command | 实现 filesystem、terminal、network、remote、Git、MCP transport、AI provider 等外部 I/O |
| Platform / Provider Adapter API | `services/*`、`adapters/*`、app-local provider | runtime ports、stable DTO、允许的第三方库 | Product Feature、Agent Kernel 状态机、UI command | 实现 filesystem、terminal、network、remote、Git、MCP transport、AI provider 等边界外 I/O |
| Stable Contract API | `contracts/*` | 低层无行为依赖或标准序列化依赖 | 上层 crate、concrete manager、UI rendering | DTO、event、port、capability/effect、permission、sandbox、audit、typed error |

禁止依赖:
Expand All @@ -105,7 +105,7 @@ OpenCode adapter 只产出可注册的 descriptor、provider 和 contribution;
- `tool-contracts` 依赖具体 service crate;`tool-execution` 依赖产品 registry、产品 permission policy 或具体 UI。
- `harness` 依赖具体 filesystem/Git/terminal manager;它只通过 ports 和 provider contract 获取能力。
- Extension Host 依赖 Web UI React component implementation、Tauri app state 或 concrete core manager。
- Product Feature 直接依赖 platform adapter concrete、全局 mutable runtime state 或外部系统 client。
- Product Feature 直接依赖 platform adapter concrete、execution concrete、全局 mutable runtime state 或边界外资源 client。

接口暴露原则:

Expand All @@ -114,6 +114,21 @@ OpenCode adapter 只产出可注册的 descriptor、provider 和 contribution;
- 注册接口接收 typed provider / descriptor / policy,不接收 `Any`、无类型 service name 或全局 mutable registry。
- 兼容 facade 可以保留旧路径导出,但旧路径不得成为新 API 的真实 owner。

### 1.5 平台适配与边界外资源

Platform / Provider Adapter 是仓库内实现层,负责把稳定 port 转换为 OS、network、terminal、remote、MCP
transport、AI provider、browser runtime 或第三方库调用。边界外资源不是 crate、不是逻辑层,也不是所有模块可依赖的
基础设施。

实现规则:

- Product Assembly 是唯一可以选择具体 platform provider 的位置;选择结果以 typed runtime parts 注入。
- Kernel、Execution、Extension 和 Product Feature 只消费 stable contract、port handle 或 descriptor,不导入具体
provider crate。
- Platform adapter 不读取 delivery profile、feature pack 或 UI command;形态差异由 Product Assembly 注入。
- 外部资源错误必须在 adapter 边界转换为 typed error、unsupported/unavailable 或 capability/effect fact,不能泄漏为
产品层专用分支。

## 2. 稳定接口与运行时服务

### 2.1 稳定契约(Stable Contracts)
Expand Down
Loading
Loading