# L4 — 工程实现与部署拓扑层

**文档版本**: 2.0  
**适用项目**: sgClaw（ZeroClaw 重构版）  
**编制日期**: 2026-03-26

**读者**: 开发者、测试工程师、联调工程师

---

## 1. 当前仓库结构

本仓库已经收敛为以 Rust Runtime 为主、文档为辅的产品内核仓库。  
不再把外部浏览器仓库和旧验证页当作本仓库的主实现面。

```
claw/
├── Cargo.toml
├── resources/
│   └── rules.json
├── src/
│   ├── main.rs
│   ├── lib.rs
│   ├── agent/
│   ├── compat/
│   ├── config/
│   ├── llm/
│   ├── pipe/
│   └── security/
├── tests/
├── third_party/
│   └── zeroclaw/
├── docs/
│   ├── L0-...md
│   ├── L1-...md
│   ├── L2-...md
│   ├── L3-...md
│   ├── L4-...md
│   ├── 浏览器对接标准.md
│   ├── plans/
│   └── archive/
└── frontend/
    ├── README.md
    └── archive/
```

工程上应把 `third_party/zeroclaw` 理解为“已 vendored 的兼容依赖”，而不是单独维护的兄弟项目。

---

## 2. 关键实现文件

### 2.1 入口与装配

- [`src/main.rs`](/home/zyl/projects/sgClaw/claw/src/main.rs)
- [`src/lib.rs`](/home/zyl/projects/sgClaw/claw/src/lib.rs)

职责：

- 初始化二进制入口。
- 建立标准输入输出 transport。
- 完成握手。
- 将消息循环交给 `agent`。

### 2.2 协议与浏览器工具

- [`src/pipe/protocol.rs`](/home/zyl/projects/sgClaw/claw/src/pipe/protocol.rs)
- [`src/pipe/browser_tool.rs`](/home/zyl/projects/sgClaw/claw/src/pipe/browser_tool.rs)
- [`src/pipe/handshake.rs`](/home/zyl/projects/sgClaw/claw/src/pipe/handshake.rs)

职责：

- 定义 wire message。
- 维护 `seq` 和 HMAC。
- 提供命令发送与响应等待能力。

### 2.3 执行路径

- [`src/agent/mod.rs`](/home/zyl/projects/sgClaw/claw/src/agent/mod.rs)
- [`src/agent/runtime.rs`](/home/zyl/projects/sgClaw/claw/src/agent/runtime.rs)
- [`src/compat/runtime.rs`](/home/zyl/projects/sgClaw/claw/src/compat/runtime.rs)
- [`src/compat/browser_tool_adapter.rs`](/home/zyl/projects/sgClaw/claw/src/compat/browser_tool_adapter.rs)

职责：

- 决定 fallback 或 compat 执行。
- 把统一工具契约映射到浏览器协议。
- 在 ZeroClaw turn 事件与宿主日志之间做桥接。

### 2.4 安全与配置

- [`src/security/mac_policy.rs`](/home/zyl/projects/sgClaw/claw/src/security/mac_policy.rs)
- [`src/config/settings.rs`](/home/zyl/projects/sgClaw/claw/src/config/settings.rs)
- [`resources/rules.json`](/home/zyl/projects/sgClaw/claw/resources/rules.json)

职责：

- 维护运行时安全边界。
- 从环境变量读取 provider 配置。

---

## 3. 构建与运行

### 3.1 本地构建

当前仓库以 Cargo 为主：

```bash
cargo build
```

发布构建：

```bash
cargo build --release
```

如果需要做协议或兼容层改动，优先先跑测试，再谈部署。

### 3.2 运行前提

sgClaw 不是独立交互式 CLI 产品，正常运行前提是：

- 有浏览器宿主进程作为父进程。
- 宿主通过 STDIO 与 sgClaw 通信。
- 宿主实现 `init/submit_task/response` 协议。

直接在终端里执行二进制，只能用于开发级调试，不代表真实产品启动方式。

### 3.3 模型配置

启用 ZeroClaw compat runtime 的关键环境变量：

```bash
DEEPSEEK_API_KEY=...
DEEPSEEK_BASE_URL=...
DEEPSEEK_MODEL=...
```

若这些变量不存在或不完整，系统会退回 planner fallback。

---

## 4. 测试拓扑

当前测试覆盖重点是“协议与兼容性”，而不是 UI 演示。

主要测试类别包括：

- `pipe_protocol_test.rs`
- `pipe_handshake_test.rs`
- `browser_tool_test.rs`
- `runtime_task_flow_test.rs`
- `agent_runtime_test.rs`
- `compat_runtime_test.rs`
- `compat_browser_tool_test.rs`
- `compat_config_test.rs`
- `compat_memory_test.rs`
- `compat_cron_test.rs`

建议执行：

```bash
cargo test
```

这组测试表达了一个重要工程事实：当前系统的稳定核心是协议、runtime 选择和 compat 适配，而不是旧版前端验证页。

---

## 5. 部署边界

### 5.1 本仓库负责什么

- 提供 sgClaw Rust 二进制。
- 提供规则文件。
- 提供协议文档和测试基线。

### 5.2 外部宿主负责什么

- 拉起并托管 sgClaw 进程。
- 提供页面执行能力。
- 实现命令落地、响应回传和宿主侧校验。

### 5.3 不在本仓库内交付的内容

- Chromium 工程源码与 BUILD 配置。
- Side Panel 成品前端。
- 生产部署脚本、安装包、发布流水线。

L4 的工程边界必须按仓库现实写清楚，否则会把“外部依赖”误写成“本仓库已交付”。

---

## 6. 部署建议拓扑

一个最小可工作的部署拓扑如下：

```
Browser Host Process
  ├─ launches sgclaw binary
  ├─ writes init / submit_task to stdin
  ├─ reads command / log / task_complete from stdout
  └─ executes page actions in host environment

sgclaw binary
  ├─ loads resources/rules.json
  ├─ verifies action/domain
  ├─ optionally calls provider API
  └─ waits for browser response
```

这就是当前版本真正需要被实现和联调的部署模型。

---

## 7. 工程结论

L4 层面的核心结论只有两点：

1. 本仓库已经从“带演示页的杂糅目录”收敛为“Rust Runtime + 协议文档 + 测试”的内核仓库。
2. ZeroClaw 重构后的工程重点，是保证 compat runtime、fallback runtime、浏览器协议三者在同一 contract 上工作。
