Skip to content

Commit e69397e

Browse files
committed
docs: add browser self-update documentation
Add introduction and usage guide for the browser self-update mechanism in Chinese. - doc/browser_self_update_intro_zh.md: Architecture and core concepts - doc/browser_self_update_usage_zh.md: Configuration and usage guide
1 parent 2e664f9 commit e69397e

2 files changed

Lines changed: 536 additions & 0 deletions

File tree

Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
# 浏览器 Self-Update 功能介绍
2+
3+
本文档详细介绍了 Shipyard Neo 中的浏览器 Self-Update(自更新/自进化)机制。该机制允许系统通过观察和评估 Agent 的浏览器操作,自动提取、评分并沉淀高质量的操作模式为可重用的技能(Skill),从而实现系统的持续进化。
4+
5+
## 1. 概述
6+
7+
### 1.1 功能简介
8+
浏览器 Self-Update 是 Shipyard Neo 的一项核心自进化能力。它通过闭环反馈机制,自动从 Agent 的日常执行中学习。当 Agent 执行浏览器任务时,系统会记录完整的执行链路(Trace),并在后台通过智能调度器对这些执行记录进行分析、评分和提炼。达到质量阈值的操作序列将被自动转化为新的技能候选(Skill Candidate),经过 Canary 金丝雀发布验证后,最终晋升为稳定技能供全系统使用。
9+
10+
### 1.2 设计理念
11+
- **被动学习(Passive Learning)**:不需要 Agent 显式地"教学",而是通过观察 Agent 的自然执行过程进行学习。
12+
- **闭环验证(Closed-Loop Verification)**:所有学习到的技能必须经过回放验证(Replay)和金丝雀阶段(Canary)的实战检验。
13+
- **零干扰(Zero Interference)**:学习过程在后台异步进行,不阻塞 Agent 的正常任务执行。
14+
- **安全优先(Safety First)**:内置严格的自动回滚机制,确保新学习的技能不会破坏现有系统的稳定性。
15+
16+
### 1.3 核心价值
17+
- **效率提升**:自动沉淀常用操作,减少 Agent 重复推理和规划的开销。
18+
- **质量保证**:通过标准化的高分技能替代不确定的临场操作,提高执行成功率。
19+
- **知识积累**:将隐性的操作知识显性化为系统资产,实现系统能力的持续积累。
20+
21+
## 2. 架构设计
22+
23+
Shipyard Neo 的 Self-Update 机制跨越了控制面(Bay)、执行面(Ship/Gull)和存储层。
24+
25+
```mermaid
26+
graph TD
27+
subgraph "Agent Layer"
28+
Agent[Agent / User]
29+
end
30+
31+
subgraph "Bay Control Plane"
32+
API[Capabilities API]
33+
History[History API]
34+
SkillMgr[Skills API]
35+
Scheduler[Browser Learning Scheduler]
36+
end
37+
38+
subgraph "Data Storage"
39+
DB[(PostgreSQL)]
40+
Blob[Artifact Storage]
41+
end
42+
43+
subgraph "Runtime Environment"
44+
Ship[Ship (Code Execution)]
45+
Gull[Gull (Browser Runtime)]
46+
end
47+
48+
Agent -->|POST /browser/exec| API
49+
API -->|Execute Cmd| Gull
50+
Gull -->|Result & Trace| API
51+
API -->|Save History| DB
52+
53+
Scheduler -->|Poll Pending| DB
54+
Scheduler -->|Analyze & Extract| DB
55+
Scheduler -->|Replay & Verify| Gull
56+
Scheduler -->|Promote| SkillMgr
57+
SkillMgr -->|Update Spec| DB
58+
```
59+
60+
### 核心组件说明
61+
- **Agent Layer**:任务的发起者,负责生成浏览器操作指令。
62+
- **Bay Control Plane**
63+
- **Capabilities API**:接收执行请求,协调运行时。
64+
- **Browser Learning Scheduler**:后台核心调度器,负责从历史记录中挖掘技能。
65+
- **Runtime Environment**
66+
- **Gull**:浏览器运行时,负责执行实际的 CDP (Chrome DevTools Protocol) 指令并生成 Trace。
67+
- **Data Storage**:存储执行历史、技能候选、发布状态及工件数据。
68+
69+
## 3. 工作原理
70+
71+
### 3.1 Self-Update 闭环流程
72+
73+
整个流程从 Agent 的执行开始,经过后台的异步处理,最终形成新的技能。
74+
75+
```mermaid
76+
sequenceDiagram
77+
participant Agent
78+
participant Bay API
79+
participant DB
80+
participant Scheduler
81+
participant Gull
82+
83+
%% Execution Phase
84+
Agent->>Bay API: POST /browser/exec (learn=true)
85+
Bay API->>Gull: Execute Commands
86+
Gull-->>Bay API: Result + Trace
87+
Bay API->>DB: Create ExecutionHistory (PENDING)
88+
Bay API-->>Agent: Response
89+
90+
%% Learning Phase (Async)
91+
loop Every 300s
92+
Scheduler->>DB: Poll PENDING History
93+
DB-->>Scheduler: Execution Records
94+
95+
Scheduler->>Scheduler: Extract Action Segments
96+
Scheduler->>Scheduler: Filter Read-Only Cmds
97+
98+
opt Score > Threshold
99+
Scheduler->>DB: Create SkillCandidate
100+
Scheduler->>Gull: Replay Verification
101+
Gull-->>Scheduler: Replay Result
102+
103+
alt Replay Success
104+
Scheduler->>DB: Promote to CANARY
105+
else Replay Failed
106+
Scheduler->>DB: Mark REJECTED
107+
end
108+
end
109+
end
110+
```
111+
112+
### 3.2 学习处理流程
113+
114+
调度器内部的处理逻辑如下:
115+
116+
```mermaid
117+
flowchart TD
118+
Start[Start Learning Cycle] --> Fetch[Fetch PENDING History]
119+
Fetch --> Check{Records Found?}
120+
Check -->|No| Sleep[Sleep interval]
121+
Check -->|Yes| Iterate[Iterate Record]
122+
123+
Iterate --> Extract[Extract Segments]
124+
Extract --> Filter[Filter Read-Only Cmds]
125+
Filter --> Score[Calculate Score]
126+
127+
Score --> Threshold{Score >= 0.85?}
128+
Threshold -->|No| Discard[Discard]
129+
Threshold -->|Yes| Create[Create SkillCandidate]
130+
131+
Create --> AutoRelease{Auto Release Enabled?}
132+
AutoRelease -->|No| Manual[Wait Manual Review]
133+
AutoRelease -->|Yes| Promote[Promote to CANARY]
134+
135+
Promote --> Next[Next Record]
136+
```
137+
138+
### 3.3 Canary 生命周期管理
139+
140+
技能发布后进入生命周期管理,系统持续监控其表现。
141+
142+
```mermaid
143+
stateDiagram-v2
144+
[*] --> PENDING
145+
PENDING --> CANARY: Auto/Manual Promote
146+
147+
state CANARY {
148+
[*] --> Monitoring
149+
Monitoring --> Healthy: Window Complete & Success Rate Stable
150+
Monitoring --> Rollback: Success Drop > 3% OR Error Rate > 2x
151+
}
152+
153+
Healthy --> STABLE: Promote
154+
Rollback --> DEPRECATED: Auto Rollback
155+
156+
STABLE --> [*]
157+
DEPRECATED --> [*]
158+
```
159+
160+
## 4. 核心概念
161+
162+
| 概念 | 说明 | 对应实体 |
163+
|------|------|----------|
164+
| **ExecutionHistory** | 浏览器操作的原始执行记录,包含输入命令、输出结果和详细的 Trace 信息。 | `ExecutionHistory` |
165+
| **ArtifactBlob** | 存储具体的技能工件数据(如代码、配置),是技能的物理载体。 | `ArtifactBlob` |
166+
| **SkillCandidate** | 从执行历史中提取出的潜在技能雏形,包含评分和元数据,等待审核或验证。 | `SkillCandidate` |
167+
| **SkillRelease** | 技能的正式发布版本,具有明确的版本号和发布阶段(CANARY/STABLE)。 | `SkillRelease` |
168+
| **SkillEvaluation** | 对技能表现的量化评估,包括成功率、耗时、错误率等指标。 | `SkillEvaluation` |
169+
170+
## 5. 数据模型
171+
172+
### 5.1 关键枚举状态
173+
174+
#### LearnStatus (学习状态)
175+
用于标记 `ExecutionHistory` 的处理状态。
176+
- `PENDING`: 等待学习处理
177+
- `PROCESSING`: 正在处理中
178+
- `COMPLETED`: 处理完成(已提取或忽略)
179+
- `FAILED`: 处理失败
180+
- `SKIPPED`: 跳过(如明确标记不学习)
181+
182+
#### SkillReleaseStage (发布阶段)
183+
用于标记 `SkillRelease` 的生命周期阶段。
184+
- `ALPHA`: 内部测试阶段
185+
- `CANARY`: 金丝雀发布(灰度验证)
186+
- `STABLE`: 稳定版本
187+
- `DEPRECATED`: 已弃用
188+
- `ROLLED_BACK`: 已回滚
189+
190+
#### SkillType (技能类型)
191+
- `BROWSER_MACRO`: 浏览器宏(一系列浏览器操作的组合)
192+
- `PYTHON_SCRIPT`: Python 脚本
193+
- `SHELL_SCRIPT`: Shell 脚本
194+
195+
## 6. 技术细节
196+
197+
### 6.1 只读命令过滤
198+
为了保证提取的技能具有实际的操作意义,系统会自动过滤掉纯观察类的只读命令。这些命令通常用于 Agent 获取上下文,但不构成技能的核心动作。
199+
200+
**被过滤的命令包括**
201+
- `snapshot` (页面快照)
202+
- `get` (获取元素属性)
203+
- `is` (状态判断)
204+
- `wait` (等待)
205+
- `cookies`, `storage` (状态查看)
206+
- `network requests` (网络请求查看)
207+
- `tab`, `frame`, `dialog` (上下文切换/查看)
208+
209+
### 6.2 自动评分逻辑
210+
系统使用以下公式对提取的操作片段进行评分:
211+
212+
```python
213+
# 评分公式
214+
score = min(0.99, 0.75 + 0.08 * steps)
215+
216+
# 示例
217+
# 1步操作: 0.75 + 0.08 = 0.83 (低于默认阈值 0.85)
218+
# 2步操作: 0.75 + 0.16 = 0.91 (合格)
219+
# 3步操作: 0.75 + 0.24 = 0.99 (满分)
220+
```
221+
> ****:默认配置下(阈值 0.85),至少包含 2 个有效动作步骤的片段才会被提取为技能。
222+
223+
### 6.3 自动回滚触发条件
224+
在 CANARY 阶段,系统会持续监控技能的健康状况。触发回滚的条件如下:
225+
226+
1. **成功率显著下降**
227+
`Current Success Rate < (Baseline - 0.03)`
228+
*例如:基准成功率 95%,如果当前成功率跌破 92%,则触发回滚。*
229+
230+
2. **错误率倍增**
231+
`Current Error Rate > (Baseline * 2.0)`
232+
*例如:基准错误率 1%,如果当前错误率超过 2%,则触发回滚。*
233+
234+
### 6.4 Trace Payload 结构
235+
浏览器执行的 Trace 包含详细的步骤信息,用于回放和分析。
236+
237+
```json
238+
{
239+
"kind": "browser_batch_trace",
240+
"steps": [
241+
{
242+
"kind": "individual_action",
243+
"cmd": "open https://example.com", // 执行的命令
244+
"stdout": "...", // 标准输出
245+
"step_index": 0, // 步骤索引
246+
"duration_ms": 1200 // 执行耗时
247+
}
248+
// ... 更多步骤
249+
],
250+
"success": true,
251+
"duration_ms": 1400
252+
}
253+
```
254+
255+
## 7. 相关文档链接
256+
257+
- [`doc/browser_self_update_usage_zh.md`](doc/browser_self_update_usage_zh.md): 浏览器 Self-Update 功能使用文档
258+
- [`doc/gull_browser_runtime.md`](doc/gull_browser_runtime.md): Gull 浏览器运行时详细说明
259+
- [`doc/agent_browser_guide.md`](doc/agent_browser_guide.md): Agent 浏览器操作指南
260+
- [`doc/bay_api_v1.md`](doc/bay_api_v1.md): Bay API 接口文档

0 commit comments

Comments
 (0)