pi-browser-use-lite 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +2 -0
- package/README.zh-CN.md +153 -0
- package/browser-extension/manifest.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# pi-browser-use-lite
|
|
2
2
|
|
|
3
|
+
[简体中文](README.zh-CN.md) | **English**
|
|
4
|
+
|
|
3
5
|
Five `chrome_*` tools that drive your own browser: the tabs you are already logged into, with your cookies and your sessions.
|
|
4
6
|
|
|
5
7
|
The package has two halves. The pi extension registers the tools and runs a local bridge on `127.0.0.1`. The companion Chrome extension polls that bridge and runs each command through `chrome.debugger`.
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# pi-browser-use-lite
|
|
2
|
+
|
|
3
|
+
**[简体中文](README.zh-CN.md)** | [English](README.md)
|
|
4
|
+
|
|
5
|
+
五个 `chrome_*` 工具,操作你自己的浏览器:你已经登录的标签页、你的 cookie 和会话。
|
|
6
|
+
|
|
7
|
+
包分两半。pi 扩展注册这些工具,并在 `127.0.0.1` 上跑一个本地桥。配套的 Chrome 扩展轮询这个桥,用 `chrome.debugger` 执行每条命令。
|
|
8
|
+
|
|
9
|
+
## 工具
|
|
10
|
+
|
|
11
|
+
| 工具 | 做什么 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `chrome_act` | navigate、click、type、fill、press、hover、drag、scroll、upload、eval、wait、batch |
|
|
14
|
+
| `chrome_see` | 快照:refs、text、changes、full;读控制台与网络日志 |
|
|
15
|
+
| `chrome_tab` | list、new、switch、close |
|
|
16
|
+
| `chrome_vision` | 截视口或整页 |
|
|
17
|
+
| `chrome_cdp` | 一条裸 CDP 调用,另四个盖不住的用它 |
|
|
18
|
+
|
|
19
|
+
值得知道的行为:
|
|
20
|
+
|
|
21
|
+
- 每个会话一个独立浏览器窗口。工具不碰你自己的标签页。会话结束时关掉本会话开的标签。
|
|
22
|
+
- 输入走可信 CDP 事件,拒绝合成事件的页面也会响应。
|
|
23
|
+
- 控制台与网络抓取从导航开始,不从第一次读取开始。
|
|
24
|
+
- 每次失败都带类别和一句 `hint`,说明下一步做什么。
|
|
25
|
+
|
|
26
|
+
## 安装
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pi install npm:pi-browser-use-lite
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
扩展就在包里。每个浏览器装一次:
|
|
33
|
+
|
|
34
|
+
1. 在 pi 里运行 `/chrome status`。扩展没连上时,回复会打印要加载的目录。
|
|
35
|
+
2. 打开 `chrome://extensions`,开开发者模式,点「加载已解压的扩展程序」,选那个目录。
|
|
36
|
+
3. 再跑一次 `/chrome status`。`connected: yes` 表示桥看到了扩展。
|
|
37
|
+
|
|
38
|
+
然后给这次会话授权:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
/chrome authorize on
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
授权随会话结束。想省这一步,把 `policy.authorizeOnStart` 设为 true。
|
|
45
|
+
|
|
46
|
+
## 配置
|
|
47
|
+
|
|
48
|
+
一个 JSON 文件:`<agent dir>/pi-browser-use-lite/config.json`。agent dir 是 `PI_CODING_AGENT_DIR`,没设时是 `~/.pi/agent`。
|
|
49
|
+
|
|
50
|
+
没有这个文件时全部取默认值。类型错或未知键会让启动失败,并一次列出所有坏字段。枚举值不认识时取默认值。数字越界时夹到最近的边界。下面的注释只作解释,真正的文件必须是严格 JSON。
|
|
51
|
+
|
|
52
|
+
**最小配置**:不用写。五个工具在默认值下都能用。
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**完整示例**:每个键都跟着默认值,以及什么时候该改。
|
|
59
|
+
|
|
60
|
+
```jsonc
|
|
61
|
+
{
|
|
62
|
+
// 本地桥。扩展里编译了同一个端口
|
|
63
|
+
// (browser-extension/background/transport.js):两处一起改,然后重载扩展
|
|
64
|
+
"bridge": { "port": 17318 },
|
|
65
|
+
|
|
66
|
+
// 会话规则
|
|
67
|
+
"policy": {
|
|
68
|
+
"authorizeOnStart": false, // true = 不用 /chrome authorize on 就能用工具
|
|
69
|
+
"background": true, // true = 挡掉所有聚焦动作,chrome_tab switch 也算。
|
|
70
|
+
// 需要模型把页面带到前台时关掉
|
|
71
|
+
"closeOwnTabsOnExit": true // 会话结束时关掉本会话开的标签
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
// 输入与时限
|
|
75
|
+
"input": {
|
|
76
|
+
"dragSteps": 10, // 按下与松开之间的鼠标移动次数
|
|
77
|
+
"scrollSteps": 5 // 每次 scroll 的滚轮事件数
|
|
78
|
+
},
|
|
79
|
+
"timing": { "navigateTimeoutMs": 15000 }, // 等 load 事件的时长;navigate 调用再多给 2 秒
|
|
80
|
+
|
|
81
|
+
// 模型可见的输出
|
|
82
|
+
"output": {
|
|
83
|
+
"maxElements": 80, // 快照元素上限
|
|
84
|
+
"textChars": 18000 // see 的 text 模式正文上限,其余带提示丢掉
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
// 截图
|
|
88
|
+
"screenshot": {
|
|
89
|
+
"dir": "/home/me/.pi/agent/pi-browser-use-lite/screenshots", // 第一次用时创建
|
|
90
|
+
"format": "png", // png | jpeg
|
|
91
|
+
"keepNewest": 20 // 这个目录里更旧的截图会被删掉
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
// 系统提示里的全局规则。这三条换成你的,不是追加
|
|
95
|
+
"prompt": {
|
|
96
|
+
"guidelines": ["chrome_act: 这是用户真实的浏览器,破坏性操作前先问一句。"]
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
// 工具开关与名字。至少留一个启用;名字不能重复,也不能盖住宿主已有的工具
|
|
100
|
+
"tools": {
|
|
101
|
+
"chrome_act": { "enabled": true, "name": "chrome_act" },
|
|
102
|
+
"chrome_see": { "enabled": true, "name": "chrome_see" },
|
|
103
|
+
"chrome_tab": { "enabled": true, "name": "chrome_tab" },
|
|
104
|
+
"chrome_vision": { "enabled": true, "name": "chrome_vision" },
|
|
105
|
+
"chrome_cdp": { "enabled": true, "name": "chrome_cdp" }
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
// 按工具改内置提示。"" 清空 description 或 promptSnippet;[] 表示不加规则
|
|
109
|
+
"guidance": {
|
|
110
|
+
"chrome_act": {
|
|
111
|
+
"description": "操作用户真实的浏览器。",
|
|
112
|
+
"promptSnippet": "操作浏览器",
|
|
113
|
+
"promptGuidelines": ["chrome_act: navigate 时带上 see: refs。"]
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
每个键都可选。范围与默认值在 `src/config/schema.ts`。
|
|
120
|
+
|
|
121
|
+
## 文档
|
|
122
|
+
|
|
123
|
+
| 文档 | 内容 |
|
|
124
|
+
|---|---|
|
|
125
|
+
| [ARCHITECTURE](docs/ARCHITECTURE.md) | 模块边界与 seam;改结构之前先读它 |
|
|
126
|
+
| [GLOSSARY](docs/GLOSSARY.md) | 一个概念只用一个词 |
|
|
127
|
+
| [Modules](docs/modules/) | 每个模块的取舍与坑 |
|
|
128
|
+
| [Decisions](docs/decisions/) | 为什么是这个形状 |
|
|
129
|
+
|
|
130
|
+
## 开发
|
|
131
|
+
|
|
132
|
+
在仓库根执行:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
pnpm -C packages/pi-browser-use-lite lint
|
|
136
|
+
pnpm -C packages/pi-browser-use-lite check:imports
|
|
137
|
+
pnpm -C packages/pi-browser-use-lite typecheck
|
|
138
|
+
pnpm -C packages/pi-browser-use-lite test
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
端到端测试会驱动真实浏览器。把 `packages/pi-browser-use-lite/browser-extension` 加载进扩展,留一个开着的 Chromium 系浏览器,然后运行:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
pnpm -C packages/pi-browser-use-lite test:e2e
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
关掉其他装了本扩展的浏览器。两份扩展会抢同一个桥,命令落到先问的那一份。
|
|
148
|
+
|
|
149
|
+
桥报出的版本与扩展不同的时候,扩展会自己重载。改了扩展代码但没升版本号时,去扩展页手动重载一次。
|
|
150
|
+
|
|
151
|
+
## 许可证
|
|
152
|
+
|
|
153
|
+
MIT,见 [LICENSE](LICENSE)。
|
package/package.json
CHANGED