xworkmate-bridge/docs/internal-reference.md
2026-05-26 11:06:22 +08:00

195 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Internal Reference
本文档记录 `xworkmate-bridge` 当前内部模块边界,只覆盖当前保留的 control-plane 主链。
## 1. 总体分层
当前内部结构分为五层:
1. `bridge_contract`
2. `capability_catalog`
3. `routing_engine`
4. `session_orchestrator`
5. `provider_compat` / `gateway compat`
核心原则:
- bridge core 不再承担 reverse proxy public surface
- bridge core 不再承担 multi-agent 业务分叉
- stdio / process / framing / restart 细节下沉到 adapter runtime
## 2. `internal/acp`
### 包职责
APP-facing ACP control plane。
负责:
- `/acp` App-facing WebSocket JSON-RPC 主入口
- `/acp/rpc` HTTP JSON-RPC fallback / CI / 调试 / OpenClaw task submit 入口
- JSON-RPC / hybrid envelope
- `acp.capabilities`
- `xworkmate.routing.resolve`
- `session.*`
- `xworkmate.gateway.*`
### 关键类型
- `type Server struct`
- bridge 聚合根
- 持有 `routingEngine`、`providers`、`catalog`、`orchestrator`、`gateway`
- `type ProviderCompat interface`
- bridge 依赖的唯一 provider 接口
- 方法:
- `ID()`
- `Metadata()`
- `Probe(ctx)`
- `StartSession(...)`
- `SendMessage(...)`
- `CancelSession(...)`
- `CloseSession(...)`
- `type RoutingResult struct`
- routing 输出 contract
- 包括:
- `TargetID`
- `ProviderID`
- `GatewayProviderID`
- `Model`
- `Skills`
- `Status`
- `UnavailableCode`
- `UnavailableMsg`
- `type CapabilityCatalog struct`
- bridge-owned capabilities 真源
- 包括:
- `ProviderCatalog`
- `GatewayProviders`
- `AvailableExecutionTargets`
- `ProviderProbeSummary`
### 关键主链
- `func NewServer() *Server`
- 初始化 routing engine、catalog、providers、orchestrator、gateway manager
- `func (s *Server) Handler() http.Handler`
- 只挂载:
- `/`
- `/api/ping`
- `/acp`
- `/acp/rpc`
- `func (s *Server) handleRequest(...)`
- 统一分派:
- `acp.capabilities`
- `session.*`
- `xworkmate.routing.resolve`
- `xworkmate.gateway.*`
- `func (o *SessionOrchestrator) Process(...)`
- bridge session 主语义入口
- 流程:
- resolve routing
- get/create session state
- dispatch to gateway or provider compat
- normalize result
- emit `session.update`
- record project memory only when routing mode is explicitly auto
### 当前删除或收紧的旧路径
以下逻辑不属于当前 APP-facing contract
- `/acp-server/*`
- `/gateway/openclaw`
- multi-agent 执行路径
- provider-specific alias handler
OpenClaw task submit 使用 `/acp/rpc` 和 routing metadata不再保留独立 app-facing handler。
## 3. `provider_compat`
bridge 当前通过 compat 层吸收 provider 差异:
- `codex compat`
- `opencode compat`
- `gemini compat`
- `hermes compat`
这些 compat 共享同一套 external ACP 调用基座,但对 bridge core 暴露统一接口。
### compat 负责什么
- 调上游 ACP HTTP / WS
- 解析 JSON-RPC result / error
- 转换 upstream notification
- 吸收 provider transport 差异
### compat 不负责什么
- catalog ownership
- routing ownership
- session state ownership
- app-facing contract 设计
## 4. `routing_engine`
当前 routing 只围绕 bridge 核心能力做决策:
- `single-agent`
- `gateway`
不再升级到 multi-agent。
输入来源:
- prompt
- workingDirectory
- explicit routing
- preferred gateway provider
- available bridge providers
- available skills
- memory preferences
输出由 bridge 统一整形成 `RoutingResult`
## 5. `gatewayruntime`
`internal/gatewayruntime` 仍负责 openclaw runtime 的连接态、请求配对、快照与 push event。
这个包是 gateway runtime 层,不是 public API 层。
bridge 只通过 `xworkmate.gateway.*` 把它暴露为 control-plane contract。
## 6. `internal/router`
任务:
- normalize routing intent
- resolve execution target
- resolve provider
- resolve gateway provider
- resolve skills
- shape unavailable reason
当前只产出:
- `single-agent`
- `gateway`
## 7. `internal/shared`
保留的 bridge_contract 基础能力:
- JSON-RPC request decode
- hybrid result/error envelope
- notification envelope
- CORS / origin helper
- shared HTTP / WS helper
这里是 envelope 与共用 transport helper不承载 provider-specific 控制逻辑。