Files
skill-lib/docs/L4-工程实现与部署拓扑层.md
2026-03-26 19:28:25 +08:00

224 lines
5.5 KiB
Markdown
Raw 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.
# L4 — 工程实现与部署拓扑层
**文档版本**: 2.0
**适用项目**: sgClawZeroClaw 重构版)
**编制日期**: 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 上工作。