diff --git a/docs/2026-04-18-102-scenes-validation-overview.xlsx b/docs/2026-04-18-102-scenes-validation-overview.xlsx new file mode 100644 index 0000000..d924290 Binary files /dev/null and b/docs/2026-04-18-102-scenes-validation-overview.xlsx differ diff --git a/docs/sgClaw技术路线总览.html b/docs/sgClaw技术路线总览.html new file mode 100644 index 0000000..313f00b --- /dev/null +++ b/docs/sgClaw技术路线总览.html @@ -0,0 +1,309 @@ + + +
+ + +完成浏览器基础操作能力(点击、输入、导航、读取页面内容),建立安全管控体系,实现与现有业务平台的对接。
+接入AI大模型,支持自然语言理解,用户用日常语言描述需求,AI自动拆解为操作步骤并执行。
+将高频使用的场景沉淀为标准化技能包(如线损查询、故障统计、周报生成等),实现快速执行,减少对AI的依赖。
+从单次任务执行升级为持久化服务,支持多用户并发使用,建立完整的技能市场和任务编排体系。
+原来需要人工逐步操作浏览器完成的任务,现在只需一句话,自动完成查询、导出、报表生成全流程。
+不需要改造现有业务系统,sgClaw像员工一样直接操作浏览器,对现有系统零侵入。
+三道安全防线确保所有操作在允许范围内,域名白名单、动作管控、二次复核,全程可追溯。
+新业务场景通过编写技能包快速接入,已有场景走快速通道无需AI,兼顾效率和灵活性。
+核心代码自主可控,基于Rust语言构建,性能优异,不依赖外部SaaS服务,数据安全有保障。
+从单任务执行到持久化服务,从人工指令到AI驱动,技术路线清晰,逐步构建平台化能力。
+| 模块 | 主要源文件 | 职责说明 |
|---|---|---|
| pipe传输层 | src/pipe/mod.rs transport.rs handshake.rs browser_tool.rs | STDIO读写 握手流程 消息编码解码 HMAC签名 |
| security安全层 | src/security/mod.rs mac_policy.rs hmac.rs | MAC Policy加载 域名白名单 动作黑白名单 HMAC签名 |
| agent消息路由 | src/agent/mod.rs task_runner.rs | 消息分发 任务解析 Deterministic Submit检测 |
| browser后端抽象 | src/browser/mod.rs callback_backend.rs callback_host.rs ws_protocol.rs | BrowserBackend接口 Pipe/WS/Callback实现 |
| compat兼容层 | src/compat/mod.rs runtime.rs deterministic_submit.rs browser_script_skill_tool.rs | ZeroClaw运行时构建 线损快速通道 Skill执行 |
| service服务模式 | src/service/mod.rs session.rs | WS服务器 单客户端单任务模型 |
| config配置 | src/config/mod.rs settings.rs | Settings加载 Provider配置 Backend选择 |
| runtime引擎 | src/runtime/mod.rs engine.rs tool_policy.rs | Agent实例构建 ToolPolicy权限控制 |
负责接收用户请求、建立会话、返回最终结果。支持两种模式:STDIO Pipe(默认,与浏览器宿主通过 stdin/stdout JSON Line 通信)和 Service WS(WebSocket 服务模式,接受外部客户端连接)。
+ +run_submit_task() 是任务执行入口。依次执行四级路由决策:① deterministic_submit 确定性场景匹配 ② primary_orchestration 主编排 ③ direct_submit_skill 直连技能 ④ compat_llm_primary 标准LLM回退。
+ +扫描 skills/ 目录下的场景清单(scene.toml),解析 deterministic 段落的关键词规则。当用户指令匹配时,构建 DeterministicExecutionPlan(含 target_url org_code period_mode 等执行参数),直接执行预设脚本。
+ +从 JSON 配置文件或环境变量加载运行时配置:多 Provider 管理(apiKey baseUrl model)、Runtime Profile、SkillsDir、BrowserBackend 类型、OfficeBackend、Service WS 监听地址等。
+ +根据 Runtime Profile(BrowserAttached/BrowserHeavy/GeneralAssistant)构建 Tool Policy 白名单,加载技能包,注入 Memory,构建 Agent 实例。同时负责指令增强(附加浏览器合约提示、检测特定任务类型)。
+ +位于 third_party/zeroclaw/ 的 vendored Agent 核心库。提供 Agent 构建、Provider 管理、工具循环、Memory 接口、技能加载、Prompt 组装等核心能力。sgClaw 在其基础上叠加安全信封层。
+ +统一的浏览器操作接口(BrowserBackend trait)。两种实现:PipeBrowserBackend(通过 STDIO 与宿主通信)和 WsBrowserBackend(通过 WebSocket 直连 DevTools)。支持 SuperRpa/AgentBrowser/RustNative/ComputerUse 多种后端类型。
+ +从 resources/rules.json 加载安全规则。三层安全模型:①握手时 HMAC seed 交换和会话密钥派生 ②Rust 侧域名+动作白名单校验 ③宿主侧 HMAC 二次验证。拒绝不在白名单的域名和被禁用的动作。
+ +实际执行 DOM 操作的外部系统。接收 sgClaw 的 Command(含 HMAC),验证后执行 navigate/click/type/getText 等操作,返回 Response(含操作结果 + HMAC)。STDIO 模式下与 sgClaw 进程通过管道通信。
+ +LLM 接收用户自然语言指令,识别用户的真实意图。例如"帮我查本月线损率" → 识别为"查询线损率数据"。
+结合 Memory(记忆模块)中存储的历史任务记录,判断该指令是否与已有技能匹配。如果匹配,转交快速通道执行。
+如果是新场景,LLM 将用户目标拆解为具体的、可操作的步骤序列。例如:打开系统 → 选择月份 → 点击查询 → 读取数据 → 导出Excel。
+LLM 根据步骤需求,从可用工具库中选择合适的工具。例如:需要打开网页选择"导航工具",需要点击按钮选择"点击工具",需要读取数据选择"读取工具"。
+LLM 为每个工具填充具体参数。例如点击工具需要知道"点击哪个按钮",导航工具需要知道"打开哪个URL"。这些参数从用户指令和上下文中提取。
+LLM 将拆解的步骤、选择的工具、填充的参数整合为结构化的执行计划,交由工具执行引擎依次执行。
+如果某一步执行失败或结果不符合预期,LLM 会收到反馈,重新规划后续步骤。例如页面打不开则尝试备用URL,元素找不到则换选择器。
+职责:基于 SQLite(brain.db)持久化存储对话历史、任务状态和执行结果。通过 zeroclaw::memory::Memory trait 提供统一接口,支持多种存储后端。
+ +职责:从 skills/ 目录(或自定义 skillsDir)扫描加载技能包,按浏览器是否可用过滤 browser_script 工具,通过 ReadSkill Tool 让 Agent 按需读取技能详情。支持 open_skills 独立技能目录配置。
+ +职责:运行时核心编排器。根据 Runtime Profile 决定工具白名单,加载技能,注入 Memory,构建 Agent 实例。同时负责指令增强(附加浏览器合约提示、检测特定任务类型如知乎热榜/Excel导出/大屏展示)。
+ +通过 scene_platform 模块扫描 skills/ 目录下的场景清单(scene.toml),匹配指令关键词、URL、页面标题。匹配成功则构建 DeterministicExecutionPlan,直接执行场景预设的浏览器脚本,无需 LLM 参与。典型场景:线损查询、报表导出等固定流程。
+当 Runtime Profile 启用浏览器工具(browser_surface_enabled)且 orchestration::should_use_primary 判定走主编排时,调用 zeroclaw 的 process_message 完整 Agent 循环。LLM 可以调用所有允许的工具(浏览器操作、技能工具等),支持多轮工具调用和动态规划。
+当配置中设置了 directSubmitSkill(格式:skillName.toolName),绕过正常 Agent 循环,直接执行指定的技能工具。适用于需要固定流程但又不适合确定性场景的中间态。
+以上三条路都不通时的默认回退。创建标准 zeroclaw Agent turn,LLM 根据指令自主决定使用哪些工具。这是最灵活但也最慢的路径。
+职责:实现 zeroclaw::tools::Tool trait,将 BrowserBackend 适配为 LLM 可调用的工具。暴露两个工具名:browser_action(传统别名)和 superrpa_browser(SuperRPA 专用,优先使用)。
+ +职责:从 resources/rules.json 加载安全规则。三层安全检查:①握手时 HMAC seed 交换 ②Rust 侧域名+动作白名单校验 ③宿主侧 HMAC 二次验证。拒绝不在白名单的域名和被禁用的动作。
+ +职责:统一的浏览器操作接口(BrowserBackend trait)。两种实现:PipeBrowserBackend(通过 StdioTransport 与宿主通信)和 WsBrowserBackend(通过 WebSocket 直连 DevTools)。由 BrowserBackend 配置决定使用哪种。
+ +职责:STDIO Pipe 模式下的特权浏览器工具。为每个命令分配单调递增 seq,使用派生会话密钥计算 HMAC,发送 Command 消息后阻塞等待匹配的 Response,支持超时。
+ +浏览器宿主进程通过 STDIO(JSON Line 协议)发送 SubmitTask 消息。sgClaw 创建会话,解析指令、page_url、page_title、conversation_id。
+从 sgclaw_config.json 或环境变量加载配置:LLM provider(apiKey/baseUrl/model)、runtimeProfile、skillsDir、directSubmitSkill 等。
+扫描 skills/ 目录下的场景清单(scene.toml),发现指令包含"线损率"、"本月"关键词,匹配到"线损查询"场景。构建 DeterministicExecutionPlan(含 target_url、org_code、period_mode 等参数)。
+检查目标域名是否在 rules.json 白名单中 → 通过。检查操作类型(navigate、click、getText)是否在动作白名单中 → 通过。
+为每个命令分配单调递增 seq,使用派生会话密钥计算 HMAC。通过 StdioTransport 发送 Command 消息给浏览器宿主。执行:导航到线损系统 → 选择月份 → 点击查询 → 读取表格数据。
+浏览器宿主接收 Command,验证 HMAC,执行实际 DOM 操作(导航、选择下拉框、点击按钮、读取表格内容),返回 Response(含操作结果 + HMAC)。
+将浏览器返回的表格数据解析为结构化格式。根据场景的 postprocess 配置,使用 openxml_office 工具生成 .xlsx 文件。生成结果包含本地文件路径。
+通过 StdioTransport 发送 TaskComplete 消息给浏览器宿主,包含 success=true 和执行摘要(含生成的 .xlsx 文件路径)。浏览器宿主提示用户下载完成。
+