Files
claw/docs/L4-工程实现与部署拓扑层.md

253 lines
6.9 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 事件与宿主日志之间做桥接。
说明:
- `src/agent/runtime.rs``src/agent/planner.rs` 属于过渡性轻量路径,不应再被写成长期产品主线。
- 主线目标应是“sgClaw security layer + zeroclaw core runtime”而不是长期保留 browser-only compat 分叉。
### 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 / skills 等运行时配置,并逐步向 zeroclaw-first 配置模型收敛。
---
## 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。这个行为是当前实现状态不是长期架构推荐。
### 3.4 浏览器配置文件
当宿主以 `--config-path=<workspace_root>/sgclaw_config.json` 拉起 `sgclaw` 时,`sgclaw` 会自己读取该 JSON 文件,而不是要求宿主额外复制 skills。
当前支持的关键字段:
```json
{
"apiKey": "sk-...",
"baseUrl": "https://api.deepseek.com",
"model": "deepseek-chat",
"skillsDir": "skill_lib"
}
```
说明:
- `skillsDir` 可省略。
- 若省略,则默认使用 `<workspace_root>/.sgclaw-zeroclaw-workspace/skills`
- 若为相对路径,则相对于 `sgclaw_config.json` 所在目录解析。
- 若指向某个 skill repo 根目录,且其下存在 `skills/` 子目录,运行时会自动落到该 `skills/` 目录。
- 因此 SuperRPA 侧只需要负责传递 `--config-path`skill 查找策略由 `sgclaw` 自己控制。
- 长期看,这个文件应表达 zeroclaw-first 的 runtime/profile/tool policy 配置,而不仅是 provider shim。
---
## 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 选择和 zeroclaw 接入,而不是旧版前端验证页。
---
## 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 重构后的工程重点是把工程形态从“browser-first compat”收口为“zeroclaw-first runtime + sgClaw security envelope”同时保持浏览器协议稳定。