foliko 1.1.2 → 1.1.4

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.
Files changed (205) hide show
  1. package/.agent/agents/code-assistant.json +14 -0
  2. package/.agent/agents/email-assistant.json +14 -0
  3. package/.agent/agents/file-assistant.json +15 -0
  4. package/.agent/agents/system-assistant.json +15 -0
  5. package/.agent/agents/web-assistant.json +12 -0
  6. package/.agent/data/ambient/goals.json +50 -0
  7. package/.agent/data/ambient/memories.json +7 -0
  8. package/.agent/data/default.json +3 -412
  9. package/.agent/data/plugins-state.json +174 -173
  10. package/.agent/data/scheduler/tasks.json +1 -0
  11. package/.agent/memory/core.md +1 -0
  12. package/.agent/memory/project/mnn93ogy-ypjn27.md +9 -0
  13. package/.agent/memory/project/mnn98fqy-5nhc1u.md +25 -0
  14. package/.agent/memory/reference/mnq3oenw-46haj6.md +63 -0
  15. package/.agent/memory/reference/mnq5qxm2-mjoooh.md +116 -0
  16. package/.agent/memory/user/mnm67t9m-x8rekk.md +9 -0
  17. package/.agent/memory/user/mnn5mmqh-w6aktx.md +11 -0
  18. package/.agent/memory/user/mnnbfhhn-dk1bd1.md +22 -0
  19. package/.agent/package.json +8 -0
  20. package/.agent/plugins/__pycache__/file_writer.cpython-312.pyc +0 -0
  21. package/.agent/plugins/daytona/README.md +89 -0
  22. package/.agent/plugins/daytona/index.js +377 -0
  23. package/.agent/plugins/daytona/package.json +12 -0
  24. package/.agent/plugins/marknative/README.md +134 -0
  25. package/.agent/plugins/marknative/fonts/SegoeUI Emoji.ttf +0 -0
  26. package/.agent/plugins/marknative/index.js +256 -0
  27. package/.agent/plugins/marknative/package.json +12 -0
  28. package/.agent/plugins/marknative/update-readme.js +134 -0
  29. package/.agent/plugins/poster-plugin/emojis/rocket.png +1 -0
  30. package/.agent/plugins/poster-plugin/fonts/SegoeUI Emoji.ttf +0 -0
  31. package/.agent/plugins/poster-plugin/src/elements/text.js +3 -1
  32. package/.agent/plugins/poster-plugin/src/fonts.js +10 -0
  33. package/.agent/plugins/poster-plugin/yarn.lock +1007 -0
  34. package/.agent/plugins/system-info/index.js +387 -0
  35. package/.agent/plugins/system-info/package.json +4 -0
  36. package/.agent/plugins/system-info/test.js +40 -0
  37. package/.agent/plugins.json +11 -5
  38. package/.agent/python-scripts/test_sample.py +24 -0
  39. package/.agent/sessions/cli_default.json +1869 -691
  40. package/.agent/skills/agent-browser/SKILL.md +311 -0
  41. package/.agent/skills/agent-browser/TEST_PLAN.md +200 -0
  42. package/.agent/skills/sysinfo/SKILL.md +38 -0
  43. package/.agent/skills/sysinfo/system-info.sh +130 -0
  44. package/.agent/skills/workflow/SKILL.md +324 -0
  45. package/.agent/weixin.json +6 -0
  46. package/.agent/workflows/email-digest.json +50 -0
  47. package/.agent/workflows/file-backup.json +21 -0
  48. package/.agent/workflows/get-ip-notify.json +32 -0
  49. package/.agent/workflows/news-aggregator.json +93 -0
  50. package/.agent/workflows/news-dashboard-v2.json +94 -0
  51. package/.agent/workflows/notification-batch.json +32 -0
  52. package/.claude/settings.local.json +1 -20
  53. package/.env.example +56 -56
  54. package/README.md +441 -441
  55. package/cli/src/commands/chat.js +22 -13
  56. package/cli/src/ui/chat-ui.js +50 -37
  57. package/output/emoji-segoe-test-v2.png +0 -0
  58. package/output/emoji-segoe-test.png +0 -0
  59. package/output/emoji-test.png +0 -0
  60. package/output/emoji-windows-test.png +0 -0
  61. package/output/foliko-emoji-poster.png +0 -0
  62. package/output/foliko-muji-poster-final.png +0 -0
  63. package/output/foliko-muji-poster-v2.png +0 -0
  64. package/output/foliko-muji-poster.png +0 -0
  65. package/output/foliko-share.png +0 -0
  66. package/output/progress-circle-test.png +0 -0
  67. package/output/vb-agent-poster.png +0 -0
  68. package/package.json +1 -2
  69. package/plugins/default-plugins.js +4 -3
  70. package/plugins/extension-executor-plugin.js +12 -91
  71. package/plugins/file-system-plugin.js +19 -4
  72. package/plugins/memory-plugin.js +33 -4
  73. package/plugins/subagent-plugin.js +14 -37
  74. package/plugins/weixin-plugin.js +40 -168
  75. package/skills/find-skills/AGENTS.md +162 -162
  76. package/skills/find-skills/SKILL.md +133 -133
  77. package/skills/poster-guide/SKILL.md +669 -1426
  78. package/src/core/agent-chat.js +439 -269
  79. package/src/core/agent.js +3 -6
  80. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +0 -26
  81. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +0 -97
  82. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +0 -101
  83. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +0 -31
  84. package/.agent/.shared/ui-ux-pro-max/data/products.csv +0 -97
  85. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +0 -24
  86. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +0 -45
  87. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
  88. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
  89. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
  90. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
  91. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -51
  92. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
  93. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  94. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +0 -54
  95. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
  96. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
  97. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
  98. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +0 -50
  99. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +0 -59
  100. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +0 -58
  101. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +0 -101
  102. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  103. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +0 -31
  104. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  105. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  106. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +0 -258
  107. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +0 -1067
  108. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +0 -106
  109. package/.agent/ARCHITECTURE.md +0 -288
  110. package/.agent/agents/ambient-agent.md +0 -57
  111. package/.agent/agents/debugger.md +0 -55
  112. package/.agent/agents/email-assistant.md +0 -49
  113. package/.agent/agents/file-manager.md +0 -42
  114. package/.agent/agents/python-developer.md +0 -60
  115. package/.agent/agents/scheduler.md +0 -59
  116. package/.agent/agents/web-developer.md +0 -45
  117. package/.agent/data/puppeteer-sessions/undefined.json +0 -6
  118. package/.agent/data/weixin-media/2026-04-08/img_1775618677512.jpg +0 -0
  119. package/.agent/data/weixin-media/2026-04-08/img_1775619073340.jpg +0 -0
  120. package/.agent/data/weixin-media/2026-04-08/img_1775619097536.jpg +0 -0
  121. package/.agent/data/weixin-media/2026-04-08/img_1775619209388.jpg +0 -0
  122. package/.agent/mcp_config_updated.json +0 -12
  123. package/.agent/plugins/poster-plugin/fonts/NotoColorEmoji-Regular.ttf +0 -0
  124. package/.agent/plugins/puppeteer-plugin/README.md +0 -147
  125. package/.agent/plugins/puppeteer-plugin/index.js +0 -1418
  126. package/.agent/plugins/puppeteer-plugin/package.json +0 -9
  127. package/.agent/rules/GEMINI.md +0 -273
  128. package/.agent/rules/allow-rule.md +0 -77
  129. package/.agent/rules/log-rule.md +0 -83
  130. package/.agent/rules/security-rule.md +0 -93
  131. package/.agent/scripts/auto_preview.py +0 -148
  132. package/.agent/scripts/checklist.py +0 -217
  133. package/.agent/scripts/session_manager.py +0 -120
  134. package/.agent/scripts/verify_all.py +0 -327
  135. package/.agent/sessions/weixin_o9cq80zgZqKPA2-s59PN43GdDy1w@im.wechat.json +0 -11097
  136. package/.agent/skills/api-patterns/SKILL.md +0 -81
  137. package/.agent/skills/api-patterns/api-style.md +0 -42
  138. package/.agent/skills/api-patterns/auth.md +0 -24
  139. package/.agent/skills/api-patterns/documentation.md +0 -26
  140. package/.agent/skills/api-patterns/graphql.md +0 -41
  141. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  142. package/.agent/skills/api-patterns/response.md +0 -37
  143. package/.agent/skills/api-patterns/rest.md +0 -40
  144. package/.agent/skills/api-patterns/scripts/api_validator.py +0 -211
  145. package/.agent/skills/api-patterns/security-testing.md +0 -122
  146. package/.agent/skills/api-patterns/trpc.md +0 -41
  147. package/.agent/skills/api-patterns/versioning.md +0 -22
  148. package/.agent/skills/app-builder/SKILL.md +0 -75
  149. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  150. package/.agent/skills/app-builder/feature-building.md +0 -53
  151. package/.agent/skills/app-builder/project-detection.md +0 -34
  152. package/.agent/skills/app-builder/scaffolding.md +0 -118
  153. package/.agent/skills/app-builder/tech-stack.md +0 -40
  154. package/.agent/skills/app-builder/templates/SKILL.md +0 -39
  155. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
  156. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
  157. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
  158. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
  159. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
  160. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
  161. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
  162. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -122
  163. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -122
  164. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -169
  165. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -134
  166. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
  167. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -119
  168. package/.agent/skills/architecture/SKILL.md +0 -55
  169. package/.agent/skills/architecture/context-discovery.md +0 -43
  170. package/.agent/skills/architecture/examples.md +0 -94
  171. package/.agent/skills/architecture/pattern-selection.md +0 -68
  172. package/.agent/skills/architecture/patterns-reference.md +0 -50
  173. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  174. package/.agent/skills/clean-code/SKILL.md +0 -201
  175. package/.agent/skills/doc.md +0 -177
  176. package/.agent/skills/frontend-design/SKILL.md +0 -418
  177. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  178. package/.agent/skills/frontend-design/color-system.md +0 -311
  179. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  180. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  181. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +0 -183
  182. package/.agent/skills/frontend-design/scripts/ux_audit.py +0 -722
  183. package/.agent/skills/frontend-design/typography-system.md +0 -345
  184. package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
  185. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  186. package/.agent/skills/i18n-localization/SKILL.md +0 -154
  187. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +0 -241
  188. package/.agent/skills/mcp-builder/SKILL.md +0 -176
  189. package/.agent/skills/web-design-guidelines/SKILL.md +0 -57
  190. package/.agent/workflows/brainstorm.md +0 -113
  191. package/.agent/workflows/create.md +0 -59
  192. package/.agent/workflows/debug.md +0 -103
  193. package/.agent/workflows/deploy.md +0 -176
  194. package/.agent/workflows/enhance.md +0 -63
  195. package/.agent/workflows/orchestrate.md +0 -237
  196. package/.agent/workflows/plan.md +0 -89
  197. package/.agent/workflows/preview.md +0 -81
  198. package/.agent/workflows/simple-test.md +0 -42
  199. package/.agent/workflows/status.md +0 -86
  200. package/.agent/workflows/structured-orchestrate.md +0 -180
  201. package/.agent/workflows/test.md +0 -144
  202. package/.agent/workflows/ui-ux-pro-max.md +0 -296
  203. package/output/beef-love-poster.png +0 -0
  204. package/output/international-news-daily.png +0 -0
  205. package/poster-test-2.png +0 -0
@@ -0,0 +1,311 @@
1
+ ---
2
+ name: agent-browser
3
+ description: 浏览器自动化工具,用于 AI 代理的网页操作。当用户说"打开浏览器"、"访问网页"、"抓取页面"、"填写表单"、"点击按钮"、"截图"、"网页自动化"时调用此技能。
4
+ allowed-tools:
5
+ - shell
6
+ - execute_command
7
+ - read_file
8
+ - write_file
9
+ license: Apache-2.0
10
+ compatibility: v1.0.0
11
+ ---
12
+
13
+ # Agent Browser - 浏览器自动化技能
14
+
15
+ ## 概述
16
+
17
+ `agent-browser` 是 Vercel Labs 开发的浏览器自动化 CLI 工具,专为 AI 代理设计。基于 Chrome/Playwright,支持完整的网页交互功能。
18
+
19
+ **官方文档**: https://agent-browser.dev
20
+ **GitHub**: https://github.com/vercel-labs/agent-browser
21
+
22
+ ## 安装
23
+
24
+ ```bash
25
+ # 全局安装(推荐)
26
+ npm install -g agent-browser
27
+ agent-browser install # 首次下载 Chrome
28
+
29
+ # 或使用 npx(无需安装)
30
+ npx agent-browser install
31
+ ```
32
+
33
+ ## 核心工作流程
34
+
35
+ ### 1. 打开网页
36
+ ```bash
37
+ agent-browser open <url>
38
+ # 示例
39
+ agent-browser open https://example.com
40
+ ```
41
+
42
+ ### 2. 获取页面快照(AI 推荐)
43
+ ```bash
44
+ # 获取可访问性树和元素引用
45
+ agent-browser snapshot -i
46
+
47
+ # 输出示例:
48
+ # - heading "Example Domain" [ref=e1] [level=1]
49
+ # - button "Submit" [ref=e2]
50
+ # - textbox "Email" [ref=e3]
51
+ # - link "Learn more" [ref=e4]
52
+ ```
53
+
54
+ ### 3. 使用引用交互
55
+ ```bash
56
+ agent-browser click @e2 # 点击按钮
57
+ agent-browser fill @e3 "test@example.com" # 填写输入框
58
+ agent-browser get text @e1 # 获取文本
59
+ agent-browser hover @e4 # 悬停链接
60
+ ```
61
+
62
+ ### 4. 截图
63
+ ```bash
64
+ agent-browser screenshot page.png # 保存截图
65
+ agent-browser screenshot --full # 全页面截图
66
+ agent-browser screenshot --annotate # 带编号标签的截图
67
+ ```
68
+
69
+ ### 5. 关闭浏览器
70
+ ```bash
71
+ agent-browser close
72
+ ```
73
+
74
+ ## 常用命令
75
+
76
+ ### 页面导航
77
+ ```bash
78
+ agent-browser open <url> # 打开 URL
79
+ agent-browser back # 后退
80
+ agent-browser forward # 前进
81
+ agent-browser reload # 刷新
82
+ ```
83
+
84
+ ### 元素交互
85
+ ```bash
86
+ agent-browser click <sel> # 点击元素
87
+ agent-browser dblclick <sel> # 双击
88
+ agent-browser hover <sel> # 悬停
89
+ agent-browser focus <sel> # 聚焦
90
+ agent-browser fill <sel> <text> # 清空并填写
91
+ agent-browser type <sel> <text> # 追加输入
92
+ agent-browser press <key> # 按键(Enter, Tab, Control+a)
93
+ agent-browser select <sel> <value> # 下拉选择
94
+ agent-browser check <sel> # 勾选
95
+ agent-browser scroll <dir> [px] # 滚动(up/down/left/right)
96
+ ```
97
+
98
+ ### 获取信息
99
+ ```bash
100
+ agent-browser get text <sel> # 获取文本
101
+ agent-browser get html <sel> # 获取 HTML
102
+ agent-browser get value <sel> # 获取输入值
103
+ agent-browser get attr <sel> <attr> # 获取属性
104
+ agent-browser get title # 获取标题
105
+ agent-browser get url # 获取 URL
106
+ agent-browser get count <sel> # 计数元素
107
+ ```
108
+
109
+ ### 状态检查
110
+ ```bash
111
+ agent-browser is visible <sel> # 是否可见
112
+ agent-browser is enabled <sel> # 是否可用
113
+ agent-browser is checked <sel> # 是否勾选
114
+ ```
115
+
116
+ ### 语义定位器(AI 推荐)
117
+ ```bash
118
+ # 按 ARIA 角色查找
119
+ agent-browser find role button click --name "Submit"
120
+ agent-browser find role link text --name "More"
121
+
122
+ # 按文本查找
123
+ agent-browser find text "Sign In" click
124
+
125
+ # 按标签查找
126
+ agent-browser find label "Email" fill "test@test.com"
127
+
128
+ # 按占位符查找
129
+ agent-browser find placeholder "Search..." fill "query"
130
+
131
+ # 按 testid 查找
132
+ agent-browser find testid "submit-btn" click
133
+
134
+ # 位置选择
135
+ agent-browser find first ".item" click
136
+ agent-browser find last "a" click
137
+ agent-browser find nth 2 "a" text
138
+ ```
139
+
140
+ ### 等待
141
+ ```bash
142
+ agent-browser wait <selector> # 等待元素可见
143
+ agent-browser wait <ms> # 等待毫秒
144
+ agent-browser wait --text "Welcome" # 等待文本出现
145
+ agent-browser wait --url "**/dash" # 等待 URL 匹配
146
+ agent-browser wait --load networkidle # 等待网络空闲
147
+ ```
148
+
149
+ ### 网络拦截
150
+ ```bash
151
+ agent-browser network route <url> --abort # 阻止请求
152
+ agent-browser network route <url> --body '<json>' # Mock 响应
153
+ agent-browser network requests # 查看请求
154
+ ```
155
+
156
+ ### 键盘操作
157
+ ```bash
158
+ agent-browser keyboard type "Hello" # 键盘输入
159
+ agent-browser keyboard inserttext "text" # 直接插入文本
160
+ agent-browser keydown <key> # 按键按下
161
+ agent-browser keyup <key> # 按键释放
162
+ ```
163
+
164
+ ### 鼠标操作
165
+ ```bash
166
+ agent-browser mouse move <x> <y> # 移动鼠标
167
+ agent-browser mouse down [button] # 鼠标按下
168
+ agent-browser mouse up [button] # 鼠标释放
169
+ agent-browser mouse wheel <dy> [dx] # 滚轮滚动
170
+ ```
171
+
172
+ ### 剪贴板
173
+ ```bash
174
+ agent-browser clipboard read # 读取
175
+ agent-browser clipboard write "Hello" # 写入
176
+ ```
177
+
178
+ ## 选择器类型
179
+
180
+ ### 引用(推荐用于 AI)
181
+ ```
182
+ @e1, @e2, @e3 # 来自 snapshot 的元素引用
183
+ ```
184
+
185
+ ### CSS 选择器
186
+ ```bash
187
+ agent-browser click "#submit"
188
+ agent-browser click ".class-name"
189
+ agent-browser click "div > button"
190
+ ```
191
+
192
+ ### 文本和 XPath
193
+ ```bash
194
+ agent-browser click "text=Submit"
195
+ agent-browser click "xpath=//button"
196
+ ```
197
+
198
+ ## 会话管理
199
+
200
+ ```bash
201
+ # 多会话隔离
202
+ agent-browser --session session1 open site-a.com
203
+ agent-browser --session session2 open site-b.com
204
+
205
+ # 持久化配置
206
+ agent-browser --profile ~/.myapp-profile open myapp.com
207
+
208
+ # 自动保存/恢复状态
209
+ agent-browser --session-name myapp open twitter.com
210
+ ```
211
+
212
+ ## 认证管理
213
+
214
+ ```bash
215
+ # 从已有 Chrome 导入认证状态
216
+ agent-browser --auto-connect state save ./auth.json
217
+ agent-browser --state ./auth.json open app.com
218
+
219
+ # 或者用 session-name 自动持久化
220
+ agent-browser --session-name myapp state load ./auth.json
221
+ ```
222
+
223
+ ## 调试功能
224
+
225
+ ```bash
226
+ agent-browser --headed # 显示浏览器窗口
227
+ agent-browser console # 查看控制台消息
228
+ agent-browser errors # 查看页面错误
229
+ agent-browser highlight <sel> # 高亮元素
230
+ agent-browser inspect # 打开 DevTools
231
+ ```
232
+
233
+ ## 选项
234
+
235
+ | 选项 | 说明 |
236
+ |------|------|
237
+ | `--session <name>` | 使用隔离会话 |
238
+ | `--profile <path>` | 持久化浏览器配置目录 |
239
+ | `--state <path>` | 加载存储状态文件 |
240
+ | `--headers <json>` | 设置 HTTP 头 |
241
+ | `--headed` | 显示浏览器窗口 |
242
+ | `--json` | JSON 输出(AI 推荐) |
243
+ | `--annotate` | 带编号标签的截图 |
244
+ | `--cdp <port>` | 通过 CDP 连接 |
245
+ | `--allowed-domains` | 限制允许的域名 |
246
+ | `--max-output <n>` | 最大输出字符数 |
247
+
248
+ ## 最佳实践
249
+
250
+ ### AI 推荐的交互流程
251
+ ```bash
252
+ # 1. 打开并获取快照
253
+ agent-browser open example.com
254
+ agent-browser snapshot -i --json # AI 解析树和引用
255
+
256
+ # 2. AI 从快照识别目标元素
257
+ # 3. 使用引用执行操作
258
+ agent-browser click @e2
259
+ agent-browser fill @e3 "input text"
260
+
261
+ # 4. 页面变化后重新获取快照
262
+ agent-browser snapshot -i --json
263
+ ```
264
+
265
+ ### 命令链
266
+ ```bash
267
+ # 使用 && 链接多个命令
268
+ agent-browser open example.com && agent-browser wait --load networkidle && agent-browser snapshot -i
269
+
270
+ # 管道输入批量命令
271
+ echo '[["open","https://example.com"],["snapshot","-i"],["click","@e1"]]' | agent-browser batch --json
272
+ ```
273
+
274
+ ### 处理弹窗
275
+ ```bash
276
+ agent-browser dialog accept # 接受弹窗
277
+ agent-browser dialog dismiss # 拒绝弹窗
278
+ agent-browser dialog status # 检查弹窗状态
279
+ ```
280
+
281
+ ### 标签页操作
282
+ ```bash
283
+ agent-browser tab # 列出标签
284
+ agent-browser tab new [url] # 新建标签
285
+ agent-browser tab 1 # 切换到标签 1
286
+ agent-browser tab close [n] # 关闭标签
287
+ ```
288
+
289
+ ## 注意事项
290
+
291
+ 1. **首次使用**: 需要运行 `agent-browser install` 下载 Chrome
292
+ 2. **超时**: 默认操作超时 25 秒,可通过 `AGENT_BROWSER_DEFAULT_TIMEOUT` 调整
293
+ 3. **安全**: 敏感操作使用 `--confirm-actions eval,download` 确认
294
+ 4. **会话**: 不同会话有独立的 cookies、历史、认证状态
295
+ 5. **引用稳定性**: 每次 `snapshot` 后引用可能变化,需重新获取
296
+
297
+ ## 故障排除
298
+
299
+ ```bash
300
+ # 查看帮助
301
+ agent-browser --help
302
+
303
+ # 调试模式
304
+ agent-browser open example.com --debug
305
+
306
+ # 安装 Chrome
307
+ agent-browser install
308
+
309
+ # 升级
310
+ agent-browser upgrade
311
+ ```
@@ -0,0 +1,200 @@
1
+ # Agent Browser 技能测试计划
2
+
3
+ **项目**: agent-browser skill
4
+ **版本**: v1.0.0
5
+ **日期**: 2024年
6
+ **测试环境**: Windows/macOS/Linux + Node.js 18+
7
+
8
+ ---
9
+
10
+ ## 1. 测试范围
11
+
12
+ ### 1.1 功能测试
13
+ - [ ] 安装与初始化
14
+ - [ ] 页面导航操作
15
+ - [ ] 元素定位与交互
16
+ - [ ] 信息获取
17
+ - [ ] 状态检查
18
+ - [ ] 截图功能
19
+ - [ ] 键盘鼠标操作
20
+ - [ ] 网络拦截
21
+ - [ ] 会话管理
22
+ - [ ] 认证管理
23
+
24
+ ### 1.2 集成测试
25
+ - [ ] 与 skill 工具集成
26
+ - [ ] 错误处理
27
+ - [ ] 超时机制
28
+
29
+ ---
30
+
31
+ ## 2. 前置条件
32
+
33
+ ```bash
34
+ # 1. 安装依赖
35
+ npm install -g agent-browser
36
+
37
+ # 2. 安装 Chrome
38
+ agent-browser install
39
+
40
+ # 3. 验证安装
41
+ agent-browser --version
42
+ ```
43
+
44
+ ---
45
+
46
+ ## 3. 测试用例
47
+
48
+ ### 3.1 安装测试
49
+
50
+ | ID | 测试项 | 命令 | 预期结果 |
51
+ |----|--------|------|----------|
52
+ | INST-01 | 全局安装 | `npm install -g agent-browser` | 无错误,安装成功 |
53
+ | INST-02 | Chrome 下载 | `agent-browser install` | Chrome 成功下载 |
54
+ | INST-03 | 版本验证 | `agent-browser --version` | 显示版本号 v0.23.4 |
55
+
56
+ ### 3.2 页面导航测试
57
+
58
+ | ID | 测试项 | 命令 | 预期结果 |
59
+ |----|--------|------|----------|
60
+ | NAV-01 | 打开网页 | `agent-browser open https://example.com` | 浏览器打开页面 |
61
+ | NAV-02 | 获取标题 | `agent-browser get title` | 返回 "Example Domain" |
62
+ | NAV-03 | 获取 URL | `agent-browser get url` | 返回完整 URL |
63
+ | NAV-04 | 刷新页面 | `agent-browser reload` | 页面刷新 |
64
+ | NAV-05 | 关闭浏览器 | `agent-browser close` | 浏览器关闭 |
65
+
66
+ ### 3.3 元素交互测试
67
+
68
+ | ID | 测试项 | 命令 | 预期结果 |
69
+ |----|--------|------|----------|
70
+ | INT-01 | 获取快照 | `agent-browser snapshot -i --json` | 返回可访问性树和引用 |
71
+ | INT-02 | 点击元素 | `agent-browser click @e1` | 元素被点击 |
72
+ | INT-03 | 填写表单 | `agent-browser fill @input "test@test.com"` | 输入框被填充 |
73
+ | INT-04 | 悬停元素 | `agent-browser hover @e2` | 鼠标悬停 |
74
+ | INT-05 | 滚动页面 | `agent-browser scroll down 500` | 页面滚动 |
75
+
76
+ ### 3.4 信息获取测试
77
+
78
+ | ID | 测试项 | 命令 | 预期结果 |
79
+ |----|--------|------|----------|
80
+ | GET-01 | 获取文本 | `agent-browser get text @e1` | 返回元素文本 |
81
+ | GET-02 | 获取 HTML | `agent-browser get html @e1` | 返回元素 HTML |
82
+ | GET-03 | 获取属性 | `agent-browser get attr @e1 href` | 返回属性值 |
83
+ | GET-04 | 元素计数 | `agent-browser get count "a"` | 返回链接数量 |
84
+
85
+ ### 3.5 状态检查测试
86
+
87
+ | ID | 测试项 | 命令 | 预期结果 |
88
+ |----|--------|------|----------|
89
+ | STA-01 | 可见性检查 | `agent-browser is visible @e1` | 返回 true/false |
90
+ | STA-02 | 可用性检查 | `agent-browser is enabled @e1` | 返回 true/false |
91
+
92
+ ### 3.6 截图功能测试
93
+
94
+ | ID | 测试项 | 命令 | 预期结果 |
95
+ |----|--------|------|----------|
96
+ | SCR-01 | 普通截图 | `agent-browser screenshot test.png` | 生成截图文件 |
97
+ | SCR-02 | 全页面截图 | `agent-browser screenshot --full full.png` | 生成全页面截图 |
98
+ | SCR-03 | 带标注截图 | `agent-browser screenshot --annotate anno.png` | 生成带编号标签的截图 |
99
+
100
+ ### 3.7 语义定位器测试
101
+
102
+ | ID | 测试项 | 命令 | 预期结果 |
103
+ |----|--------|------|----------|
104
+ | SEM-01 | 按角色查找 | `agent-browser find role button click` | 找到并点击按钮 |
105
+ | SEM-02 | 按文本查找 | `agent-browser find text "Submit" click` | 找到并点击 |
106
+ | SEM-03 | 按标签查找 | `agent-browser find label "Email" fill "test.com"` | 找到并填写 |
107
+ | SEM-04 | 位置选择 | `agent-browser find first "a" click` | 点击第一个链接 |
108
+
109
+ ### 3.8 等待机制测试
110
+
111
+ | ID | 测试项 | 命令 | 预期结果 |
112
+ |----|--------|------|----------|
113
+ | WAI-01 | 等待元素 | `agent-browser wait "#element"` | 元素出现后继续 |
114
+ | WAI-02 | 等待文本 | `agent-browser wait --text "Success"` | 文本出现后继续 |
115
+ | WAI-03 | 等待网络空闲 | `agent-browser wait --load networkidle` | 网络空闲后继续 |
116
+
117
+ ### 3.9 网络拦截测试
118
+
119
+ | ID | 测试项 | 命令 | 预期结果 |
120
+ |----|--------|------|----------|
121
+ | NET-01 | 阻止请求 | `agent-browser network route "*.js" --abort` | 资源被阻止 |
122
+ | NET-02 | Mock 响应 | `agent-browser network route "*/api/*" --body '{"ok":true}'` | 返回 Mock 数据 |
123
+ | NET-03 | 查看请求 | `agent-browser network requests` | 列出所有请求 |
124
+
125
+ ### 3.10 会话管理测试
126
+
127
+ | ID | 测试项 | 命令 | 预期结果 |
128
+ |----|--------|------|----------|
129
+ | SES-01 | 隔离会话 | `agent-browser --session s1 open a.com` | 独立会话打开 |
130
+ | SES-02 | 会话隔离验证 | `agent-browser --session s2 open b.com` | 不同会话状态隔离 |
131
+
132
+ ### 3.11 键盘鼠标操作测试
133
+
134
+ | ID | 测试项 | 命令 | 预期结果 |
135
+ |----|--------|------|----------|
136
+ | KEY-01 | 键盘输入 | `agent-browser keyboard type "Hello"` | 文本被输入 |
137
+ | KEY-02 | 按键操作 | `agent-browser press Enter` | 按下 Enter 键 |
138
+ | MOU-01 | 移动鼠标 | `agent-browser mouse move 100 200` | 鼠标移动 |
139
+ | MOU-02 | 滚轮滚动 | `agent-browser mouse wheel 100` | 页面滚动 |
140
+
141
+ ---
142
+
143
+ ## 4. 自动化测试脚本
144
+
145
+ ```bash
146
+ # test_basic.sh - 基础功能测试
147
+ #!/bin/bash
148
+
149
+ echo "=== Agent Browser 基础测试 ==="
150
+
151
+ # 测试打开网页
152
+ echo "[TEST] 打开网页..."
153
+ agent-browser open https://example.com
154
+ sleep 2
155
+
156
+ # 测试获取快照
157
+ echo "[TEST] 获取快照..."
158
+ agent-browser snapshot -i --json > snapshot.json
159
+ cat snapshot.json
160
+
161
+ # 测试截图
162
+ echo "[TEST] 截图..."
163
+ agent-browser screenshot output.png
164
+
165
+ # 关闭
166
+ echo "[TEST] 关闭浏览器..."
167
+ agent-browser close
168
+
169
+ echo "=== 测试完成 ==="
170
+ ```
171
+
172
+ ---
173
+
174
+ ## 5. 预期产出
175
+
176
+ | 类型 | 文件 | 说明 |
177
+ |------|------|------|
178
+ | 截图 | `*.png` | 测试截图输出 |
179
+ | 快照 | `snapshot.json` | 页面元素树 JSON |
180
+ | 日志 | `debug.log` | 调试模式日志 |
181
+
182
+ ---
183
+
184
+ ## 6. 风险评估
185
+
186
+ | 风险 | 影响 | 缓解措施 |
187
+ |------|------|----------|
188
+ | Chrome 未安装 | 无法运行 | 提供 `agent-browser install` 说明 |
189
+ | 网络超时 | 测试失败 | 增加 wait 等待时间 |
190
+ | 元素引用失效 | 交互失败 | 每次操作前重新 snapshot |
191
+ | 端口占用 | 启动失败 | 使用 `--port` 指定端口 |
192
+
193
+ ---
194
+
195
+ ## 7. 通过标准
196
+
197
+ - [ ] 所有 P0 测试用例通过
198
+ - [ ] 截图功能正常生成图片
199
+ - [ ] 元素交互命令无报错
200
+ - [ ] 会话隔离功能正常
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: sysinfo
3
+ description: 使用 Bash 脚本查询系统信息(CPU、内存、磁盘、网络)
4
+ allowed-tools:
5
+ - get_cpu_info
6
+ - get_memory_info
7
+ - get_disk_info
8
+ - get_network_info
9
+ - get_full_system_info
10
+ ---
11
+
12
+ # 系统信息查询 (sysinfo)
13
+
14
+ 使用 Bash 脚本查询系统信息,支持模块化查询。
15
+
16
+ ## 使用方法
17
+
18
+ ### 完整系统信息
19
+ ```bash
20
+ bash .agent/skills/sysinfo/system-info.sh
21
+ ```
22
+
23
+ ### 分模块查询
24
+ ```bash
25
+ bash .agent/skills/sysinfo/system-info.sh cpu # CPU 信息
26
+ bash .agent/skills/sysinfo/system-info.sh memory # 内存信息
27
+ bash .agent/skills/sysinfo/system-info.sh disk # 磁盘信息
28
+ bash .agent/skills/sysinfo/system-info.sh network # 网络信息
29
+ bash .agent/skills/sysinfo/system-info.sh system # 系统基本信息
30
+ ```
31
+
32
+ ## 输出示例
33
+
34
+ - **CPU**: 型号、核心数、使用率
35
+ - **Memory**: 总内存、已用、可用、使用率
36
+ - **Disk**: 各分区容量和使用情况
37
+ - **Network**: IP 地址、网卡信息
38
+ - **System**: 主机名、操作系统、内核版本
@@ -0,0 +1,130 @@
1
+ #!/bin/bash
2
+ # 系统信息查询脚本(跨平台支持)
3
+ # 用法: system-info [option]
4
+ # 选项: all (默认), cpu, memory, disk, network, system
5
+
6
+ OPTION=${1:-all}
7
+
8
+ echo "=========================================="
9
+ echo " System Info Report - $(date '+%Y-%m-%d %H:%M:%S')"
10
+ echo "=========================================="
11
+ echo ""
12
+
13
+ # 系统基本信息
14
+ show_system() {
15
+ echo "[System Info]"
16
+ echo " Hostname: $(hostname)"
17
+ echo " OS: $(uname -s)"
18
+ echo " Kernel: $(uname -r)"
19
+ echo " Arch: $(uname -m)"
20
+ echo ""
21
+ }
22
+
23
+ # CPU 信息
24
+ show_cpu() {
25
+ echo "[CPU Info]"
26
+ if [ -f /proc/cpuinfo ]; then
27
+ echo " Model: $(grep 'model name' /proc/cpuinfo | head -1 | cut -d':' -f2 | xargs)"
28
+ echo " Cores: $(grep -c ^processor /proc/cpuinfo)"
29
+ elif command -v powershell &> /dev/null; then
30
+ cpu_info=$(powershell -NoProfile -Command "
31
+ \$cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
32
+ \$cores = (Get-CimInstance Win32_Processor | Measure-Object -Property NumberOfCores -Sum).Sum
33
+ \$threads = (Get-CimInstance Win32_Processor | Measure-Object -Property NumberOfLogicalProcessors -Sum).Sum
34
+ Write-Output \"\$(\$cpu.Name)|\$cores|\$threads\"
35
+ ")
36
+ cpu_name=$(echo "$cpu_info" | cut -d'|' -f1)
37
+ cpu_cores=$(echo "$cpu_info" | cut -d'|' -f2)
38
+ cpu_threads=$(echo "$cpu_info" | cut -d'|' -f3)
39
+ echo " Model: $cpu_name"
40
+ echo " Cores: $cpu_cores"
41
+ echo " Threads: $cpu_threads"
42
+ else
43
+ echo " Model: $(sysctl -n machdep.cpu.brand_string 2>/dev/null || echo 'Unknown')"
44
+ fi
45
+ echo ""
46
+ }
47
+
48
+ # 内存信息
49
+ show_memory() {
50
+ echo "[Memory Info]"
51
+ if [ -f /proc/meminfo ]; then
52
+ mem_total=$(grep MemTotal /proc/meminfo | awk '{printf "%.2f GB", $2/1024/1024}')
53
+ mem_free=$(grep MemFree /proc/meminfo | awk '{printf "%.2f GB", $2/1024/1024}')
54
+ mem_avail=$(grep MemAvailable /proc/meminfo 2>/dev/null | awk '{printf "%.2f GB", $2/1024/1024}')
55
+ echo " Total: $mem_total"
56
+ echo " Free: $mem_free"
57
+ echo " Available: ${mem_avail:-N/A}"
58
+ elif command -v powershell &> /dev/null; then
59
+ mem_info=$(powershell -NoProfile -Command "
60
+ \$os = Get-CimInstance Win32_OperatingSystem
61
+ \$total = [math]::Round(\$os.TotalVisibleMemorySize / 1MB, 2)
62
+ \$free = [math]::Round(\$os.FreePhysicalMemory / 1MB, 2)
63
+ \$used = [math]::Round(\$total - \$free, 2)
64
+ \$pct = [math]::Round((\$used / \$total) * 100, 1)
65
+ Write-Output \"\$total|\$used|\$free|\$pct\"
66
+ ")
67
+ total=$(echo "$mem_info" | cut -d'|' -f1)
68
+ used=$(echo "$mem_info" | cut -d'|' -f2)
69
+ free=$(echo "$mem_info" | cut -d'|' -f3)
70
+ pct=$(echo "$mem_info" | cut -d'|' -f4)
71
+ echo " Total: ${total} GB"
72
+ echo " Used: ${used} GB (${pct}%)"
73
+ echo " Free: ${free} GB"
74
+ else
75
+ echo " Unable to get memory info"
76
+ fi
77
+ echo ""
78
+ }
79
+
80
+ # 磁盘信息
81
+ show_disk() {
82
+ echo "[Disk Info]"
83
+ if command -v powershell &> /dev/null; then
84
+ # Windows PowerShell - 使用 UTF8 编码输出
85
+ powershell -NoProfile -Command "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-CimInstance Win32_LogicalDisk -Filter \"DriveType=3\" | Format-Table -AutoSize | Out-String"
86
+ elif [ -f /proc/mounts ] && command -v df &> /dev/null; then
87
+ df -h | grep -E '^/dev/' | awk '{
88
+ printf " %s: Total %s, Used %s (%s), Free %s\n", $1, $2, $3, $5, $4
89
+ }'
90
+ else
91
+ echo " Unable to get disk info"
92
+ fi
93
+ echo ""
94
+ }
95
+
96
+ # 网络信息
97
+ show_network() {
98
+ echo "[Network Info]"
99
+ echo " IP Addresses:"
100
+ if command -v ip &> /dev/null; then
101
+ ip addr show | grep inet | grep -v '127.0.0.1' | awk '{printf " %s\n", $2}'
102
+ elif command -v ifconfig &> /dev/null; then
103
+ ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk '{printf " %s\n", $2}'
104
+ elif command -v powershell &> /dev/null; then
105
+ powershell -NoProfile -Command "Get-NetIPAddress -AddressFamily IPv4 | Where-Object { \$_.IPAddress -ne '127.0.0.1' } | ForEach-Object { Write-Output \" \$(\$_.IPAddress)\" }"
106
+ fi
107
+ echo ""
108
+ }
109
+
110
+ # 执行选项
111
+ case $OPTION in
112
+ all)
113
+ show_system
114
+ show_cpu
115
+ show_memory
116
+ show_disk
117
+ show_network
118
+ ;;
119
+ cpu) show_cpu ;;
120
+ memory) show_memory ;;
121
+ disk) show_disk ;;
122
+ network) show_network ;;
123
+ system) show_system ;;
124
+ *)
125
+ echo "Usage: system-info [all|cpu|memory|disk|network|system]"
126
+ exit 1
127
+ ;;
128
+ esac
129
+
130
+ echo "=========================================="