xworkmate-app/docs/architecture/xworkmate-layered-architecture.md

117 lines
4.5 KiB
Markdown

# XWorkmate Layered Architecture
Last Updated: 2026-04-14
## Purpose
本文件只保留当前 `xworkmate-app <-> xworkmate-bridge` 主链的分层总览。
当前仓库已经收敛到:
- 顶层 surface 只有 `assistant`、`settings`
- app 只保留消费 bridge 合同所需的 surface、gate、controller、runtime
- provider catalog、routing、gateway runtime 能力都由 `xworkmate-bridge` 拥有真源
- 已删除独立 `tasks / skills / modules / mcp / claw_hub / secrets / ai_gateway / account` 页面壳与 alias 心智
## Layered View
```mermaid
flowchart TD
subgraph L1["Surface Visibility"]
A1["config/feature_flags.yaml"]
A2["UiFeatureManifest / UiFeatureAccess / AppCapabilities"]
A3["AppShell / MobileShell / workspace_page_registry.dart"]
A4["AssistantPage / SettingsPage"]
end
subgraph L2["App Orchestration"]
B1["AppControllerDesktop*"]
B2["SettingsController"]
B3["GatewaySessionsController"]
B4["GatewayChatController"]
B5["GatewayAgentsController"]
B6["DerivedTasksController"]
B7["SkillsController"]
end
subgraph L3["Bridge Contract"]
C1["GoTaskService.executeTask"]
C2["GatewayAcpClient"]
C3["ExternalCodeAgentAcpDesktopTransport"]
C4["acp.capabilities / xworkmate.routing.resolve / session.* / xworkmate.gateway.*"]
C5["managed bridge/account sync contract"]
end
subgraph L4["Bridge And Upstreams"]
D1["xworkmate-bridge"]
D2["ACP adapters / gateway runtime adapters / upstream services"]
end
A1 --> A2 --> A3 --> A4
A4 --> B1
B1 --> B2
B1 --> B3
B1 --> B4
B1 --> B5
B1 --> B6
B1 --> B7
B1 --> C1
B1 --> C2
B1 --> C3
B2 --> C5
C1 --> C4
C2 --> C4
C3 --> C4
C4 --> D1 --> D2
```
## Layer Responsibilities
### 1. Surface Visibility
- `feature_flags.yaml` 是 surface 可见性的唯一声明源
- `UiFeatureManifest / AppCapabilities` 负责把声明变成当前平台允许能力
- `AppShell / MobileShell / workspace_page_registry.dart` 只承载已声明且真实存在的 `assistant`、`settings`
- 不再允许“manifest 已删但 shell/registry 还留旧入口”的双重真源
### 2. App Orchestration
- `AssistantPage` 承载当前线程、任务、技能、结果与 bridge 主链交互
- `SettingsPage` 承载 bridge connection、account sync、integration affordance
- app controller 只做最小本地编排,不再维护独立模块壳、假矩阵、旧 alias 分流
- 任务与技能仍可作为 assistant 内部数据面存在,但不再拥有独立页面地位
### 3. Bridge Contract
- `GoTaskService.executeTask` 是 app 任务链的统一公开入口
- `acp.capabilities` 提供 bridge-owned capability snapshot
- `xworkmate.routing.resolve` 返回执行解析结果与 unavailable 信息
- `session.*` 承载 ACP 会话流
- `xworkmate.gateway.*` 承载 gateway runtime 连接与请求流
- 账户同步只同步 bridge 相关配置属性与安全引用,不负责恢复旧模块心智或自动造 catalog
### 4. Bridge And Upstreams
- `xworkmate-bridge` 是 app 唯一公共集成面
- upstream ACP service、gateway runtime、provider adapter 都是 bridge 内部关注点
- app 不直接把 upstream URL、provider topology、gateway backend 细节当成自己的 surface taxonomy
## Canonical Cross-Repo Reading Order
建议按下面顺序理解当前主链:
1. [XWorkmate Core Module Inventory](/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/docs/architecture/xworkmate-core-module-inventory-2026-04-13.md)
2. [Task Dialog Provider Selection Mainline](/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/docs/architecture/task-dialog-provider-selection-mainline.md)
3. [Task Control Plane Unification](/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-app/docs/architecture/task-control-plane-unification.md)
4. [ACP Forwarding Topology](/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-bridge/docs/architecture/acp-forwarding-topology.md)
5. [ADR: Unified Bridge Entry Points](/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-bridge/docs/architecture/adr-unified-bridge-entrypoints.md)
## Removed From Target
以下内容都不再作为当前目标架构的一部分:
- `Tasks / Skills / Modules / MCP / ClawHub / Secrets / AiGateway / Account` 独立 surface
- 旧 alias destination 与 dormant registry
- app-side provider preset/backfill/fallback 真源
- 把 upstream URL、gateway backend 或 provider 拓扑直接暴露成 app 一级模块心智